summaryrefslogtreecommitdiff
path: root/org.fox.ttrss/src/main
diff options
context:
space:
mode:
Diffstat (limited to 'org.fox.ttrss/src/main')
-rwxr-xr-xorg.fox.ttrss/src/main/AndroidManifest.xml11
-rw-r--r--org.fox.ttrss/src/main/java/org/fox/ttrss/ApiCommon.java4
-rwxr-xr-xorg.fox.ttrss/src/main/java/org/fox/ttrss/ApiLoader.java6
-rw-r--r--org.fox.ttrss/src/main/java/org/fox/ttrss/ApiRequest.java5
-rwxr-xr-xorg.fox.ttrss/src/main/java/org/fox/ttrss/Application.java4
-rwxr-xr-xorg.fox.ttrss/src/main/java/org/fox/ttrss/ArticleFragment.java85
-rwxr-xr-xorg.fox.ttrss/src/main/java/org/fox/ttrss/ArticlePager.java33
-rwxr-xr-xorg.fox.ttrss/src/main/java/org/fox/ttrss/BaseFeedlistFragment.java41
-rwxr-xr-xorg.fox.ttrss/src/main/java/org/fox/ttrss/CommonActivity.java105
-rwxr-xr-xorg.fox.ttrss/src/main/java/org/fox/ttrss/DetailActivity.java93
-rwxr-xr-xorg.fox.ttrss/src/main/java/org/fox/ttrss/FeedCategoriesFragment.java27
-rwxr-xr-xorg.fox.ttrss/src/main/java/org/fox/ttrss/FeedsFragment.java51
-rw-r--r--org.fox.ttrss/src/main/java/org/fox/ttrss/FeedsLoader.java2
-rwxr-xr-xorg.fox.ttrss/src/main/java/org/fox/ttrss/GalleryActivity.java38
-rwxr-xr-xorg.fox.ttrss/src/main/java/org/fox/ttrss/GalleryVideoFragment.java46
-rwxr-xr-xorg.fox.ttrss/src/main/java/org/fox/ttrss/HeadlinesFragment.java627
-rwxr-xr-xorg.fox.ttrss/src/main/java/org/fox/ttrss/LogcatActivity.java9
-rwxr-xr-xorg.fox.ttrss/src/main/java/org/fox/ttrss/MasterActivity.java61
-rwxr-xr-xorg.fox.ttrss/src/main/java/org/fox/ttrss/OnlineActivity.java472
-rwxr-xr-xorg.fox.ttrss/src/main/java/org/fox/ttrss/PreferencesActivity.java2
-rwxr-xr-xorg.fox.ttrss/src/main/java/org/fox/ttrss/PreferencesFragment.java32
-rw-r--r--org.fox.ttrss/src/main/java/org/fox/ttrss/glide/OkHttpProgressGlideModule.java20
-rwxr-xr-xorg.fox.ttrss/src/main/java/org/fox/ttrss/share/CommonShareActivity.java28
-rw-r--r--org.fox.ttrss/src/main/java/org/fox/ttrss/share/ShareActivity.java10
-rwxr-xr-xorg.fox.ttrss/src/main/java/org/fox/ttrss/share/SubscribeActivity.java28
-rwxr-xr-xorg.fox.ttrss/src/main/java/org/fox/ttrss/types/Article.java18
-rwxr-xr-xorg.fox.ttrss/src/main/java/org/fox/ttrss/types/ArticleList.java2
-rw-r--r--org.fox.ttrss/src/main/java/org/fox/ttrss/types/Attachment.java2
-rw-r--r--org.fox.ttrss/src/main/java/org/fox/ttrss/types/FeedCategoryList.java1
-rw-r--r--org.fox.ttrss/src/main/java/org/fox/ttrss/types/FeedList.java1
-rw-r--r--org.fox.ttrss/src/main/java/org/fox/ttrss/util/DatabaseHelper.java140
-rw-r--r--org.fox.ttrss/src/main/java/org/fox/ttrss/util/DetailActivityScrollingViewBehavior.java4
-rwxr-xr-xorg.fox.ttrss/src/main/java/org/fox/ttrss/util/HeaderViewRecyclerAdapter.java13
-rwxr-xr-xorg.fox.ttrss/src/main/java/org/fox/ttrss/util/HeadlinesRequest.java6
-rw-r--r--org.fox.ttrss/src/main/java/org/fox/ttrss/util/PrefsBackupAgent.java19
-rw-r--r--org.fox.ttrss/src/main/java/org/fox/ttrss/util/SimpleLoginManager.java7
-rwxr-xr-xorg.fox.ttrss/src/main/java/org/fox/ttrss/widget/SmallWidgetProvider.java3
-rwxr-xr-xorg.fox.ttrss/src/main/java/org/fox/ttrss/widget/WidgetUpdateService.java27
38 files changed, 712 insertions, 1371 deletions
diff --git a/org.fox.ttrss/src/main/AndroidManifest.xml b/org.fox.ttrss/src/main/AndroidManifest.xml
index 0f66928f..61ea11bf 100755
--- a/org.fox.ttrss/src/main/AndroidManifest.xml
+++ b/org.fox.ttrss/src/main/AndroidManifest.xml
@@ -10,24 +10,17 @@
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
- <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
- <uses-permission android:name="com.android.launcher.permission.INSTALL_SHORTCUT" />
<uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED" />
- <uses-permission android:name="android.permission.WAKE_LOCK" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
<application
android:name=".Application"
android:allowBackup="true"
- android:backupAgent=".util.PrefsBackupAgent"
- android:fullBackupOnly="true"
android:hardwareAccelerated="true"
android:icon="@mipmap/ic_launcher"
android:label="@string/app_name"
android:networkSecurityConfig="@xml/network_security_config" >
- <!-- <meta-data android:name="com.bumptech.glide.integration.okhttp3.OkHttpGlideModule"
- tools:node="remove" /> -->
<meta-data android:name="org.fox.ttrss.glide.OkHttpProgressGlideModule"
android:value="GlideModule" />
@@ -196,10 +189,6 @@
</intent-filter>
</activity>
- <meta-data
- android:name="com.google.android.backup.api_key"
- android:value="AEdPqrEAAAAIwG6zsGB4qo6ZhjfwIJpm9WI7AqmWaoRXm6ZJnA" />
-
<receiver android:name=".util.DeviceBootReceiver" android:exported="true">
<intent-filter>
<action android:name="android.intent.action.BOOT_COMPLETED" />
diff --git a/org.fox.ttrss/src/main/java/org/fox/ttrss/ApiCommon.java b/org.fox.ttrss/src/main/java/org/fox/ttrss/ApiCommon.java
index c96ea8bc..75963c96 100644
--- a/org.fox.ttrss/src/main/java/org/fox/ttrss/ApiCommon.java
+++ b/org.fox.ttrss/src/main/java/org/fox/ttrss/ApiCommon.java
@@ -6,10 +6,10 @@ import android.content.pm.PackageInfo;
import android.content.pm.PackageManager;
import android.net.ConnectivityManager;
import android.net.NetworkInfo;
-import androidx.preference.PreferenceManager;
import android.util.Log;
import androidx.annotation.NonNull;
+import androidx.preference.PreferenceManager;
import com.google.gson.Gson;
import com.google.gson.JsonElement;
@@ -126,7 +126,7 @@ public class ApiCommon {
String httpLogin = m_prefs.getString("http_login", "").trim();
String httpPassword = m_prefs.getString("http_password", "").trim();
- if (httpLogin.length() > 0) {
+ if (!httpLogin.isEmpty()) {
if (m_transportDebugging) Log.d(TAG, "Using HTTP Basic authentication.");
requestBuilder.addHeader("Authorization", Credentials.basic(httpLogin, httpPassword));
diff --git a/org.fox.ttrss/src/main/java/org/fox/ttrss/ApiLoader.java b/org.fox.ttrss/src/main/java/org/fox/ttrss/ApiLoader.java
index 18eedee1..259d7a28 100755
--- a/org.fox.ttrss/src/main/java/org/fox/ttrss/ApiLoader.java
+++ b/org.fox.ttrss/src/main/java/org/fox/ttrss/ApiLoader.java
@@ -13,14 +13,14 @@ import java.util.HashMap;
public class ApiLoader extends AsyncTaskLoader<JsonElement> implements ApiCommon.ApiCaller {
private final String TAG = this.getClass().getSimpleName();
- private int m_responseCode = 0;
+ private final int m_responseCode = 0;
protected String m_responseMessage;
private int m_apiStatusCode = 0;
- private Context m_context;
+ private final Context m_context;
private String m_lastErrorMessage;
private ApiError m_lastError;
- private HashMap<String,String> m_params;
+ private final HashMap<String,String> m_params;
private JsonElement m_data;
ApiLoader(Context context, HashMap<String, String> params) {
diff --git a/org.fox.ttrss/src/main/java/org/fox/ttrss/ApiRequest.java b/org.fox.ttrss/src/main/java/org/fox/ttrss/ApiRequest.java
index e6c323e9..409047f0 100644
--- a/org.fox.ttrss/src/main/java/org/fox/ttrss/ApiRequest.java
+++ b/org.fox.ttrss/src/main/java/org/fox/ttrss/ApiRequest.java
@@ -11,13 +11,10 @@ import com.google.gson.JsonElement;
import java.util.HashMap;
public class ApiRequest extends AsyncTask<HashMap<String,String>, Integer, JsonElement> implements ApiCommon.ApiCaller {
- private final String TAG = this.getClass().getSimpleName();
- private boolean m_transportDebugging = false;
- private int m_responseCode = 0;
private int m_apiStatusCode = 0;
- private Context m_context;
+ private final Context m_context;
protected String m_lastErrorMessage;
protected ApiError m_lastError;
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 1527f64f..6408f28d 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
@@ -13,7 +13,7 @@ public class Application extends android.app.Application {
// this is the only instance of a (large) object which contains all currently loaded articles and is
// used by all fragments and activities concurrently
- private ArticleList m_articles = new ArticleList();
+ private final ArticleList m_articles = new ArticleList();
// we use this to pass a large temporary object between activities
public Article tmpActiveArticle;
@@ -21,7 +21,7 @@ public class Application extends android.app.Application {
public int m_selectedArticleId;
public String m_sessionId;
public int m_apiLevel;
- public LinkedHashMap<String, String> m_customSortModes = new LinkedHashMap<String, String>();
+ public LinkedHashMap<String, String> m_customSortModes = new LinkedHashMap<>();
public static Application getInstance(){
return m_singleton;
diff --git a/org.fox.ttrss/src/main/java/org/fox/ttrss/ArticleFragment.java b/org.fox.ttrss/src/main/java/org/fox/ttrss/ArticleFragment.java
index 5065df06..86dd800e 100755
--- a/org.fox.ttrss/src/main/java/org/fox/ttrss/ArticleFragment.java
+++ b/org.fox.ttrss/src/main/java/org/fox/ttrss/ArticleFragment.java
@@ -6,14 +6,12 @@ import android.content.SharedPreferences;
import android.graphics.Color;
import android.net.Uri;
import android.os.Bundle;
-import androidx.preference.PreferenceManager;
import android.util.Log;
import android.util.TypedValue;
import android.view.ContextMenu;
import android.view.ContextMenu.ContextMenuInfo;
import android.view.LayoutInflater;
import android.view.View;
-import android.view.View.OnClickListener;
import android.view.ViewGroup;
import android.webkit.WebBackForwardList;
import android.webkit.WebSettings;
@@ -23,11 +21,13 @@ import android.webkit.WebViewClient;
import android.widget.TextView;
import androidx.core.text.HtmlCompat;
+import androidx.preference.PreferenceManager;
import com.google.android.material.button.MaterialButton;
import org.fox.ttrss.types.Article;
import org.fox.ttrss.types.Attachment;
+import org.jsoup.helper.StringUtil;
import java.net.MalformedURLException;
import java.net.URL;
@@ -129,15 +129,12 @@ public class ArticleFragment extends androidx.fragment.app.Fragment {
title.setText(HtmlCompat.fromHtml(titleStr, HtmlCompat.FROM_HTML_MODE_LEGACY));
//title.setPaintFlags(title.getPaintFlags() | Paint.UNDERLINE_TEXT_FLAG);
- title.setOnClickListener(new OnClickListener() {
- @Override
- public void onClick(View v) {
- try {
- m_activity.openUri(Uri.parse(m_article.link));
- } catch (Exception e) {
- e.printStackTrace();
- m_activity.toast(R.string.error_other_error);
- }
+ title.setOnClickListener(v -> {
+ try {
+ m_activity.openUri(Uri.parse(m_article.link));
+ } catch (Exception e) {
+ e.printStackTrace();
+ m_activity.toast(R.string.error_other_error);
}
});
@@ -152,18 +149,15 @@ public class ArticleFragment extends androidx.fragment.app.Fragment {
String commentsTitle = getResources().getQuantityString(R.plurals.article_comments, m_article.comments_count, m_article.comments_count);
comments.setText(commentsTitle);
//comments.setPaintFlags(title.getPaintFlags() | Paint.UNDERLINE_TEXT_FLAG);
- comments.setOnClickListener(new OnClickListener() {
- @Override
- public void onClick(View v) {
- try {
- String url = (m_article.comments_link != null && m_article.comments_link.length() > 0) ?
- m_article.comments_link : m_article.link;
-
- m_activity.openUri(Uri.parse(url));
- } catch (Exception e) {
- e.printStackTrace();
- m_activity.toast(R.string.error_other_error);
- }
+ comments.setOnClickListener(v -> {
+ try {
+ String url = (m_article.comments_link != null && !m_article.comments_link.isEmpty()) ?
+ m_article.comments_link : m_article.link;
+
+ m_activity.openUri(Uri.parse(url));
+ } catch (Exception e) {
+ e.printStackTrace();
+ m_activity.toast(R.string.error_other_error);
}
});
@@ -176,7 +170,7 @@ public class ArticleFragment extends androidx.fragment.app.Fragment {
View noteContainer = view.findViewById(R.id.note_container);
if (note != null && noteContainer != null) {
- if (m_article.note != null && m_article.note.length() > 0) {
+ if (m_article.note != null && !m_article.note.isEmpty()) {
note.setTextSize(TypedValue.COMPLEX_UNIT_SP, m_articleSmallFontSize);
note.setText(m_article.note);
noteContainer.setVisibility(View.VISIBLE);
@@ -184,12 +178,7 @@ public class ArticleFragment extends androidx.fragment.app.Fragment {
noteContainer.setVisibility(View.GONE);
}
- note.setOnClickListener(new OnClickListener() {
- @Override
- public void onClick(View view) {
- m_activity.editArticleNote(m_article);
- }
- });
+ note.setOnClickListener(view1 -> m_activity.editArticleNote(m_article));
}
TextView dv = view.findViewById(R.id.date);
@@ -215,20 +204,13 @@ public class ArticleFragment extends androidx.fragment.app.Fragment {
if (m_article.feed_title != null) {
String fTitle = m_article.feed_title;
- if (m_article.author != null && m_article.author.length() > 0) {
+ if (m_article.author != null && !m_article.author.isEmpty()) {
fTitle += " (" + getString(R.string.author_formatted, m_article.author) + ")";
}
tagv.setText(fTitle);
} else if (m_article.tags != null) {
- String tagsStr = "";
-
- for (String tag : m_article.tags)
- tagsStr += tag + ", ";
-
- tagsStr = tagsStr.replaceAll(", $", "");
-
- tagv.setText(tagsStr);
+ tagv.setText(StringUtil.join(m_article.tags, ", "));
} else {
tagv.setVisibility(View.GONE);
}
@@ -251,19 +233,16 @@ public class ArticleFragment extends androidx.fragment.app.Fragment {
return false;
} });
- m_web.setOnLongClickListener(new View.OnLongClickListener() {
- @Override
- public boolean onLongClick(View v) {
- HitTestResult result = ((WebView)v).getHitTestResult();
-
- if (result != null && (result.getType() == HitTestResult.IMAGE_TYPE || result.getType() == HitTestResult.SRC_IMAGE_ANCHOR_TYPE)) {
- registerForContextMenu(m_web);
- m_activity.openContextMenu(m_web);
- unregisterForContextMenu(m_web);
- return true;
- } else {
- return false;
- }
+ m_web.setOnLongClickListener(v -> {
+ HitTestResult result = ((WebView)v).getHitTestResult();
+
+ if (result != null && (result.getType() == HitTestResult.IMAGE_TYPE || result.getType() == HitTestResult.SRC_IMAGE_ANCHOR_TYPE)) {
+ registerForContextMenu(m_web);
+ m_activity.openContextMenu(m_web);
+ unregisterForContextMenu(m_web);
+ return true;
+ } else {
+ return false;
}
});
@@ -345,7 +324,7 @@ public class ArticleFragment extends androidx.fragment.app.Fragment {
content.append(articleContent);
- if (m_article.attachments != null && m_article.attachments.size() != 0) {
+ if (m_article.attachments != null && !m_article.attachments.isEmpty()) {
String flatContent = articleContent.replaceAll("[\r\n]", "");
boolean hasImages = flatContent.matches(".*?<img[^>+].*?");
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 418e1dee..bda7393a 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
@@ -6,7 +6,6 @@ import android.content.SharedPreferences;
import android.os.BadParcelableException;
import android.os.Bundle;
import android.os.Handler;
-import androidx.preference.PreferenceManager;
import android.util.Log;
import android.view.LayoutInflater;
import android.view.View;
@@ -14,6 +13,7 @@ import android.view.ViewGroup;
import androidx.fragment.app.Fragment;
import androidx.fragment.app.FragmentActivity;
+import androidx.preference.PreferenceManager;
import androidx.recyclerview.widget.RecyclerView;
import androidx.viewpager2.adapter.FragmentStateAdapter;
import androidx.viewpager2.widget.ViewPager2;
@@ -22,7 +22,6 @@ import com.google.android.material.snackbar.Snackbar;
import com.google.gson.JsonElement;
import org.fox.ttrss.types.Article;
-import org.fox.ttrss.types.ArticleList;
import org.fox.ttrss.types.Feed;
import org.fox.ttrss.util.HeadlinesRequest;
@@ -137,24 +136,14 @@ public class ArticlePager extends androidx.fragment.app.Fragment {
if (article != null) {
m_article = article;
- new Handler().postDelayed(new Runnable() {
- @Override
- public void run() {
- m_listener.onArticleSelected(article, false);
- }
- }, 250);
+ new Handler().postDelayed(() -> m_listener.onArticleSelected(article, false), 250);
//Log.d(TAG, "Page #" + position + "/" + m_adapter.getCount());
if (!m_refreshInProgress && !m_lazyLoadDisabled && (m_activity.isSmallScreen() || m_activity.isPortrait()) && position >= m_adapter.getItemCount() - 5) {
Log.d(TAG, "loading more articles...");
- new Handler().postDelayed(new Runnable() {
- @Override
- public void run() {
- refresh(true);
- }
- }, 100);
+ new Handler().postDelayed(() -> refresh(true), 100);
}
}
}
@@ -163,7 +152,6 @@ public class ArticlePager extends androidx.fragment.app.Fragment {
return view;
}
- @SuppressWarnings({ "serial" })
protected void refresh(final boolean append) {
if (!append) {
@@ -201,12 +189,7 @@ public class ArticlePager extends androidx.fragment.app.Fragment {
//m_activity.toast(R.string.headlines_row_top_changed);
Snackbar.make(getView(), R.string.headlines_row_top_changed, Snackbar.LENGTH_LONG)
- .setAction(R.string.reload, new View.OnClickListener() {
- @Override
- public void onClick(View v) {
- refresh(false);
- }
- }).show();
+ .setAction(R.string.reload, v -> refresh(false)).show();
}
if (m_amountLoaded < Integer.valueOf(m_prefs.getString("headlines_request_size", "15"))) {
@@ -226,7 +209,7 @@ public class ArticlePager extends androidx.fragment.app.Fragment {
if (m_article != null) {
if (m_article.id == 0 || !Application.getArticles().containsId(m_article.id)) {
- if (Application.getArticles().size() > 0) {
+ if (!Application.getArticles().isEmpty()) {
m_article = Application.getArticles().get(0);
m_listener.onArticleSelected(m_article, false);
}
@@ -267,7 +250,7 @@ public class ArticlePager extends androidx.fragment.app.Fragment {
skip = numAll;
} else if ("unread".equals(viewMode)) {
skip = numUnread;
- } else if (m_searchQuery != null && m_searchQuery.length() > 0) {
+ } else if (m_searchQuery != null && !m_searchQuery.isEmpty()) {
skip = numAll;
} else if ("adaptive".equals(viewMode)) {
skip = numUnread > 0 ? numUnread : numAll;
@@ -280,7 +263,7 @@ public class ArticlePager extends androidx.fragment.app.Fragment {
req.setOffset(skip);
- HashMap<String,String> map = new HashMap<String, String>();
+ HashMap<String,String> map = new HashMap<>();
map.put("op", "getHeadlines");
map.put("sid", sessionId);
map.put("feed_id", String.valueOf(feed.id));
@@ -298,7 +281,7 @@ public class ArticlePager extends androidx.fragment.app.Fragment {
if (feed.is_cat) map.put("is_cat", "true");
- if (m_searchQuery != null && m_searchQuery.length() != 0) {
+ if (m_searchQuery != null && !m_searchQuery.isEmpty()) {
map.put("search", m_searchQuery);
map.put("search_mode", "");
map.put("match_on", "both");
diff --git a/org.fox.ttrss/src/main/java/org/fox/ttrss/BaseFeedlistFragment.java b/org.fox.ttrss/src/main/java/org/fox/ttrss/BaseFeedlistFragment.java
index 06f18667..86a31465 100755
--- a/org.fox.ttrss/src/main/java/org/fox/ttrss/BaseFeedlistFragment.java
+++ b/org.fox.ttrss/src/main/java/org/fox/ttrss/BaseFeedlistFragment.java
@@ -5,7 +5,6 @@ import android.content.SharedPreferences;
import android.util.TypedValue;
import android.view.LayoutInflater;
import android.view.View;
-import android.widget.CompoundButton;
import android.widget.ImageView;
import android.widget.ListView;
import android.widget.TextView;
@@ -35,18 +34,15 @@ public abstract class BaseFeedlistFragment extends androidx.fragment.app.Fragmen
View settings = view.findViewById(R.id.drawer_settings_btn);
- settings.setOnClickListener(new View.OnClickListener() {
- @Override
- public void onClick(View v) {
- try {
- Intent intent = new Intent(getActivity(),
- PreferencesActivity.class);
+ settings.setOnClickListener(v -> {
+ try {
+ Intent intent = new Intent(getActivity(),
+ PreferencesActivity.class);
- startActivityForResult(intent, 0);
+ startActivityForResult(intent, 0);
- } catch (Exception e) {
- e.printStackTrace();
- }
+ } catch (Exception e) {
+ e.printStackTrace();
}
});
@@ -54,11 +50,8 @@ public abstract class BaseFeedlistFragment extends androidx.fragment.app.Fragmen
// divider
final View footer = inflater.inflate(R.layout.drawer_divider, list, false);
- footer.setOnClickListener(new View.OnClickListener() {
- @Override
- public void onClick(View v) {
- //
- }
+ footer.setOnClickListener(v -> {
+ //
});
list.addFooterView(footer);
@@ -76,20 +69,12 @@ public abstract class BaseFeedlistFragment extends androidx.fragment.app.Fragmen
final SwitchCompat rowSwitch = rowToggle.findViewById(R.id.row_switch);
rowSwitch.setChecked(activity.getUnreadOnly());
- rowSwitch.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() {
- @Override
- public void onCheckedChanged(CompoundButton button, boolean isChecked) {
- activity.setUnreadOnly(isChecked);
- refresh();
- }
+ rowSwitch.setOnCheckedChangeListener((button, isChecked) -> {
+ activity.setUnreadOnly(isChecked);
+ refresh();
});
- footer.setOnClickListener(new View.OnClickListener() {
- @Override
- public void onClick(View v) {
- rowSwitch.setChecked(!rowSwitch.isChecked());
- }
- });
+ footer.setOnClickListener(v -> rowSwitch.setChecked(!rowSwitch.isChecked()));
}
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 d9c26589..cd798f1a 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
@@ -9,13 +9,11 @@ import android.app.NotificationManager;
import android.app.PendingIntent;
import android.content.ComponentName;
import android.content.Context;
-import android.content.DialogInterface;
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.database.sqlite.SQLiteDatabase;
import android.graphics.Bitmap;
import android.graphics.BitmapFactory;
import android.net.ConnectivityManager;
@@ -24,7 +22,6 @@ import android.net.Uri;
import android.os.Build;
import android.os.Bundle;
import android.os.SystemClock;
-import androidx.preference.PreferenceManager;
import android.text.TextUtils;
import android.util.DisplayMetrics;
import android.util.Log;
@@ -42,6 +39,7 @@ import androidx.browser.customtabs.CustomTabsServiceConnection;
import androidx.browser.customtabs.CustomTabsSession;
import androidx.core.app.JobIntentService;
import androidx.core.content.FileProvider;
+import androidx.preference.PreferenceManager;
import com.bumptech.glide.Glide;
import com.bumptech.glide.load.engine.DiskCacheStrategy;
@@ -50,7 +48,6 @@ import com.bumptech.glide.request.target.SimpleTarget;
import com.google.android.material.dialog.MaterialAlertDialogBuilder;
import com.google.android.material.snackbar.Snackbar;
-import org.fox.ttrss.util.DatabaseHelper;
import org.fox.ttrss.widget.SmallWidgetProvider;
import org.fox.ttrss.widget.WidgetUpdateService;
import org.jsoup.Jsoup;
@@ -83,11 +80,6 @@ public class CommonActivity extends AppCompatActivity implements SharedPreferenc
public static final int PENDING_INTENT_CHROME_SHARE = 1;
- private DatabaseHelper m_databaseHelper;
-
- //private SQLiteDatabase m_readableDb;
- //private SQLiteDatabase m_writableDb;
-
private boolean m_smallScreenMode = true;
protected String m_theme;
private boolean m_needRestart;
@@ -169,14 +161,6 @@ public class CommonActivity extends AppCompatActivity implements SharedPreferenc
m_smallScreenMode = smallScreen;
}
- public DatabaseHelper getDatabaseHelper() {
- return m_databaseHelper;
- }
-
- public SQLiteDatabase getDatabase() {
- return m_databaseHelper.getWritableDatabase();
- }
-
public boolean getUnreadOnly() {
return m_prefs.getBoolean("show_unread_only", true);
}
@@ -198,12 +182,9 @@ public class CommonActivity extends AppCompatActivity implements SharedPreferenc
public void toast(String msg) {
Snackbar.make(findViewById(android.R.id.content), msg, Snackbar.LENGTH_LONG)
- .setAction(R.string.dialog_close, new View.OnClickListener() {
- @Override
- public void onClick(View v) {
+ .setAction(R.string.dialog_close, v -> {
- }
- })
+ })
.show();
}
@@ -253,8 +234,6 @@ public class CommonActivity extends AppCompatActivity implements SharedPreferenc
nmgr.createNotificationChannel(channel);
}
- m_databaseHelper = DatabaseHelper.getInstance(this);
-
m_prefs = PreferenceManager
.getDefaultSharedPreferences(getApplicationContext());
@@ -311,12 +290,9 @@ public class CommonActivity extends AppCompatActivity implements SharedPreferenc
}
Snackbar.make(findViewById(android.R.id.content), R.string.text_copied_to_clipboard, Snackbar.LENGTH_SHORT)
- .setAction(R.string.dialog_close, new View.OnClickListener() {
- @Override
- public void onClick(View v) {
+ .setAction(R.string.dialog_close, v -> {
- }
- })
+ })
.show();
}
@@ -487,7 +463,7 @@ public class CommonActivity extends AppCompatActivity implements SharedPreferenc
if (uri.getScheme() == null) {
try {
- uri = Uri.parse("https:" + uri.toString());
+ uri = Uri.parse("https:" + uri);
} catch (Exception e) {
e.printStackTrace();
}
@@ -508,43 +484,37 @@ public class CommonActivity extends AppCompatActivity implements SharedPreferenc
.setView(dialogView)
.setMessage(uri.toString())
.setPositiveButton(R.string.quick_preview,
- new Dialog.OnClickListener() {
- public void onClick(DialogInterface dialog,
- int which) {
+ (dialog, which) -> {
- if (!askEveryTimeCB.isChecked()) {
- SharedPreferences.Editor editor = m_prefs.edit();
- editor.putBoolean("custom_tabs_ask_always", false);
- editor.apply();
- }
+ if (!askEveryTimeCB.isChecked()) {
+ SharedPreferences.Editor editor = m_prefs.edit();
+ editor.putBoolean("custom_tabs_ask_always", false);
+ editor.apply();
+ }
- openUriWithCustomTab(finalUri);
+ openUriWithCustomTab(finalUri);
- }
- })
+ })
.setNegativeButton(R.string.open_with,
- new Dialog.OnClickListener() {
- public void onClick(DialogInterface dialog,
- int which) {
-
- if (!askEveryTimeCB.isChecked()) {
- SharedPreferences.Editor editor = m_prefs.edit();
- editor.putBoolean("custom_tabs_ask_always", false);
- editor.putBoolean("enable_custom_tabs", false);
- editor.apply();
- }
-
- Intent intent = new Intent(Intent.ACTION_VIEW, finalUri);
-
- try {
- startActivity(intent);
- } catch (Exception e) {
- e.printStackTrace();
- toast(e.getMessage());
- }
+ (dialog, which) -> {
- }
- });
+ if (!askEveryTimeCB.isChecked()) {
+ SharedPreferences.Editor editor = m_prefs.edit();
+ editor.putBoolean("custom_tabs_ask_always", false);
+ editor.putBoolean("enable_custom_tabs", false);
+ editor.apply();
+ }
+
+ Intent intent = new Intent(Intent.ACTION_VIEW, finalUri);
+
+ try {
+ startActivity(intent);
+ } catch (Exception e) {
+ e.printStackTrace();
+ toast(e.getMessage());
+ }
+
+ });
/*.setNegativeButton(R.string.cancel,
new Dialog.OnClickListener() {
public void onClick(DialogInterface dialog,
@@ -608,19 +578,14 @@ public class CommonActivity extends AppCompatActivity implements SharedPreferenc
// the wrong text if an image is used multiple times.
Document doc = Jsoup.parse(htmlContent);
Elements es = doc.getElementsByAttributeValue("src", url);
- if (es.size() > 0) {
+ if (!es.isEmpty()) {
if (es.get(0).hasAttr("title")) {
MaterialAlertDialogBuilder builder = new MaterialAlertDialogBuilder(this)
.setCancelable(true)
.setMessage(es.get(0).attr("title"))
- .setPositiveButton(R.string.dialog_close, new DialogInterface.OnClickListener() {
- @Override
- public void onClick(DialogInterface dialog, int which) {
- dialog.cancel();
- }
- }
- );
+ .setPositiveButton(R.string.dialog_close, (dialog, which) -> dialog.cancel()
+ );
Dialog dialog = builder.create();
dialog.show();
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 b2d4830e..67d73b23 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
@@ -8,7 +8,6 @@ import android.content.res.Configuration;
import android.net.Uri;
import android.os.Bundle;
import android.os.Handler;
-import androidx.preference.PreferenceManager;
import android.util.Log;
import android.view.Menu;
import android.view.MenuItem;
@@ -16,6 +15,7 @@ import android.view.View;
import androidx.appcompat.widget.Toolbar;
import androidx.fragment.app.FragmentTransaction;
+import androidx.preference.PreferenceManager;
import com.google.android.material.bottomappbar.BottomAppBar;
import com.google.android.material.floatingactionbutton.FloatingActionButton;
@@ -69,47 +69,44 @@ public class DetailActivity extends OnlineActivity implements HeadlinesEventList
m_bottomAppBar = findViewById(R.id.detail_bottom_appbar);
if (m_bottomAppBar != null) {
- m_bottomAppBar.setOnMenuItemClickListener(new Toolbar.OnMenuItemClickListener() {
- @Override
- public boolean onMenuItemClick(MenuItem item) {
+ m_bottomAppBar.setOnMenuItemClickListener(item -> {
- final ArticlePager ap = (ArticlePager) getSupportFragmentManager().findFragmentByTag(FRAG_ARTICLE);
- final HeadlinesFragment hf = (HeadlinesFragment) getSupportFragmentManager().findFragmentByTag(FRAG_HEADLINES);
+ final ArticlePager ap = (ArticlePager) getSupportFragmentManager().findFragmentByTag(FRAG_ARTICLE);
+ final HeadlinesFragment hf = (HeadlinesFragment) getSupportFragmentManager().findFragmentByTag(FRAG_HEADLINES);
- Article article = ap.getSelectedArticle();
+ Article article = ap.getSelectedArticle();
- if (article == null) return false;
+ if (article == null) return false;
- int itemId = item.getItemId();
+ int itemId = item.getItemId();
- if (itemId == R.id.article_set_labels) {
- editArticleLabels(article);
+ if (itemId == R.id.article_set_labels) {
+ editArticleLabels(article);
- return true;
- } else if (itemId == R.id.toggle_attachments) {
- displayAttachments(article);
+ return true;
+ } else if (itemId == R.id.toggle_attachments) {
+ displayAttachments(article);
- return true;
- } else if (itemId == R.id.article_edit_note) {
- editArticleNote(article);
+ return true;
+ } else if (itemId == R.id.article_edit_note) {
+ editArticleNote(article);
- return true;
- } else if (itemId == R.id.article_set_score) {
- setArticleScore(article);
+ return true;
+ } else if (itemId == R.id.article_set_score) {
+ setArticleScore(article);
- return true;
- } else if (itemId == R.id.toggle_unread) {
- article.unread = !article.unread;
- saveArticleUnread(article);
+ return true;
+ } else if (itemId == R.id.toggle_unread) {
+ article.unread = !article.unread;
+ saveArticleUnread(article);
- if (hf != null) {
- hf.notifyUpdated();
- }
- }
+ if (hf != null) {
+ hf.notifyUpdated();
+ }
+ }
- return false;
- }
- });
+ return false;
+ });
}
FloatingActionButton fab = findViewById(R.id.detail_fab);
@@ -118,14 +115,11 @@ public class DetailActivity extends OnlineActivity implements HeadlinesEventList
if (m_prefs.getBoolean("enable_article_fab", true)) {
fab.show();
- fab.setOnClickListener(new View.OnClickListener() {
- @Override
- public void onClick(View view) {
- if (m_activeArticle != null) {
- openUri(Uri.parse(m_activeArticle.link));
- }
- }
- });
+ fab.setOnClickListener(view -> {
+ if (m_activeArticle != null) {
+ openUri(Uri.parse(m_activeArticle.link));
+ }
+ });
} else {
fab.hide();
}
@@ -211,7 +205,7 @@ public class DetailActivity extends OnlineActivity implements HeadlinesEventList
menu.findItem(R.id.toggle_unread).setIcon(article.unread ? R.drawable.baseline_mark_email_unread_24 :
R.drawable.baseline_email_24);
- menu.findItem(R.id.toggle_attachments).setVisible(article.attachments != null && article.attachments.size() > 0);
+ menu.findItem(R.id.toggle_attachments).setVisible(article.attachments != null && !article.attachments.isEmpty());
}
}
}
@@ -313,16 +307,13 @@ public class DetailActivity extends OnlineActivity implements HeadlinesEventList
if (open) {
- new Handler().postDelayed(new Runnable() {
- @Override
- public void run() {
- ArticlePager af = (ArticlePager) getSupportFragmentManager().findFragmentByTag(FRAG_ARTICLE);
-
- if (af != null) {
- af.setActiveArticle(article);
- }
- }
- }, 250);
+ new Handler().postDelayed(() -> {
+ArticlePager af = (ArticlePager) getSupportFragmentManager().findFragmentByTag(FRAG_ARTICLE);
+
+ if (af != null) {
+ af.setActiveArticle(article);
+ }
+ }, 250);
} else {
HeadlinesFragment hf = (HeadlinesFragment) getSupportFragmentManager().findFragmentByTag(FRAG_HEADLINES);
@@ -357,7 +348,7 @@ public class DetailActivity extends OnlineActivity implements HeadlinesEventList
if (hf != null) {
Article article = hf.getActiveArticle();
- if (article == null && hf.getAllArticles().size() > 0) {
+ if (article == null && !hf.getAllArticles().isEmpty()) {
article = hf.getAllArticles().get(0);
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 f5f7dc60..5b8212d2 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
@@ -5,9 +5,7 @@ import android.app.Activity;
import android.content.Context;
import android.content.SharedPreferences;
import android.content.SharedPreferences.OnSharedPreferenceChangeListener;
-import android.os.Build;
import android.os.Bundle;
-import androidx.preference.PreferenceManager;
import android.util.Log;
import android.util.TypedValue;
import android.view.ContextMenu;
@@ -26,6 +24,7 @@ import android.widget.TextView;
import androidx.loader.app.LoaderManager;
import androidx.loader.content.Loader;
+import androidx.preference.PreferenceManager;
import androidx.swiperefreshlayout.widget.SwipeRefreshLayout;
import com.google.gson.Gson;
@@ -48,7 +47,7 @@ public class FeedCategoriesFragment extends BaseFeedlistFragment implements OnIt
LoaderManager.LoaderCallbacks<JsonElement> {
private final String TAG = this.getClass().getSimpleName();
private FeedCategoryListAdapter m_adapter;
- private FeedCategoryList m_cats = new FeedCategoryList();
+ private final FeedCategoryList m_cats = new FeedCategoryList();
FeedCategory m_selectedCat;
private MasterActivity m_activity;
private SwipeRefreshLayout m_swipeLayout;
@@ -60,8 +59,7 @@ public class FeedCategoriesFragment extends BaseFeedlistFragment implements OnIt
final String sessionId = m_activity.getSessionId();
final boolean unreadOnly = m_activity.getUnreadOnly();
- @SuppressWarnings("serial")
- HashMap<String, String> params = new HashMap<String, String>();
+ HashMap<String, String> params = new HashMap<>();
params.put("op", "getCategories");
params.put("sid", sessionId);
params.put("enable_nested", "true");
@@ -285,12 +283,7 @@ public class FeedCategoriesFragment extends BaseFeedlistFragment implements OnIt
m_swipeLayout = view.findViewById(R.id.feeds_swipe_container);
- m_swipeLayout.setOnRefreshListener(new SwipeRefreshLayout.OnRefreshListener() {
- @Override
- public void onRefresh() {
- refresh();
- }
- });
+ m_swipeLayout.setOnRefreshListener(() -> refresh());
m_list = view.findViewById(R.id.feeds);
m_adapter = new FeedCategoryListAdapter(getActivity(), R.layout.feeds_row, m_cats);
@@ -335,7 +328,7 @@ public class FeedCategoriesFragment extends BaseFeedlistFragment implements OnIt
}
private class FeedCategoryListAdapter extends ArrayAdapter<FeedCategory> {
- private ArrayList<FeedCategory> items;
+ private final ArrayList<FeedCategory> items;
public static final int VIEW_NORMAL = 0;
public static final int VIEW_SELECTED = 1;
@@ -370,12 +363,10 @@ public class FeedCategoriesFragment extends BaseFeedlistFragment implements OnIt
if (v == null) {
int layoutId = R.layout.feeds_row;
-
- switch (getItemViewType(position)) {
- case VIEW_SELECTED:
- layoutId = R.layout.feeds_row_selected;
- break;
- }
+
+ if (getItemViewType(position) == VIEW_SELECTED) {
+ layoutId = R.layout.feeds_row_selected;
+ }
LayoutInflater vi = (LayoutInflater)getActivity().getSystemService(Context.LAYOUT_INFLATER_SERVICE);
v = vi.inflate(layoutId, null);
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 9f4063d5..28e56699 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
@@ -4,13 +4,10 @@ import android.annotation.SuppressLint;
import android.app.Activity;
import android.app.Dialog;
import android.content.Context;
-import android.content.DialogInterface;
import android.content.SharedPreferences;
import android.content.SharedPreferences.OnSharedPreferenceChangeListener;
import android.graphics.Typeface;
-import android.os.Build;
import android.os.Bundle;
-import androidx.preference.PreferenceManager;
import android.util.Log;
import android.util.TypedValue;
import android.view.ContextMenu;
@@ -18,7 +15,6 @@ import android.view.ContextMenu.ContextMenuInfo;
import android.view.LayoutInflater;
import android.view.MenuItem;
import android.view.View;
-import android.view.View.OnClickListener;
import android.view.ViewGroup;
import android.widget.AdapterView;
import android.widget.AdapterView.AdapterContextMenuInfo;
@@ -30,6 +26,7 @@ import android.widget.TextView;
import androidx.loader.app.LoaderManager;
import androidx.loader.content.Loader;
+import androidx.preference.PreferenceManager;
import androidx.swiperefreshlayout.widget.SwipeRefreshLayout;
import com.google.android.material.dialog.MaterialAlertDialogBuilder;
@@ -54,7 +51,7 @@ public class FeedsFragment extends BaseFeedlistFragment implements OnItemClickLi
private final String TAG = this.getClass().getSimpleName();
private SharedPreferences m_prefs;
private FeedListAdapter m_adapter;
- private FeedList m_feeds = new FeedList();
+ private final FeedList m_feeds = new FeedList();
private MasterActivity m_activity;
Feed m_selectedFeed;
FeedCategory m_activeCategory;
@@ -76,7 +73,7 @@ public class FeedsFragment extends BaseFeedlistFragment implements OnItemClickLi
final String sessionId = m_activity.getSessionId();
final boolean unreadOnly = m_activity.getUnreadOnly() && (m_activeCategory == null || m_activeCategory.id != -1);
- HashMap<String,String> params = new HashMap<String,String>();
+ HashMap<String,String> params = new HashMap<>();
params.put("op", "getFeeds");
params.put("sid", sessionId);
params.put("include_nested", "true");
@@ -127,7 +124,7 @@ public class FeedsFragment extends BaseFeedlistFragment implements OnItemClickLi
}
- if (m_enableParentBtn && m_activeCategory != null && m_activeCategory.id >= 0 && m_feeds.size() > 0) {
+ if (m_enableParentBtn && m_activeCategory != null && m_activeCategory.id >= 0 && !m_feeds.isEmpty()) {
Feed feed = new Feed(m_activeCategory.id, m_activeCategory.title, true);
feed.unread = catUnread;
feed.always_display_as_feed = true;
@@ -255,21 +252,11 @@ public class FeedsFragment extends BaseFeedlistFragment implements OnItemClickLi
MaterialAlertDialogBuilder builder = new MaterialAlertDialogBuilder(getContext())
.setMessage(getString(R.string.unsubscribe_from_prompt, feed.title))
.setPositiveButton(R.string.unsubscribe,
- new Dialog.OnClickListener() {
- public void onClick(DialogInterface dialog,
- int which) {
-
- m_activity.unsubscribeFeed(feed);
-
- }
- })
+ (dialog, which) -> m_activity.unsubscribeFeed(feed))
.setNegativeButton(R.string.dialog_cancel,
- new Dialog.OnClickListener() {
- public void onClick(DialogInterface dialog,
- int which) {
+ (dialog, which) -> {
- }
- });
+ });
Dialog dlg = builder.create();
dlg.show();
@@ -344,12 +331,7 @@ public class FeedsFragment extends BaseFeedlistFragment implements OnItemClickLi
m_swipeLayout = view.findViewById(R.id.feeds_swipe_container);
- m_swipeLayout.setOnRefreshListener(new SwipeRefreshLayout.OnRefreshListener() {
- @Override
- public void onRefresh() {
- refresh();
- }
- });
+ m_swipeLayout.setOnRefreshListener(() -> refresh());
m_list = view.findViewById(R.id.feeds);
@@ -358,12 +340,7 @@ public class FeedsFragment extends BaseFeedlistFragment implements OnItemClickLi
if (m_enableParentBtn) {
View layout = inflater.inflate(R.layout.feeds_goback, m_list, false);
- layout.setOnClickListener(new OnClickListener() {
- @Override
- public void onClick(View view) {
- m_activity.getSupportFragmentManager().popBackStack();
- }
- });
+ layout.setOnClickListener(view1 -> m_activity.getSupportFragmentManager().popBackStack());
m_list.addHeaderView(layout, null, false);
}
@@ -439,7 +416,7 @@ public class FeedsFragment extends BaseFeedlistFragment implements OnItemClickLi
}
private class FeedListAdapter extends ArrayAdapter<Feed> {
- private ArrayList<Feed> items;
+ private final ArrayList<Feed> items;
public static final int VIEW_NORMAL = 0;
public static final int VIEW_SELECTED = 1;
@@ -481,11 +458,9 @@ public class FeedsFragment extends BaseFeedlistFragment implements OnItemClickLi
if (v == null) {
int layoutId = R.layout.feeds_row;
- switch (getItemViewType(position)) {
- case VIEW_SELECTED:
- layoutId = R.layout.feeds_row_selected;
- break;
- }
+ if (getItemViewType(position) == VIEW_SELECTED) {
+ layoutId = R.layout.feeds_row_selected;
+ }
LayoutInflater vi = (LayoutInflater)getActivity().getSystemService(Context.LAYOUT_INFLATER_SERVICE);
v = vi.inflate(layoutId, null);
diff --git a/org.fox.ttrss/src/main/java/org/fox/ttrss/FeedsLoader.java b/org.fox.ttrss/src/main/java/org/fox/ttrss/FeedsLoader.java
index 4df392f6..92ce64d2 100644
--- a/org.fox.ttrss/src/main/java/org/fox/ttrss/FeedsLoader.java
+++ b/org.fox.ttrss/src/main/java/org/fox/ttrss/FeedsLoader.java
@@ -5,7 +5,7 @@ import android.content.Context;
import java.util.HashMap;
class FeedsLoader extends ApiLoader {
- private int m_catId;
+ private final int m_catId;
public FeedsLoader(Context context, HashMap<String, String> params, int catId) {
super(context, params);
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 df9b8dc2..3937f938 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
@@ -4,7 +4,6 @@ import android.graphics.Bitmap;
import android.net.Uri;
import android.os.AsyncTask;
import android.os.Bundle;
-import androidx.preference.PreferenceManager;
import android.util.Log;
import android.view.MenuInflater;
import android.view.MenuItem;
@@ -21,6 +20,7 @@ import androidx.core.view.WindowInsetsControllerCompat;
import androidx.fragment.app.Fragment;
import androidx.fragment.app.FragmentManager;
import androidx.fragment.app.FragmentStatePagerAdapter;
+import androidx.preference.PreferenceManager;
import androidx.viewpager.widget.ViewPager;
import com.ToxicBakery.viewpager.transforms.DepthPageTransformer;
@@ -50,7 +50,7 @@ public class GalleryActivity extends CommonActivity {
private ProgressBar m_checkProgress;
private static class ArticleImagesPagerAdapter extends FragmentStatePagerAdapter {
- private List<GalleryEntry> m_items;
+ private final List<GalleryEntry> m_items;
public ArticleImagesPagerAdapter(FragmentManager fm, List<GalleryEntry> items) {
super(fm);
@@ -106,7 +106,7 @@ public class GalleryActivity extends CommonActivity {
private class MediaCheckTask extends AsyncTask<List<GalleryEntry>, MediaProgressResult, List<GalleryEntry>> {
- private List<GalleryEntry> m_checkedItems = new ArrayList<>();
+ private final List<GalleryEntry> m_checkedItems = new ArrayList<>();
@Override
protected List<GalleryEntry> doInBackground(List<GalleryEntry>... params) {
@@ -172,7 +172,7 @@ public class GalleryActivity extends CommonActivity {
if (source != null) {
String src = source.attr("src");
- if (src.length() > 0) {
+ if (!src.isEmpty()) {
//Log.d(TAG, "vid/src=" + src);
if (src.startsWith("//")) {
@@ -200,7 +200,7 @@ public class GalleryActivity extends CommonActivity {
} else {
String src = elem.attr("src");
- if (src.length() > 0) {
+ if (!src.isEmpty()) {
if (src.startsWith("//")) {
src = "https:" + src;
}
@@ -226,7 +226,7 @@ public class GalleryActivity extends CommonActivity {
}
if ((firstFound || imgSrcFirst.equals("")) && item.url != null) {
- if (m_items.size() == 0)
+ if (m_items.isEmpty())
m_items.add(item);
else
uncheckedItems.add(item);
@@ -293,28 +293,20 @@ public class GalleryActivity extends CommonActivity {
m_content = savedInstanceState.getString("m_content");
}
- findViewById(R.id.gallery_overflow).setOnClickListener(new View.OnClickListener() {
- @Override
- public void onClick(View v) {
- PopupMenu popup = new PopupMenu(GalleryActivity.this, v);
- MenuInflater inflater = popup.getMenuInflater();
- inflater.inflate(R.menu.content_gallery_entry, popup.getMenu());
+ findViewById(R.id.gallery_overflow).setOnClickListener(v -> {
+ PopupMenu popup = new PopupMenu(GalleryActivity.this, v);
+ MenuInflater inflater = popup.getMenuInflater();
+ inflater.inflate(R.menu.content_gallery_entry, popup.getMenu());
- final GalleryEntry entry = m_items.get(m_pager.getCurrentItem());
+ final GalleryEntry entry = m_items.get(m_pager.getCurrentItem());
- popup.getMenu().findItem(R.id.article_img_share)
- .setVisible(entry.type == GalleryEntry.GalleryEntryType.TYPE_IMAGE);
+ popup.getMenu().findItem(R.id.article_img_share)
+ .setVisible(entry.type == GalleryEntry.GalleryEntryType.TYPE_IMAGE);
- popup.setOnMenuItemClickListener(new PopupMenu.OnMenuItemClickListener() {
- @Override
- public boolean onMenuItemClick(MenuItem item) {
- return onImageMenuItemSelected(item, entry);
- }
- });
+ popup.setOnMenuItemClickListener(item -> onImageMenuItemSelected(item, entry));
- popup.show();
+ popup.show();
- }
});
setTitle(m_title);
diff --git a/org.fox.ttrss/src/main/java/org/fox/ttrss/GalleryVideoFragment.java b/org.fox.ttrss/src/main/java/org/fox/ttrss/GalleryVideoFragment.java
index 2e2df149..a96e59b5 100755
--- a/org.fox.ttrss/src/main/java/org/fox/ttrss/GalleryVideoFragment.java
+++ b/org.fox.ttrss/src/main/java/org/fox/ttrss/GalleryVideoFragment.java
@@ -126,17 +126,14 @@ public class GalleryVideoFragment extends GalleryBaseFragment {
registerForContextMenu(textureView);
- textureView.setOnClickListener(new View.OnClickListener() {
- @Override
- public void onClick(View v) {
- try {
- if (!m_mediaController.isShowing())
- m_mediaController.show(5000);
- else
- m_mediaController.hide();
- } catch (Exception e) {
- e.printStackTrace();
- }
+ textureView.setOnClickListener(v -> {
+ try {
+ if (!m_mediaController.isShowing())
+ m_mediaController.show(5000);
+ else
+ m_mediaController.hide();
+ } catch (Exception e) {
+ e.printStackTrace();
}
});
@@ -215,22 +212,19 @@ public class GalleryVideoFragment extends GalleryBaseFragment {
e.printStackTrace();
}
- m_mediaPlayer.setOnPreparedListener(new MediaPlayer.OnPreparedListener() {
- @Override
- public void onPrepared(MediaPlayer mp) {
- getView().findViewById(R.id.flavor_image).setVisibility(View.GONE);
- getView().findViewById(R.id.flavor_image_progress).setVisibility(View.GONE);
-
- try {
- resizeSurface(textureView);
- mp.setLooping(true);
-
- if (m_userVisibleHint) {
- mp.start();
- }
- } catch (IllegalStateException e) {
- e.printStackTrace();
+ m_mediaPlayer.setOnPreparedListener(mp -> {
+ getView().findViewById(R.id.flavor_image).setVisibility(View.GONE);
+ getView().findViewById(R.id.flavor_image_progress).setVisibility(View.GONE);
+
+ try {
+ resizeSurface(textureView);
+ mp.setLooping(true);
+
+ if (m_userVisibleHint) {
+ mp.start();
}
+ } catch (IllegalStateException e) {
+ e.printStackTrace();
}
});
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 d18d3298..c07c3408 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
@@ -4,7 +4,6 @@ import android.annotation.SuppressLint;
import android.app.Activity;
import android.app.Dialog;
import android.content.Context;
-import android.content.DialogInterface;
import android.content.Intent;
import android.content.SharedPreferences;
import android.content.res.ColorStateList;
@@ -19,7 +18,6 @@ import android.net.Uri;
import android.os.Build;
import android.os.Bundle;
import android.os.Handler;
-import androidx.preference.PreferenceManager;
import android.text.Html;
import android.transition.Fade;
import android.transition.Transition;
@@ -35,9 +33,7 @@ import android.view.MenuItem;
import android.view.Surface;
import android.view.TextureView;
import android.view.View;
-import android.view.View.OnClickListener;
import android.view.ViewGroup;
-import android.view.ViewTreeObserver;
import android.view.WindowManager;
import android.widget.AdapterView.AdapterContextMenuInfo;
import android.widget.CheckBox;
@@ -52,6 +48,7 @@ import android.widget.TextView;
import androidx.core.app.ActivityCompat;
import androidx.core.app.ActivityOptionsCompat;
import androidx.core.view.ViewCompat;
+import androidx.preference.PreferenceManager;
import androidx.recyclerview.widget.DefaultItemAnimator;
import androidx.recyclerview.widget.ItemTouchHelper;
import androidx.recyclerview.widget.LinearLayoutManager;
@@ -83,7 +80,6 @@ import org.jsoup.nodes.Element;
import java.text.DateFormat;
import java.text.SimpleDateFormat;
-import java.util.ArrayList;
import java.util.Date;
import java.util.HashMap;
import java.util.TimeZone;
@@ -111,7 +107,7 @@ public class HeadlinesFragment extends androidx.fragment.app.Fragment {
private SharedPreferences m_prefs;
private HeaderViewRecyclerAdapter m_adapter;
- private ArticleList m_readArticles = new ArticleList();
+ private final ArticleList m_readArticles = new ArticleList();
private HeadlinesEventListener m_listener;
private OnlineActivity m_activity;
private SwipeRefreshLayout m_swipeLayout;
@@ -187,20 +183,10 @@ public class HeadlinesFragment extends androidx.fragment.app.Fragment {
MaterialAlertDialogBuilder builder = new MaterialAlertDialogBuilder(getContext())
.setMessage(R.string.confirm_catchup_above)
.setPositiveButton(R.string.dialog_ok,
- new Dialog.OnClickListener() {
- public void onClick(DialogInterface dialog,
- int which) {
-
- catchupAbove(fa);
-
- }
- })
+ (dialog, which) -> catchupAbove(fa))
.setNegativeButton(R.string.dialog_cancel,
- new Dialog.OnClickListener() {
- public void onClick(DialogInterface dialog,
- int which) {
+ (dialog, which) -> {
- }
});
Dialog dialog = builder.create();
@@ -224,7 +210,7 @@ public class HeadlinesFragment extends androidx.fragment.app.Fragment {
tmp.add(a);
}
}
- if (tmp.size() > 0) {
+ if (!tmp.isEmpty()) {
m_activity.toggleArticlesUnread(tmp);
//updateHeadlines();
}
@@ -317,12 +303,7 @@ public class HeadlinesFragment extends androidx.fragment.app.Fragment {
m_swipeLayout = view.findViewById(R.id.headlines_swipe_container);
- m_swipeLayout.setOnRefreshListener(new SwipeRefreshLayout.OnRefreshListener() {
- @Override
- public void onRefresh() {
- refresh(false, true);
- }
- });
+ m_swipeLayout.setOnRefreshListener(() -> refresh(false, true));
m_list = view.findViewById(R.id.headlines_list);
registerForContextMenu(m_list);
@@ -390,20 +371,17 @@ public class HeadlinesFragment extends androidx.fragment.app.Fragment {
m_adapter.notifyDataSetChanged();
Snackbar.make(m_list, R.string.headline_undo_row_prompt, Snackbar.LENGTH_LONG)
- .setAction(getString(R.string.headline_undo_row_button), new OnClickListener() {
- @Override
- public void onClick(View v) {
-
- if (wasUnread) {
- article.unread = true;
- m_activity.saveArticleUnread(article);
- }
-
- Application.getArticles().add(position, article);
- m_adapter.notifyItemInserted(adapterPosition);
- m_adapter.notifyItemRangeChanged(adapterPosition, 1);
- }
- }).show();
+ .setAction(getString(R.string.headline_undo_row_button), v -> {
+
+ if (wasUnread) {
+ article.unread = true;
+ m_activity.saveArticleUnread(article);
+ }
+
+ Application.getArticles().add(position, article);
+ m_adapter.notifyItemInserted(adapterPosition);
+ m_adapter.notifyItemRangeChanged(adapterPosition, 1);
+ }).show();
}
@@ -439,12 +417,7 @@ public class HeadlinesFragment extends androidx.fragment.app.Fragment {
m_activity.toggleArticlesUnread(m_readArticles);
m_readArticles.clear();
- new Handler().postDelayed(new Runnable() {
- @Override
- public void run() {
- m_activity.refresh(false);
- }
- }, 100);
+ new Handler().postDelayed(() -> m_activity.refresh(false), 100);
}
}
}
@@ -476,12 +449,7 @@ public class HeadlinesFragment extends androidx.fragment.app.Fragment {
if (!m_refreshInProgress && !m_lazyLoadDisabled && lastVisibleItem >= Application.getArticles().size() - 5) {
m_refreshInProgress = true;
- new Handler().postDelayed(new Runnable() {
- @Override
- public void run() {
- refresh(true);
- }
- }, 100);
+ new Handler().postDelayed(() -> refresh(true), 100);
}
}
@@ -506,7 +474,7 @@ public class HeadlinesFragment extends androidx.fragment.app.Fragment {
setActiveArticle(m_activeArticle);
}
- if (Application.getArticles().size() == 0) {
+ if (Application.getArticles().isEmpty()) {
refresh(false);
}
@@ -525,7 +493,6 @@ public class HeadlinesFragment extends androidx.fragment.app.Fragment {
refresh(append, false);
}
- @SuppressWarnings({ "serial" })
public void refresh(final boolean append, boolean userInitiated) {
Application.getArticles().stripFooters();
m_adapter.notifyDataSetChanged();
@@ -583,12 +550,7 @@ public class HeadlinesFragment extends androidx.fragment.app.Fragment {
if (m_activity.isSmallScreen() || !m_activity.isPortrait()) {
Snackbar.make(getView(), R.string.headlines_row_top_changed, Snackbar.LENGTH_LONG)
- .setAction(R.string.reload, new OnClickListener() {
- @Override
- public void onClick(View v) {
- refresh(false);
- }
- }).show();
+ .setAction(R.string.reload, v -> refresh(false)).show();
}
}
@@ -641,7 +603,7 @@ public class HeadlinesFragment extends androidx.fragment.app.Fragment {
skip = numAll;
} else if ("unread".equals(viewMode)) {
skip = numUnread;
- } else if (m_searchQuery != null && m_searchQuery.length() > 0) {
+ } else if (m_searchQuery != null && !m_searchQuery.isEmpty()) {
skip = numAll;
} else if ("adaptive".equals(viewMode)) {
skip = numUnread > 0 ? numUnread : numAll;
@@ -660,7 +622,7 @@ public class HeadlinesFragment extends androidx.fragment.app.Fragment {
req.setOffset(skip);
- HashMap<String,String> map = new HashMap<String,String>();
+ HashMap<String,String> map = new HashMap<>();
map.put("op", "getHeadlines");
map.put("sid", sessionId);
map.put("feed_id", String.valueOf(m_feed.id));
@@ -688,7 +650,7 @@ public class HeadlinesFragment extends androidx.fragment.app.Fragment {
map.put("force_update", "true");
}
- if (m_searchQuery != null && m_searchQuery.length() != 0) {
+ if (m_searchQuery != null && !m_searchQuery.isEmpty()) {
map.put("search", m_searchQuery);
map.put("search_mode", "");
map.put("match_on", "both");
@@ -740,18 +702,15 @@ public class HeadlinesFragment extends androidx.fragment.app.Fragment {
view = v;
- view.getViewTreeObserver().addOnPreDrawListener(new ViewTreeObserver.OnPreDrawListener() {
- @Override
- public boolean onPreDraw() {
- View flavorImage = view.findViewById(R.id.flavor_image);
+ view.getViewTreeObserver().addOnPreDrawListener(() -> {
+ View flavorImage = view.findViewById(R.id.flavor_image);
- if (flavorImage != null) {
- article.flavorViewHeight = flavorImage.getMeasuredHeight();
- }
+ if (flavorImage != null) {
+ article.flavorViewHeight = flavorImage.getMeasuredHeight();
+ }
- return true;
- }
- });
+ return true;
+ });
titleView = v.findViewById(R.id.title);
@@ -813,7 +772,7 @@ public class HeadlinesFragment extends androidx.fragment.app.Fragment {
}
private class ArticleListAdapter extends RecyclerView.Adapter<ArticleViewHolder> {
- private ArticleList items;
+ private final ArticleList items;
public static final int VIEW_NORMAL = 0;
public static final int VIEW_UNREAD = 1;
@@ -826,12 +785,12 @@ public class HeadlinesFragment extends androidx.fragment.app.Fragment {
private final Integer[] origTitleColors = new Integer[VIEW_COUNT];
- private ColorGenerator m_colorGenerator = ColorGenerator.DEFAULT;
- private TextDrawable.IBuilder m_drawableBuilder = TextDrawable.builder().round();
+ private final ColorGenerator m_colorGenerator = ColorGenerator.DEFAULT;
+ private final TextDrawable.IBuilder m_drawableBuilder = TextDrawable.builder().round();
boolean flavorImageEnabled;
- private int m_minimumHeightToEmbed;
- private int m_screenHeight;
+ private final int m_minimumHeightToEmbed;
+ private final int m_screenHeight;
private int m_lastAddedPosition;
private final ConnectivityManager m_cmgr;
@@ -919,67 +878,52 @@ public class HeadlinesFragment extends androidx.fragment.app.Fragment {
// nothing else of interest for those below anyway
if (article.id < 0) return;
- holder.view.setOnLongClickListener(new View.OnLongClickListener() {
- @Override
- public boolean onLongClick(View v) {
- m_list.showContextMenuForChild(v);
- return true;
- }
- });
+ holder.view.setOnLongClickListener(v -> {
+ m_list.showContextMenuForChild(v);
+ return true;
+ });
- holder.view.setOnClickListener(new OnClickListener() {
- @Override
- public void onClick(View v) {
- m_listener.onArticleSelected(article);
+ holder.view.setOnClickListener(v -> {
+ m_listener.onArticleSelected(article);
- // only set active article when it makes sense (in DetailActivity)
- if (getActivity() instanceof DetailActivity) {
- m_activeArticle = article;
- m_adapter.notifyDataSetChanged();
- }
- }
- });
+ // only set active article when it makes sense (in DetailActivity)
+ if (getActivity() instanceof DetailActivity) {
+ m_activeArticle = article;
+ m_adapter.notifyDataSetChanged();
+ }
+ });
// block footer clicks to make button/selection clicking easier
if (holder.headlineFooter != null) {
- holder.headlineFooter.setOnClickListener(new OnClickListener() {
- @Override
- public void onClick(View view) {
- //
- }
- });
+ holder.headlineFooter.setOnClickListener(view -> {
+ //
+ });
}
if (holder.textImage != null) {
updateTextCheckedState(holder, article, position);
- holder.textImage.setOnClickListener(new OnClickListener() {
- @Override
- public void onClick(View view) {
- Log.d(TAG, "textImage : onclicked");
+ holder.textImage.setOnClickListener(view -> {
+ Log.d(TAG, "textImage : onclicked");
- article.selected = !article.selected;
+ article.selected = !article.selected;
- updateTextCheckedState(holder, article, m_list.getChildPosition(holder.view));
+ updateTextCheckedState(holder, article, m_list.getChildPosition(holder.view));
- m_listener.onArticleListSelectionChange(getSelectedArticles());
+ m_listener.onArticleListSelectionChange(getSelectedArticles());
- Log.d(TAG, "num selected: " + getSelectedArticles().size());
- }
- });
+ Log.d(TAG, "num selected: " + getSelectedArticles().size());
+ });
ViewCompat.setTransitionName(holder.textImage, "gallery:" + article.flavorImageUri);
if (article.flavorImage != null) {
- holder.textImage.setOnLongClickListener(new View.OnLongClickListener() {
- @Override
- public boolean onLongClick(View v) {
+ holder.textImage.setOnLongClickListener(v -> {
- openGalleryForType(article, holder, holder.textImage);
+ openGalleryForType(article, holder, holder.textImage);
- return true;
- }
- });
+ return true;
+ });
}
}
@@ -1020,17 +964,13 @@ public class HeadlinesFragment extends androidx.fragment.app.Fragment {
else
holder.markedView.setIconTint(ColorStateList.valueOf(tvPrimary.data));
- holder.markedView.setOnClickListener(new OnClickListener() {
-
- @Override
- public void onClick(View v) {
- article.marked = !article.marked;
+ holder.markedView.setOnClickListener(v -> {
+ article.marked = !article.marked;
- m_adapter.notifyItemChanged(m_list.getChildPosition(holder.view));
+ m_adapter.notifyItemChanged(m_list.getChildPosition(holder.view));
- m_activity.saveArticleMarked(article);
- }
- });
+ m_activity.saveArticleMarked(article);
+ });
}
if (holder.scoreView != null) {
@@ -1052,51 +992,38 @@ public class HeadlinesFragment extends androidx.fragment.app.Fragment {
holder.scoreView.setIconTint(ColorStateList.valueOf(tvPrimary.data));
if (m_activity.getApiLevel() >= 16) {
- holder.scoreView.setOnClickListener(new OnClickListener() {
- @Override
- public void onClick(View v) {
- final EditText edit = new EditText(getActivity());
- edit.setText(String.valueOf(article.score));
-
- MaterialAlertDialogBuilder builder = new MaterialAlertDialogBuilder(getContext())
- .setTitle(R.string.score_for_this_article)
- .setPositiveButton(R.string.set_score,
- new DialogInterface.OnClickListener() {
+ holder.scoreView.setOnClickListener(v -> {
+ final EditText edit = new EditText(getActivity());
+ edit.setText(String.valueOf(article.score));
- @Override
- public void onClick(DialogInterface dialog,
- int which) {
+ 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());
+try {
+int newScore = Integer.parseInt(edit.getText().toString());
- article.score = newScore;
+article.score = newScore;
- m_activity.saveArticleScore(article);
+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),
- new DialogInterface.OnClickListener() {
-
- @Override
- public void onClick(DialogInterface dialog,
- int which) {
+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);
+}).setView(edit);
- Dialog dialog = builder.create();
- dialog.show();
- }
- });
+ Dialog dialog = builder.create();
+ dialog.show();
+ });
}
}
@@ -1111,29 +1038,20 @@ public class HeadlinesFragment extends androidx.fragment.app.Fragment {
else
holder.publishedView.setIconTint(ColorStateList.valueOf(tvPrimary.data));
- holder.publishedView.setOnClickListener(new OnClickListener() {
-
- @Override
- public void onClick(View v) {
- article.published = !article.published;
- //m_adapter.notifyDataSetChanged();
- m_adapter.notifyItemChanged(m_list.getChildPosition(holder.view));
+ holder.publishedView.setOnClickListener(v -> {
+ article.published = !article.published;
+ //m_adapter.notifyDataSetChanged();
+ m_adapter.notifyItemChanged(m_list.getChildPosition(holder.view));
- m_activity.saveArticlePublished(article);
- }
- });
+ m_activity.saveArticlePublished(article);
+ });
}
if (holder.attachmentsView != null) {
- if (article.attachments != null && article.attachments.size() > 0) {
+ if (article.attachments != null && !article.attachments.isEmpty()) {
holder.attachmentsView.setVisibility(View.VISIBLE);
- holder.attachmentsView.setOnClickListener(new OnClickListener() {
- @Override
- public void onClick(View v) {
- m_activity.displayAttachments(article);
- }
- });
+ holder.attachmentsView.setOnClickListener(v -> m_activity.displayAttachments(article));
} else {
holder.attachmentsView.setVisibility(View.GONE);
@@ -1191,75 +1109,60 @@ public class HeadlinesFragment extends androidx.fragment.app.Fragment {
Glide.clear(holder.flavorImageView);
// this is needed if our flavor image goes behind base listview element
- holder.headlineHeader.setOnClickListener(new OnClickListener() {
- @Override
- public void onClick(View v) {
- m_listener.onArticleSelected(article);
-
- // only set active article when it makes sense (in DetailActivity)
- if (getActivity() instanceof DetailActivity) {
- m_activeArticle = article;
- m_adapter.notifyDataSetChanged();
- }
- }
- });
+ holder.headlineHeader.setOnClickListener(v -> {
+ m_listener.onArticleSelected(article);
- holder.headlineHeader.setOnLongClickListener(new View.OnLongClickListener() {
- @Override
- public boolean onLongClick(View v) {
- m_list.showContextMenuForChild(holder.view);
+ // only set active article when it makes sense (in DetailActivity)
+ if (getActivity() instanceof DetailActivity) {
+ m_activeArticle = article;
+ m_adapter.notifyDataSetChanged();
+ }
+ });
- return true;
- }
- });
+ holder.headlineHeader.setOnLongClickListener(v -> {
+ m_list.showContextMenuForChild(holder.view);
+
+ return true;
+ });
if (canShowFlavorImage() && article.flavorImageUri != null && holder.flavorImageView != null) {
if (holder.flavorImageOverflow != null) {
- holder.flavorImageOverflow.setOnClickListener(new View.OnClickListener() {
- @Override
- public void onClick(View v) {
- PopupMenu popup = new PopupMenu(getActivity(), holder.flavorImageOverflow);
- MenuInflater inflater = popup.getMenuInflater();
- inflater.inflate(R.menu.content_gallery_entry, popup.getMenu());
-
- popup.setOnMenuItemClickListener(new PopupMenu.OnMenuItemClickListener() {
- @Override
- public boolean onMenuItemClick(MenuItem 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;
- }
- });
+ holder.flavorImageOverflow.setOnClickListener(v -> {
+ PopupMenu popup = new PopupMenu(getActivity(), holder.flavorImageOverflow);
+ MenuInflater inflater = popup.getMenuInflater();
+ inflater.inflate(R.menu.content_gallery_entry, popup.getMenu());
+
+ 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;
+});
- popup.show();
- }
- });
+ popup.show();
+ });
- holder.flavorImageView.setOnLongClickListener(new View.OnLongClickListener() {
- @Override
- public boolean onLongClick(View v) {
- m_list.showContextMenuForChild(holder.view);
- return true;
- }
- });
+ holder.flavorImageView.setOnLongClickListener(v -> {
+ m_list.showContextMenuForChild(holder.view);
+ return true;
+ });
}
//Log.d(TAG, "IMG: " + article.flavorImageUri + " STREAM: " + article.flavorStreamUri + " H:" + article.flavorViewHeight);
@@ -1324,127 +1227,107 @@ public class HeadlinesFragment extends androidx.fragment.app.Fragment {
if (m_prefs.getBoolean("inline_video_player", false) && article.flavorImage != null &&
"video".equals(article.flavorImage.tagName().toLowerCase()) && article.flavorStreamUri != null) {
- holder.flavorImageView.setOnLongClickListener(new View.OnLongClickListener() {
- @Override
- public boolean onLongClick(View v) {
- releaseSurface();
- openGalleryForType(article, holder, holder.flavorImageView);
- return true;
- }
- });
-
- holder.flavorVideoView.setOnLongClickListener(new View.OnLongClickListener() {
- @Override
- public boolean onLongClick(View v) {
- releaseSurface();
- openGalleryForType(article, holder, holder.flavorImageView);
- return true;
- }
- });
+ holder.flavorImageView.setOnLongClickListener(v -> {
+ releaseSurface();
+ openGalleryForType(article, holder, holder.flavorImageView);
+ return true;
+ });
+
+ holder.flavorVideoView.setOnLongClickListener(v -> {
+ releaseSurface();
+ openGalleryForType(article, holder, holder.flavorImageView);
+ return true;
+ });
+
+ holder.flavorImageView.setOnClickListener(view -> {
+ releaseSurface();
+ m_mediaPlayer = new MediaPlayer();
+
+ holder.flavorVideoView.setVisibility(View.VISIBLE);
+ final ProgressBar bar = holder.flavorImageLoadingBar;
+
+ bar.setIndeterminate(true);
+ bar.setVisibility(View.VISIBLE);
+
+ holder.flavorVideoView.setOnClickListener(v -> {
+try {
+if (m_mediaPlayer.isPlaying())
+m_mediaPlayer.pause();
+else
+m_mediaPlayer.start();
+} catch (IllegalStateException e) {
+releaseSurface();
+}
+});
- holder.flavorImageView.setOnClickListener(new OnClickListener() {
- @Override
- public void onClick(View view) {
- releaseSurface();
- m_mediaPlayer = new MediaPlayer();
+ m_activeTexture = holder.flavorVideoView;
- holder.flavorVideoView.setVisibility(View.VISIBLE);
- final ProgressBar bar = holder.flavorImageLoadingBar;
+ ViewGroup.LayoutParams lp = m_activeTexture.getLayoutParams();
- bar.setIndeterminate(true);
- bar.setVisibility(View.VISIBLE);
+ Drawable drawable = holder.flavorImageView.getDrawable();
- holder.flavorVideoView.setOnClickListener(new OnClickListener() {
- @Override
- public void onClick(View v) {
- try {
- if (m_mediaPlayer.isPlaying())
- m_mediaPlayer.pause();
- else
- m_mediaPlayer.start();
- } catch (IllegalStateException e) {
- releaseSurface();
- }
- }
- });
+ if (drawable != null) {
- m_activeTexture = holder.flavorVideoView;
+ float aspect = drawable.getIntrinsicWidth() / (float) drawable.getIntrinsicHeight();
- android.view.ViewGroup.LayoutParams lp = m_activeTexture.getLayoutParams();
+ lp.height = holder.flavorImageView.getMeasuredHeight();
+ lp.width = (int) (lp.height * aspect);
- Drawable drawable = holder.flavorImageView.getDrawable();
+ m_activeTexture.setLayoutParams(lp);
+ }
- if (drawable != null) {
+ holder.flavorVideoView.setSurfaceTextureListener(new TextureView.SurfaceTextureListener() {
+ @Override
+ public void onSurfaceTextureAvailable(SurfaceTexture surface, int width, int height) {
+ try {
+ m_mediaPlayer.setSurface(new Surface(surface));
- float aspect = drawable.getIntrinsicWidth() / (float) drawable.getIntrinsicHeight();
+ m_mediaPlayer.setDataSource(article.flavorStreamUri);
- lp.height = holder.flavorImageView.getMeasuredHeight();
- lp.width = (int) (lp.height * aspect);
+ m_mediaPlayer.setOnPreparedListener(mp -> {
- m_activeTexture.setLayoutParams(lp);
- }
+try {
+bar.setVisibility(View.GONE);
+mp.setLooping(true);
+mp.start();
+} catch (IllegalStateException e) {
+e.printStackTrace();
+}
+});
- holder.flavorVideoView.setSurfaceTextureListener(new TextureView.SurfaceTextureListener() {
- @Override
- public void onSurfaceTextureAvailable(SurfaceTexture surface, int width, int height) {
- try {
- m_mediaPlayer.setSurface(new Surface(surface));
-
- m_mediaPlayer.setDataSource(article.flavorStreamUri);
-
- m_mediaPlayer.setOnPreparedListener(new MediaPlayer.OnPreparedListener() {
- @Override
- public void onPrepared(MediaPlayer mp) {
-
- try {
- bar.setVisibility(View.GONE);
- mp.setLooping(true);
- mp.start();
- } catch (IllegalStateException e) {
- e.printStackTrace();
- }
- }
- });
-
- m_mediaPlayer.prepareAsync();
- } catch (Exception e) {
- e.printStackTrace();
- }
-
- }
-
- @Override
- public void onSurfaceTextureSizeChanged(SurfaceTexture surface, int width, int height) {
-
- }
-
- @Override
- public boolean onSurfaceTextureDestroyed(SurfaceTexture surface) {
- try {
- m_mediaPlayer.release();
- } catch (Exception e) {
- e.printStackTrace();
- }
- return false;
- }
-
- @Override
- public void onSurfaceTextureUpdated(SurfaceTexture surface) {
-
- }
- }
- );
+ m_mediaPlayer.prepareAsync();
+ } catch (Exception e) {
+ e.printStackTrace();
+ }
- }
- });
+ }
+
+ @Override
+ public void onSurfaceTextureSizeChanged(SurfaceTexture surface, int width, int height) {
+
+ }
+
+ @Override
+ public boolean onSurfaceTextureDestroyed(SurfaceTexture surface) {
+ try {
+ m_mediaPlayer.release();
+ } catch (Exception e) {
+ e.printStackTrace();
+ }
+ return false;
+ }
+
+ @Override
+ public void onSurfaceTextureUpdated(SurfaceTexture surface) {
+
+ }
+ }
+ );
+
+ });
} else {
- holder.flavorImageView.setOnClickListener(new OnClickListener() {
- @Override
- public void onClick(View view) {
- openGalleryForType(article, holder, holder.flavorImageView);
- }
- });
+ holder.flavorImageView.setOnClickListener(view -> openGalleryForType(article, holder, holder.flavorImageView));
}
}
@@ -1453,7 +1336,7 @@ public class HeadlinesFragment extends androidx.fragment.app.Fragment {
if (holder.authorView != null) {
holder.authorView.setTextSize(TypedValue.COMPLEX_UNIT_SP, headlineSmallFontSize);
- if (articleAuthor.length() > 0) {
+ if (!articleAuthor.isEmpty()) {
holder.authorView.setText(getString(R.string.author_formatted, articleAuthor));
} else {
holder.authorView.setText("");
@@ -1484,44 +1367,32 @@ public class HeadlinesFragment extends androidx.fragment.app.Fragment {
if (holder.selectionBoxView != null) {
holder.selectionBoxView.setChecked(article.selected);
- holder.selectionBoxView.setOnClickListener(new OnClickListener() {
+ holder.selectionBoxView.setOnClickListener(view -> {
+ CheckBox cb = (CheckBox)view;
- @Override
- public void onClick(View view) {
- CheckBox cb = (CheckBox)view;
+ article.selected = cb.isChecked();
- article.selected = cb.isChecked();
+ m_listener.onArticleListSelectionChange(getSelectedArticles());
- m_listener.onArticleListSelectionChange(getSelectedArticles());
-
- Log.d(TAG, "num selected: " + getSelectedArticles().size());
- }
- });
+ Log.d(TAG, "num selected: " + getSelectedArticles().size());
+ });
}
if (holder.menuButtonView != null) {
- holder.menuButtonView.setOnClickListener(new OnClickListener() {
- @Override
- public void onClick(View v) {
+ holder.menuButtonView.setOnClickListener(v -> {
- PopupMenu popup = new PopupMenu(getActivity(), v);
- MenuInflater inflater = popup.getMenuInflater();
- inflater.inflate(R.menu.context_headlines, popup.getMenu());
+ PopupMenu popup = new PopupMenu(getActivity(), v);
+ MenuInflater inflater = popup.getMenuInflater();
+ inflater.inflate(R.menu.context_headlines, popup.getMenu());
- 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.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(new PopupMenu.OnMenuItemClickListener() {
- @Override
- public boolean onMenuItemClick(MenuItem item) {
- return onArticleMenuItemSelected(item, article, m_list.getChildPosition(holder.view));
- }
- });
+ popup.setOnMenuItemClickListener(item -> onArticleMenuItemSelected(item, article, m_list.getChildPosition(holder.view)));
- popup.show();
- }
- });
+ popup.show();
+ });
}
}
@@ -1550,7 +1421,7 @@ public class HeadlinesFragment extends androidx.fragment.app.Fragment {
}
private void updateTextCheckedState(final ArticleViewHolder holder, final Article article, final int position) {
- String tmp = article.title.length() > 0 ? article.title.substring(0, 1).toUpperCase() : "?";
+ String tmp = !article.title.isEmpty() ? article.title.substring(0, 1).toUpperCase() : "?";
if (article.selected) {
holder.textImage.setImageDrawable(m_drawableBuilder.build(" ", 0xff616161));
diff --git a/org.fox.ttrss/src/main/java/org/fox/ttrss/LogcatActivity.java b/org.fox.ttrss/src/main/java/org/fox/ttrss/LogcatActivity.java
index 22db9e08..baa17267 100755
--- a/org.fox.ttrss/src/main/java/org/fox/ttrss/LogcatActivity.java
+++ b/org.fox.ttrss/src/main/java/org/fox/ttrss/LogcatActivity.java
@@ -49,12 +49,9 @@ public class LogcatActivity extends CommonActivity {
final SwipeRefreshLayout swipeLayout = findViewById(R.id.logcat_swipe_container);
- swipeLayout.setOnRefreshListener(new SwipeRefreshLayout.OnRefreshListener() {
- @Override
- public void onRefresh() {
- refresh();
- swipeLayout.setRefreshing(false);
- }
+ swipeLayout.setOnRefreshListener(() -> {
+ refresh();
+ swipeLayout.setRefreshing(false);
});
}
diff --git a/org.fox.ttrss/src/main/java/org/fox/ttrss/MasterActivity.java b/org.fox.ttrss/src/main/java/org/fox/ttrss/MasterActivity.java
index d2009ea0..f88ea1a8 100755
--- a/org.fox.ttrss/src/main/java/org/fox/ttrss/MasterActivity.java
+++ b/org.fox.ttrss/src/main/java/org/fox/ttrss/MasterActivity.java
@@ -3,13 +3,11 @@ package org.fox.ttrss;
import android.annotation.SuppressLint;
import android.app.Dialog;
-import android.content.DialogInterface;
import android.content.Intent;
import android.content.SharedPreferences;
import android.net.Uri;
import android.os.Bundle;
import android.os.Handler;
-import androidx.preference.PreferenceManager;
import android.util.Log;
import android.view.MenuItem;
import android.view.View;
@@ -23,6 +21,7 @@ import androidx.core.view.WindowInsetsCompat;
import androidx.drawerlayout.widget.DrawerLayout;
import androidx.fragment.app.Fragment;
import androidx.fragment.app.FragmentTransaction;
+import androidx.preference.PreferenceManager;
import com.google.android.material.dialog.MaterialAlertDialogBuilder;
import com.google.android.material.floatingactionbutton.FloatingActionButton;
@@ -210,16 +209,13 @@ public class MasterActivity extends OnlineActivity implements HeadlinesEventList
if (fab != null) {
fab.show();
- fab.setOnClickListener(new View.OnClickListener() {
- @Override
- public void onClick(View view) {
- HeadlinesFragment hf = (HeadlinesFragment) getSupportFragmentManager().findFragmentByTag(FRAG_HEADLINES);
+ fab.setOnClickListener(view -> {
+ HeadlinesFragment hf = (HeadlinesFragment) getSupportFragmentManager().findFragmentByTag(FRAG_HEADLINES);
- if (hf != null && hf.isAdded()) {
- hf.refresh(false);
- }
- }
- });
+ if (hf != null && hf.isAdded()) {
+ hf.refresh(false);
+ }
+ });
}
}
@@ -286,24 +282,21 @@ public class MasterActivity extends OnlineActivity implements HeadlinesEventList
Application.getArticles().clear();
- new Handler().postDelayed(new Runnable() {
- @Override
- public void run() {
- FragmentTransaction ft = getSupportFragmentManager()
- .beginTransaction();
+ new Handler().postDelayed(() -> {
+ FragmentTransaction ft = getSupportFragmentManager()
+ .beginTransaction();
- HeadlinesFragment hf = new HeadlinesFragment();
- hf.initialize(feed);
+ HeadlinesFragment hf = new HeadlinesFragment();
+ hf.initialize(feed);
- ft.replace(R.id.headlines_fragment, hf, FRAG_HEADLINES);
+ ft.replace(R.id.headlines_fragment, hf, FRAG_HEADLINES);
- ft.commit();
+ ft.commit();
- m_feedIsSelected = true;
- m_userFeedSelected = selectedByUser;
+ m_feedIsSelected = true;
+ m_userFeedSelected = selectedByUser;
- }
- }, 250);
+ }, 250);
Date date = new Date();
@@ -386,24 +379,20 @@ public class MasterActivity extends OnlineActivity implements HeadlinesEventList
.setTitle(getString(R.string.headlines_sort_articles_title))
.setSingleChoiceItems(
sortTitles,
- selectedIndex, new DialogInterface.OnClickListener() {
- @Override
- public void onClick(DialogInterface dialog,
- int which) {
+ selectedIndex, (dialog, which) -> {
- try {
+ try {
// Log.d(TAG, "sort selected index:" + which + ": " + sortNames[which]);
- setSortMode((String) sortNames[which]);
+ setSortMode((String) sortNames[which]);
- } catch (IndexOutOfBoundsException e) {
- e.printStackTrace();
- }
+ } catch (IndexOutOfBoundsException e) {
+ e.printStackTrace();
+ }
- dialog.cancel();
+ dialog.cancel();
- refresh();
- }
+ refresh();
});
Dialog dialog = builder.create();
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 29c82d7b..8080456c 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
@@ -3,9 +3,6 @@ package org.fox.ttrss;
import android.annotation.SuppressLint;
import android.app.Dialog;
import android.content.Context;
-import android.content.DialogInterface;
-import android.content.DialogInterface.OnClickListener;
-import android.content.DialogInterface.OnMultiChoiceClickListener;
import android.content.Intent;
import android.content.SharedPreferences;
import android.graphics.Point;
@@ -13,7 +10,6 @@ import android.net.ConnectivityManager;
import android.net.NetworkInfo;
import android.net.Uri;
import android.os.Bundle;
-import androidx.preference.PreferenceManager;
import android.util.Log;
import android.view.Display;
import android.view.KeyEvent;
@@ -27,6 +23,7 @@ import android.widget.TextView;
import androidx.appcompat.app.AlertDialog;
import androidx.appcompat.view.ActionMode;
import androidx.appcompat.widget.Toolbar;
+import androidx.preference.PreferenceManager;
import com.google.android.material.dialog.MaterialAlertDialogBuilder;
import com.google.gson.Gson;
@@ -47,6 +44,7 @@ import java.util.LinkedHashMap;
import java.util.List;
import java.util.Map;
+@SuppressLint("StaticFieldLeak")
public class OnlineActivity extends CommonActivity {
private final String TAG = this.getClass().getSimpleName();
@@ -81,7 +79,7 @@ public class OnlineActivity extends CommonActivity {
searchQuery = "";
}
- int titleStringId = searchQuery.length() > 0 ? R.string.catchup_dialog_title_search : R.string.catchup_dialog_title;
+ int titleStringId = !searchQuery.isEmpty() ? R.string.catchup_dialog_title_search : R.string.catchup_dialog_title;
MaterialAlertDialogBuilder builder = new MaterialAlertDialogBuilder(this)
.setTitle(getString(titleStringId, feed.title))
@@ -92,36 +90,26 @@ public class OnlineActivity extends CommonActivity {
getString(R.string.catchup_dialog_1week),
getString(R.string.catchup_dialog_2week)
},
- selectedIndex, new OnClickListener() {
- @Override
- public void onClick(DialogInterface dialog,
- int which) {
- }
- })
+ selectedIndex, (dialog, which) -> {
+ })
.setPositiveButton(R.string.catchup,
- new OnClickListener() {
- public void onClick(DialogInterface dialog,
- int which) {
+ (dialog, which) -> {
- ListView list = ((AlertDialog)dialog).getListView();
+ ListView list = ((AlertDialog)dialog).getListView();
- if (list.getCheckedItemCount() > 0) {
- int position = list.getCheckedItemPosition();
+ if (list.getCheckedItemCount() > 0) {
+ int position = list.getCheckedItemPosition();
- String[] catchupModes = { "all", "1day", "1week", "2week" };
- String mode = catchupModes[position];
+ String[] catchupModes = { "all", "1day", "1week", "2week" };
+ String mode = catchupModes[position];
- catchupFeed(feed, mode, true, searchQuery);
- }
- }
- })
+ catchupFeed(feed, mode, true, searchQuery);
+ }
+ })
.setNegativeButton(R.string.dialog_cancel,
- new Dialog.OnClickListener() {
- public void onClick(DialogInterface dialog,
- int which) {
+ (dialog, which) -> {
- }
- });
+ });
Dialog dialog = builder.create();
dialog.show();
@@ -130,21 +118,11 @@ public class OnlineActivity extends CommonActivity {
MaterialAlertDialogBuilder builder = new MaterialAlertDialogBuilder(this)
.setMessage(getString(R.string.catchup_dialog_title, feed.title))
.setPositiveButton(R.string.catchup,
- new Dialog.OnClickListener() {
- public void onClick(DialogInterface dialog,
- int which) {
-
- catchupFeed(feed, "all", true, "");
-
- }
- })
+ (dialog, which) -> catchupFeed(feed, "all", true, ""))
.setNegativeButton(R.string.dialog_cancel,
- new Dialog.OnClickListener() {
- public void onClick(DialogInterface dialog,
- int which) {
+ (dialog, which) -> {
- }
- });
+ });
Dialog dialog = builder.create();
dialog.show();
@@ -236,27 +214,21 @@ public class OnlineActivity extends CommonActivity {
public void login(boolean refresh, OnLoginFinishedListener listener) {
- if (m_prefs.getString("ttrss_url", "").trim().length() == 0) {
+ if (m_prefs.getString("ttrss_url", "").trim().isEmpty()) {
setLoadingStatus(R.string.login_need_configure);
MaterialAlertDialogBuilder builder = new MaterialAlertDialogBuilder(this)
.setMessage(R.string.dialog_need_configure_prompt)
.setCancelable(false)
- .setPositiveButton(R.string.dialog_open_preferences, new DialogInterface.OnClickListener() {
- public void onClick(DialogInterface dialog, int id) {
- // launch preferences
-
- Intent intent = new Intent(OnlineActivity.this,
- PreferencesActivity.class);
- startActivityForResult(intent, 0);
- }
- })
- .setNegativeButton(R.string.cancel, new DialogInterface.OnClickListener() {
- public void onClick(DialogInterface dialog, int id) {
- dialog.cancel();
- }
- });
+ .setPositiveButton(R.string.dialog_open_preferences, (dialog, id) -> {
+ // launch preferences
+
+ Intent intent = new Intent(OnlineActivity.this,
+ PreferencesActivity.class);
+ startActivityForResult(intent, 0);
+ })
+ .setNegativeButton(R.string.cancel, (dialog, id) -> dialog.cancel());
Dialog alert = builder.create();
alert.show();
@@ -266,7 +238,7 @@ public class OnlineActivity extends CommonActivity {
LoginRequest ar = new LoginRequest(getApplicationContext(), refresh, listener);
- HashMap<String, String> map = new HashMap<String, String>();
+ HashMap<String, String> map = new HashMap<>();
map.put("op", "login");
map.put("user", m_prefs.getString("login", "").trim());
map.put("password", m_prefs.getString("password", "").trim());
@@ -345,13 +317,13 @@ public class OnlineActivity extends CommonActivity {
}
public void displayAttachments(Article article) {
- if (article != null && article.attachments != null && article.attachments.size() > 0) {
+ if (article != null && article.attachments != null && !article.attachments.isEmpty()) {
CharSequence[] items = new CharSequence[article.attachments.size()];
final CharSequence[] itemUrls = new CharSequence[article.attachments.size()];
for (int i = 0; i < article.attachments.size(); i++) {
- items[i] = article.attachments.get(i).title != null ? article.attachments.get(i).content_url :
- article.attachments.get(i).content_url;
+ items[i] = article.attachments.get(i).title != null && !article.attachments.get(i).title.isEmpty() ?
+ article.attachments.get(i).title : article.attachments.get(i).content_url;
itemUrls[i] = article.attachments.get(i).content_url;
}
@@ -359,35 +331,19 @@ public class OnlineActivity extends CommonActivity {
MaterialAlertDialogBuilder builder = new MaterialAlertDialogBuilder(this)
.setTitle(R.string.attachments_prompt)
.setCancelable(true)
- .setSingleChoiceItems(items, 0, new OnClickListener() {
- @Override
- public void onClick(DialogInterface dialog, int which) {
- //
- }
- }).setNeutralButton(R.string.attachment_copy, new OnClickListener() {
- @Override
- public void onClick(DialogInterface dialog, int which) {
- int selectedPosition = ((AlertDialog)dialog).getListView().getCheckedItemPosition();
+ .setSingleChoiceItems(items, 0, (dialog, which) -> {
+ //
+ }).setNeutralButton(R.string.attachment_copy, (dialog, which) -> {
+ int selectedPosition = ((AlertDialog)dialog).getListView().getCheckedItemPosition();
- copyToClipboard((String)itemUrls[selectedPosition]);
- }
- }).setPositiveButton(R.string.attachment_view, new OnClickListener() {
-
- @Override
- public void onClick(DialogInterface dialog, int id) {
- int selectedPosition = ((AlertDialog)dialog).getListView().getCheckedItemPosition();
+ copyToClipboard((String)itemUrls[selectedPosition]);
+ }).setPositiveButton(R.string.attachment_view, (dialog, id) -> {
+ int selectedPosition = ((AlertDialog)dialog).getListView().getCheckedItemPosition();
- openUri(Uri.parse((String)itemUrls[selectedPosition]));
+ openUri(Uri.parse((String)itemUrls[selectedPosition]));
- dialog.cancel();
- }
- }).setNegativeButton(R.string.dialog_cancel, new OnClickListener() {
-
- @Override
- public void onClick(DialogInterface dialog, int id) {
- dialog.cancel();
- }
- });
+ dialog.cancel();
+ }).setNegativeButton(R.string.dialog_cancel, (dialog, id) -> dialog.cancel());
Dialog dialog = builder.create();
dialog.show();
@@ -426,38 +382,26 @@ public class OnlineActivity extends CommonActivity {
return true;
} else if (itemId == R.id.search) {
if (hf != null) {
- Dialog dialog = new Dialog(this);
-
final EditText edit = new EditText(this);
MaterialAlertDialogBuilder builder = new MaterialAlertDialogBuilder(this)
.setTitle(R.string.search)
.setPositiveButton(getString(R.string.search),
- new OnClickListener() {
+ (dialog4, which) -> {
- @Override
- public void onClick(DialogInterface dialog,
- int which) {
+ String query = edit.getText().toString().trim();
- String query = edit.getText().toString().trim();
+ hf.setSearchQuery(query);
- hf.setSearchQuery(query);
-
- }
})
.setNegativeButton(getString(R.string.cancel),
- new OnClickListener() {
+ (dialog3, which) -> {
- @Override
- public void onClick(DialogInterface dialog,
- int which) {
+ //
- //
-
- }
}).setView(edit);
- dialog = builder.create();
+ Dialog dialog = builder.create();
dialog.show();
}
return true;
@@ -473,8 +417,6 @@ public class OnlineActivity extends CommonActivity {
return true;
} else if (itemId == R.id.headlines_display_mode) {
if (hf != null) {
- Dialog dialog = new Dialog(this);
-
String headlineMode = m_prefs.getString("headline_mode", "HL_DEFAULT");
String[] headlineModeNames = getResources().getStringArray(R.array.headline_mode_names);
final String[] headlineModeValues = getResources().getStringArray(R.array.headline_mode_values);
@@ -484,42 +426,36 @@ public class OnlineActivity extends CommonActivity {
MaterialAlertDialogBuilder builder = new MaterialAlertDialogBuilder(this)
.setTitle(R.string.headlines_set_view_mode)
.setSingleChoiceItems(headlineModeNames,
- selectedIndex, new OnClickListener() {
- @Override
- public void onClick(DialogInterface dialog,
- int which) {
- dialog.cancel();
+ selectedIndex, (dialog2, which) -> {
+ dialog2.cancel();
- SharedPreferences.Editor editor = m_prefs.edit();
- editor.putString("headline_mode", headlineModeValues[which]);
- editor.apply();
+ SharedPreferences.Editor editor = m_prefs.edit();
+ editor.putString("headline_mode", headlineModeValues[which]);
+ editor.apply();
- Intent intent = getIntent();
+ Intent intent = getIntent();
- Feed feed = hf.getFeed();
+ Feed feed = hf.getFeed();
- if (feed != null) {
- intent.putExtra("feed_id", feed.id);
- intent.putExtra("feed_is_cat", feed.is_cat);
- intent.putExtra("feed_title", feed.title);
- }
+ if (feed != null) {
+ intent.putExtra("feed_id", feed.id);
+ intent.putExtra("feed_is_cat", feed.is_cat);
+ intent.putExtra("feed_title", feed.title);
+ }
- finish();
+ finish();
- startActivity(intent);
- overridePendingTransition(0, 0);
- }
+ startActivity(intent);
+ overridePendingTransition(0, 0);
});
- dialog = builder.create();
+ Dialog dialog = builder.create();
dialog.show();
}
return true;
} else if (itemId == R.id.headlines_view_mode) {
if (hf != null) {
- Dialog dialog = new Dialog(this);
-
String viewMode = getViewMode();
//Log.d(TAG, "viewMode:" + getViewMode());
@@ -545,34 +481,30 @@ public class OnlineActivity extends CommonActivity {
getString(R.string.headlines_starred),
getString(R.string.headlines_published),
getString(R.string.headlines_unread)},
- selectedIndex, new OnClickListener() {
- @Override
- public void onClick(DialogInterface dialog,
- int which) {
- switch (which) {
- case 0:
- setViewMode("adaptive");
- break;
- case 1:
- setViewMode("all_articles");
- break;
- case 2:
- setViewMode("marked");
- break;
- case 3:
- setViewMode("published");
- break;
- case 4:
- setViewMode("unread");
- break;
- }
- dialog.cancel();
-
- refresh();
+ selectedIndex, (dialog1, which) -> {
+ switch (which) {
+ case 0:
+ setViewMode("adaptive");
+ break;
+ case 1:
+ setViewMode("all_articles");
+ break;
+ case 2:
+ setViewMode("marked");
+ break;
+ case 3:
+ setViewMode("published");
+ break;
+ case 4:
+ setViewMode("unread");
+ break;
}
+ dialog1.cancel();
+
+ refresh();
});
- dialog = builder.create();
+ Dialog dialog = builder.create();
dialog.show();
}
@@ -586,24 +518,20 @@ public class OnlineActivity extends CommonActivity {
getString(R.string.headlines_select_all),
getString(R.string.headlines_select_unread),
getString(R.string.headlines_select_none)},
- 0, new OnClickListener() {
- @Override
- public void onClick(DialogInterface dialog,
- int which) {
- switch (which) {
- case 0:
- hf.setSelection(HeadlinesFragment.ArticlesSelection.ALL);
- break;
- case 1:
- hf.setSelection(HeadlinesFragment.ArticlesSelection.UNREAD);
- break;
- case 2:
- hf.setSelection(HeadlinesFragment.ArticlesSelection.NONE);
- break;
- }
- dialog.cancel();
- invalidateOptionsMenu();
+ 0, (dialog, which) -> {
+ switch (which) {
+ case 0:
+ hf.setSelection(HeadlinesFragment.ArticlesSelection.ALL);
+ break;
+ case 1:
+ hf.setSelection(HeadlinesFragment.ArticlesSelection.UNREAD);
+ break;
+ case 2:
+ hf.setSelection(HeadlinesFragment.ArticlesSelection.NONE);
+ break;
}
+ dialog.cancel();
+ invalidateOptionsMenu();
});
Dialog dialog = builder.create();
@@ -650,7 +578,7 @@ public class OnlineActivity extends CommonActivity {
if (hf != null) {
ArticleList selected = hf.getSelectedArticles();
- if (selected.size() > 0) {
+ if (!selected.isEmpty()) {
for (Article a : selected)
a.unread = !a.unread;
@@ -664,7 +592,7 @@ public class OnlineActivity extends CommonActivity {
if (hf != null) {
ArticleList selected = hf.getSelectedArticles();
- if (selected.size() > 0) {
+ if (!selected.isEmpty()) {
for (Article a : selected)
a.marked = !a.marked;
@@ -678,7 +606,7 @@ public class OnlineActivity extends CommonActivity {
if (hf != null) {
ArticleList selected = hf.getSelectedArticles();
- if (selected.size() > 0) {
+ if (!selected.isEmpty()) {
for (Article a : selected)
a.published = !a.published;
@@ -702,20 +630,10 @@ public class OnlineActivity extends CommonActivity {
MaterialAlertDialogBuilder builder = new MaterialAlertDialogBuilder(this)
.setMessage(R.string.confirm_catchup_above)
.setPositiveButton(R.string.dialog_ok,
- new OnClickListener() {
- public void onClick(DialogInterface dialog,
- int which) {
-
- catchupAbove(hf, ap);
-
- }
- })
+ (dialog, which) -> catchupAbove(hf, ap))
.setNegativeButton(R.string.dialog_cancel,
- new OnClickListener() {
- public void onClick(DialogInterface dialog,
- int which) {
+ (dialog, which) -> {
- }
});
Dialog dialog = builder.create();
@@ -733,12 +651,6 @@ public class OnlineActivity extends CommonActivity {
}
return true;
- /*case R.id.update_headlines:
- if (hf != null) {
- //m_pullToRefreshAttacher.setRefreshing(true);
- hf.refresh(false, true);
- }
- return true;*/
}
Log.d(TAG, "onOptionsItemSelected, unhandled id=" + item.getItemId());
return super.onOptionsItemSelected(item);
@@ -759,7 +671,7 @@ public class OnlineActivity extends CommonActivity {
tmp.add(a);
}
}
- if (tmp.size() > 0) {
+ if (!tmp.isEmpty()) {
toggleArticlesUnread(tmp);
hf.notifyUpdated();
invalidateOptionsMenu();
@@ -767,39 +679,6 @@ public class OnlineActivity extends CommonActivity {
}
}
- /* protected void catchupVisibleArticles() {
- final HeadlinesFragment hf = (HeadlinesFragment) getSupportFragmentManager().findFragmentByTag(FRAG_HEADLINES);
-
- if (hf != null) {
- ArticleList articles = hf.getUnreadArticles();
-
- for (Article a : articles)
- a.unread = false;
-
- ApiRequest req = new ApiRequest(getApplicationContext()) {
- protected void onPostExecute(JsonElement result) {
- if (hf.isAdded()) {
- hf.refresh(false);
- }
- }
- };
-
- final String articleIds = articlesToIdString(articles);
-
- @SuppressWarnings("serial")
- HashMap<String, String> map = new HashMap<String, String>() {
- {
- put("sid", getSessionId());
- put("op", "updateArticle");
- put("article_ids", articleIds);
- put("mode", "0");
- put("field", "2");
- }
- };
- req.execute(map);
- }
- } */
-
public void editArticleNote(final Article article) {
MaterialAlertDialogBuilder builder = new MaterialAlertDialogBuilder(this)
.setTitle(article.title);
@@ -808,25 +687,21 @@ public class OnlineActivity extends CommonActivity {
topicEdit.setText(article.note);
builder.setView(topicEdit);
- builder.setPositiveButton(R.string.article_edit_note, new Dialog.OnClickListener() {
- public void onClick(DialogInterface dialog, int which) {
- String note = topicEdit.getText().toString().trim();
-
- saveArticleNote(article, note);
-
- HeadlinesFragment hf = (HeadlinesFragment) getSupportFragmentManager().findFragmentByTag(FRAG_HEADLINES);
- if (hf != null) hf.notifyUpdated();
-
- ArticlePager ap = (ArticlePager) getSupportFragmentManager().findFragmentByTag(FRAG_ARTICLE);
- if (ap != null) ap.notifyUpdated();
- }
- });
+ builder.setPositiveButton(R.string.article_edit_note, (dialog, which) -> {
+ String note = topicEdit.getText().toString().trim();
+
+ saveArticleNote(article, note);
+
+ HeadlinesFragment hf = (HeadlinesFragment) getSupportFragmentManager().findFragmentByTag(FRAG_HEADLINES);
+ if (hf != null) hf.notifyUpdated();
+
+ ArticlePager ap = (ArticlePager) getSupportFragmentManager().findFragmentByTag(FRAG_ARTICLE);
+ if (ap != null) ap.notifyUpdated();
+ });
- builder.setNegativeButton(R.string.dialog_cancel, new Dialog.OnClickListener() {
- public void onClick(DialogInterface dialog, int which) {
- //
- }
- });
+ builder.setNegativeButton(R.string.dialog_cancel, (dialog, which) -> {
+ //
+ });
Dialog dialog = builder.create();
dialog.show();
@@ -854,31 +729,20 @@ public class OnlineActivity extends CommonActivity {
MaterialAlertDialogBuilder builder = new MaterialAlertDialogBuilder(OnlineActivity.this)
.setTitle(R.string.article_set_labels)
- .setMultiChoiceItems(items, checkedItems, new OnMultiChoiceClickListener() {
-
- @Override
- public void onClick(DialogInterface dialog, int which, final boolean isChecked) {
- final int labelId = itemIds[which];
-
- @SuppressWarnings("serial")
- HashMap<String, String> map = new HashMap<String, String>();
- map.put("sid", getSessionId());
- map.put("op", "setArticleLabel");
- map.put("label_id", String.valueOf(labelId));
- map.put("article_ids", String.valueOf(articleId));
- if (isChecked) map.put("assign", "true");
-
- ApiRequest req = new ApiRequest(OnlineActivity.this);
- req.execute(map);
-
- }
- }).setPositiveButton(R.string.dialog_close, new OnClickListener() {
-
- @Override
- public void onClick(DialogInterface dialog, int which) {
- dialog.cancel();
- }
- });
+ .setMultiChoiceItems(items, checkedItems, (dialog, which, isChecked) -> {
+ final int labelId = itemIds[which];
+
+ HashMap<String, String> map = new HashMap<>();
+ map.put("sid", getSessionId());
+ map.put("op", "setArticleLabel");
+ map.put("label_id", String.valueOf(labelId));
+ map.put("article_ids", String.valueOf(articleId));
+ if (isChecked) map.put("assign", "true");
+
+ ApiRequest req1 = new ApiRequest(OnlineActivity.this);
+ req1.execute(map);
+
+ }).setPositiveButton(R.string.dialog_close, (dialog, which) -> dialog.cancel());
Dialog dialog = builder.create();
dialog.show();
@@ -887,8 +751,7 @@ public class OnlineActivity extends CommonActivity {
}
};
- @SuppressWarnings("serial")
- HashMap<String, String> map = new HashMap<String, String>();
+ HashMap<String, String> map = new HashMap<>();
map.put("sid", getSessionId());
map.put("op", "getLabels");
map.put("article_id", String.valueOf(articleId));
@@ -956,7 +819,6 @@ public class OnlineActivity extends CommonActivity {
Application.getInstance().m_apiLevel = apiLevel;
}
- @SuppressWarnings({ "unchecked", "serial" })
public void saveArticleUnread(final Article article) {
ApiRequest req = new ApiRequest(getApplicationContext()) {
protected void onPostExecute(JsonElement result) {
@@ -965,7 +827,7 @@ public class OnlineActivity extends CommonActivity {
}
};
- HashMap<String, String> map = new HashMap<String, String>();
+ HashMap<String, String> map = new HashMap<>();
map.put("sid", getSessionId());
map.put("op", "updateArticle");
map.put("article_ids", String.valueOf(article.id));
@@ -983,7 +845,7 @@ public class OnlineActivity extends CommonActivity {
}
};
- HashMap<String, String> map = new HashMap<String, String>();
+ HashMap<String, String> map = new HashMap<>();
map.put("sid", getSessionId());
map.put("op", "updateArticle");
map.put("article_ids", String.valueOf(article.id));
@@ -1001,7 +863,7 @@ public class OnlineActivity extends CommonActivity {
}
};
- HashMap<String, String> map = new HashMap<String, String>();
+ HashMap<String, String> map = new HashMap<>();
map.put("sid", getSessionId());
map.put("op", "updateArticle");
map.put("article_ids", String.valueOf(article.id));
@@ -1011,7 +873,6 @@ public class OnlineActivity extends CommonActivity {
req.execute(map);
}
- @SuppressWarnings({ "unchecked", "serial" })
public void saveArticlePublished(final Article article) {
ApiRequest req = new ApiRequest(getApplicationContext()) {
@@ -1021,7 +882,7 @@ public class OnlineActivity extends CommonActivity {
}
};
- HashMap<String, String> map = new HashMap<String, String>();
+ HashMap<String, String> map = new HashMap<>();
map.put("sid", getSessionId());
map.put("op", "updateArticle");
map.put("article_ids", String.valueOf(article.id));
@@ -1031,7 +892,6 @@ public class OnlineActivity extends CommonActivity {
req.execute(map);
}
- @SuppressWarnings({ "unchecked", "serial" })
public void saveArticleNote(final Article article, final String note) {
ApiRequest req = new ApiRequest(getApplicationContext()) {
protected void onPostExecute(JsonElement result) {
@@ -1039,7 +899,7 @@ public class OnlineActivity extends CommonActivity {
}
};
- HashMap<String, String> map = new HashMap<String, String>();
+ HashMap<String, String> map = new HashMap<>();
map.put("sid", getSessionId());
map.put("op", "updateArticle");
map.put("article_ids", String.valueOf(article.id));
@@ -1072,33 +932,23 @@ public class OnlineActivity extends CommonActivity {
MaterialAlertDialogBuilder builder = new MaterialAlertDialogBuilder(this)
.setTitle(R.string.score_for_this_article)
.setPositiveButton(R.string.set_score,
- new DialogInterface.OnClickListener() {
+ (dialog, which) -> {
- @Override
- public void onClick(DialogInterface dialog,
- int which) {
+ try {
+article.score = Integer.parseInt(edit.getText().toString());
- try {
- article.score = Integer.parseInt(edit.getText().toString());
-
- saveArticleScore(article);
- } catch (NumberFormatException e) {
- toast(R.string.score_invalid);
- e.printStackTrace();
- }
- }
- })
+ saveArticleScore(article);
+ } catch (NumberFormatException e) {
+ toast(R.string.score_invalid);
+ e.printStackTrace();
+ }
+ })
.setNegativeButton(getString(R.string.cancel),
- new DialogInterface.OnClickListener() {
-
- @Override
- public void onClick(DialogInterface dialog,
- int which) {
+ (dialog, which) -> {
- //
+ //
- }
- }).setView(edit);
+ }).setView(edit);
Dialog dialog = builder.create();
dialog.show();
@@ -1186,8 +1036,7 @@ public class OnlineActivity extends CommonActivity {
}
};
- @SuppressWarnings("serial")
- HashMap<String, String> map = new HashMap<String, String>();
+ HashMap<String, String> map = new HashMap<>();
map.put("sid", getSessionId());
map.put("op", "catchupFeed");
map.put("feed_id", String.valueOf(feed.id));
@@ -1203,8 +1052,7 @@ public class OnlineActivity extends CommonActivity {
public void toggleArticlesMarked(final ArticleList articles) {
ApiRequest req = new ApiRequest(getApplicationContext());
- @SuppressWarnings("serial")
- HashMap<String, String> map = new HashMap<String, String>();
+ HashMap<String, String> map = new HashMap<>();
map.put("sid", getSessionId());
map.put("op", "updateArticle");
map.put("article_ids", articlesToIdString(articles));
@@ -1217,8 +1065,7 @@ public class OnlineActivity extends CommonActivity {
public void toggleArticlesUnread(final ArticleList articles) {
ApiRequest req = new ApiRequest(getApplicationContext());
- @SuppressWarnings("serial")
- HashMap<String, String> map = new HashMap<String, String>();
+ HashMap<String, String> map = new HashMap<>();
map.put("sid", getSessionId());
map.put("op", "updateArticle");
map.put("article_ids", articlesToIdString(articles));
@@ -1232,8 +1079,7 @@ public class OnlineActivity extends CommonActivity {
public void toggleArticlesPublished(final ArticleList articles) {
ApiRequest req = new ApiRequest(getApplicationContext());
- @SuppressWarnings("serial")
- HashMap<String, String> map = new HashMap<String, String>();
+ HashMap<String, String> map = new HashMap<>();
map.put("sid", getSessionId());
map.put("op", "updateArticle");
map.put("article_ids", articlesToIdString(articles));
@@ -1280,13 +1126,13 @@ public class OnlineActivity extends CommonActivity {
HeadlinesFragment hf = (HeadlinesFragment) getSupportFragmentManager().findFragmentByTag(FRAG_HEADLINES);
if (hf != null && !m_forceDisableActionMode) {
- if (hf.getSelectedArticles().size() > 0) {
+ if (!hf.getSelectedArticles().isEmpty()) {
if (m_headlinesActionMode == null) {
m_headlinesActionMode = startSupportActionMode(m_headlinesActionModeCallback);
}
m_headlinesActionMode.setTitle(String.valueOf(hf.getSelectedArticles().size()));
- } else if (hf.getSelectedArticles().size() == 0 && m_headlinesActionMode != null) {
+ } else if (hf.getSelectedArticles().isEmpty() && m_headlinesActionMode != null) {
m_headlinesActionMode.finish();
}
} else if (m_forceDisableActionMode && m_headlinesActionMode != null) {
@@ -1337,7 +1183,6 @@ public class OnlineActivity extends CommonActivity {
m_listener = listener;
}
- @SuppressWarnings("unchecked")
@SuppressLint("StaticFieldLeak")
protected void onPostExecute(JsonElement result) {
if (result != null) {
@@ -1415,8 +1260,7 @@ public class OnlineActivity extends CommonActivity {
}
};
- @SuppressWarnings("serial")
- HashMap<String, String> map = new HashMap<String, String>();
+ HashMap<String, String> map = new HashMap<>();
map.put("sid", getSessionId());
map.put("op", "getApiLevel");
@@ -1447,7 +1291,7 @@ public class OnlineActivity extends CommonActivity {
}
public LinkedHashMap<String, String> getSortModes() {
- LinkedHashMap<String, String> tmp = new LinkedHashMap<String, String>();
+ LinkedHashMap<String, String> tmp = new LinkedHashMap<>();
tmp.put("default", getString(R.string.headlines_sort_default));
tmp.put("feed_dates", getString(R.string.headlines_sort_newest_first));
diff --git a/org.fox.ttrss/src/main/java/org/fox/ttrss/PreferencesActivity.java b/org.fox.ttrss/src/main/java/org/fox/ttrss/PreferencesActivity.java
index 67b535ce..c880161a 100755
--- a/org.fox.ttrss/src/main/java/org/fox/ttrss/PreferencesActivity.java
+++ b/org.fox.ttrss/src/main/java/org/fox/ttrss/PreferencesActivity.java
@@ -1,11 +1,11 @@
package org.fox.ttrss;
import android.os.Bundle;
-import androidx.preference.PreferenceManager;
import android.view.MenuItem;
import androidx.appcompat.widget.Toolbar;
import androidx.fragment.app.FragmentTransaction;
+import androidx.preference.PreferenceManager;
public class PreferencesActivity extends CommonActivity {
@Override
diff --git a/org.fox.ttrss/src/main/java/org/fox/ttrss/PreferencesFragment.java b/org.fox.ttrss/src/main/java/org/fox/ttrss/PreferencesFragment.java
index 6e4c10f5..6b7728a4 100755
--- a/org.fox.ttrss/src/main/java/org/fox/ttrss/PreferencesFragment.java
+++ b/org.fox.ttrss/src/main/java/org/fox/ttrss/PreferencesFragment.java
@@ -6,9 +6,7 @@ import android.content.pm.PackageInfo;
import android.content.pm.PackageManager;
import android.os.Bundle;
-import androidx.annotation.NonNull;
import androidx.annotation.Nullable;
-import androidx.preference.Preference;
import androidx.preference.PreferenceFragmentCompat;
import androidx.preference.PreferenceManager;
@@ -26,26 +24,20 @@ public class PreferencesFragment extends PreferenceFragmentCompat {
findPreference("ttrss_url").setSummary(prefs.getString("ttrss_url", getString(R.string.ttrss_url_summary)));
findPreference("login").setSummary(prefs.getString("login", getString(R.string.login_summary)));
- findPreference("show_logcat").setOnPreferenceClickListener(new androidx.preference.Preference.OnPreferenceClickListener() {
- @Override
- public boolean onPreferenceClick(@NonNull androidx.preference.Preference preference) {
- Intent intent = new Intent(getActivity(), LogcatActivity.class);
- startActivity(intent);
- return false;
- }
+ findPreference("show_logcat").setOnPreferenceClickListener(preference -> {
+ Intent intent = new Intent(getActivity(), LogcatActivity.class);
+ startActivity(intent);
+ return false;
});
- findPreference("network_settings").setOnPreferenceClickListener(new Preference.OnPreferenceClickListener() {
- @Override
- public boolean onPreferenceClick(Preference preference) {
- getActivity().getSupportFragmentManager()
- .beginTransaction()
- .replace(R.id.preferences_container, new NetworkPreferencesFragment() )
- .addToBackStack( NetworkPreferencesFragment.class.getSimpleName() )
- .commit();
-
- return false;
- }
+ findPreference("network_settings").setOnPreferenceClickListener(preference -> {
+ getActivity().getSupportFragmentManager()
+ .beginTransaction()
+ .replace(R.id.preferences_container, new NetworkPreferencesFragment() )
+ .addToBackStack( NetworkPreferencesFragment.class.getSimpleName() )
+ .commit();
+
+ return false;
});
CommonActivity activity = (CommonActivity) getActivity();
diff --git a/org.fox.ttrss/src/main/java/org/fox/ttrss/glide/OkHttpProgressGlideModule.java b/org.fox.ttrss/src/main/java/org/fox/ttrss/glide/OkHttpProgressGlideModule.java
index 91e0ecf8..312988bf 100644
--- a/org.fox.ttrss/src/main/java/org/fox/ttrss/glide/OkHttpProgressGlideModule.java
+++ b/org.fox.ttrss/src/main/java/org/fox/ttrss/glide/OkHttpProgressGlideModule.java
@@ -40,14 +40,12 @@ public class OkHttpProgressGlideModule implements GlideModule {
}
private static Interceptor createInterceptor(final ResponseProgressListener listener) {
- return new Interceptor() {
- @Override public Response intercept(Chain chain) throws IOException {
- Request request = chain.request();
- Response response = chain.proceed(request);
- return response.newBuilder()
- .body(new OkHttpProgressResponseBody(request.url(), response.body(), listener))
- .build();
- }
+ return chain -> {
+ Request request = chain.request();
+ Response response = chain.proceed(request);
+ return response.newBuilder()
+ .body(new OkHttpProgressResponseBody(request.url(), response.body(), listener))
+ .build();
};
}
@@ -101,11 +99,7 @@ public class OkHttpProgressGlideModule implements GlideModule {
forget(key);
}
if (needsDispatch(key, bytesRead, contentLength, listener.getGranualityPercentage())) {
- handler.post(new Runnable() {
- @Override public void run() {
- listener.onProgress(bytesRead, contentLength);
- }
- });
+ handler.post(() -> listener.onProgress(bytesRead, contentLength));
}
}
diff --git a/org.fox.ttrss/src/main/java/org/fox/ttrss/share/CommonShareActivity.java b/org.fox.ttrss/src/main/java/org/fox/ttrss/share/CommonShareActivity.java
index 8e5f93f8..5796f289 100755
--- a/org.fox.ttrss/src/main/java/org/fox/ttrss/share/CommonShareActivity.java
+++ b/org.fox.ttrss/src/main/java/org/fox/ttrss/share/CommonShareActivity.java
@@ -1,16 +1,16 @@
package org.fox.ttrss.share;
import android.app.Dialog;
-import android.content.DialogInterface;
import android.content.Intent;
import android.content.SharedPreferences;
import android.os.Bundle;
-import androidx.preference.PreferenceManager;
import android.util.Log;
import android.view.Menu;
import android.view.MenuInflater;
import android.view.MenuItem;
+import androidx.preference.PreferenceManager;
+
import com.google.android.material.dialog.MaterialAlertDialogBuilder;
import org.fox.ttrss.ApiRequest;
@@ -53,25 +53,19 @@ public abstract class CommonShareActivity extends CommonActivity {
public void login(int requestId) {
- if (m_prefs.getString("ttrss_url", "").trim().length() == 0) {
+ if (m_prefs.getString("ttrss_url", "").trim().isEmpty()) {
MaterialAlertDialogBuilder builder = new MaterialAlertDialogBuilder(this)
.setMessage(R.string.dialog_need_configure_prompt)
.setCancelable(false)
- .setPositiveButton(R.string.dialog_open_preferences, new DialogInterface.OnClickListener() {
- public void onClick(DialogInterface dialog, int id) {
- // launch preferences
-
- Intent intent = new Intent(CommonShareActivity.this,
- PreferencesActivity.class);
- startActivityForResult(intent, 0);
- }
- })
- .setNegativeButton(R.string.cancel, new DialogInterface.OnClickListener() {
- public void onClick(DialogInterface dialog, int id) {
- dialog.cancel();
- }
- });
+ .setPositiveButton(R.string.dialog_open_preferences, (dialog, id) -> {
+ // launch preferences
+
+ Intent intent = new Intent(CommonShareActivity.this,
+ PreferencesActivity.class);
+ startActivityForResult(intent, 0);
+ })
+ .setNegativeButton(R.string.cancel, (dialog, id) -> dialog.cancel());
Dialog alert = builder.create();
alert.show();
diff --git a/org.fox.ttrss/src/main/java/org/fox/ttrss/share/ShareActivity.java b/org.fox.ttrss/src/main/java/org/fox/ttrss/share/ShareActivity.java
index 9e391411..3a1553b6 100644
--- a/org.fox.ttrss/src/main/java/org/fox/ttrss/share/ShareActivity.java
+++ b/org.fox.ttrss/src/main/java/org/fox/ttrss/share/ShareActivity.java
@@ -2,7 +2,6 @@ package org.fox.ttrss.share;
import android.content.Intent;
import android.os.Bundle;
-import android.view.View;
import android.view.Window;
import android.widget.Button;
import android.widget.EditText;
@@ -53,12 +52,7 @@ public class ShareActivity extends CommonShareActivity {
m_button = (Button) findViewById(R.id.share_button);
- m_button.setOnClickListener(new View.OnClickListener() {
- @Override
- public void onClick(View v) {
- login(0);
- }
- });
+ m_button.setOnClickListener(v -> login(0));
}
@Override
@@ -108,7 +102,7 @@ public class ShareActivity extends CommonShareActivity {
final EditText content = (EditText) findViewById(R.id.content);
if (url != null && title != null && content != null) {
- HashMap<String, String> map = new HashMap<String, String>();
+ HashMap<String, String> map = new HashMap<>();
map.put("sid", m_sessionId);
map.put("op", "shareToPublished");
map.put("title", title.getText().toString());
diff --git a/org.fox.ttrss/src/main/java/org/fox/ttrss/share/SubscribeActivity.java b/org.fox.ttrss/src/main/java/org/fox/ttrss/share/SubscribeActivity.java
index df0c82f9..e71583d3 100755
--- a/org.fox.ttrss/src/main/java/org/fox/ttrss/share/SubscribeActivity.java
+++ b/org.fox.ttrss/src/main/java/org/fox/ttrss/share/SubscribeActivity.java
@@ -39,8 +39,8 @@ public class SubscribeActivity extends CommonShareActivity {
private Button m_catButton;
private CatListAdapter m_catAdapter;
private FeedListAdapter m_feedAdapter;
- private FeedCategoryList m_cats = new FeedCategoryList();
- private ArrayList<Map.Entry<String, JsonElement>> m_feeds = new ArrayList<Map.Entry<String, JsonElement>>();
+ private final FeedCategoryList m_cats = new FeedCategoryList();
+ private final ArrayList<Map.Entry<String, JsonElement>> m_feeds = new ArrayList<>();
private ProgressBar m_progressBar;
private static final int REQ_CATS = 1;
@@ -95,7 +95,7 @@ public class SubscribeActivity extends CommonShareActivity {
m_progressBar = (ProgressBar) findViewById(R.id.subscribe_progress);
Spinner catList = (Spinner) findViewById(R.id.category_spinner);
- if (m_cats.size() == 0) m_cats.add(new FeedCategory(0, "Uncategorized", 0));
+ if (m_cats.isEmpty()) m_cats.add(new FeedCategory(0, "Uncategorized", 0));
m_catAdapter = new CatListAdapter(this, android.R.layout.simple_spinner_dropdown_item, m_cats);
catList.setAdapter(m_catAdapter);
@@ -127,21 +127,11 @@ public class SubscribeActivity extends CommonShareActivity {
m_postButton = (Button) findViewById(R.id.subscribe_button);
- m_postButton.setOnClickListener(new View.OnClickListener() {
- @Override
- public void onClick(View v) {
- login(REQ_POST);
- }
- });
+ m_postButton.setOnClickListener(v -> login(REQ_POST));
m_catButton = (Button) findViewById(R.id.cats_button);
- m_catButton.setOnClickListener(new View.OnClickListener() {
- @Override
- public void onClick(View v) {
- login(REQ_CATS);
- }
- });
+ m_catButton.setOnClickListener(v -> login(REQ_CATS));
login(REQ_CATS);
}
@@ -237,7 +227,7 @@ public class SubscribeActivity extends CommonShareActivity {
final EditText feedUrl = (EditText) findViewById(R.id.feed_url);
if (feedUrl != null ) {
- HashMap<String, String> map = new HashMap<String, String>();
+ HashMap<String, String> map = new HashMap<>();
map.put("sid", m_sessionId);
map.put("op", "subscribeToFeed");
map.put("feed_url", feedUrl.getText().toString());
@@ -299,7 +289,7 @@ public class SubscribeActivity extends CommonShareActivity {
}
};
- HashMap<String, String> map = new HashMap<String, String>();
+ HashMap<String, String> map = new HashMap<>();
map.put("sid", m_sessionId);
map.put("op", "getCategories");
@@ -326,7 +316,7 @@ public class SubscribeActivity extends CommonShareActivity {
}
private static class CatListAdapter extends ArrayAdapter<String> {
- private List<FeedCategory> m_items;
+ private final List<FeedCategory> m_items;
public CatListAdapter(Context context, int resource,
List<FeedCategory> items) {
@@ -355,7 +345,7 @@ public class SubscribeActivity extends CommonShareActivity {
}
private static class FeedListAdapter extends ArrayAdapter<String> {
- private List<Map.Entry<String, JsonElement>> m_items;
+ private final List<Map.Entry<String, JsonElement>> m_items;
public FeedListAdapter(Context context, int resource, List<Map.Entry<String, JsonElement>> items) {
super(context, resource);
diff --git a/org.fox.ttrss/src/main/java/org/fox/ttrss/types/Article.java b/org.fox.ttrss/src/main/java/org/fox/ttrss/types/Article.java
index 0a49252b..f66df08d 100755
--- a/org.fox.ttrss/src/main/java/org/fox/ttrss/types/Article.java
+++ b/org.fox.ttrss/src/main/java/org/fox/ttrss/types/Article.java
@@ -26,7 +26,7 @@ public class Article implements Parcelable {
public int id;
public boolean unread;
- public boolean marked;
+ public boolean marked;
public boolean published;
public int score;
public int updated;
@@ -78,13 +78,13 @@ public class Article implements Parcelable {
}
public void collectMediaInfo() {
- if (flavor_image != null && flavor_image.length() > 0) {
+ if (flavor_image != null && !flavor_image.isEmpty()) {
flavorImageUri = flavor_image;
flavorImage = new Element("img")
.attr("src", flavorImageUri);
- if (flavor_stream != null && flavor_stream.length() > 0) {
+ if (flavor_stream != null && !flavor_stream.isEmpty()) {
flavorStreamUri = flavor_stream;
}
@@ -127,7 +127,7 @@ public class Article implements Parcelable {
String srcEmbed = flavorImage.attr("src");
- if (srcEmbed.length() > 0) {
+ if (!srcEmbed.isEmpty()) {
Pattern pattern = Pattern.compile("/embed/([\\w-]+)");
Matcher matcher = pattern.matcher(srcEmbed);
@@ -141,7 +141,7 @@ public class Article implements Parcelable {
} else {
flavorImageUri = flavorImage.attr("src");
- if (flavorImageUri.length() > 0 && flavorImageUri.startsWith("//")) {
+ if (!flavorImageUri.isEmpty() && flavorImageUri.startsWith("//")) {
flavorImageUri = "https:" + flavorImageUri;
}
@@ -157,7 +157,7 @@ public class Article implements Parcelable {
}
}
- if (flavorImageUri == null || flavorImageUri.length() == 0) {
+ if (flavorImageUri == null || flavorImageUri.isEmpty()) {
// consider attachments
if (attachments != null) {
for (Attachment a : attachments) {
@@ -185,7 +185,7 @@ public class Article implements Parcelable {
this.id = id;
this.title = "ID:" + id;
this.link = "";
- this.tags = new ArrayList<String>();
+ this.tags = new ArrayList<>();
}
@Override
@@ -231,13 +231,13 @@ public class Article implements Parcelable {
link = in.readString();
feed_id = in.readInt();
- if (tags == null) tags = new ArrayList<String>();
+ if (tags == null) tags = new ArrayList<>();
in.readStringList(tags);
content = in.readString();
excerpt = in.readString();
- attachments = new ArrayList<Attachment>();
+ attachments = new ArrayList<>();
in.readList(attachments, Attachment.class.getClassLoader());
feed_title = in.readString();
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 3a18ccd5..a5011aaa 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
@@ -3,10 +3,8 @@ package org.fox.ttrss.types;
import android.os.Parcel;
import android.os.Parcelable;
-import java.util.ArrayList;
import java.util.concurrent.CopyOnWriteArrayList;
-@SuppressWarnings("serial")
public class ArticleList extends CopyOnWriteArrayList<Article> implements Parcelable {
@Override
public int describeContents() {
diff --git a/org.fox.ttrss/src/main/java/org/fox/ttrss/types/Attachment.java b/org.fox.ttrss/src/main/java/org/fox/ttrss/types/Attachment.java
index 6df0cb10..70212800 100644
--- a/org.fox.ttrss/src/main/java/org/fox/ttrss/types/Attachment.java
+++ b/org.fox.ttrss/src/main/java/org/fox/ttrss/types/Attachment.java
@@ -39,7 +39,7 @@ public class Attachment implements Parcelable {
}
public String toString() {
- if (title != null && title.length() > 0) {
+ if (title != null && !title.isEmpty()) {
return title;
} else {
try {
diff --git a/org.fox.ttrss/src/main/java/org/fox/ttrss/types/FeedCategoryList.java b/org.fox.ttrss/src/main/java/org/fox/ttrss/types/FeedCategoryList.java
index 1671e8e8..ba8caaec 100644
--- a/org.fox.ttrss/src/main/java/org/fox/ttrss/types/FeedCategoryList.java
+++ b/org.fox.ttrss/src/main/java/org/fox/ttrss/types/FeedCategoryList.java
@@ -5,7 +5,6 @@ import android.os.Parcelable;
import java.util.ArrayList;
-@SuppressWarnings("serial")
public class FeedCategoryList extends ArrayList<FeedCategory> implements Parcelable {
public FeedCategoryList() { }
diff --git a/org.fox.ttrss/src/main/java/org/fox/ttrss/types/FeedList.java b/org.fox.ttrss/src/main/java/org/fox/ttrss/types/FeedList.java
index fe4b8557..08164361 100644
--- a/org.fox.ttrss/src/main/java/org/fox/ttrss/types/FeedList.java
+++ b/org.fox.ttrss/src/main/java/org/fox/ttrss/types/FeedList.java
@@ -5,7 +5,6 @@ import android.os.Parcelable;
import java.util.ArrayList;
-@SuppressWarnings("serial")
public class FeedList extends ArrayList<Feed> implements Parcelable {
public FeedList() { }
diff --git a/org.fox.ttrss/src/main/java/org/fox/ttrss/util/DatabaseHelper.java b/org.fox.ttrss/src/main/java/org/fox/ttrss/util/DatabaseHelper.java
deleted file mode 100644
index e80f7116..00000000
--- a/org.fox.ttrss/src/main/java/org/fox/ttrss/util/DatabaseHelper.java
+++ /dev/null
@@ -1,140 +0,0 @@
-package org.fox.ttrss.util;
-
-import android.content.Context;
-import android.database.Cursor;
-import android.database.sqlite.SQLiteDatabase;
-import android.database.sqlite.SQLiteOpenHelper;
-import android.provider.BaseColumns;
-
-
-public class DatabaseHelper extends SQLiteOpenHelper {
-
- @SuppressWarnings("unused")
- private final String TAG = this.getClass().getSimpleName();
- public static final String DATABASE_NAME = "OfflineStorage.db";
- public static final int DATABASE_VERSION = 5;
- private static DatabaseHelper m_instance;
- private Context m_context;
-
- private DatabaseHelper(Context context) {
- super(context, DATABASE_NAME, null, DATABASE_VERSION);
- m_context = context;
- }
-
- public static synchronized DatabaseHelper getInstance(Context context) {
-
- if (m_instance == null) {
- m_instance = new DatabaseHelper(context.getApplicationContext());
- }
-
- return m_instance;
- }
-
- @Override
- public void onCreate(SQLiteDatabase db) {
- db.execSQL("DROP VIEW IF EXISTS cats_unread;");
- db.execSQL("DROP VIEW IF EXISTS feeds_unread;");
- db.execSQL("DROP TRIGGER IF EXISTS articles_set_modified;");
- db.execSQL("DROP TABLE IF EXISTS categories;");
- db.execSQL("DROP TABLE IF EXISTS feeds;");
- db.execSQL("DROP TABLE IF EXISTS articles;");
-
- db.execSQL("CREATE TABLE IF NOT EXISTS feeds (" +
- BaseColumns._ID + " INTEGER PRIMARY KEY AUTOINCREMENT," +
- "feed_url TEXT, " +
- "title TEXT, " +
- "has_icon BOOLEAN, " +
- "cat_id INTEGER" +
- ");");
-
- db.execSQL("CREATE TABLE IF NOT EXISTS categories (" +
- BaseColumns._ID + " INTEGER PRIMARY KEY AUTOINCREMENT," +
- "title TEXT" +
- ");");
-
- db.execSQL("CREATE TABLE IF NOT EXISTS articles (" +
- BaseColumns._ID + " INTEGER PRIMARY KEY AUTOINCREMENT," +
- "unread BOOLEAN, " +
- "marked BOOLEAN, " +
- "published BOOLEAN, " +
- "score INTEGER, " +
- "updated INTEGER, " +
- "is_updated BOOLEAN, " +
- "title TEXT, " +
- "link TEXT, " +
- "feed_id INTEGER, " +
- "tags TEXT, " +
- "content TEXT, " +
- "author TEXT, " +
- "selected BOOLEAN, " +
- "modified BOOLEAN," +
- "modified_published BOOLEAN," +
- "modified_marked BOOLEAN" +
- ");");
-
- db.execSQL("CREATE TRIGGER articles_set_modified UPDATE OF marked, published, unread ON articles " +
- "BEGIN " +
- " UPDATE articles SET modified = 1 WHERE " + BaseColumns._ID + " = " + "OLD." + BaseColumns._ID + "; " +
- "END;");
-
- db.execSQL("CREATE VIEW feeds_unread AS SELECT feeds."+BaseColumns._ID+" AS "+BaseColumns._ID+", " +
- "feeds.title AS title, " +
- "cat_id, " +
- "SUM(articles.unread) AS unread FROM feeds " +
- "LEFT JOIN articles ON (articles.feed_id = feeds."+BaseColumns._ID+") " +
- "GROUP BY feeds."+BaseColumns._ID+", feeds.title;");
-
- //sqlite> select categories._id,categories.title,sum(articles.unread) from categories left j
- //oin feeds on (feeds.cat_id = categories._id) left join articles on (articles.feed_id = fee
- //ds._id) group by categories._id;
-
- db.execSQL("CREATE VIEW cats_unread AS SELECT categories."+BaseColumns._ID+" AS "+BaseColumns._ID+", " +
- "categories.title AS title, " +
- "SUM(articles.unread) AS unread FROM categories " +
- "LEFT JOIN feeds ON (feeds.cat_id = categories."+BaseColumns._ID+") "+
- "LEFT JOIN articles ON (articles.feed_id = feeds."+BaseColumns._ID+") " +
- "GROUP BY categories."+BaseColumns._ID+", categories.title;");
-
- }
-
- @Override
- public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
- onCreate(db);
- }
-
- public boolean hasPendingOfflineData() {
- try {
- Cursor c = getReadableDatabase().query("articles",
- new String[] { "COUNT(*)" }, "modified = 1", null, null, null,
- null);
- if (c.moveToFirst()) {
- int modified = c.getInt(0);
- c.close();
-
- return modified > 0;
- }
- } catch (IllegalStateException e) {
- // db is closed? ugh
- }
-
- return false;
- }
-
- public boolean hasOfflineData() {
- try {
- Cursor c = getReadableDatabase().query("articles",
- new String[] { "COUNT(*)" }, null, null, null, null, null);
- if (c.moveToFirst()) {
- int modified = c.getInt(0);
- c.close();
-
- return modified > 0;
- }
- } catch (IllegalStateException e) {
- // db is closed?
- }
-
- return false;
- }
-
-}
diff --git a/org.fox.ttrss/src/main/java/org/fox/ttrss/util/DetailActivityScrollingViewBehavior.java b/org.fox.ttrss/src/main/java/org/fox/ttrss/util/DetailActivityScrollingViewBehavior.java
index f444ad98..e6371ff1 100644
--- a/org.fox.ttrss/src/main/java/org/fox/ttrss/util/DetailActivityScrollingViewBehavior.java
+++ b/org.fox.ttrss/src/main/java/org/fox/ttrss/util/DetailActivityScrollingViewBehavior.java
@@ -2,13 +2,13 @@ package org.fox.ttrss.util;
import android.content.Context;
import android.content.SharedPreferences;
-import androidx.preference.PreferenceManager;
import android.util.AttributeSet;
import android.view.View;
import androidx.annotation.NonNull;
import androidx.coordinatorlayout.widget.CoordinatorLayout;
import androidx.core.view.ViewCompat;
+import androidx.preference.PreferenceManager;
import com.google.android.material.appbar.AppBarLayout;
import com.google.android.material.bottomappbar.BottomAppBar;
@@ -18,7 +18,7 @@ import java.util.List;
public class DetailActivityScrollingViewBehavior extends AppBarLayout.ScrollingViewBehavior {
- private SharedPreferences m_prefs;
+ private final SharedPreferences m_prefs;
public DetailActivityScrollingViewBehavior(Context context, AttributeSet attrs) {
super(context, attrs);
diff --git a/org.fox.ttrss/src/main/java/org/fox/ttrss/util/HeaderViewRecyclerAdapter.java b/org.fox.ttrss/src/main/java/org/fox/ttrss/util/HeaderViewRecyclerAdapter.java
index fb2218c1..898cad88 100755
--- a/org.fox.ttrss/src/main/java/org/fox/ttrss/util/HeaderViewRecyclerAdapter.java
+++ b/org.fox.ttrss/src/main/java/org/fox/ttrss/util/HeaderViewRecyclerAdapter.java
@@ -51,17 +51,18 @@ public class HeaderViewRecyclerAdapter extends RecyclerView.Adapter<RecyclerView
private static final int ADAPTER_MAX_TYPES = 100;
private RecyclerView.Adapter mWrappedAdapter;
- private List<View> mHeaderViews, mFooterViews;
- private Map<Class, Integer> mItemTypesOffset;
+ private final List<View> mHeaderViews;
+ private final List<View> mFooterViews;
+ private final Map<Class, Integer> mItemTypesOffset;
/**
* Construct a new header view recycler adapter
* @param adapter The underlying adapter to wrap
*/
public HeaderViewRecyclerAdapter(RecyclerView.Adapter adapter) {
- mHeaderViews = new ArrayList<View>();
- mFooterViews = new ArrayList<View>();
- mItemTypesOffset = new HashMap<Class, Integer>();
+ mHeaderViews = new ArrayList<>();
+ mFooterViews = new ArrayList<>();
+ mItemTypesOffset = new HashMap<>();
setWrappedAdapter(adapter);
}
@@ -176,7 +177,7 @@ public class HeaderViewRecyclerAdapter extends RecyclerView.Adapter<RecyclerView
return mItemTypesOffset.get(mWrappedAdapter.getClass());
}
- private RecyclerView.AdapterDataObserver mDataObserver = new RecyclerView.AdapterDataObserver() {
+ private final RecyclerView.AdapterDataObserver mDataObserver = new RecyclerView.AdapterDataObserver() {
@Override
public void onChanged() {
super.onChanged();
diff --git a/org.fox.ttrss/src/main/java/org/fox/ttrss/util/HeadlinesRequest.java b/org.fox.ttrss/src/main/java/org/fox/ttrss/util/HeadlinesRequest.java
index 0283305c..49883d23 100755
--- a/org.fox.ttrss/src/main/java/org/fox/ttrss/util/HeadlinesRequest.java
+++ b/org.fox.ttrss/src/main/java/org/fox/ttrss/util/HeadlinesRequest.java
@@ -24,9 +24,9 @@ public class HeadlinesRequest extends ApiRequest {
private final String TAG = this.getClass().getSimpleName();
private int m_offset = 0;
- private OnlineActivity m_activity;
- private ArticleList m_articles; // = new ArticleList(); //Application.getInstance().m_loadedArticles;
- private Feed m_feed;
+ private final OnlineActivity m_activity;
+ private final ArticleList m_articles; // = new ArticleList(); //Application.getInstance().m_loadedArticles;
+ private final Feed m_feed;
protected boolean m_firstIdChanged = false;
protected int m_firstId = 0;
diff --git a/org.fox.ttrss/src/main/java/org/fox/ttrss/util/PrefsBackupAgent.java b/org.fox.ttrss/src/main/java/org/fox/ttrss/util/PrefsBackupAgent.java
deleted file mode 100644
index 2b33615f..00000000
--- a/org.fox.ttrss/src/main/java/org/fox/ttrss/util/PrefsBackupAgent.java
+++ /dev/null
@@ -1,19 +0,0 @@
-package org.fox.ttrss.util;
-
-import android.app.backup.BackupAgentHelper;
-import android.app.backup.SharedPreferencesBackupHelper;
-
-public class PrefsBackupAgent extends BackupAgentHelper {
- // The name of the SharedPreferences file
- static final String PREFS = "org.fox.ttrss_preferences";
-
- // A key to uniquely identify the set of backup data
- static final String PREFS_BACKUP_KEY = "prefs";
-
- // Allocate a helper and add it to the backup agent
- @Override
- public void onCreate() {
- SharedPreferencesBackupHelper helper = new SharedPreferencesBackupHelper(this, PREFS);
- addHelper(PREFS_BACKUP_KEY, helper);
- }
-}
diff --git a/org.fox.ttrss/src/main/java/org/fox/ttrss/util/SimpleLoginManager.java b/org.fox.ttrss/src/main/java/org/fox/ttrss/util/SimpleLoginManager.java
index 7502a95c..abbe1ffa 100644
--- a/org.fox.ttrss/src/main/java/org/fox/ttrss/util/SimpleLoginManager.java
+++ b/org.fox.ttrss/src/main/java/org/fox/ttrss/util/SimpleLoginManager.java
@@ -14,7 +14,7 @@ public abstract class SimpleLoginManager {
private final String TAG = this.getClass().getSimpleName();
protected class LoginRequest extends ApiRequest {
- private int m_requestId;
+ private final int m_requestId;
protected String m_sessionId;
protected int m_apiLevel;
protected Context m_context;
@@ -55,8 +55,7 @@ public abstract class SimpleLoginManager {
}
};
- @SuppressWarnings("serial")
- HashMap<String, String> map = new HashMap<String, String>();
+ HashMap<String, String> map = new HashMap<>();
map.put("sid", m_sessionId);
map.put("op", "getApiLevel");
@@ -80,7 +79,7 @@ public abstract class SimpleLoginManager {
public void logIn(Context context, int requestId, final String login, final String password) {
LoginRequest ar = new LoginRequest(context, requestId);
- HashMap<String, String> map = new HashMap<String, String>();
+ HashMap<String, String> map = new HashMap<>();
map.put("op", "login");
map.put("user", login.trim());
map.put("password", password.trim());
diff --git a/org.fox.ttrss/src/main/java/org/fox/ttrss/widget/SmallWidgetProvider.java b/org.fox.ttrss/src/main/java/org/fox/ttrss/widget/SmallWidgetProvider.java
index b22c7e10..d525cb90 100755
--- a/org.fox.ttrss/src/main/java/org/fox/ttrss/widget/SmallWidgetProvider.java
+++ b/org.fox.ttrss/src/main/java/org/fox/ttrss/widget/SmallWidgetProvider.java
@@ -7,11 +7,12 @@ import android.content.ComponentName;
import android.content.Context;
import android.content.Intent;
import android.content.SharedPreferences;
-import androidx.preference.PreferenceManager;
import android.util.Log;
import android.view.View;
import android.widget.RemoteViews;
+import androidx.preference.PreferenceManager;
+
import org.fox.ttrss.CommonActivity;
import org.fox.ttrss.OnlineActivity;
import org.fox.ttrss.R;
diff --git a/org.fox.ttrss/src/main/java/org/fox/ttrss/widget/WidgetUpdateService.java b/org.fox.ttrss/src/main/java/org/fox/ttrss/widget/WidgetUpdateService.java
index 7ffe5b3d..43b12d9e 100755
--- a/org.fox.ttrss/src/main/java/org/fox/ttrss/widget/WidgetUpdateService.java
+++ b/org.fox.ttrss/src/main/java/org/fox/ttrss/widget/WidgetUpdateService.java
@@ -10,12 +10,12 @@ import android.net.ConnectivityManager;
import android.net.NetworkInfo;
import android.os.Build;
import android.os.Handler;
-import androidx.preference.PreferenceManager;
import android.util.Log;
import android.widget.RemoteViews;
import androidx.annotation.NonNull;
import androidx.core.app.JobIntentService;
+import androidx.preference.PreferenceManager;
import com.google.gson.JsonElement;
import com.google.gson.JsonObject;
@@ -58,19 +58,16 @@ public class WidgetUpdateService extends JobIntentService {
Log.d(TAG, "service update requested but network is not available, try: " + retryCount);
if (retryCount < 10) {
- new Handler().postDelayed(new Runnable() {
- @Override
- public void run() {
- Intent serviceIntent = new Intent(getApplicationContext(), WidgetUpdateService.class);
- serviceIntent.putExtra("retryCount", retryCount + 1);
-
- if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) {
- startForegroundService(serviceIntent);
- } else {
- startService(serviceIntent);
- }
-
+ new Handler().postDelayed(() -> {
+ Intent serviceIntent = new Intent(getApplicationContext(), WidgetUpdateService.class);
+ serviceIntent.putExtra("retryCount", retryCount + 1);
+
+ if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) {
+ startForegroundService(serviceIntent);
+ } else {
+ startService(serviceIntent);
}
+
}, 3 * 1000);
} else {
updateWidgets(-1, UPDATE_RESULT_ERROR_OTHER);
@@ -83,7 +80,7 @@ public class WidgetUpdateService extends JobIntentService {
m_prefs = PreferenceManager
.getDefaultSharedPreferences(getApplicationContext());
- if (m_prefs.getString("ttrss_url", "").trim().length() == 0) {
+ if (m_prefs.getString("ttrss_url", "").trim().isEmpty()) {
updateWidgets(-1, UPDATE_RESULT_ERROR_NEED_CONF);
@@ -124,7 +121,7 @@ public class WidgetUpdateService extends JobIntentService {
final String fSessionId = sessionId;
- HashMap<String, String> umap = new HashMap<String, String>();
+ HashMap<String, String> umap = new HashMap<>();
umap.put("op", "getUnread");
umap.put("feed_id", String.valueOf(feedId));
umap.put("sid", fSessionId);