summaryrefslogtreecommitdiff
path: root/org.fox.ttrss
diff options
context:
space:
mode:
Diffstat (limited to 'org.fox.ttrss')
-rwxr-xr-xorg.fox.ttrss/build.gradle15
-rwxr-xr-xorg.fox.ttrss/src/main/AndroidManifest.xml14
-rw-r--r--org.fox.ttrss/src/main/java/android/support/v4/app/ClassloaderWorkaroundFragmentStatePagerAdapter.java39
-rwxr-xr-x[-rw-r--r--]org.fox.ttrss/src/main/java/org/fox/ttrss/ApiLoader.java26
-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.java2
-rwxr-xr-xorg.fox.ttrss/src/main/java/org/fox/ttrss/ArticlePager.java24
-rwxr-xr-xorg.fox.ttrss/src/main/java/org/fox/ttrss/BaseFeedlistFragment.java5
-rwxr-xr-xorg.fox.ttrss/src/main/java/org/fox/ttrss/CommonActivity.java19
-rwxr-xr-xorg.fox.ttrss/src/main/java/org/fox/ttrss/DetailActivity.java4
-rwxr-xr-x[-rw-r--r--]org.fox.ttrss/src/main/java/org/fox/ttrss/DummyFragment.java3
-rwxr-xr-xorg.fox.ttrss/src/main/java/org/fox/ttrss/FeedCategoriesFragment.java6
-rwxr-xr-xorg.fox.ttrss/src/main/java/org/fox/ttrss/FeedsFragment.java15
-rwxr-xr-xorg.fox.ttrss/src/main/java/org/fox/ttrss/GalleryActivity.java12
-rwxr-xr-xorg.fox.ttrss/src/main/java/org/fox/ttrss/GalleryImageFragment.java4
-rwxr-xr-xorg.fox.ttrss/src/main/java/org/fox/ttrss/GalleryVideoFragment.java4
-rwxr-xr-xorg.fox.ttrss/src/main/java/org/fox/ttrss/HeadlinesFragment.java71
-rwxr-xr-xorg.fox.ttrss/src/main/java/org/fox/ttrss/LogcatActivity.java4
-rwxr-xr-xorg.fox.ttrss/src/main/java/org/fox/ttrss/MasterActivity.java67
-rwxr-xr-xorg.fox.ttrss/src/main/java/org/fox/ttrss/OnlineActivity.java22
-rwxr-xr-xorg.fox.ttrss/src/main/java/org/fox/ttrss/PreferencesActivity.java3
-rwxr-xr-xorg.fox.ttrss/src/main/java/org/fox/ttrss/StateSavedFragment.java3
-rwxr-xr-xorg.fox.ttrss/src/main/java/org/fox/ttrss/YoutubePlayerActivity.java2
-rwxr-xr-x[-rw-r--r--]org.fox.ttrss/src/main/java/org/fox/ttrss/glide/WrappingTarget.java6
-rwxr-xr-xorg.fox.ttrss/src/main/java/org/fox/ttrss/offline/OfflineActivity.java7
-rwxr-xr-xorg.fox.ttrss/src/main/java/org/fox/ttrss/offline/OfflineArticleFragment.java5
-rwxr-xr-xorg.fox.ttrss/src/main/java/org/fox/ttrss/offline/OfflineArticlePager.java9
-rwxr-xr-x[-rw-r--r--]org.fox.ttrss/src/main/java/org/fox/ttrss/offline/OfflineDetailActivity.java15
-rwxr-xr-xorg.fox.ttrss/src/main/java/org/fox/ttrss/offline/OfflineDownloadService.java3
-rwxr-xr-xorg.fox.ttrss/src/main/java/org/fox/ttrss/offline/OfflineFeedCategoriesFragment.java17
-rwxr-xr-xorg.fox.ttrss/src/main/java/org/fox/ttrss/offline/OfflineFeedsFragment.java19
-rwxr-xr-xorg.fox.ttrss/src/main/java/org/fox/ttrss/offline/OfflineHeadlinesFragment.java12
-rwxr-xr-x[-rw-r--r--]org.fox.ttrss/src/main/java/org/fox/ttrss/offline/OfflineMasterActivity.java15
-rwxr-xr-xorg.fox.ttrss/src/main/java/org/fox/ttrss/offline/OfflineUploadService.java3
-rwxr-xr-x[-rw-r--r--]org.fox.ttrss/src/main/java/org/fox/ttrss/util/ContextMenuRecyclerView.java5
-rwxr-xr-x[-rw-r--r--]org.fox.ttrss/src/main/java/org/fox/ttrss/util/HeaderViewRecyclerAdapter.java3
-rwxr-xr-xorg.fox.ttrss/src/main/java/org/fox/ttrss/util/ImageCacheService.java3
-rwxr-xr-xorg.fox.ttrss/src/main/java/org/fox/ttrss/util/ScrimInsetsFrameLayout.java7
-rwxr-xr-xorg.fox.ttrss/src/main/java/org/fox/ttrss/widget/WidgetUpdateService.java5
-rwxr-xr-xorg.fox.ttrss/src/main/res/layout/activity_logcat.xml4
-rwxr-xr-x[-rw-r--r--]org.fox.ttrss/src/main/res/layout/activity_master.xml4
-rwxr-xr-xorg.fox.ttrss/src/main/res/layout/article_pager.xml4
-rwxr-xr-xorg.fox.ttrss/src/main/res/layout/feeds_row_toggle.xml2
-rwxr-xr-x[-rw-r--r--]org.fox.ttrss/src/main/res/layout/fragment_cats.xml4
-rwxr-xr-x[-rw-r--r--]org.fox.ttrss/src/main/res/layout/fragment_feeds.xml4
-rwxr-xr-x[-rw-r--r--]org.fox.ttrss/src/main/res/layout/fragment_headlines.xml4
-rwxr-xr-x[-rw-r--r--]org.fox.ttrss/src/main/res/layout/fragment_headlines_offline.xml4
-rwxr-xr-xorg.fox.ttrss/src/main/res/layout/toolbar.xml2
-rw-r--r--org.fox.ttrss/src/main/res/values/arrays.xml6
-rwxr-xr-xorg.fox.ttrss/src/main/res/values/strings.xml18
-rwxr-xr-xorg.fox.ttrss/src/main/res/xml/preferences.xml78
51 files changed, 356 insertions, 280 deletions
diff --git a/org.fox.ttrss/build.gradle b/org.fox.ttrss/build.gradle
index 3bbf843c..c9f6a45d 100755
--- a/org.fox.ttrss/build.gradle
+++ b/org.fox.ttrss/build.gradle
@@ -1,7 +1,7 @@
apply plugin: 'com.android.application'
android {
- compileSdkVersion 27
+ compileSdkVersion 28
buildToolsVersion "28.0.3"
defaultConfig {
@@ -9,7 +9,7 @@ android {
buildConfigField "long", "TIMESTAMP", System.currentTimeMillis() + "L"
buildConfigField "boolean", "ENABLE_TRIAL", "true"
minSdkVersion 16
- targetSdkVersion 27 // we're not targeting SDK 25 because of this: https://issuetracker.google.com/issues/37103380#makechanges
+ targetSdkVersion 28 // we're not targeting SDK 25 because of this: https://issuetracker.google.com/issues/37103380#makechanges
}
signingConfigs {
@@ -56,12 +56,11 @@ dependencies {
implementation 'com.bogdwellers:pinchtozoom:0.1'
implementation 'com.github.bumptech.glide:glide:3.8.0'
implementation 'jp.wasabeef:glide-transformations:2.0.2'
- implementation 'com.android.support:recyclerview-v7:27.1.1'
- implementation 'com.android.support:cardview-v7:27.1.1'
- implementation 'com.android.support:support-v4:27.1.1'
- implementation 'com.android.support:appcompat-v7:27.1.1'
- implementation 'com.android.support:customtabs:27.1.1'
- implementation 'com.android.support:design:27.1.1'
+ implementation 'androidx.recyclerview:recyclerview:1.0.0'
+ implementation 'androidx.legacy:legacy-support-v4:1.0.0'
+ implementation 'androidx.appcompat:appcompat:1.0.2'
+ implementation 'androidx.browser:browser:1.0.0'
+ implementation 'com.google.android.material:material:1.0.0'
implementation 'com.google.code.gson:gson:2.8.2'
implementation 'com.shamanland:fab:0.0.8'
implementation 'com.ToxicBakery.viewpager.transforms:view-pager-transforms:1.2.32@aar'
diff --git a/org.fox.ttrss/src/main/AndroidManifest.xml b/org.fox.ttrss/src/main/AndroidManifest.xml
index ed7a4363..4b2697ac 100755
--- a/org.fox.ttrss/src/main/AndroidManifest.xml
+++ b/org.fox.ttrss/src/main/AndroidManifest.xml
@@ -1,8 +1,8 @@
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="org.fox.ttrss"
- android:versionCode="494"
- android:versionName="1.260">
+ android:versionCode="501"
+ android:versionName="1.267">
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
@@ -10,6 +10,7 @@
<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"
@@ -216,7 +217,7 @@
<receiver android:name=".util.DeviceBootReceiver">
<intent-filter>
- <action android:name="android.intent.action.BOOT_COMPLETED"></action>
+ <action android:name="android.intent.action.BOOT_COMPLETED" />
</intent-filter>
</receiver>
@@ -256,12 +257,7 @@
android:configChanges="keyboardHidden|orientation|screenSize"
android:label="Article Images" >
</activity>
- <activity
- android:name="org.acra.CrashReportDialog"
- android:excludeFromRecents="true"
- android:finishOnTaskLaunch="true"
- android:launchMode="singleInstance"
- android:theme="@style/DarkDialogTheme" />
+
<activity
android:name=".YoutubePlayerActivity"
android:configChanges="keyboardHidden|orientation|screenSize"
diff --git a/org.fox.ttrss/src/main/java/android/support/v4/app/ClassloaderWorkaroundFragmentStatePagerAdapter.java b/org.fox.ttrss/src/main/java/android/support/v4/app/ClassloaderWorkaroundFragmentStatePagerAdapter.java
deleted file mode 100644
index dd67d599..00000000
--- a/org.fox.ttrss/src/main/java/android/support/v4/app/ClassloaderWorkaroundFragmentStatePagerAdapter.java
+++ /dev/null
@@ -1,39 +0,0 @@
-package android.support.v4.app;
-
-// http://code.google.com/p/android/issues/detail?id=37484
-// Thanks for your amazing code quality, Google.
-
-import android.os.Bundle;
-import android.view.ViewGroup;
-
-public class ClassloaderWorkaroundFragmentStatePagerAdapter extends
- FragmentStatePagerAdapter {
-
- public ClassloaderWorkaroundFragmentStatePagerAdapter(FragmentManager fm) {
- super(fm);
- // TODO Auto-generated constructor stub
- }
-
- @Override
- public Fragment getItem(int arg0) {
- // TODO Auto-generated method stub
- return null;
- }
-
- @Override
- public Object instantiateItem(ViewGroup container, int position) {
- Fragment f = (Fragment) super.instantiateItem(container, position);
- Bundle savedFragmentState = f.mSavedFragmentState;
- if (savedFragmentState != null) {
- savedFragmentState.setClassLoader(f.getClass().getClassLoader());
- }
- return f;
- }
-
- @Override
- public int getCount() {
- // TODO Auto-generated method stub
- return 0;
- }
-
-}
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 ba9e930b..222a383f 100644..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
@@ -5,7 +5,6 @@ import android.content.SharedPreferences;
import android.net.ConnectivityManager;
import android.net.NetworkInfo;
import android.preference.PreferenceManager;
-import android.support.v4.content.AsyncTaskLoader;
import android.util.Base64;
import android.util.Log;
@@ -20,11 +19,13 @@ import java.io.File;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.OutputStream;
-import java.io.UnsupportedEncodingException;
import java.net.HttpURLConnection;
import java.net.URL;
+import java.nio.charset.StandardCharsets;
import java.util.HashMap;
+import androidx.loader.content.AsyncTaskLoader;
+
public class ApiLoader extends AsyncTaskLoader<JsonElement> {
private final String TAG = this.getClass().getSimpleName();
@@ -99,15 +100,9 @@ public class ApiLoader extends AsyncTaskLoader<JsonElement> {
String requestStr = gson.toJson(new HashMap<>(m_params));
byte[] postData = null;
- try {
- postData = requestStr.getBytes("UTF-8");
- } catch (UnsupportedEncodingException e) {
- m_lastError = ApiError.OTHER_ERROR;
- e.printStackTrace();
- return null;
- }
+ postData = requestStr.getBytes(StandardCharsets.UTF_8);
- if (m_transportDebugging) Log.d(TAG, ">>> (" + requestStr + ") " + m_api);
+ if (m_transportDebugging) Log.d(TAG, ">>> (" + requestStr + ") " + m_api);
URL url;
@@ -132,7 +127,7 @@ public class ApiLoader extends AsyncTaskLoader<JsonElement> {
if (m_transportDebugging) Log.d(TAG, "Using HTTP Basic authentication.");
conn.setRequestProperty("Authorization", "Basic " +
- Base64.encodeToString((httpLogin + ":" + httpPassword).getBytes("UTF-8"), Base64.NO_WRAP));
+ Base64.encodeToString((httpLogin + ":" + httpPassword).getBytes(StandardCharsets.UTF_8), Base64.NO_WRAP));
}
conn.setDoInput(true);
@@ -151,7 +146,7 @@ public class ApiLoader extends AsyncTaskLoader<JsonElement> {
switch (m_responseCode) {
case HttpURLConnection.HTTP_OK:
StringBuffer response = new StringBuffer();
- InputStreamReader in = new InputStreamReader(conn.getInputStream(), "UTF-8");
+ InputStreamReader in = new InputStreamReader(conn.getInputStream(), StandardCharsets.UTF_8);
char[] buf = new char[256];
int read = 0;
@@ -249,9 +244,6 @@ public class ApiLoader extends AsyncTaskLoader<JsonElement> {
// if no network is available networkInfo will be null
// otherwise check if we are connected
- if (networkInfo != null && networkInfo.isConnected()) {
- return true;
- }
- return false;
- }
+ return networkInfo != null && networkInfo.isConnected();
+ }
}
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 499cd511..dd134e8c 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
@@ -1,8 +1,6 @@
package org.fox.ttrss;
import android.os.Bundle;
-import android.support.annotation.NonNull;
-import android.support.annotation.Nullable;
import com.livefront.bridge.Bridge;
import com.livefront.bridge.SavedStateHandler;
@@ -10,6 +8,8 @@ import com.livefront.bridge.SavedStateHandler;
import org.fox.ttrss.types.Article;
import org.fox.ttrss.types.ArticleList;
+import androidx.annotation.NonNull;
+import androidx.annotation.Nullable;
import icepick.Icepick;
public class Application extends android.app.Application {
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 fe494a1e..a6359086 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
@@ -8,7 +8,6 @@ import android.net.Uri;
import android.os.Build;
import android.os.Bundle;
import android.preference.PreferenceManager;
-import android.support.v7.app.ActionBar;
import android.text.Html;
import android.util.Log;
import android.util.TypedValue;
@@ -41,6 +40,7 @@ import java.text.DateFormat;
import java.text.SimpleDateFormat;
import java.util.Date;
+import androidx.appcompat.app.ActionBar;
import icepick.State;
public class ArticleFragment extends StateSavedFragment {
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 36a20ada..2f373f04 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
@@ -8,16 +8,12 @@ import android.os.Bundle;
import android.os.Handler;
import android.os.Parcelable;
import android.preference.PreferenceManager;
-import android.support.design.widget.Snackbar;
-import android.support.v4.app.ClassloaderWorkaroundFragmentStatePagerAdapter;
-import android.support.v4.app.Fragment;
-import android.support.v4.app.FragmentManager;
-import android.support.v4.view.ViewPager;
import android.util.Log;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
+import com.google.android.material.snackbar.Snackbar;
import com.google.gson.JsonElement;
import com.viewpagerindicator.UnderlinePageIndicator;
@@ -28,6 +24,10 @@ import org.fox.ttrss.util.HeadlinesRequest;
import java.util.HashMap;
+import androidx.fragment.app.Fragment;
+import androidx.fragment.app.FragmentManager;
+import androidx.fragment.app.FragmentStatePagerAdapter;
+import androidx.viewpager.widget.ViewPager;
import icepick.State;
public class ArticlePager extends StateSavedFragment {
@@ -45,7 +45,7 @@ public class ArticlePager extends StateSavedFragment {
private boolean m_refreshInProgress;
private boolean m_lazyLoadDisabled;
- private class PagerAdapter extends ClassloaderWorkaroundFragmentStatePagerAdapter {
+ private class PagerAdapter extends FragmentStatePagerAdapter {
public PagerAdapter(FragmentManager fm) {
super(fm);
@@ -197,7 +197,7 @@ public class ArticlePager extends StateSavedFragment {
m_refreshInProgress = true;
- HeadlinesRequest req = new HeadlinesRequest(getActivity().getApplicationContext(), m_activity, m_feed, m_articles) {
+ @SuppressLint("StaticFieldLeak") HeadlinesRequest req = new HeadlinesRequest(getActivity().getApplicationContext(), m_activity, m_feed, m_articles) {
@Override
protected void onProgressUpdate(Integer... progress) {
m_activity.setProgress(progress[0] / progress[1] * 10000);
@@ -236,7 +236,7 @@ public class ArticlePager extends StateSavedFragment {
}).show();
}
- if (m_amountLoaded < HeadlinesFragment.HEADLINES_REQUEST_SIZE) {
+ if (m_amountLoaded < Integer.valueOf(m_prefs.getString("headlines_request_size", "15"))) {
m_lazyLoadDisabled = true;
}
@@ -316,7 +316,7 @@ public class ArticlePager extends StateSavedFragment {
put("excerpt_length", String.valueOf(CommonActivity.EXCERPT_MAX_LENGTH));
put("show_content", "true");
put("include_attachments", "true");
- put("limit", String.valueOf(HeadlinesFragment.HEADLINES_REQUEST_SIZE));
+ put("limit", m_prefs.getString("headlines_request_size", "15"));
put("offset", String.valueOf(0));
put("view_mode", m_activity.getViewMode());
put("skip", String.valueOf(fskip));
@@ -338,7 +338,11 @@ public class ArticlePager extends StateSavedFragment {
put("include_header", "true");
}
- put("resize", String.valueOf(m_activity.getScreenWidth()));
+ if (m_prefs.getBoolean("enable_image_downsampling", false)) {
+ if (!m_activity.isWifiConnected()) {
+ put("resize_width", String.valueOf(m_activity.getScreenWidth() * 0.75));
+ }
+ }
}
};
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 e4eaa432..b97448fe 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
@@ -2,9 +2,6 @@ package org.fox.ttrss;
import android.content.Intent;
import android.content.SharedPreferences;
-import android.support.v4.app.ActivityCompat;
-import android.support.v4.app.ActivityOptionsCompat;
-import android.support.v7.widget.SwitchCompat;
import android.util.TypedValue;
import android.view.InflateException;
import android.view.LayoutInflater;
@@ -19,6 +16,8 @@ import org.fox.ttrss.offline.OfflineActivity;
import java.net.MalformedURLException;
import java.net.URL;
+import androidx.appcompat.widget.SwitchCompat;
+
public abstract class BaseFeedlistFragment extends StateSavedFragment {
abstract public void refresh();
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 bff44fdc..dea5c61e 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
@@ -25,14 +25,6 @@ import android.os.Build;
import android.os.Bundle;
import android.os.SystemClock;
import android.preference.PreferenceManager;
-import android.support.customtabs.CustomTabsCallback;
-import android.support.customtabs.CustomTabsClient;
-import android.support.customtabs.CustomTabsIntent;
-import android.support.customtabs.CustomTabsServiceConnection;
-import android.support.customtabs.CustomTabsSession;
-import android.support.design.widget.Snackbar;
-import android.support.v4.app.JobIntentService;
-import android.support.v7.app.AppCompatActivity;
import android.text.TextUtils;
import android.util.Log;
import android.util.TypedValue;
@@ -41,6 +33,7 @@ import android.view.View;
import android.widget.CheckBox;
import com.bumptech.glide.Glide;
+import com.google.android.material.snackbar.Snackbar;
import com.livefront.bridge.Bridge;
import org.fox.ttrss.util.DatabaseHelper;
@@ -54,6 +47,13 @@ import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
+import androidx.appcompat.app.AppCompatActivity;
+import androidx.browser.customtabs.CustomTabsCallback;
+import androidx.browser.customtabs.CustomTabsClient;
+import androidx.browser.customtabs.CustomTabsIntent;
+import androidx.browser.customtabs.CustomTabsServiceConnection;
+import androidx.browser.customtabs.CustomTabsSession;
+import androidx.core.app.JobIntentService;
import icepick.State;
public class CommonActivity extends AppCompatActivity implements SharedPreferences.OnSharedPreferenceChangeListener {
@@ -76,6 +76,7 @@ public class CommonActivity extends AppCompatActivity implements SharedPreferenc
public static final int EXCERPT_MAX_LENGTH = 256;
public static final int EXCERPT_MAX_QUERY_LENGTH = 2048;
+ public static final int LABEL_BASE_INDEX = -1024;
public static final int PENDING_INTENT_CHROME_SHARE = 1;
@@ -329,7 +330,7 @@ public class CommonActivity extends AppCompatActivity implements SharedPreferenc
Log.d(TAG, "onSharedPreferenceChanged:" + key);
String[] filter = new String[] { "theme", "enable_cats", "headline_mode", "widget_update_interval",
- "headlines_swipe_to_dismiss", "headlines_mark_read_scroll" };
+ "headlines_swipe_to_dismiss", "headlines_mark_read_scroll", "headlines_request_size" };
m_needRestart = Arrays.asList(filter).indexOf(key) != -1;
}
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 75637ac3..74e41842 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
@@ -9,8 +9,6 @@ import android.net.Uri;
import android.os.Bundle;
import android.os.Handler;
import android.preference.PreferenceManager;
-import android.support.v4.app.FragmentTransaction;
-import android.support.v7.widget.Toolbar;
import android.util.Log;
import android.view.MenuItem;
import android.view.View;
@@ -19,6 +17,8 @@ import org.fox.ttrss.types.Article;
import org.fox.ttrss.types.ArticleList;
import org.fox.ttrss.types.Feed;
+import androidx.appcompat.widget.Toolbar;
+import androidx.fragment.app.FragmentTransaction;
import icepick.State;
public class DetailActivity extends OnlineActivity implements HeadlinesEventListener {
diff --git a/org.fox.ttrss/src/main/java/org/fox/ttrss/DummyFragment.java b/org.fox.ttrss/src/main/java/org/fox/ttrss/DummyFragment.java
index 659a6e36..702913e2 100644..100755
--- a/org.fox.ttrss/src/main/java/org/fox/ttrss/DummyFragment.java
+++ b/org.fox.ttrss/src/main/java/org/fox/ttrss/DummyFragment.java
@@ -1,11 +1,12 @@
package org.fox.ttrss;
import android.os.Bundle;
-import android.support.v4.app.Fragment;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
+import androidx.fragment.app.Fragment;
+
public class DummyFragment extends Fragment {
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
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 66709fc7..07fec156 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
@@ -11,9 +11,6 @@ import android.content.SharedPreferences.OnSharedPreferenceChangeListener;
import android.os.Build;
import android.os.Bundle;
import android.preference.PreferenceManager;
-import android.support.v4.app.LoaderManager;
-import android.support.v4.content.Loader;
-import android.support.v4.widget.SwipeRefreshLayout;
import android.util.Log;
import android.util.TypedValue;
import android.view.ContextMenu;
@@ -46,6 +43,9 @@ import java.util.Comparator;
import java.util.HashMap;
import java.util.List;
+import androidx.loader.app.LoaderManager;
+import androidx.loader.content.Loader;
+import androidx.swiperefreshlayout.widget.SwipeRefreshLayout;
import icepick.State;
public class FeedCategoriesFragment extends BaseFeedlistFragment implements OnItemClickListener, OnSharedPreferenceChangeListener,
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 bedd01c4..58e76a34 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
@@ -12,9 +12,6 @@ import android.graphics.Typeface;
import android.os.Build;
import android.os.Bundle;
import android.preference.PreferenceManager;
-import android.support.v4.app.LoaderManager;
-import android.support.v4.content.Loader;
-import android.support.v4.widget.SwipeRefreshLayout;
import android.util.Log;
import android.util.TypedValue;
import android.view.ContextMenu;
@@ -48,6 +45,9 @@ import java.util.Comparator;
import java.util.HashMap;
import java.util.List;
+import androidx.loader.app.LoaderManager;
+import androidx.loader.content.Loader;
+import androidx.swiperefreshlayout.widget.SwipeRefreshLayout;
import icepick.State;
public class FeedsFragment extends BaseFeedlistFragment implements OnItemClickListener, OnSharedPreferenceChangeListener,
@@ -241,16 +241,19 @@ public class FeedsFragment extends BaseFeedlistFragment implements OnItemClickLi
return a.order_id - b.order_id;
else
return a.title.toUpperCase().compareTo(b.title.toUpperCase());
- else if (a.is_cat && !b.is_cat)
+ else if (a.is_cat)
return -1;
- else if (!a.is_cat && b.is_cat)
+ else if (b.is_cat)
return 1;
else if (a.order_id != 0 && b.order_id != 0)
return a.order_id - b.order_id;
else
return a.title.toUpperCase().compareTo(b.title.toUpperCase());
else
- return a.id - b.id;
+ if (a.id < CommonActivity.LABEL_BASE_INDEX && b.id < CommonActivity.LABEL_BASE_INDEX)
+ return a.title.toUpperCase().compareTo(b.title.toUpperCase());
+ else
+ return a.id - b.id;
}
}
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 6f9055f6..8e7c4756 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
@@ -5,12 +5,6 @@ import android.net.Uri;
import android.os.AsyncTask;
import android.os.Bundle;
import android.preference.PreferenceManager;
-import android.support.v4.app.ActivityCompat;
-import android.support.v4.app.Fragment;
-import android.support.v4.app.FragmentManager;
-import android.support.v4.app.FragmentStatePagerAdapter;
-import android.support.v4.view.ViewPager;
-import android.support.v7.widget.Toolbar;
import android.util.Log;
import android.view.MenuInflater;
import android.view.MenuItem;
@@ -32,6 +26,12 @@ import java.util.ArrayList;
import java.util.List;
import java.util.concurrent.ExecutionException;
+import androidx.appcompat.widget.Toolbar;
+import androidx.core.app.ActivityCompat;
+import androidx.fragment.app.Fragment;
+import androidx.fragment.app.FragmentManager;
+import androidx.fragment.app.FragmentStatePagerAdapter;
+import androidx.viewpager.widget.ViewPager;
import icepick.State;
import me.relex.circleindicator.CircleIndicator;
diff --git a/org.fox.ttrss/src/main/java/org/fox/ttrss/GalleryImageFragment.java b/org.fox.ttrss/src/main/java/org/fox/ttrss/GalleryImageFragment.java
index 92402501..e4142b52 100755
--- a/org.fox.ttrss/src/main/java/org/fox/ttrss/GalleryImageFragment.java
+++ b/org.fox.ttrss/src/main/java/org/fox/ttrss/GalleryImageFragment.java
@@ -1,8 +1,6 @@
package org.fox.ttrss;
import android.os.Bundle;
-import android.support.v4.app.ActivityCompat;
-import android.support.v4.view.ViewCompat;
import android.util.Log;
import android.view.LayoutInflater;
import android.view.View;
@@ -18,6 +16,8 @@ import com.bumptech.glide.request.RequestListener;
import com.bumptech.glide.request.target.GlideDrawableImageViewTarget;
import com.bumptech.glide.request.target.Target;
+import androidx.core.app.ActivityCompat;
+import androidx.core.view.ViewCompat;
import icepick.State;
public class GalleryImageFragment extends GalleryBaseFragment {
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 31d16fbb..c2f8841d 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
@@ -5,8 +5,6 @@ import android.graphics.Rect;
import android.graphics.SurfaceTexture;
import android.media.MediaPlayer;
import android.os.Bundle;
-import android.support.v4.app.ActivityCompat;
-import android.support.v4.view.ViewCompat;
import android.util.Log;
import android.view.Display;
import android.view.LayoutInflater;
@@ -19,6 +17,8 @@ import android.widget.MediaController;
import java.io.IOException;
+import androidx.core.app.ActivityCompat;
+import androidx.core.view.ViewCompat;
import icepick.State;
public class GalleryVideoFragment extends GalleryBaseFragment {
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 8fedccc0..fa53e714 100755
--- a/org.fox.ttrss/src/main/java/org/fox/ttrss/HeadlinesFragment.java
+++ b/org.fox.ttrss/src/main/java/org/fox/ttrss/HeadlinesFragment.java
@@ -15,22 +15,13 @@ import android.graphics.Point;
import android.graphics.SurfaceTexture;
import android.graphics.drawable.Drawable;
import android.media.MediaPlayer;
+import android.net.ConnectivityManager;
+import android.net.NetworkInfo;
import android.net.Uri;
import android.os.Build;
import android.os.Bundle;
import android.os.Handler;
import android.preference.PreferenceManager;
-import android.support.design.widget.Snackbar;
-import android.support.v4.app.ActivityCompat;
-import android.support.v4.app.ActivityOptionsCompat;
-import android.support.v4.view.ViewCompat;
-import android.support.v4.widget.SwipeRefreshLayout;
-import android.support.v7.app.ActionBar;
-import android.support.v7.widget.DefaultItemAnimator;
-import android.support.v7.widget.DividerItemDecoration;
-import android.support.v7.widget.LinearLayoutManager;
-import android.support.v7.widget.RecyclerView;
-import android.support.v7.widget.helper.ItemTouchHelper;
import android.text.Html;
import android.transition.Fade;
import android.transition.Transition;
@@ -67,6 +58,7 @@ import com.bumptech.glide.load.resource.drawable.GlideDrawable;
import com.bumptech.glide.request.RequestListener;
import com.bumptech.glide.request.target.GlideDrawableImageViewTarget;
import com.bumptech.glide.request.target.Target;
+import com.google.android.material.snackbar.Snackbar;
import com.google.gson.JsonElement;
import com.shamanland.fab.FloatingActionButton;
import com.shamanland.fab.ShowHideOnScroll;
@@ -89,6 +81,16 @@ import java.util.HashMap;
import java.util.List;
import java.util.TimeZone;
+import androidx.appcompat.app.ActionBar;
+import androidx.core.app.ActivityCompat;
+import androidx.core.app.ActivityOptionsCompat;
+import androidx.core.view.ViewCompat;
+import androidx.recyclerview.widget.DefaultItemAnimator;
+import androidx.recyclerview.widget.DividerItemDecoration;
+import androidx.recyclerview.widget.ItemTouchHelper;
+import androidx.recyclerview.widget.LinearLayoutManager;
+import androidx.recyclerview.widget.RecyclerView;
+import androidx.swiperefreshlayout.widget.SwipeRefreshLayout;
import icepick.State;
import jp.wasabeef.glide.transformations.CropCircleTransformation;
@@ -99,7 +101,6 @@ public class HeadlinesFragment extends StateSavedFragment {
public static final int FLAVOR_IMG_MIN_SIZE = 128;
public static final int THUMB_IMG_MIN_SIZE = 32;
- public static final int HEADLINES_REQUEST_SIZE = 30;
public static final int HEADLINES_BUFFER_MAX = 1000;
private final String TAG = this.getClass().getSimpleName();
@@ -631,7 +632,7 @@ public class HeadlinesFragment extends StateSavedFragment {
}
}
- if (m_amountLoaded < HEADLINES_REQUEST_SIZE) {
+ if (m_amountLoaded < Integer.valueOf(m_prefs.getString("headlines_request_size", "15"))) {
//Log.d(TAG, "amount loaded < request size, disabling lazy load");
m_lazyLoadDisabled = true;
}
@@ -709,13 +710,18 @@ public class HeadlinesFragment extends StateSavedFragment {
put("show_content", "true");
put("include_attachments", "true");
put("view_mode", m_activity.getViewMode());
- put("limit", String.valueOf(HEADLINES_REQUEST_SIZE));
+ put("limit", m_prefs.getString("headlines_request_size", "15"));
put("offset", String.valueOf(0));
put("skip", String.valueOf(fskip));
put("include_nested", "true");
put("has_sandbox", "true");
put("order_by", m_activity.getSortMode());
- put("resize", String.valueOf(m_activity.getScreenWidth()));
+
+ if (m_prefs.getBoolean("enable_image_downsampling", false)) {
+ if (!m_activity.isWifiConnected()) {
+ put("resize_width", String.valueOf(m_activity.getScreenWidth() * 0.75));
+ }
+ }
if (isCat) put("is_cat", "true");
@@ -866,12 +872,31 @@ public class HeadlinesFragment extends StateSavedFragment {
private ColorGenerator m_colorGenerator = ColorGenerator.DEFAULT;
private TextDrawable.IBuilder m_drawableBuilder = TextDrawable.builder().round();
- boolean showFlavorImage;
+ boolean flavorImageEnabled;
private int m_minimumHeightToEmbed;
boolean m_youtubeInstalled;
private int m_screenHeight;
private int m_lastAddedPosition;
+ private final ConnectivityManager m_cmgr;
+
+ private boolean canShowFlavorImage() {
+ if (flavorImageEnabled) {
+ if (m_prefs.getBoolean("headline_images_wifi_only", false)) {
+ // why do i have to get this service every time instead of using a member variable :(
+ NetworkInfo wifi = m_cmgr.getNetworkInfo(ConnectivityManager.TYPE_WIFI);
+
+ if (wifi != null)
+ return wifi.isConnected();
+
+ } else {
+ return true;
+ }
+ }
+
+ return false;
+ }
+
public ArticleListAdapter(Context context, int textViewResourceId, ArrayList<Article> items) {
super();
this.items = items;
@@ -883,7 +908,9 @@ public class HeadlinesFragment extends StateSavedFragment {
m_screenHeight = size.y;
String headlineMode = m_prefs.getString("headline_mode", "HL_DEFAULT");
- showFlavorImage = "HL_DEFAULT".equals(headlineMode) || "HL_COMPACT".equals(headlineMode);
+ flavorImageEnabled = "HL_DEFAULT".equals(headlineMode) || "HL_COMPACT".equals(headlineMode);
+
+ m_cmgr = (ConnectivityManager) m_activity.getSystemService(Context.CONNECTIVITY_SERVICE);
Theme theme = context.getTheme();
TypedValue tv = new TypedValue();
@@ -1123,7 +1150,7 @@ public class HeadlinesFragment extends StateSavedFragment {
holder.excerptView.setTextSize(TypedValue.COMPLEX_UNIT_SP, headlineFontSize);
holder.excerptView.setText(excerpt);
- if (!showFlavorImage) {
+ if (!canShowFlavorImage()) {
holder.excerptView.setPadding(holder.excerptView.getPaddingLeft(),
0,
holder.excerptView.getPaddingRight(),
@@ -1168,7 +1195,7 @@ public class HeadlinesFragment extends StateSavedFragment {
}
});
- if (showFlavorImage && article.flavorImageUri != null && holder.flavorImageView != null) {
+ if (canShowFlavorImage() && article.flavorImageUri != null && holder.flavorImageView != null) {
if (holder.flavorImageOverflow != null) {
holder.flavorImageOverflow.setOnClickListener(new View.OnClickListener() {
@Override
@@ -1240,7 +1267,7 @@ public class HeadlinesFragment extends StateSavedFragment {
try {
- Glide.with(HeadlinesFragment.this)
+ Glide.with(getContext())
.load(article.flavorImageUri)
//.dontTransform()
.diskCacheStrategy(DiskCacheStrategy.ALL)
@@ -1526,11 +1553,11 @@ public class HeadlinesFragment extends StateSavedFragment {
holder.textImage.setImageDrawable(textDrawable);
- if (!showFlavorImage || article.flavorImage == null) {
+ if (!canShowFlavorImage() || article.flavorImage == null) {
holder.textImage.setImageDrawable(textDrawable);
} else {
- Glide.with(HeadlinesFragment.this)
+ Glide.with(getContext())
.load(article.flavorImageUri)
.placeholder(textDrawable)
.thumbnail(0.5f)
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 cddc695d..c845a1d7 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
@@ -1,8 +1,6 @@
package org.fox.ttrss;
import android.os.Bundle;
-import android.support.v4.widget.SwipeRefreshLayout;
-import android.support.v7.widget.Toolbar;
import android.view.Menu;
import android.view.MenuInflater;
import android.view.MenuItem;
@@ -13,6 +11,8 @@ import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.util.ArrayList;
+import androidx.appcompat.widget.Toolbar;
+import androidx.swiperefreshlayout.widget.SwipeRefreshLayout;
import icepick.State;
public class LogcatActivity extends CommonActivity {
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 8a3ef2f5..1b638d48 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
@@ -7,14 +7,10 @@ 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 android.preference.PreferenceManager;
-import android.support.v4.app.Fragment;
-import android.support.v4.app.FragmentTransaction;
-import android.support.v4.widget.DrawerLayout;
-import android.support.v7.app.ActionBarDrawerToggle;
-import android.support.v7.widget.Toolbar;
import android.util.Log;
import android.view.Gravity;
import android.view.MenuItem;
@@ -30,6 +26,11 @@ import org.fox.ttrss.types.FeedCategory;
import java.util.Date;
import java.util.HashMap;
+import androidx.appcompat.app.ActionBarDrawerToggle;
+import androidx.appcompat.widget.Toolbar;
+import androidx.drawerlayout.widget.DrawerLayout;
+import androidx.fragment.app.Fragment;
+import androidx.fragment.app.FragmentTransaction;
import icepick.State;
public class MasterActivity extends OnlineActivity implements HeadlinesEventListener {
@@ -464,27 +465,41 @@ public class MasterActivity extends OnlineActivity implements HeadlinesEventList
public void onArticleSelected(Article article, boolean open) {
if (open) {
- HeadlinesFragment hf = (HeadlinesFragment)getSupportFragmentManager().findFragmentByTag(FRAG_HEADLINES);
-
- Intent intent = new Intent(MasterActivity.this, DetailActivity.class);
- intent.putExtra("feed", hf.getFeed());
- //intent.putExtra("article", article);
- intent.putExtra("searchQuery", hf.getSearchQuery());
- //intent.putExtra("articles", (Parcelable)hf.getAllArticles());
- Application.getInstance().tmpArticleList = hf.getAllArticles();
- Application.getInstance().tmpArticle = article;
-
- /* if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {
- startActivityForResult(intent, HEADLINES_REQUEST, ActivityOptions.makeSceneTransitionAnimation(this).toBundle());
- } else {
- startActivityForResult(intent, HEADLINES_REQUEST);
- } */
-
- // mysterious crashes somewhere in gl layer (?) on some feeds if we use activitycompat transitions here on LP so welp
- startActivityForResult(intent, HEADLINES_REQUEST);
- overridePendingTransition(R.anim.slide_in_right, R.anim.slide_out_left);
-
-
+ boolean alwaysOpenUri = m_prefs.getBoolean("always_open_uri", false);
+ if (alwaysOpenUri) {
+ if (article.unread) {
+ article.unread = false;
+ saveArticleUnread(article);
+ }
+
+ HeadlinesFragment hf = (HeadlinesFragment) getSupportFragmentManager().findFragmentByTag(FRAG_HEADLINES);
+ if (hf != null) {
+ hf.setActiveArticle(article);
+ }
+
+ openUri(Uri.parse(article.link));
+ }
+ else {
+ HeadlinesFragment hf = (HeadlinesFragment) getSupportFragmentManager().findFragmentByTag(FRAG_HEADLINES);
+
+ Intent intent = new Intent(MasterActivity.this, DetailActivity.class);
+ intent.putExtra("feed", hf.getFeed());
+ //intent.putExtra("article", article);
+ intent.putExtra("searchQuery", hf.getSearchQuery());
+ //intent.putExtra("articles", (Parcelable)hf.getAllArticles());
+ Application.getInstance().tmpArticleList = hf.getAllArticles();
+ Application.getInstance().tmpArticle = article;
+
+ /* if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {
+ startActivityForResult(intent, HEADLINES_REQUEST, ActivityOptions.makeSceneTransitionAnimation(this).toBundle());
+ } else {
+ startActivityForResult(intent, HEADLINES_REQUEST);
+ } */
+
+ // mysterious crashes somewhere in gl layer (?) on some feeds if we use activitycompat transitions here on LP so welp
+ startActivityForResult(intent, HEADLINES_REQUEST);
+ overridePendingTransition(R.anim.slide_in_right, R.anim.slide_out_left);
+ }
} else {
invalidateOptionsMenu();
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 6fe3a88f..54e717f2 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
@@ -14,11 +14,11 @@ import android.content.IntentFilter;
import android.content.SharedPreferences;
import android.content.pm.PackageInfo;
import android.content.pm.PackageManager;
+import android.net.ConnectivityManager;
+import android.net.NetworkInfo;
import android.net.Uri;
import android.os.Bundle;
import android.preference.PreferenceManager;
-import android.support.v7.view.ActionMode;
-import android.support.v7.widget.Toolbar;
import android.util.Log;
import android.view.KeyEvent;
import android.view.Menu;
@@ -46,6 +46,9 @@ import java.lang.reflect.Type;
import java.util.HashMap;
import java.util.List;
+import androidx.appcompat.view.ActionMode;
+import androidx.appcompat.widget.Toolbar;
+
public class OnlineActivity extends CommonActivity {
private final String TAG = this.getClass().getSimpleName();
@@ -60,6 +63,7 @@ public class OnlineActivity extends CommonActivity {
private HeadlinesActionModeCallback m_headlinesActionModeCallback;
private String m_lastImageHitTestUrl;
+ private ConnectivityManager m_cmgr;
//protected PullToRefreshAttacher m_pullToRefreshAttacher;
@@ -147,6 +151,8 @@ public class OnlineActivity extends CommonActivity {
Toolbar toolbar = findViewById(R.id.toolbar);
setSupportActionBar(toolbar);
+ m_cmgr = (ConnectivityManager) getSystemService(Context.CONNECTIVITY_SERVICE);
+
Intent intent = getIntent();
Log.d(TAG, "intent action=" + intent.getAction());
@@ -1110,7 +1116,7 @@ public class OnlineActivity extends CommonActivity {
return true;
}
-
+
public int getApiLevel() {
return Application.getInstance().m_apiLevel;
}
@@ -1211,7 +1217,7 @@ public class OnlineActivity extends CommonActivity {
String tmp = "";
for (Article a : articles)
- tmp += String.valueOf(a.id) + ",";
+ tmp += a.id + ",";
return tmp.replaceAll(",$", "");
}
@@ -1561,4 +1567,12 @@ public class OnlineActivity extends CommonActivity {
return m_lastImageHitTestUrl;
}
+ public boolean isWifiConnected() {
+ NetworkInfo wifi = m_cmgr.getNetworkInfo(ConnectivityManager.TYPE_WIFI);
+
+ if (wifi != null)
+ return wifi.isConnected();
+
+ return false;
+ }
}
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 6af96a7f..af321a5a 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
@@ -2,9 +2,10 @@ package org.fox.ttrss;
import android.os.Bundle;
import android.preference.PreferenceManager;
-import android.support.v7.widget.Toolbar;
import android.view.MenuItem;
+import androidx.appcompat.widget.Toolbar;
+
public class PreferencesActivity extends CommonActivity {
@Override
public void onCreate(Bundle savedInstanceState) {
diff --git a/org.fox.ttrss/src/main/java/org/fox/ttrss/StateSavedFragment.java b/org.fox.ttrss/src/main/java/org/fox/ttrss/StateSavedFragment.java
index ba3af945..08802acd 100755
--- a/org.fox.ttrss/src/main/java/org/fox/ttrss/StateSavedFragment.java
+++ b/org.fox.ttrss/src/main/java/org/fox/ttrss/StateSavedFragment.java
@@ -1,10 +1,11 @@
package org.fox.ttrss;
import android.os.Bundle;
-import android.support.v4.app.Fragment;
import com.livefront.bridge.Bridge;
+import androidx.fragment.app.Fragment;
+
public class StateSavedFragment extends Fragment {
@Override
public void onCreate(Bundle savedInstanceState) {
diff --git a/org.fox.ttrss/src/main/java/org/fox/ttrss/YoutubePlayerActivity.java b/org.fox.ttrss/src/main/java/org/fox/ttrss/YoutubePlayerActivity.java
index 9c32340d..464684be 100755
--- a/org.fox.ttrss/src/main/java/org/fox/ttrss/YoutubePlayerActivity.java
+++ b/org.fox.ttrss/src/main/java/org/fox/ttrss/YoutubePlayerActivity.java
@@ -3,7 +3,6 @@ package org.fox.ttrss;
import android.content.res.Configuration;
import android.net.Uri;
import android.os.Bundle;
-import android.support.v7.widget.Toolbar;
import android.util.Log;
import android.view.ContextMenu;
import android.view.Menu;
@@ -14,6 +13,7 @@ import com.google.android.youtube.player.YouTubeInitializationResult;
import com.google.android.youtube.player.YouTubePlayer;
import com.google.android.youtube.player.YouTubePlayerSupportFragment;
+import androidx.appcompat.widget.Toolbar;
import icepick.State;
diff --git a/org.fox.ttrss/src/main/java/org/fox/ttrss/glide/WrappingTarget.java b/org.fox.ttrss/src/main/java/org/fox/ttrss/glide/WrappingTarget.java
index 90990e16..da4a9d86 100644..100755
--- a/org.fox.ttrss/src/main/java/org/fox/ttrss/glide/WrappingTarget.java
+++ b/org.fox.ttrss/src/main/java/org/fox/ttrss/glide/WrappingTarget.java
@@ -1,11 +1,13 @@
package org.fox.ttrss.glide;
import android.graphics.drawable.Drawable;
-import android.support.annotation.NonNull;
import com.bumptech.glide.request.Request;
import com.bumptech.glide.request.animation.GlideAnimation;
-import com.bumptech.glide.request.target.*;
+import com.bumptech.glide.request.target.SizeReadyCallback;
+import com.bumptech.glide.request.target.Target;
+
+import androidx.annotation.NonNull;
public class WrappingTarget<Z> implements Target<Z> {
protected final @NonNull Target<? super Z> target;
diff --git a/org.fox.ttrss/src/main/java/org/fox/ttrss/offline/OfflineActivity.java b/org.fox.ttrss/src/main/java/org/fox/ttrss/offline/OfflineActivity.java
index 1123ca12..185f8fb7 100755
--- a/org.fox.ttrss/src/main/java/org/fox/ttrss/offline/OfflineActivity.java
+++ b/org.fox.ttrss/src/main/java/org/fox/ttrss/offline/OfflineActivity.java
@@ -14,8 +14,6 @@ import android.net.Uri;
import android.os.Bundle;
import android.preference.PreferenceManager;
import android.provider.BaseColumns;
-import android.support.v7.view.ActionMode;
-import android.support.v7.widget.Toolbar;
import android.util.Log;
import android.view.KeyEvent;
import android.view.Menu;
@@ -28,6 +26,9 @@ import org.fox.ttrss.OnlineActivity;
import org.fox.ttrss.PreferencesActivity;
import org.fox.ttrss.R;
+import androidx.appcompat.view.ActionMode;
+import androidx.appcompat.widget.Toolbar;
+
public class OfflineActivity extends CommonActivity {
private final String TAG = this.getClass().getSimpleName();
@@ -154,7 +155,7 @@ public class OfflineActivity extends CommonActivity {
setContentView(R.layout.activity_login);
- Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar);
+ Toolbar toolbar = findViewById(R.id.toolbar);
setSupportActionBar(toolbar);
invalidateOptionsMenu();
diff --git a/org.fox.ttrss/src/main/java/org/fox/ttrss/offline/OfflineArticleFragment.java b/org.fox.ttrss/src/main/java/org/fox/ttrss/offline/OfflineArticleFragment.java
index 46f3a98d..a0d25be4 100755
--- a/org.fox.ttrss/src/main/java/org/fox/ttrss/offline/OfflineArticleFragment.java
+++ b/org.fox.ttrss/src/main/java/org/fox/ttrss/offline/OfflineArticleFragment.java
@@ -10,8 +10,6 @@ import android.os.Build;
import android.os.Bundle;
import android.preference.PreferenceManager;
import android.provider.BaseColumns;
-import android.support.v4.app.Fragment;
-import android.support.v7.app.ActionBar;
import android.util.Log;
import android.util.TypedValue;
import android.view.ContextMenu;
@@ -49,6 +47,9 @@ import java.text.DateFormat;
import java.text.SimpleDateFormat;
import java.util.Date;
+import androidx.appcompat.app.ActionBar;
+import androidx.fragment.app.Fragment;
+
public class OfflineArticleFragment extends Fragment {
private final String TAG = this.getClass().getSimpleName();
diff --git a/org.fox.ttrss/src/main/java/org/fox/ttrss/offline/OfflineArticlePager.java b/org.fox.ttrss/src/main/java/org/fox/ttrss/offline/OfflineArticlePager.java
index 0b9f98e9..4957b0b7 100755
--- a/org.fox.ttrss/src/main/java/org/fox/ttrss/offline/OfflineArticlePager.java
+++ b/org.fox.ttrss/src/main/java/org/fox/ttrss/offline/OfflineArticlePager.java
@@ -7,10 +7,6 @@ import android.os.Bundle;
import android.os.Parcelable;
import android.preference.PreferenceManager;
import android.provider.BaseColumns;
-import android.support.v4.app.Fragment;
-import android.support.v4.app.FragmentManager;
-import android.support.v4.app.FragmentStatePagerAdapter;
-import android.support.v4.view.ViewPager;
import android.util.Log;
import android.view.LayoutInflater;
import android.view.View;
@@ -20,6 +16,11 @@ import com.viewpagerindicator.UnderlinePageIndicator;
import org.fox.ttrss.R;
+import androidx.fragment.app.Fragment;
+import androidx.fragment.app.FragmentManager;
+import androidx.fragment.app.FragmentStatePagerAdapter;
+import androidx.viewpager.widget.ViewPager;
+
public class OfflineArticlePager extends Fragment {
private final String TAG = this.getClass().getSimpleName();
diff --git a/org.fox.ttrss/src/main/java/org/fox/ttrss/offline/OfflineDetailActivity.java b/org.fox.ttrss/src/main/java/org/fox/ttrss/offline/OfflineDetailActivity.java
index d0637692..3106ab20 100644..100755
--- a/org.fox.ttrss/src/main/java/org/fox/ttrss/offline/OfflineDetailActivity.java
+++ b/org.fox.ttrss/src/main/java/org/fox/ttrss/offline/OfflineDetailActivity.java
@@ -8,11 +8,6 @@ import android.database.sqlite.SQLiteStatement;
import android.os.Bundle;
import android.preference.PreferenceManager;
import android.provider.BaseColumns;
-import android.support.v4.app.Fragment;
-import android.support.v4.app.FragmentTransaction;
-import android.support.v4.widget.DrawerLayout;
-import android.support.v7.app.ActionBarDrawerToggle;
-import android.support.v7.widget.Toolbar;
import android.util.Log;
import android.view.MenuItem;
import android.view.View;
@@ -20,6 +15,12 @@ import android.view.View;
import org.fox.ttrss.Application;
import org.fox.ttrss.R;
+import androidx.appcompat.app.ActionBarDrawerToggle;
+import androidx.appcompat.widget.Toolbar;
+import androidx.drawerlayout.widget.DrawerLayout;
+import androidx.fragment.app.Fragment;
+import androidx.fragment.app.FragmentTransaction;
+
public class OfflineDetailActivity extends OfflineActivity implements OfflineHeadlinesEventListener {
private final String TAG = this.getClass().getSimpleName();
@@ -40,10 +41,10 @@ public class OfflineDetailActivity extends OfflineActivity implements OfflineHea
setContentView(R.layout.activity_detail);
- Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar);
+ Toolbar toolbar = findViewById(R.id.toolbar);
setSupportActionBar(toolbar);
- m_drawerLayout = (DrawerLayout) findViewById(R.id.headlines_drawer);
+ m_drawerLayout = findViewById(R.id.headlines_drawer);
if (m_drawerLayout != null) {
diff --git a/org.fox.ttrss/src/main/java/org/fox/ttrss/offline/OfflineDownloadService.java b/org.fox.ttrss/src/main/java/org/fox/ttrss/offline/OfflineDownloadService.java
index ad4b2241..9c8b05db 100755
--- a/org.fox.ttrss/src/main/java/org/fox/ttrss/offline/OfflineDownloadService.java
+++ b/org.fox.ttrss/src/main/java/org/fox/ttrss/offline/OfflineDownloadService.java
@@ -17,7 +17,6 @@ import android.os.Build;
import android.os.IBinder;
import android.preference.PreferenceManager;
import android.provider.BaseColumns;
-import android.support.v4.app.NotificationCompat;
import android.util.Log;
import com.google.gson.Gson;
@@ -43,6 +42,8 @@ import java.lang.reflect.Type;
import java.util.HashMap;
import java.util.List;
+import androidx.core.app.NotificationCompat;
+
public class OfflineDownloadService extends Service {
private final String TAG = this.getClass().getSimpleName();
diff --git a/org.fox.ttrss/src/main/java/org/fox/ttrss/offline/OfflineFeedCategoriesFragment.java b/org.fox.ttrss/src/main/java/org/fox/ttrss/offline/OfflineFeedCategoriesFragment.java
index d8c7cfff..40674bb8 100755
--- a/org.fox.ttrss/src/main/java/org/fox/ttrss/offline/OfflineFeedCategoriesFragment.java
+++ b/org.fox.ttrss/src/main/java/org/fox/ttrss/offline/OfflineFeedCategoriesFragment.java
@@ -8,8 +8,6 @@ import android.database.Cursor;
import android.os.Bundle;
import android.preference.PreferenceManager;
import android.provider.BaseColumns;
-import android.support.v4.widget.SimpleCursorAdapter;
-import android.support.v4.widget.SwipeRefreshLayout;
import android.util.Log;
import android.util.TypedValue;
import android.view.ContextMenu;
@@ -28,6 +26,9 @@ import android.widget.TextView;
import org.fox.ttrss.BaseFeedlistFragment;
import org.fox.ttrss.R;
+import androidx.cursoradapter.widget.SimpleCursorAdapter;
+import androidx.swiperefreshlayout.widget.SwipeRefreshLayout;
+
public class OfflineFeedCategoriesFragment extends BaseFeedlistFragment implements OnItemClickListener, OnSharedPreferenceChangeListener {
private final String TAG = this.getClass().getSimpleName();
private SharedPreferences m_prefs;
@@ -132,7 +133,7 @@ public class OfflineFeedCategoriesFragment extends BaseFeedlistFragment implemen
View view = inflater.inflate(R.layout.fragment_feeds, container, false);
- m_swipeLayout = (SwipeRefreshLayout) view.findViewById(R.id.feeds_swipe_container);
+ m_swipeLayout = view.findViewById(R.id.feeds_swipe_container);
m_swipeLayout.setOnRefreshListener(new SwipeRefreshLayout.OnRefreshListener() {
@Override
@@ -141,7 +142,7 @@ public class OfflineFeedCategoriesFragment extends BaseFeedlistFragment implemen
}
});
- m_list = (ListView)view.findViewById(R.id.feeds);
+ m_list = view.findViewById(R.id.feeds);
m_cursor = createCursor();
@@ -184,7 +185,7 @@ public class OfflineFeedCategoriesFragment extends BaseFeedlistFragment implemen
@Override
public void onItemClick(AdapterView<?> av, View view, int position, long id) {
- ListView list = (ListView)getActivity().findViewById(R.id.feeds);
+ ListView list = getActivity().findViewById(R.id.feeds);
if (list != null) {
Cursor cursor = (Cursor) list.getItemAtPosition(position);
@@ -263,7 +264,7 @@ public class OfflineFeedCategoriesFragment extends BaseFeedlistFragment implemen
}
- ImageView icon = (ImageView) v.findViewById(R.id.icon);
+ ImageView icon = v.findViewById(R.id.icon);
if (icon != null) {
TypedValue tv = new TypedValue();
@@ -273,13 +274,13 @@ public class OfflineFeedCategoriesFragment extends BaseFeedlistFragment implemen
}
- TextView tt = (TextView) v.findViewById(R.id.title);
+ TextView tt = v.findViewById(R.id.title);
if (tt != null) {
tt.setText(cursor.getString(cursor.getColumnIndex("title")));
}
- TextView tu = (TextView) v.findViewById(R.id.unread_counter);
+ TextView tu = v.findViewById(R.id.unread_counter);
if (tu != null) {
tu.setText(String.valueOf(cursor.getInt(cursor.getColumnIndex("unread"))));
diff --git a/org.fox.ttrss/src/main/java/org/fox/ttrss/offline/OfflineFeedsFragment.java b/org.fox.ttrss/src/main/java/org/fox/ttrss/offline/OfflineFeedsFragment.java
index 5e771d7b..6dd85a87 100755
--- a/org.fox.ttrss/src/main/java/org/fox/ttrss/offline/OfflineFeedsFragment.java
+++ b/org.fox.ttrss/src/main/java/org/fox/ttrss/offline/OfflineFeedsFragment.java
@@ -7,8 +7,6 @@ import android.content.SharedPreferences.OnSharedPreferenceChangeListener;
import android.database.Cursor;
import android.os.Bundle;
import android.preference.PreferenceManager;
-import android.support.v4.widget.SimpleCursorAdapter;
-import android.support.v4.widget.SwipeRefreshLayout;
import android.util.Log;
import android.view.ContextMenu;
import android.view.ContextMenu.ContextMenuInfo;
@@ -26,6 +24,9 @@ import android.widget.TextView;
import org.fox.ttrss.BaseFeedlistFragment;
import org.fox.ttrss.R;
+import androidx.cursoradapter.widget.SimpleCursorAdapter;
+import androidx.swiperefreshlayout.widget.SwipeRefreshLayout;
+
public class OfflineFeedsFragment extends BaseFeedlistFragment implements OnItemClickListener, OnSharedPreferenceChangeListener {
private final String TAG = this.getClass().getSimpleName();
private SharedPreferences m_prefs;
@@ -85,7 +86,7 @@ public class OfflineFeedsFragment extends BaseFeedlistFragment implements OnItem
menu.findItem(R.id.create_shortcut).setEnabled(false);
AdapterContextMenuInfo info = (AdapterContextMenuInfo) menuInfo;
- Cursor cursor = (Cursor)getFeedAtPosition(info.position);
+ Cursor cursor = getFeedAtPosition(info.position);
if (cursor != null)
menu.setHeaderTitle(cursor.getString(cursor.getColumnIndex("title")));
@@ -138,7 +139,7 @@ public class OfflineFeedsFragment extends BaseFeedlistFragment implements OnItem
View view = inflater.inflate(R.layout.fragment_feeds, container, false);
- m_swipeLayout = (SwipeRefreshLayout) view.findViewById(R.id.feeds_swipe_container);
+ m_swipeLayout = view.findViewById(R.id.feeds_swipe_container);
m_swipeLayout.setOnRefreshListener(new SwipeRefreshLayout.OnRefreshListener() {
@Override
@@ -147,7 +148,7 @@ public class OfflineFeedsFragment extends BaseFeedlistFragment implements OnItem
}
});
- m_list = (ListView)view.findViewById(R.id.feeds);
+ m_list = view.findViewById(R.id.feeds);
initDrawerHeader(inflater, view, m_list, m_activity, m_prefs, !m_enableParentBtn);
@@ -210,7 +211,7 @@ public class OfflineFeedsFragment extends BaseFeedlistFragment implements OnItem
@Override
public void onItemClick(AdapterView<?> av, View view, int position, long id) {
- ListView list = (ListView)getActivity().findViewById(R.id.feeds);
+ ListView list = getActivity().findViewById(R.id.feeds);
if (list != null) {
Cursor cursor = (Cursor) list.getItemAtPosition(position);
@@ -248,7 +249,7 @@ public class OfflineFeedsFragment extends BaseFeedlistFragment implements OnItem
@Override
public boolean isEmpty() {
- return m_enableParentBtn ? false : super.isEmpty();
+ return !m_enableParentBtn && super.isEmpty();
}
@Override
@@ -282,13 +283,13 @@ public class OfflineFeedsFragment extends BaseFeedlistFragment implements OnItem
}
- TextView tt = (TextView) v.findViewById(R.id.title);
+ TextView tt = v.findViewById(R.id.title);
if (tt != null) {
tt.setText(cursor.getString(cursor.getColumnIndex("title")));
}
- TextView tu = (TextView) v.findViewById(R.id.unread_counter);
+ TextView tu = v.findViewById(R.id.unread_counter);
if (tu != null) {
tu.setText(String.valueOf(cursor.getInt(cursor.getColumnIndex("unread"))));
diff --git a/org.fox.ttrss/src/main/java/org/fox/ttrss/offline/OfflineHeadlinesFragment.java b/org.fox.ttrss/src/main/java/org/fox/ttrss/offline/OfflineHeadlinesFragment.java
index e188f69a..06a86cec 100755
--- a/org.fox.ttrss/src/main/java/org/fox/ttrss/offline/OfflineHeadlinesFragment.java
+++ b/org.fox.ttrss/src/main/java/org/fox/ttrss/offline/OfflineHeadlinesFragment.java
@@ -17,12 +17,6 @@ import android.net.Uri;
import android.os.Bundle;
import android.preference.PreferenceManager;
import android.provider.BaseColumns;
-import android.support.v4.app.ActivityCompat;
-import android.support.v4.app.ActivityOptionsCompat;
-import android.support.v4.app.Fragment;
-import android.support.v4.view.ViewCompat;
-import android.support.v4.widget.SimpleCursorAdapter;
-import android.support.v4.widget.SwipeRefreshLayout;
import android.text.Html;
import android.util.Log;
import android.util.TypedValue;
@@ -76,6 +70,12 @@ import java.util.HashMap;
import java.util.List;
import java.util.TimeZone;
+import androidx.core.app.ActivityCompat;
+import androidx.core.app.ActivityOptionsCompat;
+import androidx.core.view.ViewCompat;
+import androidx.cursoradapter.widget.SimpleCursorAdapter;
+import androidx.fragment.app.Fragment;
+import androidx.swiperefreshlayout.widget.SwipeRefreshLayout;
import jp.wasabeef.glide.transformations.CropCircleTransformation;
public class OfflineHeadlinesFragment extends Fragment implements OnItemClickListener, AbsListView.OnScrollListener {
diff --git a/org.fox.ttrss/src/main/java/org/fox/ttrss/offline/OfflineMasterActivity.java b/org.fox.ttrss/src/main/java/org/fox/ttrss/offline/OfflineMasterActivity.java
index b1f4d88f..4e40ca27 100644..100755
--- a/org.fox.ttrss/src/main/java/org/fox/ttrss/offline/OfflineMasterActivity.java
+++ b/org.fox.ttrss/src/main/java/org/fox/ttrss/offline/OfflineMasterActivity.java
@@ -11,11 +11,6 @@ import android.os.Bundle;
import android.os.Handler;
import android.preference.PreferenceManager;
import android.provider.BaseColumns;
-import android.support.v4.app.Fragment;
-import android.support.v4.app.FragmentTransaction;
-import android.support.v4.widget.DrawerLayout;
-import android.support.v7.app.ActionBarDrawerToggle;
-import android.support.v7.widget.Toolbar;
import android.util.Log;
import android.view.Gravity;
import android.view.MenuItem;
@@ -24,6 +19,12 @@ import android.view.View;
import org.fox.ttrss.Application;
import org.fox.ttrss.R;
+import androidx.appcompat.app.ActionBarDrawerToggle;
+import androidx.appcompat.widget.Toolbar;
+import androidx.drawerlayout.widget.DrawerLayout;
+import androidx.fragment.app.Fragment;
+import androidx.fragment.app.FragmentTransaction;
+
public class OfflineMasterActivity extends OfflineActivity implements OfflineHeadlinesEventListener {
private final String TAG = this.getClass().getSimpleName();
@@ -49,14 +50,14 @@ public class OfflineMasterActivity extends OfflineActivity implements OfflineHea
setContentView(R.layout.activity_master);
- Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar);
+ Toolbar toolbar = findViewById(R.id.toolbar);
setSupportActionBar(toolbar);
setSmallScreen(findViewById(R.id.sw600dp_anchor) == null);
Application.getInstance().load(savedInstanceState);
- m_drawerLayout = (DrawerLayout) findViewById(R.id.headlines_drawer);
+ m_drawerLayout = findViewById(R.id.headlines_drawer);
if (m_drawerLayout != null) {
diff --git a/org.fox.ttrss/src/main/java/org/fox/ttrss/offline/OfflineUploadService.java b/org.fox.ttrss/src/main/java/org/fox/ttrss/offline/OfflineUploadService.java
index 1ff3521d..8f3b11fa 100755
--- a/org.fox.ttrss/src/main/java/org/fox/ttrss/offline/OfflineUploadService.java
+++ b/org.fox.ttrss/src/main/java/org/fox/ttrss/offline/OfflineUploadService.java
@@ -11,7 +11,6 @@ import android.database.Cursor;
import android.database.sqlite.SQLiteDatabase;
import android.graphics.BitmapFactory;
import android.os.Build;
-import android.support.v4.app.NotificationCompat;
import android.util.Log;
import com.google.gson.JsonElement;
@@ -26,6 +25,8 @@ import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
+import androidx.core.app.NotificationCompat;
+
public class OfflineUploadService extends IntentService {
private final String TAG = this.getClass().getSimpleName();
diff --git a/org.fox.ttrss/src/main/java/org/fox/ttrss/util/ContextMenuRecyclerView.java b/org.fox.ttrss/src/main/java/org/fox/ttrss/util/ContextMenuRecyclerView.java
index c8ec31f7..46207092 100644..100755
--- a/org.fox.ttrss/src/main/java/org/fox/ttrss/util/ContextMenuRecyclerView.java
+++ b/org.fox.ttrss/src/main/java/org/fox/ttrss/util/ContextMenuRecyclerView.java
@@ -1,13 +1,14 @@
package org.fox.ttrss.util;
import android.content.Context;
-import android.support.annotation.Nullable;
-import android.support.v7.widget.RecyclerView;
import android.util.AttributeSet;
import android.view.ContextMenu;
import android.view.View;
import android.widget.AdapterView;
+import androidx.annotation.Nullable;
+import androidx.recyclerview.widget.RecyclerView;
+
public class ContextMenuRecyclerView extends RecyclerView {
private AdapterView.AdapterContextMenuInfo mContextMenuInfo;
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 c8337f87..519fded5 100644..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
@@ -16,7 +16,6 @@ package org.fox.ttrss.util;
* limitations under the License.
*/
-import android.support.v7.widget.RecyclerView;
import android.view.View;
import android.view.ViewGroup;
@@ -25,6 +24,8 @@ import java.util.HashMap;
import java.util.List;
import java.util.Map;
+import androidx.recyclerview.widget.RecyclerView;
+
/**
* <p>
* RecyclerView adapter designed to wrap an existing adapter allowing the addition of
diff --git a/org.fox.ttrss/src/main/java/org/fox/ttrss/util/ImageCacheService.java b/org.fox.ttrss/src/main/java/org/fox/ttrss/util/ImageCacheService.java
index 483df20c..f07e23c2 100755
--- a/org.fox.ttrss/src/main/java/org/fox/ttrss/util/ImageCacheService.java
+++ b/org.fox.ttrss/src/main/java/org/fox/ttrss/util/ImageCacheService.java
@@ -13,7 +13,6 @@ import android.content.IntentFilter;
import android.graphics.BitmapFactory;
import android.os.Build;
import android.os.Environment;
-import android.support.v4.app.NotificationCompat;
import android.util.Log;
import org.fox.ttrss.CommonActivity;
@@ -31,6 +30,8 @@ import java.security.MessageDigest;
import java.security.NoSuchAlgorithmException;
import java.util.Date;
+import androidx.core.app.NotificationCompat;
+
public class ImageCacheService extends IntentService {
@SuppressWarnings("unused")
diff --git a/org.fox.ttrss/src/main/java/org/fox/ttrss/util/ScrimInsetsFrameLayout.java b/org.fox.ttrss/src/main/java/org/fox/ttrss/util/ScrimInsetsFrameLayout.java
index d25ebc6c..d3a5ab27 100755
--- a/org.fox.ttrss/src/main/java/org/fox/ttrss/util/ScrimInsetsFrameLayout.java
+++ b/org.fox.ttrss/src/main/java/org/fox/ttrss/util/ScrimInsetsFrameLayout.java
@@ -20,12 +20,13 @@ import android.content.res.TypedArray;
import android.graphics.Canvas;
import android.graphics.Rect;
import android.graphics.drawable.Drawable;
-import android.support.v4.view.ViewCompat;
import android.util.AttributeSet;
import android.widget.FrameLayout;
import org.fox.ttrss.R;
+import androidx.core.view.ViewCompat;
+
/**
* A layout that draws something in the insets passed to {@link #fitSystemWindows(Rect)}, i.e. the area above UI chrome
* (status and navigation bars, overlay action bars).
@@ -135,7 +136,7 @@ public class ScrimInsetsFrameLayout extends FrameLayout {
mOnInsetsCallback = onInsetsCallback;
}
- public static interface OnInsetsCallback {
- public void onInsetsChanged(Rect insets);
+ public interface OnInsetsCallback {
+ void onInsetsChanged(Rect insets);
}
} \ No newline at end of file
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 52785998..3af5b068 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
@@ -11,8 +11,6 @@ import android.net.NetworkInfo;
import android.os.Build;
import android.os.Handler;
import android.preference.PreferenceManager;
-import android.support.annotation.NonNull;
-import android.support.v4.app.JobIntentService;
import android.util.Log;
import android.widget.RemoteViews;
@@ -26,6 +24,9 @@ import org.fox.ttrss.util.SimpleLoginManager;
import java.util.HashMap;
+import androidx.annotation.NonNull;
+import androidx.core.app.JobIntentService;
+
public class WidgetUpdateService extends JobIntentService {
private final String TAG = this.getClass().getSimpleName();
private SharedPreferences m_prefs;
diff --git a/org.fox.ttrss/src/main/res/layout/activity_logcat.xml b/org.fox.ttrss/src/main/res/layout/activity_logcat.xml
index 39275c03..f6cccd22 100755
--- a/org.fox.ttrss/src/main/res/layout/activity_logcat.xml
+++ b/org.fox.ttrss/src/main/res/layout/activity_logcat.xml
@@ -6,7 +6,7 @@
<include layout="@layout/toolbar" android:id="@+id/toolbar" />
- <android.support.v4.widget.SwipeRefreshLayout
+ <androidx.swiperefreshlayout.widget.SwipeRefreshLayout
android:id="@+id/logcat_swipe_container"
android:layout_below="@+id/toolbar"
android:layout_alignParentBottom="true"
@@ -21,6 +21,6 @@
android:layout_width="match_parent"
android:layout_height="match_parent"/>
- </android.support.v4.widget.SwipeRefreshLayout>
+ </androidx.swiperefreshlayout.widget.SwipeRefreshLayout>
</RelativeLayout> \ No newline at end of file
diff --git a/org.fox.ttrss/src/main/res/layout/activity_master.xml b/org.fox.ttrss/src/main/res/layout/activity_master.xml
index 69ef2c15..3cd0a62a 100644..100755
--- a/org.fox.ttrss/src/main/res/layout/activity_master.xml
+++ b/org.fox.ttrss/src/main/res/layout/activity_master.xml
@@ -1,4 +1,4 @@
- <android.support.v4.widget.DrawerLayout
+ <androidx.drawerlayout.widget.DrawerLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:fitsSystemWindows="true"
android:id="@+id/headlines_drawer"
@@ -41,4 +41,4 @@
</org.fox.ttrss.util.ScrimInsetsFrameLayout>
- </android.support.v4.widget.DrawerLayout>
+ </androidx.drawerlayout.widget.DrawerLayout>
diff --git a/org.fox.ttrss/src/main/res/layout/article_pager.xml b/org.fox.ttrss/src/main/res/layout/article_pager.xml
index ff17fb0c..5144f823 100755
--- a/org.fox.ttrss/src/main/res/layout/article_pager.xml
+++ b/org.fox.ttrss/src/main/res/layout/article_pager.xml
@@ -5,12 +5,12 @@
android:layout_width="fill_parent"
android:layout_height="fill_parent">
- <android.support.v4.view.ViewPager
+ <androidx.viewpager.widget.ViewPager
android:id="@+id/article_pager"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:layout_above="@+id/article_pager_indicator"
- android:layout_alignParentTop="true"></android.support.v4.view.ViewPager>
+ android:layout_alignParentTop="true"/>
<com.viewpagerindicator.UnderlinePageIndicator
android:id="@+id/article_pager_indicator"
diff --git a/org.fox.ttrss/src/main/res/layout/feeds_row_toggle.xml b/org.fox.ttrss/src/main/res/layout/feeds_row_toggle.xml
index e871a4a2..86875240 100755
--- a/org.fox.ttrss/src/main/res/layout/feeds_row_toggle.xml
+++ b/org.fox.ttrss/src/main/res/layout/feeds_row_toggle.xml
@@ -36,7 +36,7 @@
android:textColor="?feedlistTextColor"
android:textSize="14sp" />
- <android.support.v7.widget.SwitchCompat
+ <androidx.appcompat.widget.SwitchCompat
android:id="@+id/row_switch"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
diff --git a/org.fox.ttrss/src/main/res/layout/fragment_cats.xml b/org.fox.ttrss/src/main/res/layout/fragment_cats.xml
index ff2e8307..64240be6 100644..100755
--- a/org.fox.ttrss/src/main/res/layout/fragment_cats.xml
+++ b/org.fox.ttrss/src/main/res/layout/fragment_cats.xml
@@ -4,7 +4,7 @@
android:layout_width="match_parent"
android:layout_height="fill_parent" >
- <android.support.v4.widget.SwipeRefreshLayout
+ <androidx.swiperefreshlayout.widget.SwipeRefreshLayout
android:id="@+id/feeds_swipe_container"
android:layout_width="match_parent"
android:layout_height="match_parent" >
@@ -16,5 +16,5 @@
android:layout_width="match_parent"
android:layout_height="match_parent" >
</ListView>
- </android.support.v4.widget.SwipeRefreshLayout>
+ </androidx.swiperefreshlayout.widget.SwipeRefreshLayout>
</FrameLayout> \ No newline at end of file
diff --git a/org.fox.ttrss/src/main/res/layout/fragment_feeds.xml b/org.fox.ttrss/src/main/res/layout/fragment_feeds.xml
index eec49bc6..2d8d963b 100644..100755
--- a/org.fox.ttrss/src/main/res/layout/fragment_feeds.xml
+++ b/org.fox.ttrss/src/main/res/layout/fragment_feeds.xml
@@ -4,7 +4,7 @@
android:layout_width="fill_parent"
android:layout_height="fill_parent" >
- <android.support.v4.widget.SwipeRefreshLayout
+ <androidx.swiperefreshlayout.widget.SwipeRefreshLayout
android:id="@+id/feeds_swipe_container"
android:layout_width="match_parent"
android:layout_height="match_parent">
@@ -18,5 +18,5 @@
android:layout_alignParentLeft="true"
android:layout_alignParentStart="true">
</ListView>
- </android.support.v4.widget.SwipeRefreshLayout>
+ </androidx.swiperefreshlayout.widget.SwipeRefreshLayout>
</RelativeLayout> \ No newline at end of file
diff --git a/org.fox.ttrss/src/main/res/layout/fragment_headlines.xml b/org.fox.ttrss/src/main/res/layout/fragment_headlines.xml
index d8b70aee..177ef32f 100644..100755
--- a/org.fox.ttrss/src/main/res/layout/fragment_headlines.xml
+++ b/org.fox.ttrss/src/main/res/layout/fragment_headlines.xml
@@ -6,7 +6,7 @@
android:layout_width="fill_parent"
android:layout_height="fill_parent">
- <android.support.v4.widget.SwipeRefreshLayout
+ <androidx.swiperefreshlayout.widget.SwipeRefreshLayout
android:id="@+id/headlines_swipe_container"
android:layout_width="match_parent"
android:layout_height="match_parent" >
@@ -17,7 +17,7 @@
android:scrollbars="vertical"
android:layout_width="match_parent"
android:layout_height="match_parent" />
- </android.support.v4.widget.SwipeRefreshLayout>
+ </androidx.swiperefreshlayout.widget.SwipeRefreshLayout>
<com.shamanland.fab.FloatingActionButton
android:id="@+id/headlines_fab"
diff --git a/org.fox.ttrss/src/main/res/layout/fragment_headlines_offline.xml b/org.fox.ttrss/src/main/res/layout/fragment_headlines_offline.xml
index c263c852..56a1137a 100644..100755
--- a/org.fox.ttrss/src/main/res/layout/fragment_headlines_offline.xml
+++ b/org.fox.ttrss/src/main/res/layout/fragment_headlines_offline.xml
@@ -6,7 +6,7 @@
android:layout_width="fill_parent"
android:layout_height="fill_parent">
- <android.support.v4.widget.SwipeRefreshLayout
+ <androidx.swiperefreshlayout.widget.SwipeRefreshLayout
android:id="@+id/headlines_swipe_container"
android:layout_width="match_parent"
android:layout_height="match_parent" >
@@ -16,7 +16,7 @@
android:drawSelectorOnTop="true"
android:layout_width="match_parent"
android:layout_height="match_parent" />
- </android.support.v4.widget.SwipeRefreshLayout>
+ </androidx.swiperefreshlayout.widget.SwipeRefreshLayout>
<com.shamanland.fab.FloatingActionButton
android:id="@+id/headlines_fab"
diff --git a/org.fox.ttrss/src/main/res/layout/toolbar.xml b/org.fox.ttrss/src/main/res/layout/toolbar.xml
index 5093a342..99235ca2 100755
--- a/org.fox.ttrss/src/main/res/layout/toolbar.xml
+++ b/org.fox.ttrss/src/main/res/layout/toolbar.xml
@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="utf-8"?>
-<android.support.v7.widget.Toolbar
+<androidx.appcompat.widget.Toolbar
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:id="@+id/toolbar"
diff --git a/org.fox.ttrss/src/main/res/values/arrays.xml b/org.fox.ttrss/src/main/res/values/arrays.xml
index 47cac770..25b2bd58 100644
--- a/org.fox.ttrss/src/main/res/values/arrays.xml
+++ b/org.fox.ttrss/src/main/res/values/arrays.xml
@@ -46,4 +46,10 @@
<item>@string/widget_background_dark</item>
<item>@string/widget_background_transparent</item>
</string-array>
+ <string-array name="pref_headlines_request_values" translatable="false">
+ <item>10</item>
+ <item>15</item>
+ <item>30</item>
+ <item>45</item>
+ </string-array>
</resources> \ No newline at end of file
diff --git a/org.fox.ttrss/src/main/res/values/strings.xml b/org.fox.ttrss/src/main/res/values/strings.xml
index ae2f1cc7..b73a3394 100755
--- a/org.fox.ttrss/src/main/res/values/strings.xml
+++ b/org.fox.ttrss/src/main/res/values/strings.xml
@@ -95,7 +95,7 @@
<string name="article_set_labels">Set labels</string>
<string name="search">Search</string>
<string name="cancel">Cancel</string>
- <string name="pref_font_size">Article text size</string>
+ <string name="pref_font_size">Text size</string>
<string name="dialog_close">Close</string>
<string name="article_link_copy">Copy link to clipboard</string>
<string name="text_copied_to_clipboard">Text copied to clipboard</string>
@@ -139,7 +139,7 @@
<string name="offline_articles_to_download">Amount of articles to download</string>
<string name="offline_articles_to_download_long">How many articles to download for offline mode (newest first)</string>
<string name="pref_headlines_show_content_long">Show content previews in headlines list</string>
- <string name="pref_headlines_show_content">Preview article content</string>
+ <string name="pref_headlines_show_content">Show content preview</string>
<string name="api_too_low">This action requires newer version of Tiny Tiny RSS</string>
<string name="share_url_hint">Article URL</string>
<string name="share_content_hint">Article Content</string>
@@ -183,7 +183,7 @@
<item quantity="other">%1$d unread articles</item>
</plurals>
- <string name="pref_headline_font_size">Headline text size</string>
+ <string name="pref_headline_font_size">Text size</string>
<string name="context_confirm_catchup">Mark all articles in %1$s as read?</string>
<string name="accel_webview_summary">Disable if you see flicker or visual glitches</string>
<string name="accel_webview_title">Accelerate web views (3.0+)</string>
@@ -214,7 +214,7 @@
<string name="prefs_enable_fab">Enable FAB</string>
<string name="prefs_enable_fab_long">Show floating action button when reading</string>
<string name="prefs_open_fresh_on_startup">Open Fresh articles on startup</string>
- <string name="prefs_headline_display_mode">Headline display mode</string>
+ <string name="prefs_headline_display_mode">Display mode</string>
<string name="prefs_headline_display_mode_long">Default, no images, or compact mode</string>
<string name="headline_display_mode_default">Default</string>
<string name="headline_display_mode_no_images">No images</string>
@@ -239,6 +239,8 @@
<string name="headlines_row_top_changed">New articles found, reload feed to continue.</string>
<string name="prefs_custom_tabs_summary">Open external links with browser custom tabs (faster, used if available)</string>
<string name="prefs_use_custom_tabs">Use quick preview</string>
+ <string name="prefs_always_open_uri">Always open in browser</string>
+ <string name="prefs_always_open_uri_summary">Open articles directly in your web browser, instead of going to the detail view</string>
<string name="ask_me_every_time">Ask me every time</string>
<!-- <string name="open_link">Open link</string> -->
<string name="quick_preview">Quick preview</string>
@@ -269,4 +271,12 @@
<string name="logcat_title">Log viewer</string>
<string name="cat_labels">Labels</string>
<string name="cat_uncategorized">Uncategorized</string>
+ <string name="prefs_headline_request_size">How many headlines to request</string>
+ <string name="prefs_headline_request_size_long">Use lower values on slow connections</string>
+ <string name="headlines">Headlines</string>
+ <string name="prefs_headline_images_wifi_only">Show images on Wi-Fi only</string>
+ <string name="prefs_headline_images_wifi_only_long">Overrides previous setting</string>
+ <string name="prefs_inline_video_player">Experimental. Long tap to open separate player</string>
+ <string name="prefs_enable_image_downsampling">Auto-resize images</string>
+ <string name="prefs_enable_image_downsampling_long">Asks backend to downsample images if not on Wi-Fi. Needs a plugin (ttrss-api-resize).</string>
</resources>
diff --git a/org.fox.ttrss/src/main/res/xml/preferences.xml b/org.fox.ttrss/src/main/res/xml/preferences.xml
index bf893468..f6f9b9bc 100755
--- a/org.fox.ttrss/src/main/res/xml/preferences.xml
+++ b/org.fox.ttrss/src/main/res/xml/preferences.xml
@@ -50,6 +50,7 @@
android:defaultValue="false"
android:key="enable_cats"
android:title="@string/enable_cats" />
+
<org.fox.ttrss.util.LessBrokenSwitchPreference
android:defaultValue="false"
android:dependency="enable_cats"
@@ -59,56 +60,80 @@
<org.fox.ttrss.util.LessBrokenSwitchPreference
android:defaultValue="true"
- android:key="headlines_show_content"
- android:summary="@string/pref_headlines_show_content_long"
- android:title="@string/pref_headlines_show_content" />
+ android:key="open_fresh_on_startup"
+ android:title="@string/prefs_open_fresh_on_startup" />
+ </PreferenceCategory>
+
+ <PreferenceCategory
+ android:key="category_headlines"
+ android:title="@string/headlines" >
+
+ <org.fox.ttrss.util.FontSizeDialogPreference
+ android:defaultValue="13"
+ android:key="headlines_font_size_sp"
+ android:dialogMessage="@string/pref_headline_font_size"
+ android:title="@string/pref_headline_font_size" />
+
+ <ListPreference
+ android:defaultValue="HL_DEFAULT"
+ android:entries="@array/headline_mode_names"
+ android:entryValues="@array/headline_mode_values"
+ android:key="headline_mode"
+ android:summary="@string/prefs_headline_display_mode_long"
+ android:title="@string/prefs_headline_display_mode" />
+
+ <org.fox.ttrss.util.LessBrokenSwitchPreference
+ android:defaultValue="false"
+ android:key="headline_images_wifi_only"
+ android:summary="@string/prefs_headline_images_wifi_only_long"
+ android:title="@string/prefs_headline_images_wifi_only" />
<org.fox.ttrss.util.LessBrokenSwitchPreference
android:defaultValue="true"
- android:dependency="headlines_mark_read_scroll"
- android:key="headlines_swipe_to_dismiss"
- android:summary="@string/pref_headlines_swipe_to_dismiss_long"
- android:title="@string/pref_headlines_swipe_to_dismiss" />
+ android:key="headlines_show_content"
+ android:title="@string/pref_headlines_show_content" />
<org.fox.ttrss.util.LessBrokenSwitchPreference
android:defaultValue="false"
android:disableDependentsState="true"
android:key="headlines_mark_read_scroll"
- android:summary="@string/pref_headlines_mark_read_scroll_long"
android:title="@string/pref_headlines_mark_read_scroll" />
+ <org.fox.ttrss.util.LessBrokenSwitchPreference
+ android:defaultValue="true"
+ android:dependency="headlines_mark_read_scroll"
+ android:key="headlines_swipe_to_dismiss"
+ android:summary="@string/pref_headlines_swipe_to_dismiss_long"
+ android:title="@string/pref_headlines_swipe_to_dismiss" />
+
<!-- <org.fox.ttrss.util.LessBrokenSwitchPreference
android:defaultValue="false"
android:key="enable_condensed_fonts"
android:summary="@string/pref_headlines_use_condensed_fonts_long"
android:title="@string/pref_headlines_use_condensed_fonts" /> -->
- <org.fox.ttrss.util.FontSizeDialogPreference
- android:defaultValue="13"
- android:key="headlines_font_size_sp"
- android:dialogMessage="@string/pref_headline_font_size"
- android:title="@string/pref_headline_font_size" />
-
<ListPreference
- android:defaultValue="HL_DEFAULT"
- android:entries="@array/headline_mode_names"
- android:entryValues="@array/headline_mode_values"
- android:key="headline_mode"
- android:summary="@string/prefs_headline_display_mode_long"
- android:title="@string/prefs_headline_display_mode" />
+ android:defaultValue="15"
+ android:entries="@array/pref_headlines_request_values"
+ android:entryValues="@array/pref_headlines_request_values"
+ android:key="headlines_request_size"
+ android:summary="@string/prefs_headline_request_size_long"
+ android:title="@string/prefs_headline_request_size" />
<org.fox.ttrss.util.LessBrokenSwitchPreference
- android:defaultValue="true"
- android:key="open_fresh_on_startup"
- android:title="@string/prefs_open_fresh_on_startup" />
+ android:defaultValue="false"
+ android:key="enable_image_downsampling"
+ android:title="@string/prefs_enable_image_downsampling"
+ android:summary="@string/prefs_enable_image_downsampling_long" />
<org.fox.ttrss.util.LessBrokenSwitchPreference
android:defaultValue="false"
android:key="inline_video_player"
- android:summary="Experimental: play videos inside headlines list. Long tap to open separate player"
+ android:summary="@string/prefs_inline_video_player"
android:title="Inline video player" />
</PreferenceCategory>
+
<PreferenceCategory android:title="@string/reading" >
<org.fox.ttrss.util.FontSizeDialogPreference
android:defaultValue="16"
@@ -148,6 +173,11 @@
android:defaultValue="true"
android:key="custom_tabs_ask_always"
android:title="@string/ask_me_every_time" />
+ <org.fox.ttrss.util.LessBrokenSwitchPreference
+ android:defaultValue="false"
+ android:key="always_open_uri"
+ android:summary="@string/prefs_always_open_uri_summary"
+ android:title="@string/prefs_always_open_uri" />
</PreferenceCategory>
<PreferenceCategory android:title="@string/offline_mode" >
<ListPreference