This commit is contained in:
NudeDude 2019-05-18 10:08:21 +02:00
parent 596e99a92d
commit 8d0a749569
8 changed files with 55 additions and 27 deletions

View File

@ -2,6 +2,7 @@ package org.nuclearfog.twidda.adapter;
import android.os.Bundle;
import androidx.annotation.NonNull;
import androidx.fragment.app.Fragment;
import androidx.fragment.app.FragmentManager;
import androidx.fragment.app.FragmentPagerAdapter;
@ -30,7 +31,7 @@ public class FragmentAdapter extends FragmentPagerAdapter {
private final Fragment[] fragments;
public FragmentAdapter(FragmentManager fManager, AdapterType mode, long id, String search) {
super(fManager);
super(fManager, BEHAVIOR_RESUME_ONLY_CURRENT_FRAGMENT);
switch (mode) {
case HOME_TAB:
Bundle home_tl = new Bundle();
@ -139,6 +140,7 @@ public class FragmentAdapter extends FragmentPagerAdapter {
@Override
@NonNull
public Fragment getItem(int index) {
return fragments[index];
}
@ -153,13 +155,13 @@ public class FragmentAdapter extends FragmentPagerAdapter {
public void notifySettingsChanged() {
for (Fragment fragment : fragments) {
if (fragment instanceof OnSettingsChanged)
((OnSettingsChanged) fragment).settingsChanged();
((OnSettingsChanged) fragment).onSettingsChange();
}
}
public interface OnSettingsChanged {
void settingsChanged();
void onSettingsChange();
}
}

View File

@ -129,6 +129,7 @@ public class ProfileLoader extends AsyncTask<Long, Void, Boolean> {
user = mTwitter.unblockUser(UID);
isBlocked = !isBlocked;
publishProgress();
db.muteUser(UID, isBlocked);
break;
case ACTION_MUTE:
@ -138,6 +139,7 @@ public class ProfileLoader extends AsyncTask<Long, Void, Boolean> {
user = mTwitter.unmuteUser(UID);
isMuted = !isMuted;
publishProgress();
db.muteUser(UID, isMuted);
break;
}
} catch (TwitterException err) {

View File

@ -32,6 +32,7 @@ public class DatabaseAdapter {
private static final int VER_MASK = 1; // USER VERIFIED MASK
private static final int LCK_MASK = 1 << 1; // USER LOCKED MASK
private static final int FRQ_MASK = 1 << 2; // USER REQUEST FOLLOW
private static final int EXCL_USR = 1 << 3; // EXCLUDE USERS TWEETS
private AppDatabase dataHelper;
private long homeId;
@ -199,7 +200,7 @@ public class DatabaseAdapter {
List<Tweet> tweetList = new LinkedList<>();
final String SQL_GET_HOME = "SELECT * FROM tweet " +
"INNER JOIN user ON tweet.userID=user.userID " +
"WHERE statusregister&" + HOM_MASK + ">0 " +
"WHERE statusregister&" + HOM_MASK + " IS NOT 0 " +
"ORDER BY tweetID DESC LIMIT " + LIMIT;
Cursor cursor = db.rawQuery(SQL_GET_HOME, null);
if (cursor.moveToFirst()) {
@ -223,7 +224,8 @@ public class DatabaseAdapter {
List<Tweet> tweetList = new LinkedList<>();
final String SQL_GET_HOME = "SELECT * FROM tweet " +
"INNER JOIN user ON tweet.userID=user.userID " +
"WHERE statusregister&" + MEN_MASK + ">0 " +
"WHERE statusregister&" + MEN_MASK + " IS NOT 0 " +
"AND userregister&" + EXCL_USR + " IS 0 " +
"ORDER BY tweetID DESC LIMIT " + LIMIT;
Cursor cursor = db.rawQuery(SQL_GET_HOME, null);
if (cursor.moveToFirst()) {
@ -248,7 +250,7 @@ public class DatabaseAdapter {
List<Tweet> tweetList = new LinkedList<>();
final String SQL_GET_HOME = "SELECT * FROM tweet " +
"INNER JOIN user ON tweet.userID = user.userID " +
"WHERE statusregister&" + UTW_MASK + ">0 " +
"WHERE statusregister&" + UTW_MASK + " IS NOT 0 " +
"AND user.userID =" + userID +
" ORDER BY tweetID DESC LIMIT " + LIMIT;
@ -323,7 +325,7 @@ public class DatabaseAdapter {
List<Tweet> tweetList = new LinkedList<>();
final String SQL_GET_HOME = "SELECT * FROM tweet " +
"INNER JOIN user ON tweet.userID = user.userID " +
"WHERE tweet.replyID=" + tweetId + " AND statusregister&" + RPL_MASK + ">0 " +
"WHERE tweet.replyID=" + tweetId + " AND statusregister&" + RPL_MASK + " IS NOT 0 " +
"ORDER BY tweetID DESC LIMIT " + LIMIT;
Cursor cursor = db.rawQuery(SQL_GET_HOME, null);
if (cursor.moveToFirst()) {
@ -507,6 +509,33 @@ public class DatabaseAdapter {
}
/**
* remove user from mention results
*
* @param id user ID
* @param mute true remove user tweets from mention results
*/
public void muteUser(long id, boolean mute) {
SQLiteDatabase db = getDbWrite();
final String query = "SELECT userregister FROM user WHERE userID=" + id + " LIMIT 1";
Cursor cursor = db.rawQuery(query, null);
if (cursor.moveToFirst()) {
int index = cursor.getColumnIndex("userregister");
int userRegister = cursor.getInt(index);
if (mute)
userRegister |= EXCL_USR;
else
userRegister &= ~EXCL_USR;
ContentValues userColumn = new ContentValues();
userColumn.put("userregister", userRegister);
db.update("user", userColumn, "user.userID=" + id, null);
}
cursor.close();
commit(db);
}
private Tweet getStatus(Cursor cursor) {
int index;
index = cursor.getColumnIndex("time");

View File

@ -26,7 +26,6 @@ import org.nuclearfog.twidda.window.SearchPage;
public class TrendListFragment extends Fragment implements OnRefreshListener, OnItemClickListener, OnSettingsChanged {
private GlobalSettings settings;
private TrendLoader trendTask;
private SwipeRefreshLayout reload;
private TrendAdapter adapter;
@ -36,19 +35,16 @@ public class TrendListFragment extends Fragment implements OnRefreshListener, On
public View onCreateView(@NonNull LayoutInflater inflater, ViewGroup parent, Bundle param) {
super.onCreateView(inflater, parent, param);
View v = inflater.inflate(R.layout.fragment_list, parent, false);
settings = GlobalSettings.getInstance(getContext());
adapter = new TrendAdapter(this);
adapter.setColor(settings.getFontColor());
reload = v.findViewById(R.id.fragment_reload);
reload.setOnRefreshListener(this);
reload.setProgressBackgroundColorSchemeColor(settings.getHighlightColor());
RecyclerView list = v.findViewById(R.id.fragment_list);
reload = v.findViewById(R.id.fragment_reload);
reload.setOnRefreshListener(this);
adapter = new TrendAdapter(this);
list.setLayoutManager(new LinearLayoutManager(getContext()));
list.setHasFixedSize(true);
list.setAdapter(adapter);
onSettingsChange();
return v;
}
@ -99,7 +95,8 @@ public class TrendListFragment extends Fragment implements OnRefreshListener, On
@Override
public void settingsChanged() {
public void onSettingsChange() {
GlobalSettings settings = GlobalSettings.getInstance(getContext());
reload.setProgressBackgroundColorSchemeColor(settings.getHighlightColor());
adapter.setColor(settings.getFontColor());
adapter.notifyDataSetChanged();

View File

@ -37,7 +37,6 @@ public class TweetListFragment extends Fragment implements OnRefreshListener, On
SEARCH,
}
private GlobalSettings settings;
private TweetLoader tweetTask;
private SwipeRefreshLayout reload;
private TweetAdapter adapter;
@ -62,21 +61,17 @@ public class TweetListFragment extends Fragment implements OnRefreshListener, On
}
View v = inflater.inflate(R.layout.fragment_list, parent, false);
reload = v.findViewById(R.id.fragment_reload);
reload.setOnRefreshListener(this);
adapter = new TweetAdapter(this);
settings = GlobalSettings.getInstance(getContext());
reload.setProgressBackgroundColorSchemeColor(settings.getHighlightColor());
adapter.setColor(settings.getHighlightColor(), settings.getFontColor());
adapter.toggleImage(settings.getImageLoad());
RecyclerView list = v.findViewById(R.id.fragment_list);
list.setLayoutManager(new LinearLayoutManager(getContext()));
list.setHasFixedSize(fixSize);
list.setAdapter(adapter);
onSettingsChange();
return v;
}
@ -184,7 +179,8 @@ public class TweetListFragment extends Fragment implements OnRefreshListener, On
@Override
public void settingsChanged() {
public void onSettingsChange() {
GlobalSettings settings = GlobalSettings.getInstance(getContext());
reload.setProgressBackgroundColorSchemeColor(settings.getHighlightColor());
adapter.setColor(settings.getHighlightColor(), settings.getFontColor());
adapter.toggleImage(settings.getImageLoad());

View File

@ -131,7 +131,7 @@ public class ImageDetail extends AppCompatActivity implements OnImageClickListen
Toast.makeText(this, R.string.image_saved, Toast.LENGTH_LONG).show();
output.close();
} catch (Exception err) {
err.printStackTrace();
Toast.makeText(this, R.string.image_store_failure, Toast.LENGTH_SHORT).show();
}
}
}

View File

@ -101,4 +101,5 @@
<string name="request_token_error">Request Token abgelaufen, bitte App aktualisieren!</string>
<string name="settings_info">Information</string>
<string name="follows_you">folgt dir</string>
<string name="image_store_failure">Fehler beim Speichern!</string>
</resources>

View File

@ -110,4 +110,5 @@
<string name="settings_info">information</string>
<string name="github_link" translatable="false">github.com/nuclearfog/Shitter</string>
<string name="follows_you">follows you</string>
<string name="image_store_failure">image save failed!</string>
</resources>