diff --git a/.idea/statistic.xml b/.idea/statistic.xml new file mode 100644 index 00000000..a71a751f --- /dev/null +++ b/.idea/statistic.xml @@ -0,0 +1,10 @@ + + + + + + \ No newline at end of file diff --git a/app/src/main/java/org/nuclearfog/twidda/adapter/ImageAdapter.java b/app/src/main/java/org/nuclearfog/twidda/adapter/ImageAdapter.java index 05f2884a..7bb86372 100644 --- a/app/src/main/java/org/nuclearfog/twidda/adapter/ImageAdapter.java +++ b/app/src/main/java/org/nuclearfog/twidda/adapter/ImageAdapter.java @@ -43,11 +43,6 @@ public class ImageAdapter extends Adapter { } - public Bitmap top() { - return images.get(0); - } - - public void disableLoading() { int circlePos = images.size(); loading = false; diff --git a/app/src/main/java/org/nuclearfog/twidda/backend/ImageLoader.java b/app/src/main/java/org/nuclearfog/twidda/backend/ImageLoader.java index 7a860957..798ae309 100644 --- a/app/src/main/java/org/nuclearfog/twidda/backend/ImageLoader.java +++ b/app/src/main/java/org/nuclearfog/twidda/backend/ImageLoader.java @@ -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 { 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 { 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()); - } } } diff --git a/app/src/main/java/org/nuclearfog/twidda/backend/LocationLoader.java b/app/src/main/java/org/nuclearfog/twidda/backend/LocationLoader.java index 2e6fc217..3ecfc45e 100644 --- a/app/src/main/java/org/nuclearfog/twidda/backend/LocationLoader.java +++ b/app/src/main/java/org/nuclearfog/twidda/backend/LocationLoader.java @@ -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> { private WeakReference 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> { protected void onPostExecute(List locations) { if (ui.get() != null) { if (locations != null && !locations.isEmpty()) { - Spinner woeId = ui.get().findViewById(R.id.woeid); - - @SuppressWarnings("unchecked") - ArrayAdapter adapter = (ArrayAdapter) woeId.getAdapter(); + ArrayAdapter 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); } diff --git a/app/src/main/java/org/nuclearfog/twidda/fragment/MessageListFragment.java b/app/src/main/java/org/nuclearfog/twidda/fragment/MessageListFragment.java index 679cb401..f588b7c7 100644 --- a/app/src/main/java/org/nuclearfog/twidda/fragment/MessageListFragment.java +++ b/app/src/main/java/org/nuclearfog/twidda/fragment/MessageListFragment.java @@ -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(); } } \ No newline at end of file diff --git a/app/src/main/java/org/nuclearfog/twidda/fragment/TrendListFragment.java b/app/src/main/java/org/nuclearfog/twidda/fragment/TrendListFragment.java index 1f14a44f..b212194f 100644 --- a/app/src/main/java/org/nuclearfog/twidda/fragment/TrendListFragment.java +++ b/app/src/main/java/org/nuclearfog/twidda/fragment/TrendListFragment.java @@ -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()); } } \ No newline at end of file diff --git a/app/src/main/java/org/nuclearfog/twidda/fragment/TweetListFragment.java b/app/src/main/java/org/nuclearfog/twidda/fragment/TweetListFragment.java index 6725e178..03eb6378 100644 --- a/app/src/main/java/org/nuclearfog/twidda/fragment/TweetListFragment.java +++ b/app/src/main/java/org/nuclearfog/twidda/fragment/TweetListFragment.java @@ -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()); } diff --git a/app/src/main/java/org/nuclearfog/twidda/fragment/UserListFragment.java b/app/src/main/java/org/nuclearfog/twidda/fragment/UserListFragment.java index f91ded34..305a765e 100644 --- a/app/src/main/java/org/nuclearfog/twidda/fragment/UserListFragment.java +++ b/app/src/main/java/org/nuclearfog/twidda/fragment/UserListFragment.java @@ -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; } diff --git a/app/src/main/java/org/nuclearfog/twidda/fragment/backend/MessageLoader.java b/app/src/main/java/org/nuclearfog/twidda/fragment/backend/MessageLoader.java index f4b1cce9..464523c7 100644 --- a/app/src/main/java/org/nuclearfog/twidda/fragment/backend/MessageLoader.java +++ b/app/src/main/java/org/nuclearfog/twidda/fragment/backend/MessageLoader.java @@ -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> { @@ -31,35 +26,26 @@ public class MessageLoader extends AsyncTask> { } private Mode mode; - private WeakReference ui; + private WeakReference 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> { 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> { 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); } } } \ No newline at end of file diff --git a/app/src/main/java/org/nuclearfog/twidda/fragment/backend/TrendLoader.java b/app/src/main/java/org/nuclearfog/twidda/fragment/backend/TrendLoader.java index e56c550f..741e273d 100644 --- a/app/src/main/java/org/nuclearfog/twidda/fragment/backend/TrendLoader.java +++ b/app/src/main/java/org/nuclearfog/twidda/fragment/backend/TrendLoader.java @@ -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> { - private WeakReference ui; + private WeakReference ui; private TwitterException err; private TwitterEngine mTwitter; private AppDatabase db; @@ -33,35 +28,26 @@ public class TrendLoader extends AsyncTask> { 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 doInBackground(Void[] v) { - List trends = null; + List trends; try { if (adapter.isEmpty()) { trends = db.getTrends(woeId); @@ -73,12 +59,13 @@ public class TrendLoader extends AsyncTask> { 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> { 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> { 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); } } } \ No newline at end of file diff --git a/app/src/main/java/org/nuclearfog/twidda/fragment/backend/TweetLoader.java b/app/src/main/java/org/nuclearfog/twidda/fragment/backend/TweetLoader.java index 86a5e982..058320ef 100644 --- a/app/src/main/java/org/nuclearfog/twidda/fragment/backend/TweetLoader.java +++ b/app/src/main/java/org/nuclearfog/twidda/fragment/backend/TweetLoader.java @@ -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> { @@ -35,35 +30,27 @@ public class TweetLoader extends AsyncTask> { } private Mode mode; - private WeakReference ui; + private WeakReference 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> { 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> { @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> { 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); } } } \ No newline at end of file diff --git a/app/src/main/java/org/nuclearfog/twidda/fragment/backend/UserLoader.java b/app/src/main/java/org/nuclearfog/twidda/fragment/backend/UserLoader.java index 0db87e09..e6d229a9 100644 --- a/app/src/main/java/org/nuclearfog/twidda/fragment/backend/UserLoader.java +++ b/app/src/main/java/org/nuclearfog/twidda/fragment/backend/UserLoader.java @@ -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> { } private Mode mode; - private WeakReference ui; + private WeakReference 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> { @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 doInBackground(Object[] param) { - List 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> { 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> { 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); } } } \ No newline at end of file diff --git a/app/src/main/java/org/nuclearfog/twidda/window/AppSettings.java b/app/src/main/java/org/nuclearfog/twidda/window/AppSettings.java index ae2fb351..7780aa88 100644 --- a/app/src/main/java/org/nuclearfog/twidda/window/AppSettings.java +++ b/app/src/main/java/org/nuclearfog/twidda/window/AppSettings.java @@ -309,6 +309,17 @@ public class AppSettings extends AppCompatActivity implements OnClickListener, } + public ArrayAdapter 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) diff --git a/app/src/main/java/org/nuclearfog/twidda/window/MediaViewer.java b/app/src/main/java/org/nuclearfog/twidda/window/MediaViewer.java index 41535d99..38eae2e9 100644 --- a/app/src/main/java/org/nuclearfog/twidda/window/MediaViewer.java +++ b/app/src/main/java/org/nuclearfog/twidda/window/MediaViewer.java @@ -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);