summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rwxr-xr-xorg.fox.ttrss/src/main/java/org/fox/ttrss/Application.java3
-rwxr-xr-xorg.fox.ttrss/src/main/java/org/fox/ttrss/ArticlePager.java23
-rwxr-xr-xorg.fox.ttrss/src/main/java/org/fox/ttrss/CommonActivity.java27
-rwxr-xr-xorg.fox.ttrss/src/main/java/org/fox/ttrss/DetailActivity.java9
-rwxr-xr-xorg.fox.ttrss/src/main/java/org/fox/ttrss/FeedCategoriesFragment.java12
-rwxr-xr-xorg.fox.ttrss/src/main/java/org/fox/ttrss/FeedsFragment.java21
-rwxr-xr-xorg.fox.ttrss/src/main/java/org/fox/ttrss/GalleryActivity.java23
-rwxr-xr-xorg.fox.ttrss/src/main/java/org/fox/ttrss/GalleryImageFragment.java2
-rwxr-xr-xorg.fox.ttrss/src/main/java/org/fox/ttrss/HeadlinesFragment.java244
-rwxr-xr-xorg.fox.ttrss/src/main/java/org/fox/ttrss/OnlineActivity.java51
-rwxr-xr-xorg.fox.ttrss/src/main/java/org/fox/ttrss/types/ArticleList.java6
11 files changed, 143 insertions, 278 deletions
diff --git a/org.fox.ttrss/src/main/java/org/fox/ttrss/Application.java b/org.fox.ttrss/src/main/java/org/fox/ttrss/Application.java
index 6408f28d..b872d034 100755
--- a/org.fox.ttrss/src/main/java/org/fox/ttrss/Application.java
+++ b/org.fox.ttrss/src/main/java/org/fox/ttrss/Application.java
@@ -47,7 +47,8 @@ public class Application extends android.app.Application {
out.putSerializable("gs:customSortTypes", m_customSortModes);
}
- public void load(Bundle in) {
+ /** @noinspection unchecked*/
+ public void load(Bundle in) {
if (in != null) {
m_sessionId = in.getString("gs:sessionId");
m_apiLevel = in.getInt("gs:apiLevel");
diff --git a/org.fox.ttrss/src/main/java/org/fox/ttrss/ArticlePager.java b/org.fox.ttrss/src/main/java/org/fox/ttrss/ArticlePager.java
index bda7393a..5bef0dd2 100755
--- a/org.fox.ttrss/src/main/java/org/fox/ttrss/ArticlePager.java
+++ b/org.fox.ttrss/src/main/java/org/fox/ttrss/ArticlePager.java
@@ -11,6 +11,7 @@ import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
+import androidx.annotation.NonNull;
import androidx.fragment.app.Fragment;
import androidx.fragment.app.FragmentActivity;
import androidx.preference.PreferenceManager;
@@ -30,7 +31,7 @@ import java.util.HashMap;
public class ArticlePager extends androidx.fragment.app.Fragment {
private final String TAG = "ArticlePager";
- private RecyclerView.Adapter m_adapter;
+ private PagerAdapter m_adapter;
private HeadlinesEventListener m_listener;
protected Article m_article;
private OnlineActivity m_activity;
@@ -42,15 +43,14 @@ public class ArticlePager extends androidx.fragment.app.Fragment {
private boolean m_lazyLoadDisabled;
private ViewPager2 m_pager;
- private class PagerAdapter extends FragmentStateAdapter {
+ private static class PagerAdapter extends FragmentStateAdapter {
public PagerAdapter(FragmentActivity fa) {
super(fa);
}
- private ArticleFragment m_currentFragment;
-
@Override
+ @NonNull
public Fragment createFragment(int position) {
try {
Article article = Application.getArticles().get(position);
@@ -73,10 +73,6 @@ public class ArticlePager extends androidx.fragment.app.Fragment {
return Application.getArticles().size();
}
- public ArticleFragment getCurrentFragment() {
- return m_currentFragment;
- }
-
}
public void initialize(Article article, Feed feed) {
@@ -162,11 +158,6 @@ public class ArticlePager extends androidx.fragment.app.Fragment {
@SuppressLint("StaticFieldLeak") HeadlinesRequest req = new HeadlinesRequest(getActivity().getApplicationContext(), m_activity, m_feed, Application.getArticles()) {
@Override
- protected void onProgressUpdate(Integer... progress) {
- m_activity.setProgress(progress[0] / progress[1] * 10000);
- }
-
- @Override
protected void onPostExecute(JsonElement result) {
if (isDetached() || !isAdded()) return;
@@ -192,7 +183,7 @@ public class ArticlePager extends androidx.fragment.app.Fragment {
.setAction(R.string.reload, v -> refresh(false)).show();
}
- if (m_amountLoaded < Integer.valueOf(m_prefs.getString("headlines_request_size", "15"))) {
+ if (m_amountLoaded < Integer.parseInt(m_prefs.getString("headlines_request_size", "15"))) {
m_lazyLoadDisabled = true;
}
@@ -299,13 +290,13 @@ public class ArticlePager extends androidx.fragment.app.Fragment {
}
}
- Log.d(TAG, "[AP] request more headlines, firstId=" + m_firstId);
+ Log.d(TAG, "[AP] request more headlines, firstId=" + m_firstId);
req.execute(map);
}
@Override
- public void onAttach(Activity activity) {
+ public void onAttach(@NonNull Activity activity) {
super.onAttach(activity);
m_listener = (HeadlinesEventListener)activity;
diff --git a/org.fox.ttrss/src/main/java/org/fox/ttrss/CommonActivity.java b/org.fox.ttrss/src/main/java/org/fox/ttrss/CommonActivity.java
index cd798f1a..cdc261b7 100755
--- a/org.fox.ttrss/src/main/java/org/fox/ttrss/CommonActivity.java
+++ b/org.fox.ttrss/src/main/java/org/fox/ttrss/CommonActivity.java
@@ -13,7 +13,6 @@ import android.content.Intent;
import android.content.SharedPreferences;
import android.content.pm.PackageManager;
import android.content.pm.ResolveInfo;
-import android.content.res.Configuration;
import android.graphics.Bitmap;
import android.graphics.BitmapFactory;
import android.net.ConnectivityManager;
@@ -281,31 +280,16 @@ public class CommonActivity extends AppCompatActivity implements SharedPreferenc
@SuppressLint({ "NewApi", "ServiceCast" })
@SuppressWarnings("deprecation")
public void copyToClipboard(String str) {
- if (android.os.Build.VERSION.SDK_INT < android.os.Build.VERSION_CODES.HONEYCOMB) {
- android.text.ClipboardManager clipboard = (android.text.ClipboardManager) getSystemService(CLIPBOARD_SERVICE);
- clipboard.setText(str);
- } else {
- android.content.ClipboardManager clipboard = (android.content.ClipboardManager) getSystemService(CLIPBOARD_SERVICE);
- clipboard.setText(str);
- }
+ android.content.ClipboardManager clipboard = (android.content.ClipboardManager) getSystemService(CLIPBOARD_SERVICE);
+ clipboard.setText(str);
- Snackbar.make(findViewById(android.R.id.content), R.string.text_copied_to_clipboard, Snackbar.LENGTH_SHORT)
+ Snackbar.make(findViewById(android.R.id.content), R.string.text_copied_to_clipboard, Snackbar.LENGTH_SHORT)
.setAction(R.string.dialog_close, v -> {
})
.show();
}
- public boolean isUiNightMode() {
- try {
- int nightModeFlags = getResources().getConfiguration().uiMode & Configuration.UI_MODE_NIGHT_MASK;
-
- return Configuration.UI_MODE_NIGHT_YES == nightModeFlags;
- } catch (Exception e) {
- return false;
- }
- }
-
protected void setAppTheme(SharedPreferences prefs) {
String theme = prefs.getString("theme", CommonActivity.THEME_DEFAULT);
@@ -334,7 +318,7 @@ public class CommonActivity extends AppCompatActivity implements SharedPreferenc
"headlines_swipe_to_dismiss", "headlines_mark_read_scroll", "headlines_request_size",
"force_phone_layout", "open_on_startup"};
- m_needRestart = Arrays.asList(filter).indexOf(key) != -1;
+ m_needRestart = Arrays.asList(filter).contains(key);
}
private CustomTabsSession getCustomTabSession() {
@@ -618,8 +602,7 @@ public class CommonActivity extends AppCompatActivity implements SharedPreferenc
static public int dpToPx(Context context, int dp) {
DisplayMetrics displayMetrics = context.getResources().getDisplayMetrics();
- int px = Math.round(dp * (displayMetrics.xdpi / DisplayMetrics.DENSITY_DEFAULT));
- return px;
+ return Math.round(dp * (displayMetrics.xdpi / DisplayMetrics.DENSITY_DEFAULT));
}
}
diff --git a/org.fox.ttrss/src/main/java/org/fox/ttrss/DetailActivity.java b/org.fox.ttrss/src/main/java/org/fox/ttrss/DetailActivity.java
index 67d73b23..78dad5e3 100755
--- a/org.fox.ttrss/src/main/java/org/fox/ttrss/DetailActivity.java
+++ b/org.fox.ttrss/src/main/java/org/fox/ttrss/DetailActivity.java
@@ -39,7 +39,7 @@ public class DetailActivity extends OnlineActivity implements HeadlinesEventList
setAppTheme(m_prefs);
- super.onCreate(savedInstanceState);
+ super.onCreate(savedInstanceState);
if (m_prefs.getBoolean("force_phone_layout", false)) {
setContentView(R.layout.activity_detail_phone);
@@ -329,13 +329,6 @@ ArticlePager af = (ArticlePager) getSupportFragmentManager().findFragmentByTag(F
invalidateOptionsMenu();
}
- public void showSidebar(boolean show) {
- if (!isSmallScreen() && !isPortrait()) {
- findViewById(R.id.headlines_fragment).setVisibility(show ? View.VISIBLE : View.GONE);
- invalidateOptionsMenu();
- }
- }
-
@Override
public void onHeadlinesLoaded(boolean appended) {
HeadlinesFragment hf = (HeadlinesFragment) getSupportFragmentManager().findFragmentByTag(FRAG_HEADLINES);
diff --git a/org.fox.ttrss/src/main/java/org/fox/ttrss/FeedCategoriesFragment.java b/org.fox.ttrss/src/main/java/org/fox/ttrss/FeedCategoriesFragment.java
index 5b8212d2..df398624 100755
--- a/org.fox.ttrss/src/main/java/org/fox/ttrss/FeedCategoriesFragment.java
+++ b/org.fox.ttrss/src/main/java/org/fox/ttrss/FeedCategoriesFragment.java
@@ -38,7 +38,6 @@ import org.fox.ttrss.types.FeedCategoryList;
import java.lang.reflect.Type;
import java.util.ArrayList;
-import java.util.Collections;
import java.util.Comparator;
import java.util.HashMap;
import java.util.List;
@@ -99,9 +98,10 @@ public class FeedCategoriesFragment extends BaseFeedlistFragment implements OnIt
}
for (FeedCategory c : cats) {
- if (c.id == -1) {
- specialCatFound = true;
- }
+ if (c.id == -1) {
+ specialCatFound = true;
+ break;
+ }
}
m_cats.addAll(cats);
@@ -149,7 +149,7 @@ public class FeedCategoriesFragment extends BaseFeedlistFragment implements OnIt
}
try {
- Collections.sort(m_cats, cmp);
+ m_cats.sort(cmp);
} catch (IllegalArgumentException e) {
e.printStackTrace();
}
@@ -283,7 +283,7 @@ public class FeedCategoriesFragment extends BaseFeedlistFragment implements OnIt
m_swipeLayout = view.findViewById(R.id.feeds_swipe_container);
- m_swipeLayout.setOnRefreshListener(() -> refresh());
+ m_swipeLayout.setOnRefreshListener(this::refresh);
m_list = view.findViewById(R.id.feeds);
m_adapter = new FeedCategoryListAdapter(getActivity(), R.layout.feeds_row, m_cats);
diff --git a/org.fox.ttrss/src/main/java/org/fox/ttrss/FeedsFragment.java b/org.fox.ttrss/src/main/java/org/fox/ttrss/FeedsFragment.java
index 28e56699..c936385b 100755
--- a/org.fox.ttrss/src/main/java/org/fox/ttrss/FeedsFragment.java
+++ b/org.fox.ttrss/src/main/java/org/fox/ttrss/FeedsFragment.java
@@ -41,7 +41,6 @@ import org.fox.ttrss.types.FeedList;
import java.lang.reflect.Type;
import java.util.ArrayList;
-import java.util.Collections;
import java.util.Comparator;
import java.util.HashMap;
import java.util.List;
@@ -78,9 +77,9 @@ public class FeedsFragment extends BaseFeedlistFragment implements OnItemClickLi
params.put("sid", sessionId);
params.put("include_nested", "true");
params.put("cat_id", String.valueOf(catId));
- if (unreadOnly) {
- params.put("unread_only", String.valueOf(unreadOnly));
- }
+
+ if (unreadOnly)
+ params.put("unread_only", "true");
return new FeedsLoader(getActivity().getApplicationContext(), params, catId);
}
@@ -154,16 +153,11 @@ public class FeedsFragment extends BaseFeedlistFragment implements OnItemClickLi
} else {
m_activity.toast(al.getErrorMessage());
}
-
- //m_activity.setLoadingStatus(getErrorMessage(), false);
}
}
@Override
- public void onLoaderReset(Loader<JsonElement> loader) {
- /*m_feeds.clear();
- m_adapter.notifyDataSetChanged();*/
- }
+ public void onLoaderReset(Loader<JsonElement> loader) { }
@SuppressLint("DefaultLocale")
static class FeedUnreadComparator implements Comparator<Feed> {
@@ -203,9 +197,6 @@ public class FeedsFragment extends BaseFeedlistFragment implements OnItemClickLi
@Override
public int compare(Feed a, Feed b) {
- //Log.d(TAG, "A:" + a.title + " " + a.is_cat + " " + a.order_id);
- //Log.d(TAG, "B:" + b.title + " " + b.is_cat + " " + b.order_id);
-
if (a.id >= 0 && b.id >= 0)
if (a.is_cat && b.is_cat)
if (a.order_id != 0 && b.order_id != 0)
@@ -331,7 +322,7 @@ public class FeedsFragment extends BaseFeedlistFragment implements OnItemClickLi
m_swipeLayout = view.findViewById(R.id.feeds_swipe_container);
- m_swipeLayout.setOnRefreshListener(() -> refresh());
+ m_swipeLayout.setOnRefreshListener(this::refresh);
m_list = view.findViewById(R.id.feeds);
@@ -538,7 +529,7 @@ public class FeedsFragment extends BaseFeedlistFragment implements OnItemClickLi
}
try {
- Collections.sort(m_feeds, cmp);
+ m_feeds.sort(cmp);
} catch (IllegalArgumentException e) {
// sort order got changed in prefs or something
e.printStackTrace();
diff --git a/org.fox.ttrss/src/main/java/org/fox/ttrss/GalleryActivity.java b/org.fox.ttrss/src/main/java/org/fox/ttrss/GalleryActivity.java
index 3937f938..c527730b 100755
--- a/org.fox.ttrss/src/main/java/org/fox/ttrss/GalleryActivity.java
+++ b/org.fox.ttrss/src/main/java/org/fox/ttrss/GalleryActivity.java
@@ -70,22 +70,17 @@ public class GalleryActivity extends CommonActivity {
GalleryEntry item = m_items.get(position);
switch (item.type) {
- case TYPE_IMAGE:
- if (true) {
- GalleryImageFragment frag = new GalleryImageFragment();
- frag.initialize(item.url);
+ case TYPE_IMAGE: {
+ GalleryImageFragment frag = new GalleryImageFragment();
+ frag.initialize(item.url);
- return frag;
- }
- break;
+ return frag;
+ }
case TYPE_VIDEO:
- if (true) {
- GalleryVideoFragment frag = new GalleryVideoFragment();
- frag.initialize(item.url, item.coverUrl);
+ GalleryVideoFragment frag = new GalleryVideoFragment();
+ frag.initialize(item.url, item.coverUrl);
- return frag;
- }
- break;
+ return frag;
}
return null;
@@ -225,7 +220,7 @@ public class GalleryActivity extends CommonActivity {
}
}
- if ((firstFound || imgSrcFirst.equals("")) && item.url != null) {
+ if ((firstFound || imgSrcFirst.isEmpty()) && item.url != null) {
if (m_items.isEmpty())
m_items.add(item);
else
diff --git a/org.fox.ttrss/src/main/java/org/fox/ttrss/GalleryImageFragment.java b/org.fox.ttrss/src/main/java/org/fox/ttrss/GalleryImageFragment.java
index addb48d3..8f9d5783 100755
--- a/org.fox.ttrss/src/main/java/org/fox/ttrss/GalleryImageFragment.java
+++ b/org.fox.ttrss/src/main/java/org/fox/ttrss/GalleryImageFragment.java
@@ -47,7 +47,7 @@ public class GalleryImageFragment extends GalleryBaseFragment {
imgView.setOnTouchListener(touchHandler);
// shared element transitions stop GIFs from playing
- if (m_url.toLowerCase().indexOf(".gif") == -1) {
+ if (!m_url.toLowerCase().contains(".gif")) {
ViewCompat.setTransitionName(imgView, "gallery:" + m_url);
}
diff --git a/org.fox.ttrss/src/main/java/org/fox/ttrss/HeadlinesFragment.java b/org.fox.ttrss/src/main/java/org/fox/ttrss/HeadlinesFragment.java
index c07c3408..32943961 100755
--- a/org.fox.ttrss/src/main/java/org/fox/ttrss/HeadlinesFragment.java
+++ b/org.fox.ttrss/src/main/java/org/fox/ttrss/HeadlinesFragment.java
@@ -15,7 +15,6 @@ import android.media.MediaPlayer;
import android.net.ConnectivityManager;
import android.net.NetworkInfo;
import android.net.Uri;
-import android.os.Build;
import android.os.Bundle;
import android.os.Handler;
import android.text.Html;
@@ -111,8 +110,7 @@ public class HeadlinesFragment extends androidx.fragment.app.Fragment {
private HeadlinesEventListener m_listener;
private OnlineActivity m_activity;
private SwipeRefreshLayout m_swipeLayout;
- private int m_maxImageSize = 0;
- boolean m_compactLayoutMode = false;
+ boolean m_compactLayoutMode = false;
private RecyclerView m_list;
private LinearLayoutManager m_layoutManager;
@@ -176,22 +174,17 @@ public class HeadlinesFragment extends androidx.fragment.app.Fragment {
m_activity.shareArticle(article);
return true;
} else if (itemId == R.id.catchup_above) {
- if (true) {
+ final Article fa = article;
- final Article fa = article;
+ MaterialAlertDialogBuilder builder = new MaterialAlertDialogBuilder(getContext())
+ .setMessage(R.string.confirm_catchup_above)
+ .setPositiveButton(R.string.dialog_ok,
+ (dialog, which) -> catchupAbove(fa))
+ .setNegativeButton(R.string.dialog_cancel,
+ (dialog, which) -> { });
- MaterialAlertDialogBuilder builder = new MaterialAlertDialogBuilder(getContext())
- .setMessage(R.string.confirm_catchup_above)
- .setPositiveButton(R.string.dialog_ok,
- (dialog, which) -> catchupAbove(fa))
- .setNegativeButton(R.string.dialog_cancel,
- (dialog, which) -> {
-
- });
-
- Dialog dialog = builder.create();
- dialog.show();
- }
+ Dialog dialog = builder.create();
+ dialog.show();
return true;
}
Log.d(TAG, "onArticleMenuItemSelected, unhandled id=" + item.getItemId());
@@ -235,12 +228,10 @@ public class HeadlinesFragment extends androidx.fragment.app.Fragment {
public HeadlinesFragment() {
super();
- if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {
- Transition fade = new Fade();
+ Transition fade = new Fade();
- setEnterTransition(fade);
- setReenterTransition(fade);
- }
+ setEnterTransition(fade);
+ setReenterTransition(fade);
}
@Override
@@ -295,9 +286,6 @@ public class HeadlinesFragment extends androidx.fragment.app.Fragment {
DisplayMetrics metrics = new DisplayMetrics();
getActivity().getWindowManager().getDefaultDisplay().getMetrics(metrics);
- m_maxImageSize = (int) (128 * metrics.density + 0.5);
-
- Log.d(TAG, "maxImageSize=" + m_maxImageSize);
View view = inflater.inflate(R.layout.fragment_headlines, container, false);
@@ -312,14 +300,7 @@ public class HeadlinesFragment extends androidx.fragment.app.Fragment {
m_list.setLayoutManager(m_layoutManager);
m_list.setItemAnimator(new DefaultItemAnimator());
- /* if (m_compactLayoutMode) {
- MaterialDividerItemDecoration materialDivider = new MaterialDividerItemDecoration(m_list.getContext(), m_layoutManager.getOrientation());
- materialDivider.setDividerInsetStart(dpToPx(80));
-
- m_list.addItemDecoration(materialDivider);
- } */
-
- ArticleListAdapter adapter = new ArticleListAdapter(getActivity(), R.layout.headlines_row, Application.getArticles());
+ ArticleListAdapter adapter = new ArticleListAdapter(Application.getArticles());
m_adapter = new HeaderViewRecyclerAdapter(adapter);
@@ -337,7 +318,7 @@ public class HeadlinesFragment extends androidx.fragment.app.Fragment {
@Override
public int getSwipeDirs(RecyclerView recyclerView, RecyclerView.ViewHolder viewHolder) {
- int position = viewHolder.getAdapterPosition() - m_adapter.getHeaderCount();
+ int position = viewHolder.getBindingAdapterPosition() - m_adapter.getHeaderCount();
Article article = getArticleAtPosition(position);
@@ -350,7 +331,7 @@ public class HeadlinesFragment extends androidx.fragment.app.Fragment {
@Override
public void onSwiped(RecyclerView.ViewHolder viewHolder, int direction) {
- final int adapterPosition = viewHolder.getAdapterPosition();
+ final int adapterPosition = viewHolder.getBindingAdapterPosition();
final int position = adapterPosition - m_adapter.getHeaderCount();
try {
@@ -400,18 +381,6 @@ public class HeadlinesFragment extends androidx.fragment.app.Fragment {
public void onScrollStateChanged(RecyclerView recyclerView, int newState) {
super.onScrollStateChanged(recyclerView, newState);
- /*if (newState != RecyclerView.SCROLL_STATE_IDLE) {
-
- try {
- if (m_mediaPlayer != null && m_mediaPlayer.isPlaying()) {
- m_mediaPlayer.pause();
- }
- } catch (IllegalStateException e) {
- // i guess it was already released, oh well
- }
-
- }*/
-
if (newState == RecyclerView.SCROLL_STATE_IDLE && m_prefs.getBoolean("headlines_mark_read_scroll", false)) {
if (!m_readArticles.isEmpty()) {
m_activity.toggleArticlesUnread(m_readArticles);
@@ -520,11 +489,6 @@ public class HeadlinesFragment extends androidx.fragment.app.Fragment {
@SuppressLint("StaticFieldLeak") HeadlinesRequest req = new HeadlinesRequest(getActivity().getApplicationContext(), m_activity, m_feed, Application.getArticles()) {
@Override
- protected void onProgressUpdate(Integer... progress) {
- m_activity.setProgress(Math.round((((float) progress[0] / (float) progress[1]) * 10000)));
- }
-
- @Override
protected void onPostExecute(JsonElement result) {
if (isDetached() || !isAdded()) return;
@@ -554,7 +518,7 @@ public class HeadlinesFragment extends androidx.fragment.app.Fragment {
}
}
- if (m_amountLoaded < Integer.valueOf(m_prefs.getString("headlines_request_size", "15"))) {
+ if (m_amountLoaded < Integer.parseInt(m_prefs.getString("headlines_request_size", "15"))) {
//Log.d(TAG, "amount loaded < request size, disabling lazy load");
m_lazyLoadDisabled = true;
}
@@ -693,8 +657,6 @@ public class HeadlinesFragment extends androidx.fragment.app.Fragment {
public View flavorImageOverflow;
public TextureView flavorVideoView;
public MaterialButton attachmentsView;
- //public int position;
- public boolean flavorImageEmbedded;
public ProgressTarget<String, GlideDrawable> flavorProgressTarget;
public ArticleViewHolder(View v) {
@@ -789,7 +751,6 @@ public class HeadlinesFragment extends androidx.fragment.app.Fragment {
private final TextDrawable.IBuilder m_drawableBuilder = TextDrawable.builder().round();
boolean flavorImageEnabled;
- private final int m_minimumHeightToEmbed;
private final int m_screenHeight;
private int m_lastAddedPosition;
@@ -812,14 +773,13 @@ public class HeadlinesFragment extends androidx.fragment.app.Fragment {
return false;
}
- public ArticleListAdapter(Context context, int textViewResourceId, ArticleList items) {
+ public ArticleListAdapter(ArticleList items) {
super();
this.items = items;
Display display = m_activity.getWindowManager().getDefaultDisplay();
Point size = new Point();
display.getSize(size);
- m_minimumHeightToEmbed = size.y/3;
m_screenHeight = size.y;
String headlineMode = m_prefs.getString("headline_mode", "HL_DEFAULT");
@@ -901,14 +861,14 @@ public class HeadlinesFragment extends androidx.fragment.app.Fragment {
}
if (holder.textImage != null) {
- updateTextCheckedState(holder, article, position);
+ updateTextCheckedState(holder, article);
holder.textImage.setOnClickListener(view -> {
Log.d(TAG, "textImage : onclicked");
article.selected = !article.selected;
- updateTextCheckedState(holder, article, m_list.getChildPosition(holder.view));
+ updateTextCheckedState(holder, article);
m_listener.onArticleListSelectionChange(getSelectedArticles());
@@ -967,7 +927,7 @@ public class HeadlinesFragment extends androidx.fragment.app.Fragment {
holder.markedView.setOnClickListener(v -> {
article.marked = !article.marked;
- m_adapter.notifyItemChanged(m_list.getChildPosition(holder.view));
+ m_adapter.notifyItemChanged(m_list.getChildAdapterPosition(holder.view));
m_activity.saveArticleMarked(article);
});
@@ -999,27 +959,18 @@ public class HeadlinesFragment extends androidx.fragment.app.Fragment {
MaterialAlertDialogBuilder builder = new MaterialAlertDialogBuilder(getContext())
.setTitle(R.string.score_for_this_article)
.setPositiveButton(R.string.set_score,
-(dialog, which) -> {
-
-try {
-int newScore = Integer.parseInt(edit.getText().toString());
-
-article.score = newScore;
-
-m_activity.saveArticleScore(article);
-
-m_adapter.notifyItemChanged(m_list.getChildPosition(holder.view));
-} catch (NumberFormatException e) {
-m_activity.toast(R.string.score_invalid);
-e.printStackTrace();
-}
-})
- .setNegativeButton(getString(R.string.cancel),
-(dialog, which) -> {
-
-//
-
-}).setView(edit);
+ (dialog, which) -> {
+ try {
+ article.score = Integer.parseInt(edit.getText().toString());
+ m_activity.saveArticleScore(article);
+ m_adapter.notifyItemChanged(m_list.getChildAdapterPosition(holder.view));
+ } catch (NumberFormatException e) {
+ m_activity.toast(R.string.score_invalid);
+ e.printStackTrace();
+ }
+ })
+ .setNegativeButton(getString(R.string.cancel),
+ (dialog, which) -> { }).setView(edit);
Dialog dialog = builder.create();
dialog.show();
@@ -1040,8 +991,7 @@ e.printStackTrace();
holder.publishedView.setOnClickListener(v -> {
article.published = !article.published;
- //m_adapter.notifyDataSetChanged();
- m_adapter.notifyItemChanged(m_list.getChildPosition(holder.view));
+ m_adapter.notifyItemChanged(m_list.getChildAdapterPosition(holder.view));
m_activity.saveArticlePublished(article);
});
@@ -1134,27 +1084,27 @@ e.printStackTrace();
popup.setOnMenuItemClickListener(item -> {
-Uri mediaUri = Uri.parse(article.flavorStreamUri != null ? article.flavorStreamUri : article.flavorImageUri);
-
-int itemId = item.getItemId();
-if (itemId == R.id.article_img_open) {
-m_activity.openUri(mediaUri);
-return true;
-} else if (itemId == R.id.article_img_copy) {
-m_activity.copyToClipboard(mediaUri.toString());
-return true;
-} else if (itemId == R.id.article_img_share) {
-m_activity.shareImageFromUri(mediaUri.toString());
-return true;
-} else if (itemId == R.id.article_img_share_url) {
-m_activity.shareText(mediaUri.toString());
-return true;
-} else if (itemId == R.id.article_img_view_caption) {
-m_activity.displayImageCaption(article.flavorImageUri, article.content);
-return true;
-}
-return false;
-});
+ Uri mediaUri = Uri.parse(article.flavorStreamUri != null ? article.flavorStreamUri : article.flavorImageUri);
+
+ int itemId = item.getItemId();
+ if (itemId == R.id.article_img_open) {
+ m_activity.openUri(mediaUri);
+ return true;
+ } else if (itemId == R.id.article_img_copy) {
+ m_activity.copyToClipboard(mediaUri.toString());
+ return true;
+ } else if (itemId == R.id.article_img_share) {
+ m_activity.shareImageFromUri(mediaUri.toString());
+ return true;
+ } else if (itemId == R.id.article_img_share_url) {
+ m_activity.shareText(mediaUri.toString());
+ return true;
+ } else if (itemId == R.id.article_img_view_caption) {
+ m_activity.displayImageCaption(article.flavorImageUri, article.content);
+ return true;
+ }
+ return false;
+ });
popup.show();
});
@@ -1165,9 +1115,6 @@ return false;
});
}
- //Log.d(TAG, "IMG: " + article.flavorImageUri + " STREAM: " + article.flavorStreamUri + " H:" + article.flavorViewHeight);
- //Log.d(TAG, "TAG:" + holder.flavorImageOverflow.getTag());
-
holder.flavorImageView.setVisibility(View.VISIBLE);
holder.flavorImageView.setMaxHeight((int)(m_screenHeight * 0.6f));
@@ -1225,7 +1172,7 @@ return false;
}
if (m_prefs.getBoolean("inline_video_player", false) && article.flavorImage != null &&
- "video".equals(article.flavorImage.tagName().toLowerCase()) && article.flavorStreamUri != null) {
+ "video".equalsIgnoreCase(article.flavorImage.tagName()) && article.flavorStreamUri != null) {
holder.flavorImageView.setOnLongClickListener(v -> {
releaseSurface();
@@ -1250,15 +1197,15 @@ return false;
bar.setVisibility(View.VISIBLE);
holder.flavorVideoView.setOnClickListener(v -> {
-try {
-if (m_mediaPlayer.isPlaying())
-m_mediaPlayer.pause();
-else
-m_mediaPlayer.start();
-} catch (IllegalStateException e) {
-releaseSurface();
-}
-});
+ try {
+ if (m_mediaPlayer.isPlaying())
+ m_mediaPlayer.pause();
+ else
+ m_mediaPlayer.start();
+ } catch (IllegalStateException e) {
+ releaseSurface();
+ }
+ });
m_activeTexture = holder.flavorVideoView;
@@ -1285,15 +1232,14 @@ releaseSurface();
m_mediaPlayer.setDataSource(article.flavorStreamUri);
m_mediaPlayer.setOnPreparedListener(mp -> {
-
-try {
-bar.setVisibility(View.GONE);
-mp.setLooping(true);
-mp.start();
-} catch (IllegalStateException e) {
-e.printStackTrace();
-}
-});
+ try {
+ bar.setVisibility(View.GONE);
+ mp.setLooping(true);
+ mp.start();
+ } catch (IllegalStateException e) {
+ e.printStackTrace();
+ }
+ });
m_mediaPlayer.prepareAsync();
} catch (Exception e) {
@@ -1389,7 +1335,8 @@ e.printStackTrace();
popup.getMenu().findItem(R.id.article_set_labels).setEnabled(m_activity.getApiLevel() >= 1);
popup.getMenu().findItem(R.id.article_edit_note).setEnabled(m_activity.getApiLevel() >= 1);
- popup.setOnMenuItemClickListener(item -> onArticleMenuItemSelected(item, article, m_list.getChildPosition(holder.view)));
+ popup.setOnMenuItemClickListener(item -> onArticleMenuItemSelected(item, article,
+ m_list.getChildAdapterPosition(holder.view)));
popup.show();
});
@@ -1420,7 +1367,7 @@ e.printStackTrace();
return items.size();
}
- private void updateTextCheckedState(final ArticleViewHolder holder, final Article article, final int position) {
+ private void updateTextCheckedState(final ArticleViewHolder holder, final Article article) {
String tmp = !article.title.isEmpty() ? article.title.substring(0, 1).toUpperCase() : "?";
if (article.selected) {
@@ -1464,7 +1411,7 @@ e.printStackTrace();
private void openGalleryForType(Article article, ArticleViewHolder holder, View transitionView) {
//Log.d(TAG, "openGalleryForType: " + article + " " + holder + " " + transitionView);
- if ("iframe".equals(article.flavorImage.tagName().toLowerCase())) {
+ if ("iframe".equalsIgnoreCase(article.flavorImage.tagName())) {
m_activity.openUri(Uri.parse(article.flavorStreamUri));
} else {
@@ -1508,10 +1455,10 @@ e.printStackTrace();
private void adjustVideoKindView(ArticleViewHolder holder, Article article) {
if (article.flavorImage != null) {
- if (article.flavor_kind == Article.FLAVOR_KIND_YOUTUBE || "iframe".equals(article.flavorImage.tagName().toLowerCase())) {
+ if (article.flavor_kind == Article.FLAVOR_KIND_YOUTUBE || "iframe".equalsIgnoreCase(article.flavorImage.tagName())) {
holder.flavorVideoKindView.setImageResource(R.drawable.baseline_play_circle_outline_24);
holder.flavorVideoKindView.setVisibility(View.VISIBLE);
- } else if (article.flavor_kind == Article.FLAVOR_KIND_VIDEO || "video".equals(article.flavorImage.tagName().toLowerCase())) {
+ } else if (article.flavor_kind == Article.FLAVOR_KIND_VIDEO || "video".equalsIgnoreCase(article.flavorImage.tagName())) {
holder.flavorVideoKindView.setImageResource(R.drawable.baseline_play_circle_24);
holder.flavorVideoKindView.setVisibility(View.VISIBLE);
} else {
@@ -1526,12 +1473,12 @@ e.printStackTrace();
int viewType = getItemViewType(position);
if (origTitleColors[viewType] == null)
// store original color
- origTitleColors[viewType] = Integer.valueOf(tv.getCurrentTextColor());
+ origTitleColors[viewType] = tv.getCurrentTextColor();
if (score < Article.SCORE_LOW) {
tv.setPaintFlags(tv.getPaintFlags() | Paint.STRIKE_THRU_TEXT_FLAG);
} else {
- tv.setTextColor(origTitleColors[viewType].intValue());
+ tv.setTextColor(origTitleColors[viewType]);
tv.setPaintFlags(tv.getPaintFlags() & ~Paint.STRIKE_THRU_TEXT_FLAG);
}
}
@@ -1621,14 +1568,6 @@ e.printStackTrace();
return null;
}
- public ArticleList getUnreadArticles() {
- ArticleList tmp = new ArticleList();
- for (Article a : Application.getArticles()) {
- if (a.unread) tmp.add(a);
- }
- return tmp;
- }
-
public Article getActiveArticle() {
return m_activeArticle;
}
@@ -1662,27 +1601,6 @@ e.printStackTrace();
return m_feed;
}
- public void setArticles(ArticleList articles) {
- Application.getArticles().clear();
- Application.getArticles().addAll(articles);
-
- Application.getArticles().add(new Article(Article.TYPE_AMR_FOOTER));
-
- m_adapter.notifyDataSetChanged();
- }
-
- public int pxToDp(int px) {
- DisplayMetrics displayMetrics = getContext().getResources().getDisplayMetrics();
- int dp = Math.round(px / (displayMetrics.xdpi / DisplayMetrics.DENSITY_DEFAULT));
- return dp;
- }
-
- public int dpToPx(int dp) {
- DisplayMetrics displayMetrics = getContext().getResources().getDisplayMetrics();
- int px = Math.round(dp * (displayMetrics.xdpi / DisplayMetrics.DENSITY_DEFAULT));
- return px;
- }
-
@Override
public void onPause() {
super.onPause();
diff --git a/org.fox.ttrss/src/main/java/org/fox/ttrss/OnlineActivity.java b/org.fox.ttrss/src/main/java/org/fox/ttrss/OnlineActivity.java
index 8080456c..04629561 100755
--- a/org.fox.ttrss/src/main/java/org/fox/ttrss/OnlineActivity.java
+++ b/org.fox.ttrss/src/main/java/org/fox/ttrss/OnlineActivity.java
@@ -193,8 +193,6 @@ public class OnlineActivity extends CommonActivity {
super.onCreate(savedInstanceState);
- SharedPreferences localPrefs = getSharedPreferences("localprefs", Context.MODE_PRIVATE);
-
setContentView(R.layout.activity_login);
Toolbar toolbar = findViewById(R.id.toolbar);
@@ -265,9 +263,6 @@ public class OnlineActivity extends CommonActivity {
@Override
public boolean onContextItemSelected(android.view.MenuItem item) {
- /* AdapterContextMenuInfo info = (AdapterContextMenuInfo) item
- .getMenuInfo(); */
-
final ArticlePager ap = (ArticlePager)getSupportFragmentManager().findFragmentByTag(FRAG_ARTICLE);
int itemId = item.getItemId();
@@ -458,18 +453,21 @@ public class OnlineActivity extends CommonActivity {
if (hf != null) {
String viewMode = getViewMode();
- //Log.d(TAG, "viewMode:" + getViewMode());
-
int selectedIndex = 0;
- if (viewMode.equals("all_articles")) {
- selectedIndex = 1;
- } else if (viewMode.equals("marked")) {
- selectedIndex = 2;
- } else if (viewMode.equals("published")) {
- selectedIndex = 3;
- } else if (viewMode.equals("unread")) {
- selectedIndex = 4;
+ switch (viewMode) {
+ case "all_articles":
+ selectedIndex = 1;
+ break;
+ case "marked":
+ selectedIndex = 2;
+ break;
+ case "published":
+ selectedIndex = 3;
+ break;
+ case "unread":
+ selectedIndex = 4;
+ break;
}
MaterialAlertDialogBuilder builder = new MaterialAlertDialogBuilder(this)
@@ -910,15 +908,6 @@ public class OnlineActivity extends CommonActivity {
req.execute(map);
}
- public static String articlesToIdString(ArticleList articles) {
- String tmp = "";
-
- for (Article a : articles)
- tmp += a.id + ",";
-
- return tmp.replaceAll(",$", "");
- }
-
public void shareArticle(Article article) {
if (article != null) {
shareText(article.link, article.title);
@@ -1055,7 +1044,7 @@ article.score = Integer.parseInt(edit.getText().toString());
HashMap<String, String> map = new HashMap<>();
map.put("sid", getSessionId());
map.put("op", "updateArticle");
- map.put("article_ids", articlesToIdString(articles));
+ map.put("article_ids", articles.getAsCommaSeparatedIds());
map.put("mode", "2");
map.put("field", "0");
@@ -1068,8 +1057,8 @@ article.score = Integer.parseInt(edit.getText().toString());
HashMap<String, String> map = new HashMap<>();
map.put("sid", getSessionId());
map.put("op", "updateArticle");
- map.put("article_ids", articlesToIdString(articles));
- map.put("mode", "2");
+ map.put("article_ids", articles.getAsCommaSeparatedIds());
+ map.put("mode", "2");
map.put("field", "2");
req.execute(map);
@@ -1082,8 +1071,8 @@ article.score = Integer.parseInt(edit.getText().toString());
HashMap<String, String> map = new HashMap<>();
map.put("sid", getSessionId());
map.put("op", "updateArticle");
- map.put("article_ids", articlesToIdString(articles));
- map.put("mode", "2");
+ map.put("article_ids", articles.getAsCommaSeparatedIds());
+ map.put("mode", "2");
map.put("field", "1");
req.execute(map);
@@ -1174,7 +1163,7 @@ article.score = Integer.parseInt(edit.getText().toString());
}
protected class LoginRequest extends ApiRequest {
- boolean m_refreshAfterLogin = false;
+ boolean m_refreshAfterLogin;
OnLoginFinishedListener m_listener;
public LoginRequest(Context context, boolean refresh, OnLoginFinishedListener listener) {
@@ -1255,8 +1244,6 @@ article.score = Integer.parseInt(edit.getText().toString());
Log.d(TAG, "Received API level: " + getApiLevel());
loginSuccess(m_refreshAfterLogin);
-
- return;
}
};
diff --git a/org.fox.ttrss/src/main/java/org/fox/ttrss/types/ArticleList.java b/org.fox.ttrss/src/main/java/org/fox/ttrss/types/ArticleList.java
index a5011aaa..bd108b25 100755
--- a/org.fox.ttrss/src/main/java/org/fox/ttrss/types/ArticleList.java
+++ b/org.fox.ttrss/src/main/java/org/fox/ttrss/types/ArticleList.java
@@ -4,6 +4,7 @@ import android.os.Parcel;
import android.os.Parcelable;
import java.util.concurrent.CopyOnWriteArrayList;
+import java.util.stream.Collectors;
public class ArticleList extends CopyOnWriteArrayList<Article> implements Parcelable {
@Override
@@ -54,6 +55,11 @@ public class ArticleList extends CopyOnWriteArrayList<Article> implements Parcel
}
}
+ public String getAsCommaSeparatedIds() {
+ return this.stream().map(a -> String.valueOf(a.id))
+ .collect(Collectors.joining(","));
+ }
+
@SuppressWarnings("rawtypes")
public static final Parcelable.Creator CREATOR =
new Parcelable.Creator() {