optimized UI update
This commit is contained in:
parent
de56e7f9d4
commit
6f91f74c1e
|
@ -0,0 +1,10 @@
|
|||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<project version="4">
|
||||
<component name="Statistic">
|
||||
<option name="excludedDirectories">
|
||||
<list>
|
||||
<option value="$PROJECT_DIR$/app/build" />
|
||||
</list>
|
||||
</option>
|
||||
</component>
|
||||
</project>
|
|
@ -43,11 +43,6 @@ public class ImageAdapter extends Adapter<ImageAdapter.ImageHolder> {
|
|||
}
|
||||
|
||||
|
||||
public Bitmap top() {
|
||||
return images.get(0);
|
||||
}
|
||||
|
||||
|
||||
public void disableLoading() {
|
||||
int circlePos = images.size();
|
||||
loading = false;
|
||||
|
|
|
@ -3,12 +3,9 @@ package org.nuclearfog.twidda.backend;
|
|||
import android.graphics.Bitmap;
|
||||
import android.graphics.BitmapFactory;
|
||||
import android.os.AsyncTask;
|
||||
import android.view.View;
|
||||
import android.widget.ProgressBar;
|
||||
import android.widget.Toast;
|
||||
|
||||
import androidx.annotation.NonNull;
|
||||
import androidx.recyclerview.widget.RecyclerView;
|
||||
|
||||
import org.nuclearfog.twidda.R;
|
||||
import org.nuclearfog.twidda.adapter.ImageAdapter;
|
||||
|
@ -33,8 +30,7 @@ public class ImageLoader extends AsyncTask<String, Bitmap, Boolean> {
|
|||
|
||||
public ImageLoader(@NonNull MediaViewer context, Mode mode) {
|
||||
ui = new WeakReference<>(context);
|
||||
RecyclerView imageList = context.findViewById(R.id.image_list);
|
||||
imageAdapter = (ImageAdapter) imageList.getAdapter();
|
||||
imageAdapter = context.getAdapter();
|
||||
this.mode = mode;
|
||||
}
|
||||
|
||||
|
@ -71,12 +67,9 @@ public class ImageLoader extends AsyncTask<String, Bitmap, Boolean> {
|
|||
protected void onProgressUpdate(Bitmap[] btm) {
|
||||
Bitmap image = btm[0];
|
||||
if (ui.get() != null && image != null) {
|
||||
if (imageAdapter.getItemCount() == 2)
|
||||
ui.get().disableProgressbar();
|
||||
imageAdapter.addLast(btm[0]);
|
||||
if (imageAdapter.getItemCount() == 2) {
|
||||
ProgressBar progress = ui.get().findViewById(R.id.image_load);
|
||||
progress.setVisibility(View.INVISIBLE);
|
||||
ui.get().setImage(imageAdapter.top());
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -2,12 +2,9 @@ package org.nuclearfog.twidda.backend;
|
|||
|
||||
import android.os.AsyncTask;
|
||||
import android.widget.ArrayAdapter;
|
||||
import android.widget.Spinner;
|
||||
|
||||
import org.nuclearfog.twidda.R;
|
||||
import org.nuclearfog.twidda.backend.helper.ErrorHandler;
|
||||
import org.nuclearfog.twidda.backend.items.TrendLocation;
|
||||
import org.nuclearfog.twidda.database.GlobalSettings;
|
||||
import org.nuclearfog.twidda.window.AppSettings;
|
||||
|
||||
import java.lang.ref.WeakReference;
|
||||
|
@ -18,14 +15,12 @@ import twitter4j.TwitterException;
|
|||
public class LocationLoader extends AsyncTask<Void, Void, List<TrendLocation>> {
|
||||
|
||||
private WeakReference<AppSettings> ui;
|
||||
private GlobalSettings settings;
|
||||
private TwitterEngine mTwitter;
|
||||
private TwitterException err;
|
||||
|
||||
|
||||
public LocationLoader(AppSettings context) {
|
||||
ui = new WeakReference<>(context);
|
||||
settings = GlobalSettings.getInstance(context);
|
||||
mTwitter = TwitterEngine.getInstance(context);
|
||||
}
|
||||
|
||||
|
@ -47,15 +42,11 @@ public class LocationLoader extends AsyncTask<Void, Void, List<TrendLocation>> {
|
|||
protected void onPostExecute(List<TrendLocation> locations) {
|
||||
if (ui.get() != null) {
|
||||
if (locations != null && !locations.isEmpty()) {
|
||||
Spinner woeId = ui.get().findViewById(R.id.woeid);
|
||||
|
||||
@SuppressWarnings("unchecked")
|
||||
ArrayAdapter<TrendLocation> adapter = (ArrayAdapter<TrendLocation>) woeId.getAdapter();
|
||||
ArrayAdapter<TrendLocation> adapter = ui.get().getAdapter();
|
||||
adapter.clear();
|
||||
adapter.addAll(locations);
|
||||
adapter.notifyDataSetChanged();
|
||||
int position = adapter.getPosition(settings.getTrendLocation());
|
||||
woeId.setSelection(position);
|
||||
ui.get().setWoeIdSelection();
|
||||
} else if (err != null) {
|
||||
ErrorHandler.printError(ui.get(), err);
|
||||
}
|
||||
|
|
|
@ -24,6 +24,7 @@ import org.nuclearfog.twidda.window.MessagePopup;
|
|||
import org.nuclearfog.twidda.window.SearchPage;
|
||||
import org.nuclearfog.twidda.window.UserProfile;
|
||||
|
||||
import static android.os.AsyncTask.Status.FINISHED;
|
||||
import static android.os.AsyncTask.Status.RUNNING;
|
||||
import static org.nuclearfog.twidda.window.MessagePopup.KEY_DM_ADDITION;
|
||||
import static org.nuclearfog.twidda.window.SearchPage.KEY_SEARCH;
|
||||
|
@ -34,7 +35,7 @@ public class MessageListFragment extends Fragment implements OnRefreshListener,
|
|||
|
||||
private MessageLoader messageTask;
|
||||
private SwipeRefreshLayout reload;
|
||||
private View root;
|
||||
private MessageAdapter adapter;
|
||||
|
||||
@Override
|
||||
public View onCreateView(@NonNull LayoutInflater inflater, ViewGroup parent, Bundle param) {
|
||||
|
@ -44,7 +45,7 @@ public class MessageListFragment extends Fragment implements OnRefreshListener,
|
|||
reload = v.findViewById(R.id.fragment_reload);
|
||||
|
||||
reload.setOnRefreshListener(this);
|
||||
MessageAdapter adapter = new MessageAdapter(this);
|
||||
adapter = new MessageAdapter(this);
|
||||
list.setLayoutManager(new LinearLayoutManager(getContext()));
|
||||
list.setHasFixedSize(true);
|
||||
list.setAdapter(adapter);
|
||||
|
@ -58,13 +59,6 @@ public class MessageListFragment extends Fragment implements OnRefreshListener,
|
|||
}
|
||||
|
||||
|
||||
@Override
|
||||
public void onViewCreated(@NonNull View v, Bundle param) {
|
||||
super.onViewCreated(v, param);
|
||||
root = v;
|
||||
}
|
||||
|
||||
|
||||
@Override
|
||||
public void onStart() {
|
||||
super.onStart();
|
||||
|
@ -109,7 +103,7 @@ public class MessageListFragment extends Fragment implements OnRefreshListener,
|
|||
break;
|
||||
|
||||
case DELETE:
|
||||
messageTask = new MessageLoader(root, Mode.DEL);
|
||||
messageTask = new MessageLoader(this, Mode.DEL);
|
||||
messageTask.execute(message.getId());
|
||||
break;
|
||||
|
||||
|
@ -123,8 +117,28 @@ public class MessageListFragment extends Fragment implements OnRefreshListener,
|
|||
}
|
||||
|
||||
|
||||
public MessageAdapter getAdapter() {
|
||||
return adapter;
|
||||
}
|
||||
|
||||
|
||||
public void setRefresh(boolean enable) {
|
||||
if (enable) {
|
||||
reload.postDelayed(new Runnable() {
|
||||
@Override
|
||||
public void run() {
|
||||
if (messageTask.getStatus() != FINISHED)
|
||||
reload.setRefreshing(true);
|
||||
}
|
||||
}, 500);
|
||||
} else {
|
||||
reload.setRefreshing(false);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
private void load(Mode m) {
|
||||
messageTask = new MessageLoader(root, m);
|
||||
messageTask = new MessageLoader(this, m);
|
||||
messageTask.execute();
|
||||
}
|
||||
}
|
|
@ -21,6 +21,7 @@ import org.nuclearfog.twidda.database.GlobalSettings;
|
|||
import org.nuclearfog.twidda.fragment.backend.TrendLoader;
|
||||
import org.nuclearfog.twidda.window.SearchPage;
|
||||
|
||||
import static android.os.AsyncTask.Status.FINISHED;
|
||||
import static android.os.AsyncTask.Status.RUNNING;
|
||||
import static org.nuclearfog.twidda.window.SearchPage.KEY_SEARCH;
|
||||
|
||||
|
@ -32,7 +33,6 @@ public class TrendListFragment extends Fragment implements OnRefreshListener, On
|
|||
private RecyclerView list;
|
||||
private TrendAdapter adapter;
|
||||
private GlobalSettings settings;
|
||||
private View root;
|
||||
|
||||
@Override
|
||||
public View onCreateView(@NonNull LayoutInflater inflater, ViewGroup parent, Bundle param) {
|
||||
|
@ -53,13 +53,6 @@ public class TrendListFragment extends Fragment implements OnRefreshListener, On
|
|||
}
|
||||
|
||||
|
||||
@Override
|
||||
public void onViewCreated(@NonNull View v, Bundle param) {
|
||||
super.onViewCreated(v, param);
|
||||
root = v;
|
||||
}
|
||||
|
||||
|
||||
@Override
|
||||
public void onStart() {
|
||||
super.onStart();
|
||||
|
@ -98,9 +91,10 @@ public class TrendListFragment extends Fragment implements OnRefreshListener, On
|
|||
|
||||
@Override
|
||||
public void onSettingsChange() {
|
||||
if (adapter != null)
|
||||
if (adapter != null && reload != null) {
|
||||
adapter.clear();
|
||||
setColors();
|
||||
setColors();
|
||||
}
|
||||
trendTask = null;
|
||||
}
|
||||
|
||||
|
@ -120,15 +114,34 @@ public class TrendListFragment extends Fragment implements OnRefreshListener, On
|
|||
}
|
||||
|
||||
|
||||
public TrendAdapter getAdapter() {
|
||||
return adapter;
|
||||
}
|
||||
|
||||
|
||||
public void setRefresh(boolean enable) {
|
||||
if (enable) {
|
||||
reload.postDelayed(new Runnable() {
|
||||
@Override
|
||||
public void run() {
|
||||
if (trendTask.getStatus() != FINISHED)
|
||||
reload.setRefreshing(true);
|
||||
}
|
||||
}, 500);
|
||||
} else {
|
||||
reload.setRefreshing(false);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
private void load() {
|
||||
trendTask = new TrendLoader(root);
|
||||
trendTask = new TrendLoader(this);
|
||||
trendTask.execute();
|
||||
}
|
||||
|
||||
|
||||
private void setColors() {
|
||||
if (reload != null)
|
||||
reload.setProgressBackgroundColorSchemeColor(settings.getHighlightColor());
|
||||
reload.setProgressBackgroundColorSchemeColor(settings.getHighlightColor());
|
||||
adapter.setColor(settings.getFontColor());
|
||||
}
|
||||
}
|
|
@ -23,6 +23,7 @@ import org.nuclearfog.twidda.fragment.backend.TweetLoader;
|
|||
import org.nuclearfog.twidda.fragment.backend.TweetLoader.Mode;
|
||||
import org.nuclearfog.twidda.window.TweetDetail;
|
||||
|
||||
import static android.os.AsyncTask.Status.FINISHED;
|
||||
import static android.os.AsyncTask.Status.RUNNING;
|
||||
import static org.nuclearfog.twidda.window.TweetDetail.KEY_TWEET_ID;
|
||||
import static org.nuclearfog.twidda.window.TweetDetail.KEY_TWEET_NAME;
|
||||
|
@ -52,7 +53,6 @@ public class TweetListFragment extends Fragment implements OnRefreshListener, On
|
|||
private SwipeRefreshLayout reload;
|
||||
private RecyclerView list;
|
||||
private TweetAdapter adapter;
|
||||
private View root;
|
||||
|
||||
private TweetType mode;
|
||||
private String search;
|
||||
|
@ -88,13 +88,6 @@ public class TweetListFragment extends Fragment implements OnRefreshListener, On
|
|||
}
|
||||
|
||||
|
||||
@Override
|
||||
public void onViewCreated(@NonNull View v, Bundle param) {
|
||||
super.onViewCreated(v, param);
|
||||
root = v;
|
||||
}
|
||||
|
||||
|
||||
@Override
|
||||
public void onStart() {
|
||||
super.onStart();
|
||||
|
@ -144,9 +137,10 @@ public class TweetListFragment extends Fragment implements OnRefreshListener, On
|
|||
|
||||
@Override
|
||||
public void onSettingsChange() {
|
||||
if (adapter != null)
|
||||
if (adapter != null && reload != null) {
|
||||
adapter.clear();
|
||||
setColors();
|
||||
setColors();
|
||||
}
|
||||
tweetTask = null;
|
||||
}
|
||||
|
||||
|
@ -166,39 +160,59 @@ public class TweetListFragment extends Fragment implements OnRefreshListener, On
|
|||
}
|
||||
|
||||
|
||||
public TweetAdapter getAdapter() {
|
||||
return adapter;
|
||||
}
|
||||
|
||||
|
||||
public void setRefresh(boolean enable) {
|
||||
if (enable) {
|
||||
reload.postDelayed(new Runnable() {
|
||||
@Override
|
||||
public void run() {
|
||||
if (tweetTask.getStatus() != FINISHED)
|
||||
reload.setRefreshing(true);
|
||||
}
|
||||
}, 500);
|
||||
} else {
|
||||
reload.setRefreshing(false);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
private void load() {
|
||||
switch (mode) {
|
||||
case HOME:
|
||||
tweetTask = new TweetLoader(root, Mode.TL_HOME);
|
||||
tweetTask = new TweetLoader(this, Mode.TL_HOME);
|
||||
tweetTask.execute();
|
||||
break;
|
||||
|
||||
case MENT:
|
||||
tweetTask = new TweetLoader(root, Mode.TL_MENT);
|
||||
tweetTask = new TweetLoader(this, Mode.TL_MENT);
|
||||
tweetTask.execute();
|
||||
break;
|
||||
|
||||
case USER_TWEET:
|
||||
tweetTask = new TweetLoader(root, Mode.USR_TWEETS);
|
||||
tweetTask = new TweetLoader(this, Mode.USR_TWEETS);
|
||||
tweetTask.execute(id);
|
||||
break;
|
||||
|
||||
case USER_FAVOR:
|
||||
tweetTask = new TweetLoader(root, Mode.USR_FAVORS);
|
||||
tweetTask = new TweetLoader(this, Mode.USR_FAVORS);
|
||||
tweetTask.execute(id);
|
||||
break;
|
||||
|
||||
case TWEET_ANSR:
|
||||
boolean loadAnswer = settings.getAnswerLoad();
|
||||
if (tweetTask != null || loadAnswer)
|
||||
tweetTask = new TweetLoader(root, Mode.TWEET_ANS);
|
||||
tweetTask = new TweetLoader(this, Mode.TWEET_ANS);
|
||||
else
|
||||
tweetTask = new TweetLoader(root, Mode.DB_ANS);
|
||||
tweetTask = new TweetLoader(this, Mode.DB_ANS);
|
||||
tweetTask.execute(id, search);
|
||||
break;
|
||||
|
||||
case SEARCH:
|
||||
tweetTask = new TweetLoader(root, Mode.TWEET_SEARCH);
|
||||
tweetTask = new TweetLoader(this, Mode.TWEET_SEARCH);
|
||||
tweetTask.execute(search);
|
||||
break;
|
||||
}
|
||||
|
@ -206,8 +220,7 @@ public class TweetListFragment extends Fragment implements OnRefreshListener, On
|
|||
|
||||
|
||||
private void setColors() {
|
||||
if (reload != null)
|
||||
reload.setProgressBackgroundColorSchemeColor(settings.getHighlightColor());
|
||||
reload.setProgressBackgroundColorSchemeColor(settings.getHighlightColor());
|
||||
adapter.setColor(settings.getHighlightColor(), settings.getFontColor());
|
||||
adapter.setImage(settings.getImageLoad());
|
||||
}
|
||||
|
|
|
@ -24,6 +24,7 @@ import org.nuclearfog.twidda.fragment.backend.UserLoader;
|
|||
import org.nuclearfog.twidda.fragment.backend.UserLoader.Mode;
|
||||
import org.nuclearfog.twidda.window.UserProfile;
|
||||
|
||||
import static android.os.AsyncTask.Status.FINISHED;
|
||||
import static android.os.AsyncTask.Status.RUNNING;
|
||||
import static org.nuclearfog.twidda.window.UserProfile.KEY_PROFILE_ID;
|
||||
|
||||
|
@ -47,7 +48,6 @@ public class UserListFragment extends Fragment implements OnRefreshListener, OnI
|
|||
private UserAdapter adapter;
|
||||
private UserLoader userTask;
|
||||
private RecyclerView list;
|
||||
private View root;
|
||||
private UserType mode;
|
||||
private String search;
|
||||
private long id;
|
||||
|
@ -84,13 +84,6 @@ public class UserListFragment extends Fragment implements OnRefreshListener, OnI
|
|||
}
|
||||
|
||||
|
||||
@Override
|
||||
public void onViewCreated(@NonNull View v, Bundle param) {
|
||||
super.onViewCreated(v, param);
|
||||
root = v;
|
||||
}
|
||||
|
||||
|
||||
@Override
|
||||
public void onStart() {
|
||||
super.onStart();
|
||||
|
@ -142,26 +135,46 @@ public class UserListFragment extends Fragment implements OnRefreshListener, OnI
|
|||
}
|
||||
|
||||
|
||||
public UserAdapter getAdapter() {
|
||||
return adapter;
|
||||
}
|
||||
|
||||
|
||||
public void setRefresh(boolean enable) {
|
||||
if (enable) {
|
||||
reload.postDelayed(new Runnable() {
|
||||
@Override
|
||||
public void run() {
|
||||
if (userTask.getStatus() != FINISHED)
|
||||
reload.setRefreshing(true);
|
||||
}
|
||||
}, 500);
|
||||
} else {
|
||||
reload.setRefreshing(false);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
private void load() {
|
||||
switch (mode) {
|
||||
case FOLLOWS:
|
||||
userTask = new UserLoader(root, Mode.FOLLOWS);
|
||||
userTask = new UserLoader(this, Mode.FOLLOWS);
|
||||
userTask.execute(id);
|
||||
break;
|
||||
case FRIENDS:
|
||||
userTask = new UserLoader(root, Mode.FRIENDS);
|
||||
userTask = new UserLoader(this, Mode.FRIENDS);
|
||||
userTask.execute(id);
|
||||
break;
|
||||
case RETWEET:
|
||||
userTask = new UserLoader(root, Mode.RETWEET);
|
||||
userTask = new UserLoader(this, Mode.RETWEET);
|
||||
userTask.execute(id);
|
||||
break;
|
||||
case FAVORIT:
|
||||
userTask = new UserLoader(root, Mode.FAVORIT);
|
||||
userTask = new UserLoader(this, Mode.FAVORIT);
|
||||
userTask.execute(id);
|
||||
break;
|
||||
case USEARCH:
|
||||
userTask = new UserLoader(root, Mode.SEARCH);
|
||||
userTask = new UserLoader(this, Mode.SEARCH);
|
||||
userTask.execute(search);
|
||||
break;
|
||||
}
|
||||
|
|
|
@ -1,26 +1,21 @@
|
|||
package org.nuclearfog.twidda.fragment.backend;
|
||||
|
||||
import android.os.AsyncTask;
|
||||
import android.view.View;
|
||||
|
||||
import androidx.annotation.NonNull;
|
||||
import androidx.annotation.Nullable;
|
||||
import androidx.recyclerview.widget.RecyclerView;
|
||||
import androidx.swiperefreshlayout.widget.SwipeRefreshLayout;
|
||||
|
||||
import org.nuclearfog.twidda.R;
|
||||
import org.nuclearfog.twidda.adapter.MessageAdapter;
|
||||
import org.nuclearfog.twidda.backend.TwitterEngine;
|
||||
import org.nuclearfog.twidda.backend.helper.ErrorHandler;
|
||||
import org.nuclearfog.twidda.backend.items.Message;
|
||||
import org.nuclearfog.twidda.database.AppDatabase;
|
||||
import org.nuclearfog.twidda.fragment.MessageListFragment;
|
||||
|
||||
import java.lang.ref.WeakReference;
|
||||
import java.util.List;
|
||||
|
||||
import twitter4j.TwitterException;
|
||||
|
||||
import static android.os.AsyncTask.Status.FINISHED;
|
||||
|
||||
public class MessageLoader extends AsyncTask<Long, Void, List<Message>> {
|
||||
|
||||
|
@ -31,35 +26,26 @@ public class MessageLoader extends AsyncTask<Long, Void, List<Message>> {
|
|||
}
|
||||
|
||||
private Mode mode;
|
||||
private WeakReference<View> ui;
|
||||
private WeakReference<MessageListFragment> ui;
|
||||
private TwitterEngine mTwitter;
|
||||
private TwitterException err;
|
||||
private AppDatabase db;
|
||||
private MessageAdapter adapter;
|
||||
|
||||
|
||||
public MessageLoader(@NonNull View root, Mode mode) {
|
||||
ui = new WeakReference<>(root);
|
||||
RecyclerView rv = root.findViewById(R.id.fragment_list);
|
||||
adapter = (MessageAdapter) rv.getAdapter();
|
||||
mTwitter = TwitterEngine.getInstance(root.getContext());
|
||||
db = new AppDatabase(root.getContext());
|
||||
public MessageLoader(MessageListFragment fragment, Mode mode) {
|
||||
ui = new WeakReference<>(fragment);
|
||||
db = new AppDatabase(fragment.getContext());
|
||||
mTwitter = TwitterEngine.getInstance(fragment.getContext());
|
||||
adapter = fragment.getAdapter();
|
||||
this.mode = mode;
|
||||
}
|
||||
|
||||
|
||||
@Override
|
||||
protected void onPreExecute() {
|
||||
if (ui.get() == null)
|
||||
return;
|
||||
final SwipeRefreshLayout reload = ui.get().findViewById(R.id.fragment_reload);
|
||||
reload.postDelayed(new Runnable() {
|
||||
@Override
|
||||
public void run() {
|
||||
if (getStatus() != FINISHED)
|
||||
reload.setRefreshing(true);
|
||||
}
|
||||
}, 500);
|
||||
if (ui.get() != null)
|
||||
ui.get().setRefresh(true);
|
||||
}
|
||||
|
||||
|
||||
|
@ -107,18 +93,15 @@ public class MessageLoader extends AsyncTask<Long, Void, List<Message>> {
|
|||
adapter.replaceAll(messages);
|
||||
if (err != null)
|
||||
ErrorHandler.printError(ui.get().getContext(), err);
|
||||
SwipeRefreshLayout reload = ui.get().findViewById(R.id.fragment_reload);
|
||||
reload.setRefreshing(false);
|
||||
ui.get().setRefresh(false);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@Override
|
||||
protected void onCancelled() {
|
||||
if (ui.get() != null) {
|
||||
SwipeRefreshLayout reload = ui.get().findViewById(R.id.fragment_reload);
|
||||
reload.setRefreshing(false);
|
||||
}
|
||||
if (ui.get() != null)
|
||||
ui.get().setRefresh(false);
|
||||
}
|
||||
|
||||
|
||||
|
@ -127,8 +110,7 @@ public class MessageLoader extends AsyncTask<Long, Void, List<Message>> {
|
|||
if (ui.get() != null) {
|
||||
if (messages != null)
|
||||
adapter.replaceAll(messages);
|
||||
SwipeRefreshLayout reload = ui.get().findViewById(R.id.fragment_reload);
|
||||
reload.setRefreshing(false);
|
||||
ui.get().setRefresh(false);
|
||||
}
|
||||
}
|
||||
}
|
|
@ -1,31 +1,26 @@
|
|||
package org.nuclearfog.twidda.fragment.backend;
|
||||
|
||||
import android.os.AsyncTask;
|
||||
import android.view.View;
|
||||
|
||||
import androidx.annotation.NonNull;
|
||||
import androidx.annotation.Nullable;
|
||||
import androidx.recyclerview.widget.RecyclerView;
|
||||
import androidx.swiperefreshlayout.widget.SwipeRefreshLayout;
|
||||
|
||||
import org.nuclearfog.twidda.R;
|
||||
import org.nuclearfog.twidda.adapter.TrendAdapter;
|
||||
import org.nuclearfog.twidda.backend.TwitterEngine;
|
||||
import org.nuclearfog.twidda.backend.helper.ErrorHandler;
|
||||
import org.nuclearfog.twidda.database.AppDatabase;
|
||||
import org.nuclearfog.twidda.database.GlobalSettings;
|
||||
import org.nuclearfog.twidda.fragment.TrendListFragment;
|
||||
|
||||
import java.lang.ref.WeakReference;
|
||||
import java.util.List;
|
||||
|
||||
import twitter4j.TwitterException;
|
||||
|
||||
import static android.os.AsyncTask.Status.FINISHED;
|
||||
|
||||
|
||||
public class TrendLoader extends AsyncTask<Void, Void, List<String>> {
|
||||
|
||||
private WeakReference<View> ui;
|
||||
private WeakReference<TrendListFragment> ui;
|
||||
private TwitterException err;
|
||||
private TwitterEngine mTwitter;
|
||||
private AppDatabase db;
|
||||
|
@ -33,35 +28,26 @@ public class TrendLoader extends AsyncTask<Void, Void, List<String>> {
|
|||
private int woeId;
|
||||
|
||||
|
||||
public TrendLoader(@NonNull View root) {
|
||||
ui = new WeakReference<>(root);
|
||||
mTwitter = TwitterEngine.getInstance(root.getContext());
|
||||
db = new AppDatabase(root.getContext());
|
||||
GlobalSettings settings = GlobalSettings.getInstance(root.getContext());
|
||||
RecyclerView list = root.findViewById(R.id.fragment_list);
|
||||
adapter = (TrendAdapter) list.getAdapter();
|
||||
public TrendLoader(@NonNull TrendListFragment fragment) {
|
||||
ui = new WeakReference<>(fragment);
|
||||
db = new AppDatabase(fragment.getContext());
|
||||
mTwitter = TwitterEngine.getInstance(fragment.getContext());
|
||||
GlobalSettings settings = GlobalSettings.getInstance(fragment.getContext());
|
||||
woeId = settings.getTrendLocation().getWoeId();
|
||||
adapter = fragment.getAdapter();
|
||||
}
|
||||
|
||||
|
||||
@Override
|
||||
protected void onPreExecute() {
|
||||
if (ui.get() == null)
|
||||
return;
|
||||
final SwipeRefreshLayout reload = ui.get().findViewById(R.id.fragment_reload);
|
||||
reload.postDelayed(new Runnable() {
|
||||
@Override
|
||||
public void run() {
|
||||
if (getStatus() != FINISHED)
|
||||
reload.setRefreshing(true);
|
||||
}
|
||||
}, 500);
|
||||
if (ui.get() != null)
|
||||
ui.get().setRefresh(true);
|
||||
}
|
||||
|
||||
|
||||
@Override
|
||||
protected List<String> doInBackground(Void[] v) {
|
||||
List<String> trends = null;
|
||||
List<String> trends;
|
||||
try {
|
||||
if (adapter.isEmpty()) {
|
||||
trends = db.getTrends(woeId);
|
||||
|
@ -73,12 +59,13 @@ public class TrendLoader extends AsyncTask<Void, Void, List<String>> {
|
|||
trends = mTwitter.getTrends(woeId);
|
||||
db.storeTrends(trends, woeId);
|
||||
}
|
||||
return trends;
|
||||
} catch (TwitterException err) {
|
||||
this.err = err;
|
||||
} catch (Exception err) {
|
||||
err.printStackTrace();
|
||||
}
|
||||
return trends;
|
||||
return null;
|
||||
}
|
||||
|
||||
|
||||
|
@ -89,18 +76,15 @@ public class TrendLoader extends AsyncTask<Void, Void, List<String>> {
|
|||
adapter.setData(trends);
|
||||
if (err != null)
|
||||
ErrorHandler.printError(ui.get().getContext(), err);
|
||||
SwipeRefreshLayout reload = ui.get().findViewById(R.id.fragment_reload);
|
||||
reload.setRefreshing(false);
|
||||
ui.get().setRefresh(false);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@Override
|
||||
protected void onCancelled() {
|
||||
if (ui.get() != null) {
|
||||
SwipeRefreshLayout reload = ui.get().findViewById(R.id.fragment_reload);
|
||||
reload.setRefreshing(false);
|
||||
}
|
||||
if (ui.get() != null)
|
||||
ui.get().setRefresh(false);
|
||||
}
|
||||
|
||||
|
||||
|
@ -109,8 +93,7 @@ public class TrendLoader extends AsyncTask<Void, Void, List<String>> {
|
|||
if (ui.get() != null) {
|
||||
if (trends != null)
|
||||
adapter.setData(trends);
|
||||
SwipeRefreshLayout reload = ui.get().findViewById(R.id.fragment_reload);
|
||||
reload.setRefreshing(false);
|
||||
ui.get().setRefresh(false);
|
||||
}
|
||||
}
|
||||
}
|
|
@ -1,26 +1,21 @@
|
|||
package org.nuclearfog.twidda.fragment.backend;
|
||||
|
||||
import android.os.AsyncTask;
|
||||
import android.view.View;
|
||||
|
||||
import androidx.annotation.NonNull;
|
||||
import androidx.annotation.Nullable;
|
||||
import androidx.recyclerview.widget.RecyclerView;
|
||||
import androidx.swiperefreshlayout.widget.SwipeRefreshLayout;
|
||||
|
||||
import org.nuclearfog.twidda.R;
|
||||
import org.nuclearfog.twidda.adapter.TweetAdapter;
|
||||
import org.nuclearfog.twidda.backend.TwitterEngine;
|
||||
import org.nuclearfog.twidda.backend.helper.ErrorHandler;
|
||||
import org.nuclearfog.twidda.backend.items.Tweet;
|
||||
import org.nuclearfog.twidda.database.AppDatabase;
|
||||
import org.nuclearfog.twidda.fragment.TweetListFragment;
|
||||
|
||||
import java.lang.ref.WeakReference;
|
||||
import java.util.List;
|
||||
|
||||
import twitter4j.TwitterException;
|
||||
|
||||
import static android.os.AsyncTask.Status.FINISHED;
|
||||
|
||||
public class TweetLoader extends AsyncTask<Object, Void, List<Tweet>> {
|
||||
|
||||
|
@ -35,35 +30,27 @@ public class TweetLoader extends AsyncTask<Object, Void, List<Tweet>> {
|
|||
}
|
||||
|
||||
private Mode mode;
|
||||
private WeakReference<View> ui;
|
||||
private WeakReference<TweetListFragment> ui;
|
||||
private TweetAdapter adapter;
|
||||
private TwitterEngine mTwitter;
|
||||
private TwitterException err;
|
||||
private AppDatabase db;
|
||||
|
||||
|
||||
public TweetLoader(@NonNull View root, Mode mode) {
|
||||
ui = new WeakReference<>(root);
|
||||
mTwitter = TwitterEngine.getInstance(root.getContext());
|
||||
RecyclerView list = root.findViewById(R.id.fragment_list);
|
||||
adapter = (TweetAdapter) list.getAdapter();
|
||||
db = new AppDatabase(root.getContext());
|
||||
public TweetLoader(TweetListFragment fragment, Mode mode) {
|
||||
ui = new WeakReference<>(fragment);
|
||||
db = new AppDatabase(fragment.getContext());
|
||||
mTwitter = TwitterEngine.getInstance(fragment.getContext());
|
||||
adapter = fragment.getAdapter();
|
||||
this.mode = mode;
|
||||
}
|
||||
|
||||
|
||||
@Override
|
||||
protected void onPreExecute() {
|
||||
if (ui.get() == null)
|
||||
return;
|
||||
final SwipeRefreshLayout reload = ui.get().findViewById(R.id.fragment_reload);
|
||||
reload.postDelayed(new Runnable() {
|
||||
@Override
|
||||
public void run() {
|
||||
if (getStatus() != FINISHED)
|
||||
reload.setRefreshing(true);
|
||||
}
|
||||
}, 500);
|
||||
if (ui.get() != null) {
|
||||
ui.get().setRefresh(true);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
@ -177,8 +164,7 @@ public class TweetLoader extends AsyncTask<Object, Void, List<Tweet>> {
|
|||
adapter.addFirst(tweets);
|
||||
if (err != null)
|
||||
ErrorHandler.printError(ui.get().getContext(), err);
|
||||
SwipeRefreshLayout reload = ui.get().findViewById(R.id.fragment_reload);
|
||||
reload.setRefreshing(false);
|
||||
ui.get().setRefresh(false);
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -186,8 +172,7 @@ public class TweetLoader extends AsyncTask<Object, Void, List<Tweet>> {
|
|||
@Override
|
||||
protected void onCancelled() {
|
||||
if (ui.get() != null) {
|
||||
SwipeRefreshLayout reload = ui.get().findViewById(R.id.fragment_reload);
|
||||
reload.setRefreshing(false);
|
||||
ui.get().setRefresh(false);
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -197,8 +182,7 @@ public class TweetLoader extends AsyncTask<Object, Void, List<Tweet>> {
|
|||
if (ui.get() != null) {
|
||||
if (tweets != null)
|
||||
adapter.addFirst(tweets);
|
||||
SwipeRefreshLayout reload = ui.get().findViewById(R.id.fragment_reload);
|
||||
reload.setRefreshing(false);
|
||||
ui.get().setRefresh(false);
|
||||
}
|
||||
}
|
||||
}
|
|
@ -1,18 +1,14 @@
|
|||
package org.nuclearfog.twidda.fragment.backend;
|
||||
|
||||
import android.os.AsyncTask;
|
||||
import android.view.View;
|
||||
|
||||
import androidx.annotation.NonNull;
|
||||
import androidx.annotation.Nullable;
|
||||
import androidx.recyclerview.widget.RecyclerView;
|
||||
import androidx.swiperefreshlayout.widget.SwipeRefreshLayout;
|
||||
|
||||
import org.nuclearfog.twidda.R;
|
||||
import org.nuclearfog.twidda.adapter.UserAdapter;
|
||||
import org.nuclearfog.twidda.backend.TwitterEngine;
|
||||
import org.nuclearfog.twidda.backend.helper.ErrorHandler;
|
||||
import org.nuclearfog.twidda.backend.items.TwitterUser;
|
||||
import org.nuclearfog.twidda.fragment.UserListFragment;
|
||||
|
||||
import java.lang.ref.WeakReference;
|
||||
import java.util.LinkedList;
|
||||
|
@ -31,17 +27,16 @@ public class UserLoader extends AsyncTask<Object, Void, List<TwitterUser>> {
|
|||
}
|
||||
|
||||
private Mode mode;
|
||||
private WeakReference<View> ui;
|
||||
private WeakReference<UserListFragment> ui;
|
||||
private TwitterEngine mTwitter;
|
||||
private TwitterException err;
|
||||
private UserAdapter adapter;
|
||||
|
||||
|
||||
public UserLoader(@NonNull View root, Mode mode) {
|
||||
ui = new WeakReference<>(root);
|
||||
mTwitter = TwitterEngine.getInstance(root.getContext());
|
||||
RecyclerView list = root.findViewById(R.id.fragment_list);
|
||||
adapter = (UserAdapter) list.getAdapter();
|
||||
public UserLoader(UserListFragment fragment, Mode mode) {
|
||||
ui = new WeakReference<>(fragment);
|
||||
mTwitter = TwitterEngine.getInstance(fragment.getContext());
|
||||
adapter = fragment.getAdapter();
|
||||
this.mode = mode;
|
||||
}
|
||||
|
||||
|
@ -49,49 +44,35 @@ public class UserLoader extends AsyncTask<Object, Void, List<TwitterUser>> {
|
|||
@Override
|
||||
protected void onPreExecute() {
|
||||
if (ui.get() == null)
|
||||
return;
|
||||
final SwipeRefreshLayout reload = ui.get().findViewById(R.id.fragment_reload);
|
||||
reload.postDelayed(new Runnable() {
|
||||
@Override
|
||||
public void run() {
|
||||
if (getStatus() != Status.FINISHED)
|
||||
reload.setRefreshing(true);
|
||||
}
|
||||
}, 500);
|
||||
ui.get().setRefresh(true);
|
||||
}
|
||||
|
||||
|
||||
@Override
|
||||
protected List<TwitterUser> doInBackground(Object[] param) {
|
||||
List<TwitterUser> users = null;
|
||||
try {
|
||||
switch (mode) {
|
||||
case FOLLOWS:
|
||||
users = mTwitter.getFollower((long) param[0]);
|
||||
break;
|
||||
return mTwitter.getFollower((long) param[0]);
|
||||
|
||||
case FRIENDS:
|
||||
users = mTwitter.getFollowing((long) param[0]);
|
||||
break;
|
||||
return mTwitter.getFollowing((long) param[0]);
|
||||
|
||||
case RETWEET:
|
||||
users = mTwitter.getRetweeter((long) param[0]);
|
||||
break;
|
||||
return mTwitter.getRetweeter((long) param[0]);
|
||||
|
||||
case FAVORIT:
|
||||
users = new LinkedList<>(); // TODO not jet implemented in Twitter4J
|
||||
break;
|
||||
return new LinkedList<>(); // TODO not jet implemented in Twitter4J
|
||||
|
||||
case SEARCH:
|
||||
users = mTwitter.searchUsers((String) param[0]);
|
||||
break;
|
||||
return mTwitter.searchUsers((String) param[0]);
|
||||
}
|
||||
} catch (TwitterException err) {
|
||||
this.err = err;
|
||||
} catch (Exception err) {
|
||||
err.printStackTrace();
|
||||
}
|
||||
return users;
|
||||
return null;
|
||||
}
|
||||
|
||||
|
||||
|
@ -102,18 +83,15 @@ public class UserLoader extends AsyncTask<Object, Void, List<TwitterUser>> {
|
|||
adapter.replaceAll(users);
|
||||
else if (err != null)
|
||||
ErrorHandler.printError(ui.get().getContext(), err);
|
||||
SwipeRefreshLayout reload = ui.get().findViewById(R.id.fragment_reload);
|
||||
reload.setRefreshing(false);
|
||||
ui.get().setRefresh(false);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@Override
|
||||
protected void onCancelled() {
|
||||
if (ui.get() != null) {
|
||||
SwipeRefreshLayout reload = ui.get().findViewById(R.id.fragment_reload);
|
||||
reload.setRefreshing(false);
|
||||
}
|
||||
if (ui.get() != null)
|
||||
ui.get().setRefresh(false);
|
||||
}
|
||||
|
||||
|
||||
|
@ -122,8 +100,7 @@ public class UserLoader extends AsyncTask<Object, Void, List<TwitterUser>> {
|
|||
if (ui.get() != null) {
|
||||
if (users != null)
|
||||
adapter.replaceAll(users);
|
||||
SwipeRefreshLayout reload = ui.get().findViewById(R.id.fragment_reload);
|
||||
reload.setRefreshing(false);
|
||||
ui.get().setRefresh(false);
|
||||
}
|
||||
}
|
||||
}
|
|
@ -309,6 +309,17 @@ public class AppSettings extends AppCompatActivity implements OnClickListener,
|
|||
}
|
||||
|
||||
|
||||
public ArrayAdapter<TrendLocation> getAdapter() {
|
||||
return adapter;
|
||||
}
|
||||
|
||||
|
||||
public void setWoeIdSelection() {
|
||||
int position = adapter.getPosition(settings.getTrendLocation());
|
||||
woeId.setSelection(position);
|
||||
}
|
||||
|
||||
|
||||
private void setColor(int preColor) {
|
||||
Dialog d = ColorPickerDialogBuilder.with(this)
|
||||
.showAlphaSlider(false).initialColor(preColor)
|
||||
|
|
|
@ -64,6 +64,8 @@ public class MediaViewer extends AppCompatActivity implements OnImageClickListen
|
|||
private ImageLoader imageAsync;
|
||||
private ProgressBar video_progress;
|
||||
private MediaController videoController;
|
||||
private ImageAdapter adapter;
|
||||
private ProgressBar progress;
|
||||
private VideoView videoView;
|
||||
private ZoomView zoomImage;
|
||||
private MediaType type;
|
||||
|
@ -80,10 +82,12 @@ public class MediaViewer extends AppCompatActivity implements OnImageClickListen
|
|||
RecyclerView imageList = findViewById(R.id.image_list);
|
||||
View imageWindow = findViewById(R.id.image_window);
|
||||
View videoWindow = findViewById(R.id.video_window);
|
||||
progress = findViewById(R.id.image_load);
|
||||
video_progress = findViewById(R.id.video_load);
|
||||
zoomImage = findViewById(R.id.image_full);
|
||||
videoView = findViewById(R.id.video_view);
|
||||
videoController = new MediaController(this);
|
||||
adapter = new ImageAdapter(this);
|
||||
|
||||
Bundle param = getIntent().getExtras();
|
||||
if (param != null && param.containsKey(KEY_MEDIA_LINK) && param.containsKey(KEY_MEDIA_TYPE)) {
|
||||
|
@ -99,7 +103,7 @@ public class MediaViewer extends AppCompatActivity implements OnImageClickListen
|
|||
case ANGIF_STORAGE:
|
||||
imageWindow.setVisibility(VISIBLE);
|
||||
imageList.setLayoutManager(new LinearLayoutManager(this, HORIZONTAL, false));
|
||||
imageList.setAdapter(new ImageAdapter(this));
|
||||
imageList.setAdapter(adapter);
|
||||
Display d = getWindowManager().getDefaultDisplay();
|
||||
Point size = new Point();
|
||||
d.getSize(size);
|
||||
|
@ -226,7 +230,17 @@ public class MediaViewer extends AppCompatActivity implements OnImageClickListen
|
|||
}
|
||||
|
||||
|
||||
public void setImage(@NonNull Bitmap image) {
|
||||
public ImageAdapter getAdapter() {
|
||||
return adapter;
|
||||
}
|
||||
|
||||
|
||||
public void disableProgressbar() {
|
||||
progress.setVisibility(View.INVISIBLE);
|
||||
}
|
||||
|
||||
|
||||
private void setImage(@NonNull Bitmap image) {
|
||||
float ratio = image.getWidth() / (float) width;
|
||||
int destHeight = (int) (image.getHeight() / ratio);
|
||||
image = Bitmap.createScaledBitmap(image, width, destHeight, false);
|
||||
|
|
Loading…
Reference in New Issue