diff options
Diffstat (limited to 'org.fox.ttrss/src')
50 files changed, 349 insertions, 272 deletions
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 |