From 7a5abef16e95e238460ecd817aaf2e372e35502b Mon Sep 17 00:00:00 2001 From: Andrew Dolgov Date: Mon, 5 May 2025 14:11:32 +0300 Subject: replace unmaintained icepick with unmaintained Android-State :( --- org.fox.ttrss/build.gradle | 6 +++--- org.fox.ttrss/src/main/java/org/fox/ttrss/Application.java | 7 +++---- org.fox.ttrss/src/main/java/org/fox/ttrss/ArticleFragment.java | 7 ++++--- org.fox.ttrss/src/main/java/org/fox/ttrss/ArticlePager.java | 2 +- org.fox.ttrss/src/main/java/org/fox/ttrss/CommonActivity.java | 6 +++--- org.fox.ttrss/src/main/java/org/fox/ttrss/DetailActivity.java | 5 +++-- .../src/main/java/org/fox/ttrss/FeedCategoriesFragment.java | 2 +- org.fox.ttrss/src/main/java/org/fox/ttrss/FeedsFragment.java | 2 +- org.fox.ttrss/src/main/java/org/fox/ttrss/GalleryActivity.java | 2 +- .../src/main/java/org/fox/ttrss/GalleryImageFragment.java | 2 +- .../src/main/java/org/fox/ttrss/GalleryVideoFragment.java | 2 +- org.fox.ttrss/src/main/java/org/fox/ttrss/HeadlinesFragment.java | 6 ++++-- org.fox.ttrss/src/main/java/org/fox/ttrss/LogcatActivity.java | 2 +- org.fox.ttrss/src/main/java/org/fox/ttrss/MasterActivity.java | 2 +- .../src/main/java/org/fox/ttrss/YoutubePlayerActivity.java | 2 +- .../src/main/java/org/fox/ttrss/share/CommonShareActivity.java | 2 +- 16 files changed, 30 insertions(+), 27 deletions(-) diff --git a/org.fox.ttrss/build.gradle b/org.fox.ttrss/build.gradle index 4cc14660..f2d9a87e 100755 --- a/org.fox.ttrss/build.gradle +++ b/org.fox.ttrss/build.gradle @@ -75,9 +75,9 @@ dependencies { implementation 'me.relex:circleindicator:1.2.2@aar' implementation 'com.nineoldandroids:library:2.4.0' implementation 'com.github.amulyakhare:TextDrawable:558677ea31' - implementation 'frankiesardo:icepick:3.2.0' - compileOnly 'frankiesardo:icepick-processor:3.2.0' - annotationProcessor 'frankiesardo:icepick-processor:3.2.0' + implementation 'com.evernote:android-state:1.4.1' + compileOnly 'com.evernote:android-state:1.4.1' + annotationProcessor 'com.evernote:android-state:1.4.1' implementation 'com.github.livefront:bridge:v1.1.1' implementation files('libs/YouTubeAndroidPlayerApi.jar') implementation 'com.github.javiersantos:AppUpdater:2.7' 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 94857855..a8c4ab00 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 @@ -2,6 +2,7 @@ package org.fox.ttrss; import android.os.Bundle; +import com.evernote.android.state.StateSaver; import com.livefront.bridge.Bridge; import com.livefront.bridge.SavedStateHandler; @@ -13,8 +14,6 @@ import androidx.annotation.Nullable; import java.util.LinkedHashMap; -import icepick.Icepick; - public class Application extends android.app.Application { private static Application m_singleton; @@ -37,12 +36,12 @@ public class Application extends android.app.Application { Bridge.initialize(getApplicationContext(), new SavedStateHandler() { @Override public void saveInstanceState(@NonNull Object target, @NonNull Bundle state) { - Icepick.saveInstanceState(target, state); + StateSaver.saveInstanceState(target, state); } @Override public void restoreInstanceState(@NonNull Object target, @Nullable Bundle state) { - Icepick.restoreInstanceState(target, state); + StateSaver.restoreInstanceState(target, state); } }); 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 995e0074..0523c144 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 @@ -34,6 +34,8 @@ import android.widget.TextView; import androidx.core.text.HtmlCompat; +import com.evernote.android.state.State; + import org.fox.ttrss.types.Article; import org.fox.ttrss.types.Attachment; @@ -43,13 +45,12 @@ import java.text.DateFormat; import java.text.SimpleDateFormat; import java.util.Date; -import icepick.State; - public class ArticleFragment extends StateSavedFragment { private final String TAG = this.getClass().getSimpleName(); private SharedPreferences m_prefs; - @State protected Article m_article; + @State + protected Article m_article; private DetailActivity m_activity; private WebView m_web; protected View m_customView; 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 86feeaed..9f90df84 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 @@ -28,7 +28,7 @@ import org.fox.ttrss.util.HeadlinesRequest; import java.util.HashMap; -import icepick.State; +import com.evernote.android.state.State; public class ArticlePager extends StateSavedFragment { 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 1933fe6a..13c4490a 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 @@ -47,6 +47,7 @@ import com.bumptech.glide.Glide; import com.bumptech.glide.load.engine.DiskCacheStrategy; import com.bumptech.glide.request.animation.GlideAnimation; import com.bumptech.glide.request.target.SimpleTarget; +import com.evernote.android.state.State; import com.google.android.material.snackbar.Snackbar; import com.livefront.bridge.Bridge; @@ -63,8 +64,6 @@ import java.util.ArrayList; import java.util.Arrays; import java.util.List; -import icepick.State; - public class CommonActivity extends AppCompatActivity implements SharedPreferences.OnSharedPreferenceChangeListener { private final String TAG = this.getClass().getSimpleName(); @@ -91,7 +90,8 @@ public class CommonActivity extends AppCompatActivity implements SharedPreferenc //private SQLiteDatabase m_writableDb; private boolean m_smallScreenMode = true; - @State protected String m_theme; + @State + protected String m_theme; private boolean m_needRestart; private static String s_customTabPackageName; 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 97819411..8ef07abf 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 @@ -13,6 +13,7 @@ import android.util.Log; import android.view.MenuItem; import android.view.View; +import com.evernote.android.state.State; import com.google.android.material.floatingactionbutton.FloatingActionButton; import org.fox.ttrss.types.Article; @@ -21,11 +22,11 @@ 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 { private final String TAG = this.getClass().getSimpleName(); - @State protected ArticleList m_articles = new ArticleList(); + @State + protected ArticleList m_articles = new ArticleList(); protected SharedPreferences m_prefs; private Article m_activeArticle; 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 0feda5d9..3ef4fdd5 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 @@ -43,7 +43,7 @@ import java.util.List; import androidx.loader.app.LoaderManager; import androidx.loader.content.Loader; import androidx.swiperefreshlayout.widget.SwipeRefreshLayout; -import icepick.State; +import com.evernote.android.state.State; public class FeedCategoriesFragment extends BaseFeedlistFragment implements OnItemClickListener, OnSharedPreferenceChangeListener, LoaderManager.LoaderCallbacks { 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 60020086..5199d299 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 @@ -48,7 +48,7 @@ import java.util.List; import androidx.loader.app.LoaderManager; import androidx.loader.content.Loader; import androidx.swiperefreshlayout.widget.SwipeRefreshLayout; -import icepick.State; +import com.evernote.android.state.State; public class FeedsFragment extends BaseFeedlistFragment implements OnItemClickListener, OnSharedPreferenceChangeListener, LoaderManager.LoaderCallbacks { 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 9645ad80..570a586c 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 @@ -34,7 +34,7 @@ import java.util.ArrayList; import java.util.List; import java.util.concurrent.ExecutionException; -import icepick.State; +import com.evernote.android.state.State; import me.relex.circleindicator.CircleIndicator; public class GalleryActivity extends CommonActivity { 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 e058ca7b..44dbea12 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 @@ -19,7 +19,7 @@ import com.bumptech.glide.request.RequestListener; import com.bumptech.glide.request.target.GlideDrawableImageViewTarget; import com.bumptech.glide.request.target.Target; -import icepick.State; +import com.evernote.android.state.State; public class GalleryImageFragment extends GalleryBaseFragment { private final String TAG = this.getClass().getSimpleName(); 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 c2f8841d..751975d3 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 @@ -19,7 +19,7 @@ import java.io.IOException; import androidx.core.app.ActivityCompat; import androidx.core.view.ViewCompat; -import icepick.State; +import com.evernote.android.state.State; public class GalleryVideoFragment extends GalleryBaseFragment { private final String TAG = this.getClass().getSimpleName(); 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 fb43f7ca..f6990207 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 @@ -69,6 +69,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.evernote.android.state.State; import com.google.android.material.snackbar.Snackbar; import com.google.gson.JsonElement; @@ -91,7 +92,7 @@ import java.util.List; import java.util.TimeZone; import java.util.concurrent.TimeUnit; -import icepick.State; +import com.evernote.android.state.State; import jp.wasabeef.glide.transformations.CropCircleTransformation; public class HeadlinesFragment extends StateSavedFragment { @@ -105,7 +106,8 @@ public class HeadlinesFragment extends StateSavedFragment { private final String TAG = this.getClass().getSimpleName(); - @State Feed m_feed; + @State + Feed m_feed; @State Article m_activeArticle; @State String m_searchQuery = ""; private boolean m_refreshInProgress = false; 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 c9cbcbf9..037e4d7c 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 @@ -14,7 +14,7 @@ import java.util.ArrayList; import androidx.appcompat.app.AppCompatDelegate; import androidx.appcompat.widget.Toolbar; import androidx.swiperefreshlayout.widget.SwipeRefreshLayout; -import icepick.State; +import com.evernote.android.state.State; public class LogcatActivity extends CommonActivity { private static final int MAX_LOG_ENTRIES = 500; 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 50a0e7f2..520fdded 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 @@ -34,7 +34,7 @@ import java.util.Date; import java.util.HashMap; import java.util.LinkedHashMap; -import icepick.State; +import com.evernote.android.state.State; public class MasterActivity extends OnlineActivity implements HeadlinesEventListener { private final String TAG = this.getClass().getSimpleName(); 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 81afbf0e..4147ab91 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 @@ -15,7 +15,7 @@ import com.google.android.youtube.player.YouTubePlayerSupportFragment; import androidx.appcompat.app.AppCompatDelegate; import androidx.appcompat.widget.Toolbar; -import icepick.State; +import com.evernote.android.state.State; public class YoutubePlayerActivity extends CommonActivity implements YouTubePlayer.OnInitializedListener { diff --git a/org.fox.ttrss/src/main/java/org/fox/ttrss/share/CommonShareActivity.java b/org.fox.ttrss/src/main/java/org/fox/ttrss/share/CommonShareActivity.java index b6a989b1..a1044988 100755 --- a/org.fox.ttrss/src/main/java/org/fox/ttrss/share/CommonShareActivity.java +++ b/org.fox.ttrss/src/main/java/org/fox/ttrss/share/CommonShareActivity.java @@ -16,7 +16,7 @@ import org.fox.ttrss.PreferencesActivity; import org.fox.ttrss.R; import org.fox.ttrss.util.SimpleLoginManager; -import icepick.State; +import com.evernote.android.state.State; public abstract class CommonShareActivity extends CommonActivity { -- cgit v1.2.3-54-g00ecf From 9e7224c7aa83b1aff63dc7f03b45a8258c7c6529 Mon Sep 17 00:00:00 2001 From: Andrew Dolgov Date: Mon, 5 May 2025 14:31:26 +0300 Subject: bump gradle to 8.7 / agp to 8.4.2 --- build.gradle | 2 +- gradle.properties | 3 +++ gradle/wrapper/gradle-wrapper.properties | 2 +- org.fox.ttrss/build.gradle | 2 +- org.fox.ttrss/src/main/AndroidManifest.xml | 3 +-- 5 files changed, 7 insertions(+), 5 deletions(-) diff --git a/build.gradle b/build.gradle index 9c8f6437..1e1d0fab 100755 --- a/build.gradle +++ b/build.gradle @@ -5,7 +5,7 @@ buildscript { google() } dependencies { - classpath 'com.android.tools.build:gradle:4.2.2' + classpath 'com.android.tools.build:gradle:8.5.2' } } diff --git a/gradle.properties b/gradle.properties index 19d5ac63..68562294 100755 --- a/gradle.properties +++ b/gradle.properties @@ -1,4 +1,7 @@ +android.defaults.buildfeatures.buildconfig=true android.enableJetifier=true +android.nonFinalResIds=false +android.nonTransitiveRClass=false android.useAndroidX=true org.gradle.jvmargs=\ --add-opens java.base/java.io=ALL-UNNAMED \ diff --git a/gradle/wrapper/gradle-wrapper.properties b/gradle/wrapper/gradle-wrapper.properties index ffed3a25..48c0a02c 100644 --- a/gradle/wrapper/gradle-wrapper.properties +++ b/gradle/wrapper/gradle-wrapper.properties @@ -1,5 +1,5 @@ distributionBase=GRADLE_USER_HOME distributionPath=wrapper/dists -distributionUrl=https\://services.gradle.org/distributions/gradle-7.2-bin.zip +distributionUrl=https\://services.gradle.org/distributions/gradle-8.7-bin.zip zipStoreBase=GRADLE_USER_HOME zipStorePath=wrapper/dists diff --git a/org.fox.ttrss/build.gradle b/org.fox.ttrss/build.gradle index f2d9a87e..2cad0765 100755 --- a/org.fox.ttrss/build.gradle +++ b/org.fox.ttrss/build.gradle @@ -2,7 +2,6 @@ apply plugin: 'com.android.application' android { compileSdkVersion 33 - buildToolsVersion "30.0.2" compileOptions { sourceCompatibility JavaVersion.VERSION_1_8 @@ -51,6 +50,7 @@ android { matchingFallbacks = ['release'] } } + namespace 'org.fox.ttrss' } dependencies { diff --git a/org.fox.ttrss/src/main/AndroidManifest.xml b/org.fox.ttrss/src/main/AndroidManifest.xml index d2d1a779..c9217d86 100755 --- a/org.fox.ttrss/src/main/AndroidManifest.xml +++ b/org.fox.ttrss/src/main/AndroidManifest.xml @@ -1,6 +1,5 @@ - + -- cgit v1.2.3-54-g00ecf From 504427a0463044353e1690c897db2a90892df6c6 Mon Sep 17 00:00:00 2001 From: Andrew Dolgov Date: Mon, 5 May 2025 14:38:53 +0300 Subject: drop youtube & dashclock jar files and everything related to them --- org.fox.ttrss/build.gradle | 2 - org.fox.ttrss/libs/YouTubeAndroidPlayerApi.jar | Bin 106412 -> 0 bytes org.fox.ttrss/libs/dashclock-api-r1.1.jar | Bin 16279 -> 0 bytes org.fox.ttrss/src/main/AndroidManifest.xml | 6 - .../main/java/org/fox/ttrss/HeadlinesFragment.java | 24 +--- .../java/org/fox/ttrss/YoutubePlayerActivity.java | 144 --------------------- .../src/main/res/drawable-hdpi/dashclock.png | Bin 3054 -> 0 bytes .../src/main/res/drawable-xhdpi/dashclock.png | Bin 3482 -> 0 bytes .../main/res/layout/activity_youtube_player.xml | 29 ----- 9 files changed, 1 insertion(+), 204 deletions(-) delete mode 100644 org.fox.ttrss/libs/YouTubeAndroidPlayerApi.jar delete mode 100644 org.fox.ttrss/libs/dashclock-api-r1.1.jar delete mode 100755 org.fox.ttrss/src/main/java/org/fox/ttrss/YoutubePlayerActivity.java delete mode 100644 org.fox.ttrss/src/main/res/drawable-hdpi/dashclock.png delete mode 100644 org.fox.ttrss/src/main/res/drawable-xhdpi/dashclock.png delete mode 100644 org.fox.ttrss/src/main/res/layout/activity_youtube_player.xml diff --git a/org.fox.ttrss/build.gradle b/org.fox.ttrss/build.gradle index 2cad0765..387de61d 100755 --- a/org.fox.ttrss/build.gradle +++ b/org.fox.ttrss/build.gradle @@ -54,7 +54,6 @@ android { } dependencies { - implementation files('libs/dashclock-api-r1.1.jar') implementation 'com.squareup.okhttp3:okhttp:3.12.5' implementation('com.github.bumptech.glide:okhttp3-integration:1.5.0') { exclude group: 'glide-parent' @@ -79,6 +78,5 @@ dependencies { compileOnly 'com.evernote:android-state:1.4.1' annotationProcessor 'com.evernote:android-state:1.4.1' implementation 'com.github.livefront:bridge:v1.1.1' - implementation files('libs/YouTubeAndroidPlayerApi.jar') implementation 'com.github.javiersantos:AppUpdater:2.7' } diff --git a/org.fox.ttrss/libs/YouTubeAndroidPlayerApi.jar b/org.fox.ttrss/libs/YouTubeAndroidPlayerApi.jar deleted file mode 100644 index 1dc2b822..00000000 Binary files a/org.fox.ttrss/libs/YouTubeAndroidPlayerApi.jar and /dev/null differ diff --git a/org.fox.ttrss/libs/dashclock-api-r1.1.jar b/org.fox.ttrss/libs/dashclock-api-r1.1.jar deleted file mode 100644 index 3a4e00d0..00000000 Binary files a/org.fox.ttrss/libs/dashclock-api-r1.1.jar and /dev/null differ diff --git a/org.fox.ttrss/src/main/AndroidManifest.xml b/org.fox.ttrss/src/main/AndroidManifest.xml index c9217d86..b5da6cd3 100755 --- a/org.fox.ttrss/src/main/AndroidManifest.xml +++ b/org.fox.ttrss/src/main/AndroidManifest.xml @@ -250,12 +250,6 @@ android:label="Article Images" > - - - packages = m_activity.getPackageManager().getInstalledApplications(0); - for (ApplicationInfo pi : packages) { - if (pi.packageName.equals("com.google.android.youtube")) { - m_youtubeInstalled = true; - break; - } - } } @Override @@ -1609,20 +1600,7 @@ public class HeadlinesFragment extends StateSavedFragment { //Log.d(TAG, "openGalleryForType: " + article + " " + holder + " " + transitionView); if ("iframe".equals(article.flavorImage.tagName().toLowerCase())) { - - if (m_youtubeInstalled) { - Intent intent = new Intent(m_activity, YoutubePlayerActivity.class); - intent.putExtra("streamUri", article.flavorStreamUri); - intent.putExtra("vid", article.youtubeVid); - intent.putExtra("title", article.title); - - startActivity(intent); - m_activity.overridePendingTransition(R.anim.slide_in_right, R.anim.slide_out_left); - - } else { - m_activity.openUri(Uri.parse(article.flavorStreamUri)); - } - + m_activity.openUri(Uri.parse(article.flavorStreamUri)); } else { Intent intent = new Intent(m_activity, GalleryActivity.class); 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 deleted file mode 100755 index 4147ab91..00000000 --- a/org.fox.ttrss/src/main/java/org/fox/ttrss/YoutubePlayerActivity.java +++ /dev/null @@ -1,144 +0,0 @@ -package org.fox.ttrss; - -import android.content.res.Configuration; -import android.net.Uri; -import android.os.Bundle; -import android.util.Log; -import android.view.ContextMenu; -import android.view.Menu; -import android.view.MenuItem; -import android.view.View; - -import com.google.android.youtube.player.YouTubeInitializationResult; -import com.google.android.youtube.player.YouTubePlayer; -import com.google.android.youtube.player.YouTubePlayerSupportFragment; - -import androidx.appcompat.app.AppCompatDelegate; -import androidx.appcompat.widget.Toolbar; -import com.evernote.android.state.State; - - -public class YoutubePlayerActivity extends CommonActivity implements YouTubePlayer.OnInitializedListener { - - private final String TAG = this.getClass().getSimpleName(); - private static final String DEVELOPER_KEY = "AIzaSyD8BS4Uj21jg_gHZfP4v0VXrAWiwqd05nk"; - - @State protected String m_streamUri; - @State protected String m_videoId; - - @Override - public void onCreate(Bundle savedInstanceState) { - - getDelegate().setLocalNightMode(AppCompatDelegate.MODE_NIGHT_YES); - setTheme(R.style.AppTheme); - - super.onCreate(savedInstanceState); - setContentView(R.layout.activity_youtube_player); - - Toolbar toolbar = findViewById(R.id.toolbar); - setSupportActionBar(toolbar); - - getSupportActionBar().setDisplayHomeAsUpEnabled(true); - - if (!isPortrait()) - getSupportActionBar().hide(); - - setTitle(getIntent().getStringExtra("title")); - - if (savedInstanceState == null) { - m_streamUri = getIntent().getStringExtra("streamUri"); - m_videoId = getIntent().getStringExtra("vid"); - } - - YouTubePlayerSupportFragment frag = (YouTubePlayerSupportFragment) getSupportFragmentManager().findFragmentById(R.id.fragment_youtube_player); - frag.initialize(DEVELOPER_KEY, this); - } - - public void onConfigurationChanged(Configuration newConfig) { - super.onConfigurationChanged(newConfig); - - if (!isPortrait()) - getSupportActionBar().hide(); - else - getSupportActionBar().show(); - } - - @Override - public boolean onCreateOptionsMenu(Menu menu) { - getMenuInflater().inflate(R.menu.activity_youtube_player, menu); - return true; - } - - - @Override - public void onCreateContextMenu(ContextMenu menu, View v, - ContextMenu.ContextMenuInfo menuInfo) { - - getMenuInflater().inflate(R.menu.activity_youtube_player, menu); - - super.onCreateContextMenu(menu, v, menuInfo); - } - - - @Override - public boolean onOptionsItemSelected(MenuItem item) { - return onContextItemSelected(item); // this is really bad :() - } - - @Override - public boolean onContextItemSelected(android.view.MenuItem item) { - switch (item.getItemId()) { - case android.R.id.home: - onBackPressed(); - return true; - case R.id.article_vid_open: - if (m_streamUri != null) { - try { - openUri(Uri.parse(m_streamUri)); - } catch (Exception e) { - e.printStackTrace(); - toast(R.string.error_other_error); - } - } - return true; - case R.id.article_vid_share: - if (m_streamUri != null) { - shareText(m_streamUri); - } - return true; - default: - Log.d(TAG, "onContextItemSelected, unhandled id=" + item.getItemId()); - return super.onContextItemSelected(item); - } - } - - @Override - public void onInitializationSuccess(YouTubePlayer.Provider provider, YouTubePlayer player, boolean wasRestored) { - Log.d(TAG, "youtube: init success"); - - findViewById(R.id.video_loading).setVisibility(View.GONE); - - if (!wasRestored) { - player.cueVideo(m_videoId); - } - } - - @Override - public void onInitializationFailure(YouTubePlayer.Provider provider, YouTubeInitializationResult result) { - Log.d(TAG, "youtube: init failure"); - - findViewById(R.id.video_loading).setVisibility(View.GONE); - - toast(result.toString()); - } - - @Override - public void onPause() { - super.onPause(); - - if (isFinishing()) { - overridePendingTransition(R.anim.slide_in_left, R.anim.slide_out_right); - } - - } -} diff --git a/org.fox.ttrss/src/main/res/drawable-hdpi/dashclock.png b/org.fox.ttrss/src/main/res/drawable-hdpi/dashclock.png deleted file mode 100644 index 99ffa932..00000000 Binary files a/org.fox.ttrss/src/main/res/drawable-hdpi/dashclock.png and /dev/null differ diff --git a/org.fox.ttrss/src/main/res/drawable-xhdpi/dashclock.png b/org.fox.ttrss/src/main/res/drawable-xhdpi/dashclock.png deleted file mode 100644 index 65ebe3c1..00000000 Binary files a/org.fox.ttrss/src/main/res/drawable-xhdpi/dashclock.png and /dev/null differ diff --git a/org.fox.ttrss/src/main/res/layout/activity_youtube_player.xml b/org.fox.ttrss/src/main/res/layout/activity_youtube_player.xml deleted file mode 100644 index 0b423edc..00000000 --- a/org.fox.ttrss/src/main/res/layout/activity_youtube_player.xml +++ /dev/null @@ -1,29 +0,0 @@ - - - - - - - - - - - - - -- cgit v1.2.3-54-g00ecf From 312e29bcc722a559685c721efa1969d2a1b0fd1d Mon Sep 17 00:00:00 2001 From: Andrew Dolgov Date: Mon, 5 May 2025 15:04:05 +0300 Subject: replace switch statement with ifs because resource identifiers are not final in gradle 8 --- .../main/java/org/fox/ttrss/DetailActivity.java | 14 +- .../java/org/fox/ttrss/FeedCategoriesFragment.java | 84 ++- .../src/main/java/org/fox/ttrss/FeedsFragment.java | 136 +++-- .../main/java/org/fox/ttrss/GalleryActivity.java | 69 ++- .../main/java/org/fox/ttrss/HeadlinesFragment.java | 162 +++--- .../main/java/org/fox/ttrss/MasterActivity.java | 48 +- .../main/java/org/fox/ttrss/OnlineActivity.java | 646 ++++++++++----------- .../java/org/fox/ttrss/PreferencesActivity.java | 10 +- .../org/fox/ttrss/offline/OfflineActivity.java | 629 ++++++++++---------- .../org/fox/ttrss/share/CommonShareActivity.java | 22 +- 10 files changed, 899 insertions(+), 921 deletions(-) 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 8ef07abf..cd263d87 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 @@ -172,15 +172,13 @@ public class DetailActivity extends OnlineActivity implements HeadlinesEventList @Override public boolean onOptionsItemSelected(MenuItem item) { - switch (item.getItemId()) { - case android.R.id.home: + if (item.getItemId() == android.R.id.home) { onBackPressed(); - return true; - default: - Log.d(TAG, "onOptionsItemSelected, unhandled id=" + item.getItemId()); - return super.onOptionsItemSelected(item); - } - } + return true; + } + Log.d(TAG, "onOptionsItemSelected, unhandled id=" + item.getItemId()); + return super.onOptionsItemSelected(item); + } @Override public void onResume() { 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 3ef4fdd5..876b3894 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 @@ -216,50 +216,48 @@ public class FeedCategoriesFragment extends BaseFeedlistFragment implements OnIt public boolean onContextItemSelected(MenuItem item) { AdapterContextMenuInfo info = (AdapterContextMenuInfo) item .getMenuInfo(); - - switch (item.getItemId()) { - case R.id.browse_headlines: - if (true) { - FeedCategory cat = getCategoryAtPosition(info.position); - if (cat != null) { - m_activity.onCatSelected(cat, true); - //setSelectedCategory(cat); - } - } - return true; - case R.id.browse_feeds: - if (true) { - FeedCategory cat = getCategoryAtPosition(info.position); - if (cat != null) { - m_activity.onCatSelected(cat, false); - //cf.setSelectedCategory(cat); - } - } - return true; - case R.id.create_shortcut: - if (true) { - FeedCategory cat = getCategoryAtPosition(info.position); - if (cat != null) { - m_activity.createCategoryShortcut(cat); - //cf.setSelectedCategory(cat); - } - } - return true; - case R.id.catchup_category: - if (true) { - final FeedCategory cat = getCategoryAtPosition(info.position); - if (cat != null) { - m_activity.catchupDialog(new Feed(cat.id, cat.title, true)); - } - } - return true; - - default: - Log.d(TAG, "onContextItemSelected, unhandled id=" + item.getItemId()); - return super.onContextItemSelected(item); - } - } + int itemId = item.getItemId(); + if (itemId == R.id.browse_headlines) { + if (true) { + FeedCategory cat = getCategoryAtPosition(info.position); + if (cat != null) { + m_activity.onCatSelected(cat, true); + //setSelectedCategory(cat); + } + } + return true; + } else if (itemId == R.id.browse_feeds) { + if (true) { + FeedCategory cat = getCategoryAtPosition(info.position); + if (cat != null) { + m_activity.onCatSelected(cat, false); + //cf.setSelectedCategory(cat); + } + } + return true; + } else if (itemId == R.id.create_shortcut) { + if (true) { + FeedCategory cat = getCategoryAtPosition(info.position); + if (cat != null) { + m_activity.createCategoryShortcut(cat); + //cf.setSelectedCategory(cat); + } + } + return true; + } else if (itemId == R.id.catchup_category) { + if (true) { + final FeedCategory cat = getCategoryAtPosition(info.position); + + if (cat != null) { + m_activity.catchupDialog(new Feed(cat.id, cat.title, true)); + } + } + return true; + } + Log.d(TAG, "onContextItemSelected, unhandled id=" + item.getItemId()); + return super.onContextItemSelected(item); + } @Override public void onCreateContextMenu(ContextMenu menu, View v, 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 5199d299..c415eee9 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 @@ -237,75 +237,73 @@ public class FeedsFragment extends BaseFeedlistFragment implements OnItemClickLi public boolean onContextItemSelected(MenuItem item) { AdapterContextMenuInfo info = (AdapterContextMenuInfo) item .getMenuInfo(); - switch (item.getItemId()) { - case R.id.browse_headlines: - if (true) { - Feed feed = getFeedAtPosition(info.position); - if (feed != null) { - m_activity.onFeedSelected(feed); - } - } - return true; - case R.id.browse_feeds: - if (true) { - Feed feed = getFeedAtPosition(info.position); - if (feed != null) { - m_activity.onCatSelected(new FeedCategory(feed.id, feed.title, feed.unread), false); - } - } - return true; - case R.id.unsubscribe_feed: - if (true) { - final Feed feed = getFeedAtPosition(info.position); - - AlertDialog.Builder builder = new AlertDialog.Builder( - m_activity) - .setMessage(getString(R.string.unsubscribe_from_prompt, feed.title)) - .setPositiveButton(R.string.unsubscribe, - new Dialog.OnClickListener() { - public void onClick(DialogInterface dialog, - int which) { - - m_activity.unsubscribeFeed(feed); - - } - }) - .setNegativeButton(R.string.dialog_cancel, - new Dialog.OnClickListener() { - public void onClick(DialogInterface dialog, - int which) { - - } - }); - - AlertDialog dlg = builder.create(); - dlg.show(); - } - - return true; - case R.id.create_shortcut: - if (true) { - Feed feed = getFeedAtPosition(info.position); - if (feed != null) { - m_activity.createFeedShortcut(feed); - } - } - return true; - case R.id.catchup_feed: - if (true) { - Feed feed = getFeedAtPosition(info.position); - - if (feed != null) { - m_activity.catchupDialog(feed); - } - } - return true; - - default: - Log.d(TAG, "onContextItemSelected, unhandled id=" + item.getItemId()); - return super.onContextItemSelected(item); - } - } + int itemId = item.getItemId(); + if (itemId == R.id.browse_headlines) { + if (true) { + Feed feed = getFeedAtPosition(info.position); + if (feed != null) { + m_activity.onFeedSelected(feed); + } + } + return true; + } else if (itemId == R.id.browse_feeds) { + if (true) { + Feed feed = getFeedAtPosition(info.position); + if (feed != null) { + m_activity.onCatSelected(new FeedCategory(feed.id, feed.title, feed.unread), false); + } + } + return true; + } else if (itemId == R.id.unsubscribe_feed) { + if (true) { + final Feed feed = getFeedAtPosition(info.position); + + AlertDialog.Builder builder = new AlertDialog.Builder( + m_activity) + .setMessage(getString(R.string.unsubscribe_from_prompt, feed.title)) + .setPositiveButton(R.string.unsubscribe, + new Dialog.OnClickListener() { + public void onClick(DialogInterface dialog, + int which) { + + m_activity.unsubscribeFeed(feed); + + } + }) + .setNegativeButton(R.string.dialog_cancel, + new Dialog.OnClickListener() { + public void onClick(DialogInterface dialog, + int which) { + + } + }); + + AlertDialog dlg = builder.create(); + dlg.show(); + } + + return true; + } else if (itemId == R.id.create_shortcut) { + if (true) { + Feed feed = getFeedAtPosition(info.position); + if (feed != null) { + m_activity.createFeedShortcut(feed); + } + } + return true; + } else if (itemId == R.id.catchup_feed) { + if (true) { + Feed feed = getFeedAtPosition(info.position); + + if (feed != null) { + m_activity.catchupDialog(feed); + } + } + return true; + } + Log.d(TAG, "onContextItemSelected, unhandled id=" + item.getItemId()); + return super.onContextItemSelected(item); + } @Override public void onCreateContextMenu(ContextMenu menu, View v, 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 570a586c..e0cb2cea 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 @@ -361,44 +361,43 @@ public class GalleryActivity extends CommonActivity { public boolean onImageMenuItemSelected(MenuItem item, GalleryEntry entry) { String url = entry.url; - switch (item.getItemId()) { - case R.id.article_img_open: - if (url != null) { - try { - openUri(Uri.parse(url)); - } catch (Exception e) { - e.printStackTrace(); - toast(R.string.error_other_error); - } - } - return true; - case R.id.article_img_copy: - if (url != null) { - copyToClipboard(url); + int itemId = item.getItemId(); + if (itemId == R.id.article_img_open) { + if (url != null) { + try { + openUri(Uri.parse(url)); + } catch (Exception e) { + e.printStackTrace(); + toast(R.string.error_other_error); } - return true; - case R.id.article_img_share: - if (url != null) { - if (entry.type == GalleryEntry.GalleryEntryType.TYPE_IMAGE) { - Log.d(TAG, "image sharing image from URL=" + url); + } + return true; + } else if (itemId == R.id.article_img_copy) { + if (url != null) { + copyToClipboard(url); + } + return true; + } else if (itemId == R.id.article_img_share) { + if (url != null) { + if (entry.type == GalleryEntry.GalleryEntryType.TYPE_IMAGE) { + Log.d(TAG, "image sharing image from URL=" + url); - shareImageFromUri(url); - } - } - return true; - case R.id.article_img_share_url: - if (url != null) { - shareText(url); - } - return true; - case R.id.article_img_view_caption: - if (url != null) { - displayImageCaption(url, m_content); + shareImageFromUri(url); } - return true; - default: - Log.d(TAG, "onImageMenuItemSelected, unhandled id=" + item.getItemId()); - return false; + } + return true; + } else if (itemId == R.id.article_img_share_url) { + if (url != null) { + shareText(url); + } + return true; + } else if (itemId == R.id.article_img_view_caption) { + if (url != null) { + displayImageCaption(url, m_content); + } + return true; } + Log.d(TAG, "onImageMenuItemSelected, unhandled id=" + item.getItemId()); + return false; } } 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 e1fa2b4c..d45ff934 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 @@ -161,68 +161,67 @@ public class HeadlinesFragment extends StateSavedFragment { if (article == null) return false; - switch (item.getItemId()) { - case R.id.set_labels: - m_activity.editArticleLabels(article); - return true; - case R.id.article_set_note: - m_activity.editArticleNote(article); - return true; - case R.id.headlines_article_unread: - article.unread = !article.unread; - m_activity.saveArticleUnread(article); - m_adapter.notifyItemChanged(position); - return true; - case R.id.headlines_article_link_copy: - m_activity.copyToClipboard(article.link); - return true; - case R.id.headlines_article_link_open: - m_activity.openUri(Uri.parse(article.link)); - - if (article.unread) { - article.unread = false; - m_activity.saveArticleUnread(article); - - m_adapter.notifyItemChanged(position); - } - return true; - case R.id.headlines_share_article: - m_activity.shareArticle(article); - return true; - case R.id.catchup_above: - if (true) { - - final Article fa = article; - - AlertDialog.Builder builder = new AlertDialog.Builder( - m_activity) - .setMessage(R.string.confirm_catchup_above) - .setPositiveButton(R.string.dialog_ok, - new Dialog.OnClickListener() { - public void onClick(DialogInterface dialog, - int which) { - - catchupAbove(fa); - - } - }) - .setNegativeButton(R.string.dialog_cancel, - new Dialog.OnClickListener() { - public void onClick(DialogInterface dialog, - int which) { - - } - }); - - AlertDialog dialog = builder.create(); - dialog.show(); - } - return true; - default: - Log.d(TAG, "onArticleMenuItemSelected, unhandled id=" + item.getItemId()); - return false; - } - } + int itemId = item.getItemId(); + if (itemId == R.id.set_labels) { + m_activity.editArticleLabels(article); + return true; + } else if (itemId == R.id.article_set_note) { + m_activity.editArticleNote(article); + return true; + } else if (itemId == R.id.headlines_article_unread) { + article.unread = !article.unread; + m_activity.saveArticleUnread(article); + m_adapter.notifyItemChanged(position); + return true; + } else if (itemId == R.id.headlines_article_link_copy) { + m_activity.copyToClipboard(article.link); + return true; + } else if (itemId == R.id.headlines_article_link_open) { + m_activity.openUri(Uri.parse(article.link)); + + if (article.unread) { + article.unread = false; + m_activity.saveArticleUnread(article); + + m_adapter.notifyItemChanged(position); + } + return true; + } else if (itemId == R.id.headlines_share_article) { + m_activity.shareArticle(article); + return true; + } else if (itemId == R.id.catchup_above) { + if (true) { + + final Article fa = article; + + AlertDialog.Builder builder = new AlertDialog.Builder( + m_activity) + .setMessage(R.string.confirm_catchup_above) + .setPositiveButton(R.string.dialog_ok, + new Dialog.OnClickListener() { + public void onClick(DialogInterface dialog, + int which) { + + catchupAbove(fa); + + } + }) + .setNegativeButton(R.string.dialog_cancel, + new Dialog.OnClickListener() { + public void onClick(DialogInterface dialog, + int which) { + + } + }); + + AlertDialog dialog = builder.create(); + dialog.show(); + } + return true; + } + Log.d(TAG, "onArticleMenuItemSelected, unhandled id=" + item.getItemId()); + return false; + } private void catchupAbove(Article article) { ArticleList articles = getAllArticles(); @@ -1217,26 +1216,25 @@ public class HeadlinesFragment extends StateSavedFragment { Uri mediaUri = Uri.parse(article.flavorStreamUri != null ? article.flavorStreamUri : article.flavorImageUri); - switch (item.getItemId()) { - case R.id.article_img_open: - m_activity.openUri(mediaUri); - return true; - case R.id.article_img_copy: - m_activity.copyToClipboard(mediaUri.toString()); - return true; - case R.id.article_img_share: - m_activity.shareImageFromUri(mediaUri.toString()); - return true; - case R.id.article_img_share_url: - m_activity.shareText(mediaUri.toString()); - return true; - case R.id.article_img_view_caption: - m_activity.displayImageCaption(article.flavorImageUri, article.content); - return true; - default: - return false; - } - } + int itemId = item.getItemId(); + if (itemId == R.id.article_img_open) { + m_activity.openUri(mediaUri); + return true; + } else if (itemId == R.id.article_img_copy) { + m_activity.copyToClipboard(mediaUri.toString()); + return true; + } else if (itemId == R.id.article_img_share) { + m_activity.shareImageFromUri(mediaUri.toString()); + return true; + } else if (itemId == R.id.article_img_share_url) { + m_activity.shareText(mediaUri.toString()); + return true; + } else if (itemId == R.id.article_img_view_caption) { + m_activity.displayImageCaption(article.flavorImageUri, article.content); + return true; + } + return false; + } }); popup.show(); 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 520fdded..7591774d 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 @@ -331,44 +331,43 @@ public class MasterActivity extends OnlineActivity implements HeadlinesEventList return true; } - switch (item.getItemId()) { - case R.id.headlines_toggle_sort_order: + if (item.getItemId() == R.id.headlines_toggle_sort_order) { LinkedHashMap sortModes = getSortModes(); - CharSequence[] sortTitles = sortModes.values().toArray(new CharSequence[0]); - final CharSequence[] sortNames = sortModes.keySet().toArray(new CharSequence[0]); + CharSequence[] sortTitles = sortModes.values().toArray(new CharSequence[0]); + final CharSequence[] sortNames = sortModes.keySet().toArray(new CharSequence[0]); - String currentMode = getSortMode(); + String currentMode = getSortMode(); - int i = 0; - int selectedIndex = 0; + int i = 0; + int selectedIndex = 0; - for (CharSequence tmp : sortNames) { - if (tmp.equals(currentMode)) { - selectedIndex = i; - break; - } + for (CharSequence tmp : sortNames) { + if (tmp.equals(currentMode)) { + selectedIndex = i; + break; + } - ++i; - } + ++i; + } AlertDialog.Builder builder = new AlertDialog.Builder(this) .setTitle(getString(R.string.headlines_sort_articles_title)) .setSingleChoiceItems( - sortTitles, + sortTitles, selectedIndex, new DialogInterface.OnClickListener() { @Override public void onClick(DialogInterface dialog, int which) { - try { + try { // Log.d(TAG, "sort selected index:" + which + ": " + sortNames[which]); - setSortMode((String)sortNames[which]); + setSortMode((String) sortNames[which]); - } catch (IndexOutOfBoundsException e) { - e.printStackTrace(); - } + } catch (IndexOutOfBoundsException e) { + e.printStackTrace(); + } dialog.cancel(); @@ -380,11 +379,10 @@ public class MasterActivity extends OnlineActivity implements HeadlinesEventList dialog.show(); return true; - default: - Log.d(TAG, "onOptionsItemSelected, unhandled id=" + item.getItemId()); - return super.onOptionsItemSelected(item); - } - } + } + Log.d(TAG, "onOptionsItemSelected, unhandled id=" + item.getItemId()); + return super.onOptionsItemSelected(item); + } @Override public void onBackPressed() { 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 2350187e..69fc8141 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 @@ -439,53 +439,52 @@ public class OnlineActivity extends CommonActivity { .getMenuInfo(); */ final ArticlePager ap = (ArticlePager)getSupportFragmentManager().findFragmentByTag(FRAG_ARTICLE); - - switch (item.getItemId()) { - case R.id.article_img_open: - if (getLastContentImageHitTestUrl() != null) { - try { - openUri(Uri.parse(getLastContentImageHitTestUrl())); - } catch (Exception e) { - e.printStackTrace(); - toast(R.string.error_other_error); - } - } - return true; - case R.id.article_img_copy: - if (getLastContentImageHitTestUrl() != null) { - copyToClipboard(getLastContentImageHitTestUrl()); - } - return true; - case R.id.article_img_share: - if (getLastContentImageHitTestUrl() != null) { - shareImageFromUri(getLastContentImageHitTestUrl()); - } - return true; - case R.id.article_img_share_url: - if (getLastContentImageHitTestUrl() != null) { - shareText(getLastContentImageHitTestUrl()); - } - return true; - case R.id.article_img_view_caption: - if (getLastContentImageHitTestUrl() != null) { - displayImageCaption(getLastContentImageHitTestUrl(), ap.getSelectedArticle().content); + + int itemId = item.getItemId(); + if (itemId == R.id.article_img_open) { + if (getLastContentImageHitTestUrl() != null) { + try { + openUri(Uri.parse(getLastContentImageHitTestUrl())); + } catch (Exception e) { + e.printStackTrace(); + toast(R.string.error_other_error); + } } return true; - case R.id.article_link_share: - if (ap != null && ap.getSelectedArticle() != null) { - shareArticle(ap.getSelectedArticle()); - } - return true; - case R.id.article_link_copy: - if (ap != null && ap.getSelectedArticle() != null) { - copyToClipboard(ap.getSelectedArticle().link); - } - return true; - default: - Log.d(TAG, "onContextItemSelected, unhandled id=" + item.getItemId()); - return super.onContextItemSelected(item); - } - } + } else if (itemId == R.id.article_img_copy) { + if (getLastContentImageHitTestUrl() != null) { + copyToClipboard(getLastContentImageHitTestUrl()); + } + return true; + } else if (itemId == R.id.article_img_share) { + if (getLastContentImageHitTestUrl() != null) { + shareImageFromUri(getLastContentImageHitTestUrl()); + } + return true; + } else if (itemId == R.id.article_img_share_url) { + if (getLastContentImageHitTestUrl() != null) { + shareText(getLastContentImageHitTestUrl()); + } + return true; + } else if (itemId == R.id.article_img_view_caption) { + if (getLastContentImageHitTestUrl() != null) { + displayImageCaption(getLastContentImageHitTestUrl(), ap.getSelectedArticle().content); + } + return true; + } else if (itemId == R.id.article_link_share) { + if (ap != null && ap.getSelectedArticle() != null) { + shareArticle(ap.getSelectedArticle()); + } + return true; + } else if (itemId == R.id.article_link_copy) { + if (ap != null && ap.getSelectedArticle() != null) { + copyToClipboard(ap.getSelectedArticle().link); + } + return true; + } + Log.d(TAG, "onContextItemSelected, unhandled id=" + item.getItemId()); + return super.onContextItemSelected(item); + } public void displayAttachments(Article article) { if (article != null && article.attachments != null && article.attachments.size() > 0) { @@ -543,11 +542,11 @@ public class OnlineActivity extends CommonActivity { final HeadlinesFragment hf = (HeadlinesFragment) getSupportFragmentManager().findFragmentByTag(FRAG_HEADLINES); final ArticlePager ap = (ArticlePager)getSupportFragmentManager().findFragmentByTag(FRAG_ARTICLE); - switch (item.getItemId()) { - case R.id.subscribe_to_feed: - Intent subscribe = new Intent(OnlineActivity.this, SubscribeActivity.class); - startActivityForResult(subscribe, 0); - return true; + int itemId = item.getItemId(); + if (itemId == R.id.subscribe_to_feed) { + Intent subscribe = new Intent(OnlineActivity.this, SubscribeActivity.class); + startActivityForResult(subscribe, 0); + return true; /*case R.id.toggle_attachments: if (true) { Article article = ap.getSelectedArticle(); @@ -560,230 +559,230 @@ public class OnlineActivity extends CommonActivity { /*case R.id.logout: logout(); return true;*/ - case R.id.login: - login(); - return true; + } else if (itemId == R.id.login) { + login(); + return true; /*case R.id.go_offline: switchOffline(); return true;*/ - case R.id.article_set_note: - if (ap != null && ap.getSelectedArticle() != null) { - editArticleNote(ap.getSelectedArticle()); - } - return true; - case R.id.preferences: - Intent intent = new Intent(OnlineActivity.this, - PreferencesActivity.class); - startActivityForResult(intent, 0); - return true; - case R.id.search: - if (hf != null) { - Dialog dialog = new Dialog(this); + } else if (itemId == R.id.article_set_note) { + if (ap != null && ap.getSelectedArticle() != null) { + editArticleNote(ap.getSelectedArticle()); + } + return true; + } else if (itemId == R.id.preferences) { + Intent intent = new Intent(OnlineActivity.this, + PreferencesActivity.class); + startActivityForResult(intent, 0); + return true; + } else if (itemId == R.id.search) { + if (hf != null) { + Dialog dialog = new Dialog(this); - final EditText edit = new EditText(this); + final EditText edit = new EditText(this); - AlertDialog.Builder builder = new AlertDialog.Builder(this) - .setTitle(R.string.search) - .setPositiveButton(getString(R.string.search), - new OnClickListener() { + AlertDialog.Builder builder = new AlertDialog.Builder(this) + .setTitle(R.string.search) + .setPositiveButton(getString(R.string.search), + new OnClickListener() { - @Override - public void onClick(DialogInterface dialog, - int which) { - - String query = edit.getText().toString().trim(); - - hf.setSearchQuery(query); + @Override + public void onClick(DialogInterface dialog, + int which) { - } - }) - .setNegativeButton(getString(R.string.cancel), - new OnClickListener() { + String query = edit.getText().toString().trim(); - @Override - public void onClick(DialogInterface dialog, - int which) { - - // + hf.setSearchQuery(query); - } - }).setView(edit); - - dialog = builder.create(); - dialog.show(); - } - return true; - case R.id.headlines_mark_as_read: - if (hf != null) { + } + }) + .setNegativeButton(getString(R.string.cancel), + new OnClickListener() { - Feed feed = hf.getFeed(); + @Override + public void onClick(DialogInterface dialog, + int which) { - if (feed != null) { - catchupDialog(hf.getFeed()); - } - } - return true; - case R.id.headlines_display_mode: - if (hf != null) { - Dialog dialog = new Dialog(this); + // - String headlineMode = m_prefs.getString("headline_mode", "HL_DEFAULT"); - String[] headlineModeNames = getResources().getStringArray(R.array.headline_mode_names); - final String[] headlineModeValues = getResources().getStringArray(R.array.headline_mode_values); + } + }).setView(edit); - int selectedIndex = Arrays.asList(headlineModeValues).indexOf(headlineMode); + dialog = builder.create(); + dialog.show(); + } + return true; + } else if (itemId == R.id.headlines_mark_as_read) { + if (hf != null) { - AlertDialog.Builder builder = new AlertDialog.Builder(this) - .setTitle(R.string.headlines_set_view_mode) - .setSingleChoiceItems(headlineModeNames, - selectedIndex, new DialogInterface.OnClickListener() { - @Override - public void onClick(DialogInterface dialog, - int which) { - dialog.cancel(); + Feed feed = hf.getFeed(); - SharedPreferences.Editor editor = m_prefs.edit(); - editor.putString("headline_mode", headlineModeValues[which]); - editor.apply(); + if (feed != null) { + catchupDialog(hf.getFeed()); + } + } + return true; + } else if (itemId == R.id.headlines_display_mode) { + if (hf != null) { + Dialog dialog = new Dialog(this); - Intent intent = getIntent(); + String headlineMode = m_prefs.getString("headline_mode", "HL_DEFAULT"); + String[] headlineModeNames = getResources().getStringArray(R.array.headline_mode_names); + final String[] headlineModeValues = getResources().getStringArray(R.array.headline_mode_values); - Feed feed = hf.getFeed(); + int selectedIndex = Arrays.asList(headlineModeValues).indexOf(headlineMode); - if (feed != null) { - intent.putExtra("feed_id", feed.id); - intent.putExtra("feed_is_cat", feed.is_cat); - intent.putExtra("feed_title", feed.title); - } + AlertDialog.Builder builder = new AlertDialog.Builder(this) + .setTitle(R.string.headlines_set_view_mode) + .setSingleChoiceItems(headlineModeNames, + selectedIndex, new OnClickListener() { + @Override + public void onClick(DialogInterface dialog, + int which) { + dialog.cancel(); - finish(); + SharedPreferences.Editor editor = m_prefs.edit(); + editor.putString("headline_mode", headlineModeValues[which]); + editor.apply(); - startActivity(intent); - overridePendingTransition(0, 0); - } - }); + Intent intent = getIntent(); - dialog = builder.create(); - dialog.show(); + Feed feed = hf.getFeed(); - } - return true; - case R.id.headlines_view_mode: - if (hf != null) { - Dialog dialog = new Dialog(this); - - String viewMode = getViewMode(); - - //Log.d(TAG, "viewMode:" + getViewMode()); - - int selectedIndex = 0; - - if (viewMode.equals("all_articles")) { - selectedIndex = 1; - } else if (viewMode.equals("marked")) { - selectedIndex = 2; - } else if (viewMode.equals("published")) { - selectedIndex = 3; - } else if (viewMode.equals("unread")) { - selectedIndex = 4; - } - - AlertDialog.Builder builder = new AlertDialog.Builder(this) - .setTitle(R.string.headlines_set_view_mode) - .setSingleChoiceItems( - new String[] { - getString(R.string.headlines_adaptive), - getString(R.string.headlines_all_articles), - getString(R.string.headlines_starred), - getString(R.string.headlines_published), - getString(R.string.headlines_unread) }, - selectedIndex, new DialogInterface.OnClickListener() { - @Override - public void onClick(DialogInterface dialog, - int which) { - switch (which) { - case 0: - setViewMode("adaptive"); - break; - case 1: - setViewMode("all_articles"); - break; - case 2: - setViewMode("marked"); - break; - case 3: - setViewMode("published"); - break; - case 4: - setViewMode("unread"); - break; - } - dialog.cancel(); + if (feed != null) { + intent.putExtra("feed_id", feed.id); + intent.putExtra("feed_is_cat", feed.is_cat); + intent.putExtra("feed_title", feed.title); + } - refresh(); - } - }); + finish(); - dialog = builder.create(); - dialog.show(); + startActivity(intent); + overridePendingTransition(0, 0); + } + }); - } - return true; - case R.id.headlines_select: - if (hf != null) { - Dialog dialog = new Dialog(this); - AlertDialog.Builder builder = new AlertDialog.Builder(this) - .setTitle(R.string.headlines_select_dialog) - .setSingleChoiceItems( - new String[] { - getString(R.string.headlines_select_all), - getString(R.string.headlines_select_unread), - getString(R.string.headlines_select_none) }, - 0, new DialogInterface.OnClickListener() { - @Override - public void onClick(DialogInterface dialog, - int which) { - switch (which) { - case 0: - hf.setSelection(HeadlinesFragment.ArticlesSelection.ALL); - break; - case 1: - hf.setSelection(HeadlinesFragment.ArticlesSelection.UNREAD); - break; - case 2: - hf.setSelection(HeadlinesFragment.ArticlesSelection.NONE); - break; - } - dialog.cancel(); - invalidateOptionsMenu(); - } - }); + dialog = builder.create(); + dialog.show(); - dialog = builder.create(); - dialog.show(); - } - return true; + } + return true; + } else if (itemId == R.id.headlines_view_mode) { + if (hf != null) { + Dialog dialog = new Dialog(this); + + String viewMode = getViewMode(); + + //Log.d(TAG, "viewMode:" + getViewMode()); + + int selectedIndex = 0; + + if (viewMode.equals("all_articles")) { + selectedIndex = 1; + } else if (viewMode.equals("marked")) { + selectedIndex = 2; + } else if (viewMode.equals("published")) { + selectedIndex = 3; + } else if (viewMode.equals("unread")) { + selectedIndex = 4; + } + + AlertDialog.Builder builder = new AlertDialog.Builder(this) + .setTitle(R.string.headlines_set_view_mode) + .setSingleChoiceItems( + new String[]{ + getString(R.string.headlines_adaptive), + getString(R.string.headlines_all_articles), + getString(R.string.headlines_starred), + getString(R.string.headlines_published), + getString(R.string.headlines_unread)}, + selectedIndex, new OnClickListener() { + @Override + public void onClick(DialogInterface dialog, + int which) { + switch (which) { + case 0: + setViewMode("adaptive"); + break; + case 1: + setViewMode("all_articles"); + break; + case 2: + setViewMode("marked"); + break; + case 3: + setViewMode("published"); + break; + case 4: + setViewMode("unread"); + break; + } + dialog.cancel(); + + refresh(); + } + }); + + dialog = builder.create(); + dialog.show(); + + } + return true; + } else if (itemId == R.id.headlines_select) { + if (hf != null) { + Dialog dialog = new Dialog(this); + AlertDialog.Builder builder = new AlertDialog.Builder(this) + .setTitle(R.string.headlines_select_dialog) + .setSingleChoiceItems( + new String[]{ + getString(R.string.headlines_select_all), + getString(R.string.headlines_select_unread), + getString(R.string.headlines_select_none)}, + 0, new OnClickListener() { + @Override + public void onClick(DialogInterface dialog, + int which) { + switch (which) { + case 0: + hf.setSelection(HeadlinesFragment.ArticlesSelection.ALL); + break; + case 1: + hf.setSelection(HeadlinesFragment.ArticlesSelection.UNREAD); + break; + case 2: + hf.setSelection(HeadlinesFragment.ArticlesSelection.NONE); + break; + } + dialog.cancel(); + invalidateOptionsMenu(); + } + }); + + dialog = builder.create(); + dialog.show(); + } + return true; /* case R.id.share_article: if (ap != null) { shareArticle(ap.getSelectedArticle()); } return true; */ - case R.id.toggle_marked: - if (ap != null && ap.getSelectedArticle() != null) { - Article a = ap.getSelectedArticle(); - a.marked = !a.marked; - saveArticleMarked(a); - if (hf != null) hf.notifyUpdated(); - } - return true; - case R.id.toggle_unread: - if (ap != null && ap.getSelectedArticle() != null) { - Article a = ap.getSelectedArticle(); - a.unread = !a.unread; - saveArticleUnread(a); - if (hf != null) hf.notifyUpdated(); - } - return true; + } else if (itemId == R.id.toggle_marked) { + if (ap != null && ap.getSelectedArticle() != null) { + Article a = ap.getSelectedArticle(); + a.marked = !a.marked; + saveArticleMarked(a); + if (hf != null) hf.notifyUpdated(); + } + return true; + } else if (itemId == R.id.toggle_unread) { + if (ap != null && ap.getSelectedArticle() != null) { + Article a = ap.getSelectedArticle(); + a.unread = !a.unread; + saveArticleUnread(a); + if (hf != null) hf.notifyUpdated(); + } + return true; /* case R.id.selection_select_none: if (hf != null) { ArticleList selected = hf.getSelectedArticles(); @@ -794,105 +793,104 @@ public class OnlineActivity extends CommonActivity { } } return true; */ - case R.id.selection_toggle_unread: - if (hf != null) { - ArticleList selected = hf.getSelectedArticles(); + } else if (itemId == R.id.selection_toggle_unread) { + if (hf != null) { + ArticleList selected = hf.getSelectedArticles(); - if (selected.size() > 0) { - for (Article a : selected) - a.unread = !a.unread; + if (selected.size() > 0) { + for (Article a : selected) + a.unread = !a.unread; - toggleArticlesUnread(selected); - hf.notifyUpdated(); - invalidateOptionsMenu(); - } - } - return true; - case R.id.selection_toggle_marked: - if (hf != null) { - ArticleList selected = hf.getSelectedArticles(); + toggleArticlesUnread(selected); + hf.notifyUpdated(); + invalidateOptionsMenu(); + } + } + return true; + } else if (itemId == R.id.selection_toggle_marked) { + if (hf != null) { + ArticleList selected = hf.getSelectedArticles(); - if (selected.size() > 0) { - for (Article a : selected) - a.marked = !a.marked; + if (selected.size() > 0) { + for (Article a : selected) + a.marked = !a.marked; - toggleArticlesMarked(selected); - hf.notifyUpdated(); - invalidateOptionsMenu(); - } - } - return true; - case R.id.selection_toggle_published: - if (hf != null) { - ArticleList selected = hf.getSelectedArticles(); + toggleArticlesMarked(selected); + hf.notifyUpdated(); + invalidateOptionsMenu(); + } + } + return true; + } else if (itemId == R.id.selection_toggle_published) { + if (hf != null) { + ArticleList selected = hf.getSelectedArticles(); - if (selected.size() > 0) { - for (Article a : selected) - a.published = !a.published; + if (selected.size() > 0) { + for (Article a : selected) + a.published = !a.published; - toggleArticlesPublished(selected); - hf.notifyUpdated(); - invalidateOptionsMenu(); - } - } - return true; - case R.id.toggle_published: - if (ap != null && ap.getSelectedArticle() != null) { - Article a = ap.getSelectedArticle(); - a.published = !a.published; - saveArticlePublished(a); - if (hf != null) hf.notifyUpdated(); - } - return true; - case R.id.catchup_above: - if (hf != null) { + toggleArticlesPublished(selected); + hf.notifyUpdated(); + invalidateOptionsMenu(); + } + } + return true; + } else if (itemId == R.id.toggle_published) { + if (ap != null && ap.getSelectedArticle() != null) { + Article a = ap.getSelectedArticle(); + a.published = !a.published; + saveArticlePublished(a); + if (hf != null) hf.notifyUpdated(); + } + return true; + } else if (itemId == R.id.catchup_above) { + if (hf != null) { - AlertDialog.Builder builder = new AlertDialog.Builder( - OnlineActivity.this) - .setMessage(R.string.confirm_catchup_above) - .setPositiveButton(R.string.dialog_ok, - new Dialog.OnClickListener() { - public void onClick(DialogInterface dialog, - int which) { + AlertDialog.Builder builder = new AlertDialog.Builder( + OnlineActivity.this) + .setMessage(R.string.confirm_catchup_above) + .setPositiveButton(R.string.dialog_ok, + new OnClickListener() { + public void onClick(DialogInterface dialog, + int which) { - catchupAbove(hf, ap); + catchupAbove(hf, ap); - } - }) - .setNegativeButton(R.string.dialog_cancel, - new Dialog.OnClickListener() { - public void onClick(DialogInterface dialog, - int which) { + } + }) + .setNegativeButton(R.string.dialog_cancel, + new OnClickListener() { + public void onClick(DialogInterface dialog, + int which) { - } - }); + } + }); - AlertDialog dialog = builder.create(); - dialog.show(); + AlertDialog dialog = builder.create(); + dialog.show(); - } - return true; - case R.id.set_labels: - if (ap != null && ap.getSelectedArticle() != null) { - if (getApiLevel() != 7) { - editArticleLabels(ap.getSelectedArticle()); - } else { - toast(R.string.server_function_not_available); - } - - } - return true; + } + return true; + } else if (itemId == R.id.set_labels) { + if (ap != null && ap.getSelectedArticle() != null) { + if (getApiLevel() != 7) { + editArticleLabels(ap.getSelectedArticle()); + } else { + toast(R.string.server_function_not_available); + } + + } + return true; /*case R.id.update_headlines: if (hf != null) { //m_pullToRefreshAttacher.setRefreshing(true); hf.refresh(false, true); } return true;*/ - default: - Log.d(TAG, "onOptionsItemSelected, unhandled id=" + item.getItemId()); - return super.onOptionsItemSelected(item); - } - } + } + Log.d(TAG, "onOptionsItemSelected, unhandled id=" + item.getItemId()); + return super.onOptionsItemSelected(item); + } private void catchupAbove(HeadlinesFragment hf, ArticlePager ap) { if (ap != null && ap.getSelectedArticle() != null) { 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 af321a5a..2f8237bd 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 @@ -36,13 +36,11 @@ public class PreferencesActivity extends CommonActivity { @Override public boolean onOptionsItemSelected(MenuItem item) { - switch (item.getItemId()) { - case android.R.id.home: - onBackPressed(); - return true; - default: - return super.onOptionsItemSelected(item); + if (item.getItemId() == android.R.id.home) { + onBackPressed(); + return true; } + return super.onOptionsItemSelected(item); } } 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 5b63356d..4c2e92a7 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 @@ -100,54 +100,53 @@ public class OfflineActivity extends CommonActivity { .getMenuInfo(); */ final OfflineArticlePager ap = (OfflineArticlePager)getSupportFragmentManager().findFragmentByTag(FRAG_ARTICLE); - - switch (item.getItemId()) { - case R.id.article_img_open: - if (getLastContentImageHitTestUrl() != null) { - try { - openUri(Uri.parse(getLastContentImageHitTestUrl())); - } catch (Exception e) { - e.printStackTrace(); - toast(R.string.error_other_error); - } - } - return true; - case R.id.article_img_copy: - if (getLastContentImageHitTestUrl() != null) { - copyToClipboard(getLastContentImageHitTestUrl()); - } - return true; - case R.id.article_img_share: - if (getLastContentImageHitTestUrl() != null) { - shareImageFromUri(getLastContentImageHitTestUrl()); - } - return true; - case R.id.article_img_share_url: - if (getLastContentImageHitTestUrl() != null) { - shareText(getLastContentImageHitTestUrl()); - } - return true; - case R.id.article_img_view_caption: - if (getLastContentImageHitTestUrl() != null) { - String content = ""; - - Cursor article = getArticleById(ap.getSelectedArticleId()); - - if (article != null) { - content = article.getString(article.getColumnIndex("content")); - article.close(); - } + int itemId = item.getItemId(); + if (itemId == R.id.article_img_open) { + if (getLastContentImageHitTestUrl() != null) { + try { + openUri(Uri.parse(getLastContentImageHitTestUrl())); + } catch (Exception e) { + e.printStackTrace(); + toast(R.string.error_other_error); + } + } + return true; + } else if (itemId == R.id.article_img_copy) { + if (getLastContentImageHitTestUrl() != null) { + copyToClipboard(getLastContentImageHitTestUrl()); + } + return true; + } else if (itemId == R.id.article_img_share) { + if (getLastContentImageHitTestUrl() != null) { + shareImageFromUri(getLastContentImageHitTestUrl()); + } + return true; + } else if (itemId == R.id.article_img_share_url) { + if (getLastContentImageHitTestUrl() != null) { + shareText(getLastContentImageHitTestUrl()); + } + return true; + } else if (itemId == R.id.article_img_view_caption) { + if (getLastContentImageHitTestUrl() != null) { + + String content = ""; + + Cursor article = getArticleById(ap.getSelectedArticleId()); - displayImageCaption(getLastContentImageHitTestUrl(), content); + if (article != null) { + content = article.getString(article.getColumnIndex("content")); + article.close(); + } + + displayImageCaption(getLastContentImageHitTestUrl(), content); } return true; - default: - Log.d(TAG, "onContextItemSelected, unhandled id=" + item.getItemId()); - return super.onContextItemSelected(item); - } - - } + } + Log.d(TAG, "onContextItemSelected, unhandled id=" + item.getItemId()); + return super.onContextItemSelected(item); + + } @Override public void onCreate(Bundle savedInstanceState) { @@ -244,303 +243,299 @@ public class OfflineActivity extends CommonActivity { final OfflineArticlePager oap = (OfflineArticlePager) getSupportFragmentManager() .findFragmentByTag(FRAG_ARTICLE); - switch (item.getItemId()) { - /* case android.R.id.home: + int itemId = item.getItemId();/* case android.R.id.home: finish(); - return true; */ - /* case R.id.headlines_toggle_sidebar: + return true; *//* case R.id.headlines_toggle_sidebar: if (true && !isSmallScreen()) { SharedPreferences.Editor editor = m_prefs.edit(); editor.putBoolean("headlines_hide_sidebar", !m_prefs.getBoolean("headlines_hide_sidebar", false)); editor.commit(); - + if (ohf != null && ohf.isAdded()) { ohf.getView().setVisibility(m_prefs.getBoolean("headlines_hide_sidebar", false) ? View.GONE : View.VISIBLE); } } - return true; */ - /*case R.id.go_online: + return true; *//*case R.id.go_online: switchOnline(); return true;*/ - case R.id.search: - if (ohf != null) { - Dialog dialog = new Dialog(this); - - final EditText edit = new EditText(this); - - AlertDialog.Builder builder = new AlertDialog.Builder(this) - .setTitle(R.string.search) - .setPositiveButton(getString(R.string.search), - new OnClickListener() { - - @Override - public void onClick(DialogInterface dialog, - int which) { - - String query = edit.getText().toString().trim(); - - ohf.setSearchQuery(query); - - } - }) - .setNegativeButton(getString(R.string.cancel), - new OnClickListener() { - - @Override - public void onClick(DialogInterface dialog, - int which) { - - // - - } - }).setView(edit); - - dialog = builder.create(); - dialog.show(); - } - - return true; - case R.id.preferences: - Intent intent = new Intent(this, PreferencesActivity.class); - startActivityForResult(intent, 0); - return true; - case R.id.headlines_view_mode: - if (ohf != null) { - Dialog dialog = new Dialog(this); - - String viewMode = getViewMode(); - - //Log.d(TAG, "viewMode:" + getViewMode()); + if (itemId == R.id.search) { + if (ohf != null) { + Dialog dialog = new Dialog(this); - int selectedIndex = 0; - - if (viewMode.equals("all_articles")) { - selectedIndex = 0; - } else if (viewMode.equals("marked")) { - selectedIndex = 1; - } else if (viewMode.equals("published")) { - selectedIndex = 2; - } else if (viewMode.equals("unread")) { - selectedIndex = 3; - } - - AlertDialog.Builder builder = new AlertDialog.Builder(this) - .setTitle(R.string.headlines_set_view_mode) - .setSingleChoiceItems( - new String[] { - /* getString(R.string.headlines_adaptive), */ - getString(R.string.headlines_all_articles), - getString(R.string.headlines_starred), - getString(R.string.headlines_published), - getString(R.string.headlines_unread) }, - selectedIndex, new DialogInterface.OnClickListener() { - @Override - public void onClick(DialogInterface dialog, - int which) { - switch (which) { + final EditText edit = new EditText(this); + + AlertDialog.Builder builder = new AlertDialog.Builder(this) + .setTitle(R.string.search) + .setPositiveButton(getString(R.string.search), + new OnClickListener() { + + @Override + public void onClick(DialogInterface dialog, + int which) { + + String query = edit.getText().toString().trim(); + + ohf.setSearchQuery(query); + + } + }) + .setNegativeButton(getString(R.string.cancel), + new OnClickListener() { + + @Override + public void onClick(DialogInterface dialog, + int which) { + + // + + } + }).setView(edit); + + dialog = builder.create(); + dialog.show(); + } + + return true; + } else if (itemId == R.id.preferences) { + Intent intent = new Intent(this, PreferencesActivity.class); + startActivityForResult(intent, 0); + return true; + } else if (itemId == R.id.headlines_view_mode) { + if (ohf != null) { + Dialog dialog = new Dialog(this); + + String viewMode = getViewMode(); + + //Log.d(TAG, "viewMode:" + getViewMode()); + + int selectedIndex = 0; + + if (viewMode.equals("all_articles")) { + selectedIndex = 0; + } else if (viewMode.equals("marked")) { + selectedIndex = 1; + } else if (viewMode.equals("published")) { + selectedIndex = 2; + } else if (viewMode.equals("unread")) { + selectedIndex = 3; + } + + AlertDialog.Builder builder = new AlertDialog.Builder(this) + .setTitle(R.string.headlines_set_view_mode) + .setSingleChoiceItems( + new String[]{ + /* getString(R.string.headlines_adaptive), */ + getString(R.string.headlines_all_articles), + getString(R.string.headlines_starred), + getString(R.string.headlines_published), + getString(R.string.headlines_unread)}, + selectedIndex, new OnClickListener() { + @Override + public void onClick(DialogInterface dialog, + int which) { + switch (which) { /* case 0: setViewMode("adaptive"); break; */ - case 0: - setViewMode("all_articles"); - break; - case 1: - setViewMode("marked"); - break; - case 2: - setViewMode("published"); - break; - case 3: - setViewMode("unread"); - break; - } - dialog.cancel(); - - refresh(); - } - }); - - dialog = builder.create(); - dialog.show(); + case 0: + setViewMode("all_articles"); + break; + case 1: + setViewMode("marked"); + break; + case 2: + setViewMode("published"); + break; + case 3: + setViewMode("unread"); + break; + } + dialog.cancel(); + + refresh(); + } + }); + + dialog = builder.create(); + dialog.show(); - } - return true; - case R.id.headlines_select: - if (ohf != null) { - Dialog dialog = new Dialog(this); - AlertDialog.Builder builder = new AlertDialog.Builder(this); - builder.setTitle(R.string.headlines_select_dialog); - - builder.setSingleChoiceItems(new String[] { - getString(R.string.headlines_select_all), - getString(R.string.headlines_select_unread), - getString(R.string.headlines_select_none) }, 0, - new DialogInterface.OnClickListener() { - @Override - public void onClick(DialogInterface dialog, - int which) { - - selectArticles(ohf.getFeedId(), ohf.getFeedIsCat(), which); - invalidateOptionsMenu(); - refresh(); - - dialog.cancel(); - } - }); - - dialog = builder.create(); - dialog.show(); - } - return true; - case R.id.headlines_mark_as_read: - if (ohf != null) { - final int feedId = ohf.getFeedId(); - final boolean isCat = ohf.getFeedIsCat(); - - int count = getUnreadArticleCount(feedId, isCat); - - if (count > 0) { - AlertDialog.Builder builder = new AlertDialog.Builder( - OfflineActivity.this) - .setMessage(getResources().getQuantityString(R.plurals.mark_num_headlines_as_read, count, count)) - .setPositiveButton(R.string.catchup, - new Dialog.OnClickListener() { - public void onClick(DialogInterface dialog, - int which) { - - catchupFeed(feedId, isCat); - - } - }) - .setNegativeButton(R.string.dialog_cancel, - new Dialog.OnClickListener() { - public void onClick(DialogInterface dialog, - int which) { - - } - }); - - AlertDialog dlg = builder.create(); - dlg.show(); - } - } - return true; + } + return true; + } else if (itemId == R.id.headlines_select) { + if (ohf != null) { + Dialog dialog = new Dialog(this); + AlertDialog.Builder builder = new AlertDialog.Builder(this); + builder.setTitle(R.string.headlines_select_dialog); + + builder.setSingleChoiceItems(new String[]{ + getString(R.string.headlines_select_all), + getString(R.string.headlines_select_unread), + getString(R.string.headlines_select_none)}, 0, + new OnClickListener() { + @Override + public void onClick(DialogInterface dialog, + int which) { + + selectArticles(ohf.getFeedId(), ohf.getFeedIsCat(), which); + invalidateOptionsMenu(); + refresh(); + + dialog.cancel(); + } + }); + + dialog = builder.create(); + dialog.show(); + } + return true; + } else if (itemId == R.id.headlines_mark_as_read) { + if (ohf != null) { + final int feedId = ohf.getFeedId(); + final boolean isCat = ohf.getFeedIsCat(); + + int count = getUnreadArticleCount(feedId, isCat); + + if (count > 0) { + AlertDialog.Builder builder = new AlertDialog.Builder( + OfflineActivity.this) + .setMessage(getResources().getQuantityString(R.plurals.mark_num_headlines_as_read, count, count)) + .setPositiveButton(R.string.catchup, + new OnClickListener() { + public void onClick(DialogInterface dialog, + int which) { + + catchupFeed(feedId, isCat); + + } + }) + .setNegativeButton(R.string.dialog_cancel, + new OnClickListener() { + public void onClick(DialogInterface dialog, + int which) { + + } + }); + + AlertDialog dlg = builder.create(); + dlg.show(); + } + } + return true; /* case R.id.share_article: if (true) { int articleId = oap.getSelectedArticleId(); - + shareArticle(articleId); } return true; */ - case R.id.toggle_marked: - if (oap != null) { - int articleId = oap.getSelectedArticleId(); - - SQLiteStatement stmt = getDatabase().compileStatement( - "UPDATE articles SET modified = 1, modified_marked = 1, marked = NOT marked WHERE " - + BaseColumns._ID + " = ?"); - stmt.bindLong(1, articleId); - stmt.execute(); - stmt.close(); - - refresh(); - } - return true; - case R.id.toggle_unread: - if (oap != null) { - int articleId = oap.getSelectedArticleId(); - - SQLiteStatement stmt = getDatabase().compileStatement( - "UPDATE articles SET modified = 1, unread = NOT unread WHERE " - + BaseColumns._ID + " = ?"); - stmt.bindLong(1, articleId); - stmt.execute(); - stmt.close(); - - refresh(); - } - return true; + } else if (itemId == R.id.toggle_marked) { + if (oap != null) { + int articleId = oap.getSelectedArticleId(); + + SQLiteStatement stmt = getDatabase().compileStatement( + "UPDATE articles SET modified = 1, modified_marked = 1, marked = NOT marked WHERE " + + BaseColumns._ID + " = ?"); + stmt.bindLong(1, articleId); + stmt.execute(); + stmt.close(); + + refresh(); + } + return true; + } else if (itemId == R.id.toggle_unread) { + if (oap != null) { + int articleId = oap.getSelectedArticleId(); + + SQLiteStatement stmt = getDatabase().compileStatement( + "UPDATE articles SET modified = 1, unread = NOT unread WHERE " + + BaseColumns._ID + " = ?"); + stmt.bindLong(1, articleId); + stmt.execute(); + stmt.close(); + + refresh(); + } + return true; /* case R.id.selection_select_none: - deselectAllArticles(); + deselectAllArticles(); return true; */ - case R.id.selection_toggle_unread: - if (getSelectedArticleCount() > 0) { - SQLiteStatement stmt = getDatabase() - .compileStatement( - "UPDATE articles SET modified = 1, unread = NOT unread WHERE selected = 1"); - stmt.execute(); - stmt.close(); - - refresh(); - } - return true; - case R.id.selection_toggle_marked: - if (getSelectedArticleCount() > 0) { - SQLiteStatement stmt = getDatabase() - .compileStatement( - "UPDATE articles SET modified = 1, modified_marked = 1, marked = NOT marked WHERE selected = 1"); - stmt.execute(); - stmt.close(); - - refresh(); - } - return true; - case R.id.selection_toggle_published: - if (getSelectedArticleCount() > 0) { - SQLiteStatement stmt = getDatabase() - .compileStatement( - "UPDATE articles SET modified = 1, modified_published = 1, published = NOT published WHERE selected = 1"); - stmt.execute(); - stmt.close(); - - refresh(); - } - return true; - case R.id.toggle_published: - if (oap != null) { - int articleId = oap.getSelectedArticleId(); - - SQLiteStatement stmt = getDatabase().compileStatement( - "UPDATE articles SET modified = 1, modified_published = 1, published = NOT published WHERE " - + BaseColumns._ID + " = ?"); - stmt.bindLong(1, articleId); - stmt.execute(); - stmt.close(); - - refresh(); - } - return true; - case R.id.catchup_above: - if (oap != null) { - AlertDialog.Builder builder = new AlertDialog.Builder( - OfflineActivity.this) - .setMessage(R.string.confirm_catchup_above) - .setPositiveButton(R.string.dialog_ok, - new Dialog.OnClickListener() { - public void onClick(DialogInterface dialog, - int which) { - - catchupAbove(oap); - - } - }) - .setNegativeButton(R.string.dialog_cancel, - new Dialog.OnClickListener() { - public void onClick(DialogInterface dialog, - int which) { - - } - }); - - AlertDialog dlg = builder.create(); - dlg.show(); - } - return true; - default: - Log.d(TAG, "onOptionsItemSelected, unhandled id=" + item.getItemId()); - return super.onOptionsItemSelected(item); - } - } + } else if (itemId == R.id.selection_toggle_unread) { + if (getSelectedArticleCount() > 0) { + SQLiteStatement stmt = getDatabase() + .compileStatement( + "UPDATE articles SET modified = 1, unread = NOT unread WHERE selected = 1"); + stmt.execute(); + stmt.close(); + + refresh(); + } + return true; + } else if (itemId == R.id.selection_toggle_marked) { + if (getSelectedArticleCount() > 0) { + SQLiteStatement stmt = getDatabase() + .compileStatement( + "UPDATE articles SET modified = 1, modified_marked = 1, marked = NOT marked WHERE selected = 1"); + stmt.execute(); + stmt.close(); + + refresh(); + } + return true; + } else if (itemId == R.id.selection_toggle_published) { + if (getSelectedArticleCount() > 0) { + SQLiteStatement stmt = getDatabase() + .compileStatement( + "UPDATE articles SET modified = 1, modified_published = 1, published = NOT published WHERE selected = 1"); + stmt.execute(); + stmt.close(); + + refresh(); + } + return true; + } else if (itemId == R.id.toggle_published) { + if (oap != null) { + int articleId = oap.getSelectedArticleId(); + + SQLiteStatement stmt = getDatabase().compileStatement( + "UPDATE articles SET modified = 1, modified_published = 1, published = NOT published WHERE " + + BaseColumns._ID + " = ?"); + stmt.bindLong(1, articleId); + stmt.execute(); + stmt.close(); + + refresh(); + } + return true; + } else if (itemId == R.id.catchup_above) { + if (oap != null) { + AlertDialog.Builder builder = new AlertDialog.Builder( + OfflineActivity.this) + .setMessage(R.string.confirm_catchup_above) + .setPositiveButton(R.string.dialog_ok, + new OnClickListener() { + public void onClick(DialogInterface dialog, + int which) { + + catchupAbove(oap); + + } + }) + .setNegativeButton(R.string.dialog_cancel, + new OnClickListener() { + public void onClick(DialogInterface dialog, + int which) { + + } + }); + + AlertDialog dlg = builder.create(); + dlg.show(); + } + return true; + } + Log.d(TAG, "onOptionsItemSelected, unhandled id=" + item.getItemId()); + return super.onOptionsItemSelected(item); + } private void catchupAbove(OfflineArticlePager oap) { int articleId = oap.getSelectedArticleId(); diff --git a/org.fox.ttrss/src/main/java/org/fox/ttrss/share/CommonShareActivity.java b/org.fox.ttrss/src/main/java/org/fox/ttrss/share/CommonShareActivity.java index a1044988..e810f49f 100755 --- a/org.fox.ttrss/src/main/java/org/fox/ttrss/share/CommonShareActivity.java +++ b/org.fox.ttrss/src/main/java/org/fox/ttrss/share/CommonShareActivity.java @@ -94,18 +94,16 @@ public abstract class CommonShareActivity extends CommonActivity { } public boolean onOptionsItemSelected(MenuItem item) { - switch (item.getItemId()) { - case R.id.preferences: - Intent intent = new Intent(CommonShareActivity.this, - PreferencesActivity.class); - startActivityForResult(intent, 0); - return true; - default: - Log.d(TAG, - "onOptionsItemSelected, unhandled id=" + item.getItemId()); - return super.onOptionsItemSelected(item); - } - } + if (item.getItemId() == R.id.preferences) { + Intent intent = new Intent(CommonShareActivity.this, + PreferencesActivity.class); + startActivityForResult(intent, 0); + return true; + } + Log.d(TAG, + "onOptionsItemSelected, unhandled id=" + item.getItemId()); + return super.onOptionsItemSelected(item); + } @Override public boolean onCreateOptionsMenu(Menu menu) { -- cgit v1.2.3-54-g00ecf From a3851a525e81eeff11bcd3cc17741e3f9c54bbb3 Mon Sep 17 00:00:00 2001 From: Andrew Dolgov Date: Mon, 5 May 2025 15:10:29 +0300 Subject: replace more usages of switch() on resource identifier with if-else --- .../fox/ttrss/offline/OfflineArticleFragment.java | 39 +++--- .../fox/ttrss/offline/OfflineDetailActivity.java | 16 ++- .../offline/OfflineFeedCategoriesFragment.java | 61 +++++----- .../fox/ttrss/offline/OfflineFeedsFragment.java | 39 +++--- .../ttrss/offline/OfflineHeadlinesFragment.java | 131 ++++++++++----------- .../fox/ttrss/offline/OfflineMasterActivity.java | 17 ++- 6 files changed, 147 insertions(+), 156 deletions(-) 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 a3b152a7..3f452a63 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 @@ -127,26 +127,25 @@ public class OfflineArticleFragment extends Fragment { public boolean onContextItemSelected(MenuItem item) { /* AdapterContextMenuInfo info = (AdapterContextMenuInfo) item .getMenuInfo(); */ - - switch (item.getItemId()) { - case R.id.article_link_share: - m_activity.shareArticle(m_articleId); - return true; - case R.id.article_link_copy: - if (true) { - Cursor article = m_activity.getArticleById(m_articleId); - - if (article != null) { - m_activity.copyToClipboard(article.getString(article.getColumnIndex("link"))); - article.close(); - } - } - return true; - default: - Log.d(TAG, "onContextItemSelected, unhandled id=" + item.getItemId()); - return super.onContextItemSelected(item); - } - } + + int itemId = item.getItemId(); + if (itemId == R.id.article_link_share) { + m_activity.shareArticle(m_articleId); + return true; + } else if (itemId == R.id.article_link_copy) { + if (true) { + Cursor article = m_activity.getArticleById(m_articleId); + + if (article != null) { + m_activity.copyToClipboard(article.getString(article.getColumnIndex("link"))); + article.close(); + } + } + return true; + } + Log.d(TAG, "onContextItemSelected, unhandled id=" + item.getItemId()); + return super.onContextItemSelected(item); + } @Override public void onCreateContextMenu(ContextMenu menu, View v, 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 50335966..1f8f3dc6 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 @@ -169,15 +169,13 @@ public class OfflineDetailActivity extends OfflineActivity implements OfflineHea return true; } - switch (item.getItemId()) { - case android.R.id.home: - finish(); - return true; - default: - Log.d(TAG, "onOptionsItemSelected, unhandled id=" + item.getItemId()); - return super.onOptionsItemSelected(item); - } - } + if (item.getItemId() == android.R.id.home) { + finish(); + return true; + } + Log.d(TAG, "onOptionsItemSelected, unhandled id=" + item.getItemId()); + return super.onOptionsItemSelected(item); + } @Override public void onArticleSelected(int articleId, boolean open) { 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 40674bb8..372728e4 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 @@ -92,37 +92,36 @@ public class OfflineFeedCategoriesFragment extends BaseFeedlistFragment implemen public boolean onContextItemSelected(MenuItem item) { AdapterContextMenuInfo info = (AdapterContextMenuInfo) item .getMenuInfo(); - - switch (item.getItemId()) { - case R.id.browse_headlines: - if (true) { - int catId = getCatIdAtPosition(info.position); - if (catId != -10000) { - m_activity.onCatSelected(catId, true); - } - } - return true; - case R.id.browse_feeds: - if (true) { - int catId = getCatIdAtPosition(info.position); - if (catId != -10000) { - m_activity.onCatSelected(catId, false); - } - } - return true; - case R.id.catchup_category: - if (true) { - int catId = getCatIdAtPosition(info.position); - if (catId != -10000) { - m_activity.catchupFeed(catId, true); - } - } - return true; - default: - Log.d(TAG, "onContextItemSelected, unhandled id=" + item.getItemId()); - return super.onContextItemSelected(item); - } - } + + int itemId = item.getItemId(); + if (itemId == R.id.browse_headlines) { + if (true) { + int catId = getCatIdAtPosition(info.position); + if (catId != -10000) { + m_activity.onCatSelected(catId, true); + } + } + return true; + } else if (itemId == R.id.browse_feeds) { + if (true) { + int catId = getCatIdAtPosition(info.position); + if (catId != -10000) { + m_activity.onCatSelected(catId, false); + } + } + return true; + } else if (itemId == R.id.catchup_category) { + if (true) { + int catId = getCatIdAtPosition(info.position); + if (catId != -10000) { + m_activity.catchupFeed(catId, true); + } + } + return true; + } + Log.d(TAG, "onContextItemSelected, unhandled id=" + item.getItemId()); + return super.onContextItemSelected(item); + } @Override public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { 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 6dd85a87..c0b63330 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 @@ -56,26 +56,25 @@ public class OfflineFeedsFragment extends BaseFeedlistFragment implements OnItem public boolean onContextItemSelected(MenuItem item) { AdapterContextMenuInfo info = (AdapterContextMenuInfo) item .getMenuInfo(); - switch (item.getItemId()) { - case R.id.browse_headlines: - if (true) { - int feedId = getFeedIdAtPosition(info.position); - if (feedId != -10000) { - m_activity.onFeedSelected(feedId); - } - } - return true; - case R.id.catchup_feed: - int feedId = getFeedIdAtPosition(info.position); - if (feedId != -10000) { - m_activity.catchupFeed(feedId, false); - } - return true; - default: - Log.d(TAG, "onContextItemSelected, unhandled id=" + item.getItemId()); - return super.onContextItemSelected(item); - } - } + int itemId = item.getItemId(); + if (itemId == R.id.browse_headlines) { + if (true) { + int feedId = getFeedIdAtPosition(info.position); + if (feedId != -10000) { + m_activity.onFeedSelected(feedId); + } + } + return true; + } else if (itemId == R.id.catchup_feed) { + int feedId = getFeedIdAtPosition(info.position); + if (feedId != -10000) { + m_activity.catchupFeed(feedId, false); + } + return true; + } + Log.d(TAG, "onContextItemSelected, unhandled id=" + item.getItemId()); + return super.onContextItemSelected(item); + } @Override public void onCreateContextMenu(ContextMenu menu, View v, 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 d448117c..669e4115 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 @@ -158,79 +158,78 @@ public class OfflineHeadlinesFragment extends Fragment implements OnItemClickLis } private boolean onArticleMenuItemSelected(MenuItem item, final int articleId) { - switch (item.getItemId()) { - case R.id.headlines_article_unread: - if (true) { + int itemId = item.getItemId(); + if (itemId == R.id.headlines_article_unread) { + if (true) { - SQLiteStatement stmt = m_activity.getDatabase().compileStatement( - "UPDATE articles SET modified = 1, unread = not unread " + "WHERE " + BaseColumns._ID - + " = ?"); - - stmt.bindLong(1, articleId); - stmt.execute(); - stmt.close(); - - refresh(); - } - return true; - case R.id.headlines_article_link_copy: - if (true) { - Cursor article = m_activity.getArticleById(articleId); - - if (article != null) { - m_activity.copyToClipboard(article.getString(article.getColumnIndex("link"))); - article.close(); - } - } - return true; - case R.id.headlines_article_link_open: - if (true) { - Cursor article = m_activity.getArticleById(articleId); - - if (article != null) { - m_activity.openUri(Uri.parse(article.getString(article.getColumnIndex("link")))); + SQLiteStatement stmt = m_activity.getDatabase().compileStatement( + "UPDATE articles SET modified = 1, unread = not unread " + "WHERE " + BaseColumns._ID + + " = ?"); - // TODO: mark article as read, set modified = 1, refresh + stmt.bindLong(1, articleId); + stmt.execute(); + stmt.close(); - article.close(); - } - } - return true; - case R.id.headlines_share_article: - m_activity.shareArticle(articleId); - return true; - case R.id.catchup_above: - if (true) { - AlertDialog.Builder builder = new AlertDialog.Builder( - m_activity) - .setMessage(R.string.confirm_catchup_above) - .setPositiveButton(R.string.dialog_ok, - new Dialog.OnClickListener() { - public void onClick(DialogInterface dialog, - int which) { - - catchupAbove(articleId); + refresh(); + } + return true; + } else if (itemId == R.id.headlines_article_link_copy) { + if (true) { + Cursor article = m_activity.getArticleById(articleId); + + if (article != null) { + m_activity.copyToClipboard(article.getString(article.getColumnIndex("link"))); + article.close(); + } + } + return true; + } else if (itemId == R.id.headlines_article_link_open) { + if (true) { + Cursor article = m_activity.getArticleById(articleId); - } - }) - .setNegativeButton(R.string.dialog_cancel, - new Dialog.OnClickListener() { - public void onClick(DialogInterface dialog, - int which) { + if (article != null) { + m_activity.openUri(Uri.parse(article.getString(article.getColumnIndex("link")))); - } - }); + // TODO: mark article as read, set modified = 1, refresh - AlertDialog dialog = builder.create(); - dialog.show(); - } - return true; - default: - Log.d(TAG, "onArticleMenuItemSelected, unhandled id=" + item.getItemId()); - return false; - } + article.close(); + } + } + return true; + } else if (itemId == R.id.headlines_share_article) { + m_activity.shareArticle(articleId); + return true; + } else if (itemId == R.id.catchup_above) { + if (true) { + AlertDialog.Builder builder = new AlertDialog.Builder( + m_activity) + .setMessage(R.string.confirm_catchup_above) + .setPositiveButton(R.string.dialog_ok, + new Dialog.OnClickListener() { + public void onClick(DialogInterface dialog, + int which) { + + catchupAbove(articleId); + + } + }) + .setNegativeButton(R.string.dialog_cancel, + new Dialog.OnClickListener() { + public void onClick(DialogInterface dialog, + int which) { + + } + }); + + AlertDialog dialog = builder.create(); + dialog.show(); + } + return true; + } + Log.d(TAG, "onArticleMenuItemSelected, unhandled id=" + item.getItemId()); + return false; - } + } private void catchupAbove(int articleId) { SQLiteStatement stmt = null; 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 efd1ed97..78dad8f3 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 @@ -141,9 +141,7 @@ public class OfflineMasterActivity extends OfflineActivity implements OfflineHea return true; } - switch (item.getItemId()) { - case R.id.headlines_toggle_sort_order: - /* SharedPreferences.Editor editor = m_prefs.edit(); + if (item.getItemId() == R.id.headlines_toggle_sort_order) {/* SharedPreferences.Editor editor = m_prefs.edit(); editor.putBoolean("offline_oldest_first", !m_prefs.getBoolean("offline_oldest_first", false)); editor.commit(); refresh(); */ @@ -155,7 +153,7 @@ public class OfflineMasterActivity extends OfflineActivity implements OfflineHea AlertDialog.Builder builder = new AlertDialog.Builder(this) .setTitle(getString(R.string.headlines_sort_articles_title)) .setSingleChoiceItems( - new String[] { + new String[]{ getString(R.string.headlines_sort_default), getString(R.string.headlines_sort_oldest_first) }, @@ -175,7 +173,7 @@ public class OfflineMasterActivity extends OfflineActivity implements OfflineHea if (true) { SharedPreferences.Editor editor = m_prefs.edit(); editor.putBoolean("offline_oldest_first", true); - editor.apply(); + editor.apply(); } break; } @@ -194,11 +192,10 @@ public class OfflineMasterActivity extends OfflineActivity implements OfflineHea invalidateOptionsMenu(); refresh(); return true; */ - default: - Log.d(TAG, "onOptionsItemSelected, unhandled id=" + item.getItemId()); - return super.onOptionsItemSelected(item); - } - } + } + Log.d(TAG, "onOptionsItemSelected, unhandled id=" + item.getItemId()); + return super.onOptionsItemSelected(item); + } @Override public void onSaveInstanceState(Bundle out) { -- cgit v1.2.3-54-g00ecf From 5d602a3018c5cb1303f0b0da026de668ed221007 Mon Sep 17 00:00:00 2001 From: Andrew Dolgov Date: Mon, 5 May 2025 15:19:18 +0300 Subject: upgrade all dependencies to latest versions, bump compile SDK to 35 --- build.gradle | 2 +- org.fox.ttrss/build.gradle | 18 ++++++++++-------- 2 files changed, 11 insertions(+), 9 deletions(-) diff --git a/build.gradle b/build.gradle index 1e1d0fab..82172908 100755 --- a/build.gradle +++ b/build.gradle @@ -12,7 +12,7 @@ buildscript { allprojects { repositories { google() - maven {url "https://clojars.org/repo/"} + maven { url "https://clojars.org/repo/" } maven { url "https://jzaccone.github.io/SlidingMenu-aar" } maven { url "https://jitpack.io" } jcenter() diff --git a/org.fox.ttrss/build.gradle b/org.fox.ttrss/build.gradle index 387de61d..53cedb03 100755 --- a/org.fox.ttrss/build.gradle +++ b/org.fox.ttrss/build.gradle @@ -13,9 +13,11 @@ android { buildConfigField "long", "TIMESTAMP", System.currentTimeMillis() + "L" buildConfigField "boolean", "ENABLE_UPDATER", "false" minSdkVersion 24 + //noinspection ExpiredTargetSdkVersion targetSdkVersion 31 - versionCode 557 - versionName "1.322" + compileSdkVersion 35 + versionCode 558 + versionName "1.323" } signingConfigs { @@ -62,14 +64,14 @@ dependencies { implementation 'com.bogdwellers:pinchtozoom:0.1' implementation 'com.github.bumptech.glide:glide:3.8.0' implementation files('libs/glide-transformations-2.0.2.jar') - implementation 'androidx.recyclerview:recyclerview:1.3.2' + implementation 'androidx.recyclerview:recyclerview:1.4.0' implementation 'androidx.legacy:legacy-support-v4:1.0.0' - implementation 'androidx.appcompat:appcompat:1.6.0' - implementation 'androidx.browser:browser:1.4.0' - implementation 'androidx.coordinatorlayout:coordinatorlayout:1.2.0' + implementation 'androidx.appcompat:appcompat:1.7.0' + implementation 'androidx.browser:browser:1.8.0' + implementation 'androidx.coordinatorlayout:coordinatorlayout:1.3.0' implementation 'com.github.natario1:NestedScrollCoordinatorLayout:5a33a7dbd8' - implementation 'com.google.android.material:material:1.6.0' - implementation 'com.google.code.gson:gson:2.8.5' + implementation 'com.google.android.material:material:1.12.0' + implementation 'com.google.code.gson:gson:2.10.1' implementation 'com.ToxicBakery.viewpager.transforms:view-pager-transforms:1.2.32@aar' implementation 'me.relex:circleindicator:1.2.2@aar' implementation 'com.nineoldandroids:library:2.4.0' -- cgit v1.2.3-54-g00ecf From e9df67bbf7314e2ba6dfee14a4d37706225d4af6 Mon Sep 17 00:00:00 2001 From: Andrew Dolgov Date: Mon, 5 May 2025 15:22:59 +0300 Subject: upgrade gradle to 8.11.1 & agp to 8.7.3 --- build.gradle | 2 +- gradle/wrapper/gradle-wrapper.properties | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/build.gradle b/build.gradle index 82172908..4a759c38 100755 --- a/build.gradle +++ b/build.gradle @@ -5,7 +5,7 @@ buildscript { google() } dependencies { - classpath 'com.android.tools.build:gradle:8.5.2' + classpath 'com.android.tools.build:gradle:8.7.3' } } diff --git a/gradle/wrapper/gradle-wrapper.properties b/gradle/wrapper/gradle-wrapper.properties index 48c0a02c..81aa1c04 100644 --- a/gradle/wrapper/gradle-wrapper.properties +++ b/gradle/wrapper/gradle-wrapper.properties @@ -1,5 +1,5 @@ distributionBase=GRADLE_USER_HOME distributionPath=wrapper/dists -distributionUrl=https\://services.gradle.org/distributions/gradle-8.7-bin.zip +distributionUrl=https\://services.gradle.org/distributions/gradle-8.11.1-bin.zip zipStoreBase=GRADLE_USER_HOME zipStorePath=wrapper/dists -- cgit v1.2.3-54-g00ecf From 2ef25d97d3a186e88b035e90bf0fa899f20ccdcd Mon Sep 17 00:00:00 2001 From: Andrew Dolgov Date: Mon, 5 May 2025 15:37:36 +0300 Subject: use neutral version suffix for signed releases --- org.fox.ttrss/build.gradle | 20 +++++++++----------- 1 file changed, 9 insertions(+), 11 deletions(-) diff --git a/org.fox.ttrss/build.gradle b/org.fox.ttrss/build.gradle index 53cedb03..4c972aa2 100755 --- a/org.fox.ttrss/build.gradle +++ b/org.fox.ttrss/build.gradle @@ -1,8 +1,6 @@ apply plugin: 'com.android.application' android { - compileSdkVersion 33 - compileOptions { sourceCompatibility JavaVersion.VERSION_1_8 targetCompatibility JavaVersion.VERSION_1_8 @@ -21,12 +19,12 @@ android { } signingConfigs { - fdroid { - if (project.hasProperty("FDROID_STORE_FILE")) { - storeFile file(FDROID_STORE_FILE) - storePassword FDROID_STORE_PASSWORD - keyAlias FDROID_KEY_ALIAS - keyPassword FDROID_KEY_PASSWORD + signed { + if (project.hasProperty("SIGNING_STORE_FILE")) { + storeFile file(SIGNING_STORE_FILE) + storePassword SIGNING_STORE_PASSWORD + keyAlias SIGNING_KEY_ALIAS + keyPassword SIGNING_KEY_PASSWORD } } } @@ -43,12 +41,12 @@ android { proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.txt' } - fdroid { + signed { minifyEnabled false - versionNameSuffix "-fdroid" + versionNameSuffix "-signed" proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.txt' buildConfigField "boolean", "ENABLE_UPDATER", "true" - signingConfig signingConfigs.fdroid + signingConfig signingConfigs.signed matchingFallbacks = ['release'] } } -- cgit v1.2.3-54-g00ecf From d3f660fa2c85044b2f64b4ecdc06c9085e21d181 Mon Sep 17 00:00:00 2001 From: Andrew Dolgov Date: Mon, 5 May 2025 16:31:27 +0300 Subject: force-enable buildConfig --- org.fox.ttrss/build.gradle | 2 ++ 1 file changed, 2 insertions(+) diff --git a/org.fox.ttrss/build.gradle b/org.fox.ttrss/build.gradle index 4c972aa2..13fafc43 100755 --- a/org.fox.ttrss/build.gradle +++ b/org.fox.ttrss/build.gradle @@ -6,6 +6,8 @@ android { targetCompatibility JavaVersion.VERSION_1_8 } + buildFeatures.buildConfig = true + defaultConfig { applicationId "org.fox.ttrss" buildConfigField "long", "TIMESTAMP", System.currentTimeMillis() + "L" -- cgit v1.2.3-54-g00ecf From cc89da713d108cec231a6bb9fe43ca4313f341a8 Mon Sep 17 00:00:00 2001 From: Andrew Dolgov Date: Mon, 5 May 2025 16:43:58 +0300 Subject: Revert "force-enable buildConfig" This reverts commit d3f660fa2c85044b2f64b4ecdc06c9085e21d181. --- org.fox.ttrss/build.gradle | 2 -- 1 file changed, 2 deletions(-) diff --git a/org.fox.ttrss/build.gradle b/org.fox.ttrss/build.gradle index 13fafc43..4c972aa2 100755 --- a/org.fox.ttrss/build.gradle +++ b/org.fox.ttrss/build.gradle @@ -6,8 +6,6 @@ android { targetCompatibility JavaVersion.VERSION_1_8 } - buildFeatures.buildConfig = true - defaultConfig { applicationId "org.fox.ttrss" buildConfigField "long", "TIMESTAMP", System.currentTimeMillis() + "L" -- cgit v1.2.3-54-g00ecf From 855ed5f8c6b61af2877da82406abeb94ca019d58 Mon Sep 17 00:00:00 2001 From: Andrew Dolgov Date: Mon, 5 May 2025 16:44:56 +0300 Subject: force-enable buildConfig --- gradle.properties | 1 - org.fox.ttrss/build.gradle | 3 +++ 2 files changed, 3 insertions(+), 1 deletion(-) diff --git a/gradle.properties b/gradle.properties index 68562294..721f1941 100755 --- a/gradle.properties +++ b/gradle.properties @@ -1,4 +1,3 @@ -android.defaults.buildfeatures.buildconfig=true android.enableJetifier=true android.nonFinalResIds=false android.nonTransitiveRClass=false diff --git a/org.fox.ttrss/build.gradle b/org.fox.ttrss/build.gradle index 4c972aa2..b057a364 100755 --- a/org.fox.ttrss/build.gradle +++ b/org.fox.ttrss/build.gradle @@ -51,6 +51,9 @@ android { } } namespace 'org.fox.ttrss' + buildFeatures { + buildConfig true + } } dependencies { -- cgit v1.2.3-54-g00ecf From 12cbbf3e55a982d361d5ad51d7494854157ff6c9 Mon Sep 17 00:00:00 2001 From: Andrew Dolgov Date: Mon, 5 May 2025 17:09:14 +0300 Subject: use git-based version like tt-rss proper --- org.fox.ttrss/build.gradle | 47 +++++++++++++++++++++++++++++++++++++++++++++- 1 file changed, 46 insertions(+), 1 deletion(-) diff --git a/org.fox.ttrss/build.gradle b/org.fox.ttrss/build.gradle index b057a364..ab434f5e 100755 --- a/org.fox.ttrss/build.gradle +++ b/org.fox.ttrss/build.gradle @@ -15,7 +15,7 @@ android { targetSdkVersion 31 compileSdkVersion 35 versionCode 558 - versionName "1.323" + versionName getVersion() } signingConfigs { @@ -56,6 +56,51 @@ android { } } +def getGitTimestamp() { + // gitlab CI iso-8601 timestamp + if (System.getenv("CI_COMMIT_TIMESTAMP")) { + return Date.parse("yyyy-MM-dd'T'HH:mm:ssXXX", System.getenv("CI_COMMIT_TIMESTAMP")).format('YY.MM') + } + + // try to get version from git repo in current dir + try { + def stdout = new ByteArrayOutputStream() + exec { + commandLine 'git', '--no-pager', 'log', '--pretty=%ct', '-n1', 'HEAD' + standardOutput = stdout + } + + return new Date(stdout.toString().trim().toLong() * 1000).format('YY.MM') + } + catch (ignored) { + return 0; + } + +} + +def getGitCommitHash() { + // gitlab CI + if (System.getenv("CI_COMMIT_SHORT_SHA")) + return System.getenv("CI_COMMIT_SHORT_SHA"); + + // try to get version from git repo in current dir + try { + def stdout = new ByteArrayOutputStream() + exec { + commandLine 'git', '--no-pager', 'log', '--pretty=%h', '-n1', 'HEAD' + standardOutput = stdout + } + return stdout.toString().trim() + } + catch (ignored) { + return 'UNKNOWN'; + } +} + +def getVersion() { + return getGitTimestamp() + '-' + getGitCommitHash(); +} + dependencies { implementation 'com.squareup.okhttp3:okhttp:3.12.5' implementation('com.github.bumptech.glide:okhttp3-integration:1.5.0') { -- cgit v1.2.3-54-g00ecf From 04a932e7176859590b9acb76864d3f4682cacbec Mon Sep 17 00:00:00 2001 From: Andrew Dolgov Date: Tue, 6 May 2025 08:37:19 +0300 Subject: switch to non-final res IDs --- gradle.properties | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/gradle.properties b/gradle.properties index 721f1941..fb0d87da 100755 --- a/gradle.properties +++ b/gradle.properties @@ -1,5 +1,5 @@ android.enableJetifier=true -android.nonFinalResIds=false +android.nonFinalResIds=true android.nonTransitiveRClass=false android.useAndroidX=true org.gradle.jvmargs=\ -- cgit v1.2.3-54-g00ecf From 526c3d9897b585f2ee020b1eb67a84aa8cf4e235 Mon Sep 17 00:00:00 2001 From: Andrew Dolgov Date: Tue, 6 May 2025 08:53:41 +0300 Subject: replace one more switch with if --- .../main/java/org/fox/ttrss/LogcatActivity.java | 22 ++++++++++------------ 1 file changed, 10 insertions(+), 12 deletions(-) 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 037e4d7c..75a9c268 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 @@ -92,19 +92,17 @@ public class LogcatActivity extends CommonActivity { public boolean onOptionsItemSelected(MenuItem item) { int id = item.getItemId(); - switch (id) { - case android.R.id.home: - onBackPressed(); - return true; - case R.id.logcat_copy: - shareLogcat(); - return true; - case R.id.logcat_refresh: - refresh(); - return true; - default: - return super.onOptionsItemSelected(item); + if (id == android.R.id.home) { + onBackPressed(); + return true; + } else if (id == R.id.logcat_copy) { + shareLogcat(); + return true; + } else if (id == R.id.logcat_refresh) { + refresh(); + return true; } + return super.onOptionsItemSelected(item); } private void shareLogcat() { -- cgit v1.2.3-54-g00ecf From 1ea2f819bc8bbd24e6cb5c4bcd0acb123e74d19c Mon Sep 17 00:00:00 2001 From: Andrew Dolgov Date: Tue, 6 May 2025 09:14:22 +0300 Subject: set java toolchain to JDK17 --- org.fox.ttrss/build.gradle | 5 +++++ settings.gradle | 3 +++ 2 files changed, 8 insertions(+) diff --git a/org.fox.ttrss/build.gradle b/org.fox.ttrss/build.gradle index ab434f5e..5803a2f7 100755 --- a/org.fox.ttrss/build.gradle +++ b/org.fox.ttrss/build.gradle @@ -128,3 +128,8 @@ dependencies { implementation 'com.github.livefront:bridge:v1.1.1' implementation 'com.github.javiersantos:AppUpdater:2.7' } +java { + toolchain { + languageVersion = JavaLanguageVersion.of(17) + } +} diff --git a/settings.gradle b/settings.gradle index 51448259..b00072ee 100755 --- a/settings.gradle +++ b/settings.gradle @@ -1 +1,4 @@ +plugins { + id 'org.gradle.toolchains.foojay-resolver-convention' version '0.8.0' +} include ':org.fox.ttrss' -- cgit v1.2.3-54-g00ecf From 34f9956dd9982eddc1f9fa4103e996023430c4f1 Mon Sep 17 00:00:00 2001 From: Andrew Dolgov Date: Tue, 6 May 2025 09:31:34 +0300 Subject: add missing appcompat-resources dependency and set project name --- org.fox.ttrss/build.gradle | 1 + settings.gradle | 1 + 2 files changed, 2 insertions(+) diff --git a/org.fox.ttrss/build.gradle b/org.fox.ttrss/build.gradle index 5803a2f7..844bbd8c 100755 --- a/org.fox.ttrss/build.gradle +++ b/org.fox.ttrss/build.gradle @@ -113,6 +113,7 @@ dependencies { implementation 'androidx.recyclerview:recyclerview:1.4.0' implementation 'androidx.legacy:legacy-support-v4:1.0.0' implementation 'androidx.appcompat:appcompat:1.7.0' + implementation 'androidx.appcompat:appcompat-resources:1.7.0' implementation 'androidx.browser:browser:1.8.0' implementation 'androidx.coordinatorlayout:coordinatorlayout:1.3.0' implementation 'com.github.natario1:NestedScrollCoordinatorLayout:5a33a7dbd8' diff --git a/settings.gradle b/settings.gradle index b00072ee..bb551edf 100755 --- a/settings.gradle +++ b/settings.gradle @@ -2,3 +2,4 @@ plugins { id 'org.gradle.toolchains.foojay-resolver-convention' version '0.8.0' } include ':org.fox.ttrss' +rootProject.name='Tiny Tiny RSS for Android' \ No newline at end of file -- cgit v1.2.3-54-g00ecf From 65b729ec45b54b937e44bac58aec47f6ea193336 Mon Sep 17 00:00:00 2001 From: Andrew Dolgov Date: Tue, 6 May 2025 09:44:19 +0300 Subject: fix yet another pointless deprecation --- org.fox.ttrss/build.gradle | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/org.fox.ttrss/build.gradle b/org.fox.ttrss/build.gradle index 844bbd8c..1d9c0306 100755 --- a/org.fox.ttrss/build.gradle +++ b/org.fox.ttrss/build.gradle @@ -13,7 +13,7 @@ android { minSdkVersion 24 //noinspection ExpiredTargetSdkVersion targetSdkVersion 31 - compileSdkVersion 35 + compileSdk 35 versionCode 558 versionName getVersion() } -- cgit v1.2.3-54-g00ecf From e3f504940d98377de3d7eab5e938c806d67fe8e2 Mon Sep 17 00:00:00 2001 From: Andrew Dolgov Date: Tue, 6 May 2025 10:42:07 +0300 Subject: drop AppUpdater in favor of Obtainium --- org.fox.ttrss/build.gradle | 3 --- .../src/main/java/org/fox/ttrss/OnlineActivity.java | 13 ------------- .../src/main/java/org/fox/ttrss/PreferencesFragment.java | 2 -- org.fox.ttrss/src/main/res/xml/preferences.xml | 6 ------ 4 files changed, 24 deletions(-) diff --git a/org.fox.ttrss/build.gradle b/org.fox.ttrss/build.gradle index 1d9c0306..1b5cf135 100755 --- a/org.fox.ttrss/build.gradle +++ b/org.fox.ttrss/build.gradle @@ -9,7 +9,6 @@ android { defaultConfig { applicationId "org.fox.ttrss" buildConfigField "long", "TIMESTAMP", System.currentTimeMillis() + "L" - buildConfigField "boolean", "ENABLE_UPDATER", "false" minSdkVersion 24 //noinspection ExpiredTargetSdkVersion targetSdkVersion 31 @@ -45,7 +44,6 @@ android { minifyEnabled false versionNameSuffix "-signed" proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.txt' - buildConfigField "boolean", "ENABLE_UPDATER", "true" signingConfig signingConfigs.signed matchingFallbacks = ['release'] } @@ -127,7 +125,6 @@ dependencies { compileOnly 'com.evernote:android-state:1.4.1' annotationProcessor 'com.evernote:android-state:1.4.1' implementation 'com.github.livefront:bridge:v1.1.1' - implementation 'com.github.javiersantos:AppUpdater:2.7' } java { toolchain { 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 69fc8141..9bac8849 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 @@ -31,8 +31,6 @@ import android.widget.TextView; import androidx.appcompat.view.ActionMode; import androidx.appcompat.widget.Toolbar; -import com.github.javiersantos.appupdater.AppUpdater; -import com.github.javiersantos.appupdater.enums.UpdateFrom; import com.google.gson.Gson; import com.google.gson.JsonElement; import com.google.gson.JsonObject; @@ -271,21 +269,10 @@ public class OnlineActivity extends CommonActivity { if (isOffline) { switchOfflineSuccess(); } else { - checkUpdates(); - m_headlinesActionModeCallback = new HeadlinesActionModeCallback(); } } - protected void checkUpdates() { - if (m_prefs.getBoolean("check_for_updates", true) && (BuildConfig.DEBUG || BuildConfig.ENABLE_UPDATER)) { - new AppUpdater(this) - .setUpdateFrom(UpdateFrom.JSON) - .setUpdateJSON(String.format("https://srv.tt-rss.org/fdroid/updates/%1$s.json", this.getPackageName())) - .start(); - } - } - protected void switchOffline() { AlertDialog.Builder builder = new AlertDialog.Builder(this) .setMessage(R.string.dialog_offline_switch_prompt) diff --git a/org.fox.ttrss/src/main/java/org/fox/ttrss/PreferencesFragment.java b/org.fox.ttrss/src/main/java/org/fox/ttrss/PreferencesFragment.java index 65e0b556..14639abb 100755 --- a/org.fox.ttrss/src/main/java/org/fox/ttrss/PreferencesFragment.java +++ b/org.fox.ttrss/src/main/java/org/fox/ttrss/PreferencesFragment.java @@ -23,8 +23,6 @@ public class PreferencesFragment extends PreferenceFragment { SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(getActivity().getApplicationContext()); - findPreference("check_for_updates").setEnabled(BuildConfig.DEBUG || BuildConfig.ENABLE_UPDATER); - findPreference("ttrss_url").setSummary(prefs.getString("ttrss_url", getString(R.string.ttrss_url_summary))); findPreference("login").setSummary(prefs.getString("login", getString(R.string.login_summary))); diff --git a/org.fox.ttrss/src/main/res/xml/preferences.xml b/org.fox.ttrss/src/main/res/xml/preferences.xml index 41d6c9ef..175639db 100755 --- a/org.fox.ttrss/src/main/res/xml/preferences.xml +++ b/org.fox.ttrss/src/main/res/xml/preferences.xml @@ -22,12 +22,6 @@ android:title="@string/ttrss_url" > - - -- cgit v1.2.3-54-g00ecf From 78155e9c3640b5ada6f2c5982db01fb0ea7e768b Mon Sep 17 00:00:00 2001 From: Andrew Dolgov Date: Tue, 6 May 2025 12:13:14 +0300 Subject: switch to material3 theme, switch some headline imageviews to material buttons, theme cleanup --- .../main/java/org/fox/ttrss/HeadlinesFragment.java | 37 ++++++---- .../ttrss/offline/OfflineHeadlinesFragment.java | 25 ++++--- .../src/main/res/layout/headlines_row.xml | 26 ++++--- .../src/main/res/layout/headlines_row_compact.xml | 8 ++- .../res/layout/headlines_row_selected_compact.xml | 9 +-- .../headlines_row_selected_unread_compact.xml | 9 +-- .../src/main/res/layout/headlines_row_unread.xml | 26 ++++--- org.fox.ttrss/src/main/res/layout/toolbar.xml | 4 +- .../src/main/res/values-night-v21/style.xml | 12 ---- org.fox.ttrss/src/main/res/values-v21/style.xml | 20 ------ org.fox.ttrss/src/main/res/values/style.xml | 79 +--------------------- 11 files changed, 87 insertions(+), 168 deletions(-) delete mode 100644 org.fox.ttrss/src/main/res/values-night-v21/style.xml delete mode 100755 org.fox.ttrss/src/main/res/values-v21/style.xml 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 d45ff934..c6d4f902 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 @@ -9,6 +9,7 @@ import android.content.DialogInterface; import android.content.Intent; import android.content.SharedPreferences; import android.content.pm.ApplicationInfo; +import android.content.res.ColorStateList; import android.content.res.Resources.Theme; import android.graphics.Paint; import android.graphics.Point; @@ -42,6 +43,7 @@ import android.view.ViewGroup; import android.view.ViewTreeObserver; import android.view.WindowManager; import android.widget.AdapterView.AdapterContextMenuInfo; +import android.widget.Button; import android.widget.CheckBox; import android.widget.EditText; import android.widget.ImageView; @@ -70,6 +72,7 @@ import com.bumptech.glide.request.RequestListener; import com.bumptech.glide.request.target.GlideDrawableImageViewTarget; import com.bumptech.glide.request.target.Target; import com.evernote.android.state.State; +import com.google.android.material.button.MaterialButton; import com.google.android.material.snackbar.Snackbar; import com.google.gson.JsonElement; @@ -702,16 +705,16 @@ public class HeadlinesFragment extends StateSavedFragment { public TextView titleView; public TextView feedTitleView; - public ImageView markedView; - public ImageView scoreView; - public ImageView publishedView; + public MaterialButton markedView; + public MaterialButton scoreView; + public MaterialButton publishedView; public TextView excerptView; public ImageView flavorImageView; public ImageView flavorVideoKindView; public TextView authorView; public TextView dateView; public CheckBox selectionBoxView; - public ImageView menuButtonView; + public MaterialButton menuButtonView; public ViewGroup flavorImageHolder; public ProgressBar flavorImageLoadingBar; public View headlineFooter; @@ -720,7 +723,7 @@ public class HeadlinesFragment extends StateSavedFragment { public View headlineHeader; public View flavorImageOverflow; public TextureView flavorVideoView; - public ImageView attachmentsView; + public MaterialButton attachmentsView; //public int position; public boolean flavorImageEmbedded; public ProgressTarget flavorProgressTarget; @@ -1002,16 +1005,20 @@ public class HeadlinesFragment extends StateSavedFragment { TypedValue tvAccent = new TypedValue(); m_activity.getTheme().resolveAttribute(R.attr.colorAccent, tvAccent, true); + TypedValue tvPrimary = new TypedValue(); + m_activity.getTheme().resolveAttribute(R.attr.colorPrimary, tvPrimary, true); + if (holder.markedView != null) { TypedValue tv = new TypedValue(); m_activity.getTheme().resolveAttribute(article.marked ? R.attr.ic_star : R.attr.ic_star_outline, tv, true); - holder.markedView.setImageResource(tv.resourceId); + holder.markedView.setIconResource(tv.resourceId); + if (article.marked) - holder.markedView.setColorFilter(tvAccent.data); + holder.markedView.setIconTint(ColorStateList.valueOf(tvAccent.data)); else - holder.markedView.setColorFilter(null); + holder.markedView.setIconTint(ColorStateList.valueOf(tvPrimary.data)); holder.markedView.setOnClickListener(new OnClickListener() { @@ -1037,12 +1044,12 @@ public class HeadlinesFragment extends StateSavedFragment { m_activity.getTheme().resolveAttribute(scoreAttr, tv, true); - holder.scoreView.setImageResource(tv.resourceId); + holder.scoreView.setIconResource(tv.resourceId); if (article.score > Article.SCORE_HIGH) - holder.scoreView.setColorFilter(titleHighScoreUnreadColor); + holder.scoreView.setIconTint(ColorStateList.valueOf(tvAccent.data)); else - holder.scoreView.setColorFilter(null); + holder.scoreView.setIconTint(ColorStateList.valueOf(tvPrimary.data)); if (m_activity.getApiLevel() >= 16) { holder.scoreView.setOnClickListener(new OnClickListener() { @@ -1095,14 +1102,14 @@ public class HeadlinesFragment extends StateSavedFragment { if (holder.publishedView != null) { TypedValue tv = new TypedValue(); - m_activity.getTheme().resolveAttribute(article.published ? R.attr.ic_checkbox_marked : R.attr.ic_rss_box, tv, true); + m_activity.getTheme().resolveAttribute(R.attr.ic_rss_box, tv, true); - holder.publishedView.setImageResource(tv.resourceId); + holder.publishedView.setIconResource(tv.resourceId); if (article.published) - holder.publishedView.setColorFilter(tvAccent.data); + holder.publishedView.setIconTint(ColorStateList.valueOf(tvAccent.data)); else - holder.publishedView.setColorFilter(null); + holder.publishedView.setIconTint(ColorStateList.valueOf(tvPrimary.data)); holder.publishedView.setOnClickListener(new OnClickListener() { 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 669e4115..386af632 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 @@ -7,6 +7,7 @@ import android.content.Context; import android.content.DialogInterface; import android.content.Intent; import android.content.SharedPreferences; +import android.content.res.ColorStateList; import android.content.res.Resources.Theme; import android.database.Cursor; import android.database.sqlite.SQLiteStatement; @@ -50,6 +51,7 @@ import com.bumptech.glide.load.engine.DiskCacheStrategy; import com.bumptech.glide.load.resource.drawable.GlideDrawable; import com.bumptech.glide.request.RequestListener; import com.bumptech.glide.request.target.Target; +import com.google.android.material.button.MaterialButton; import org.fox.ttrss.Application; import org.fox.ttrss.CommonActivity; @@ -487,14 +489,14 @@ public class OfflineHeadlinesFragment extends Fragment implements OnItemClickLis public TextView titleView; public TextView feedTitleView; - public ImageView markedView; - public ImageView publishedView; + public MaterialButton markedView; + public MaterialButton publishedView; public TextView excerptView; public ImageView flavorImageView; public TextView authorView; public TextView dateView; public CheckBox selectionBoxView; - public ImageView menuButtonView; + public MaterialButton menuButtonView; public ViewGroup flavorImageHolder; public ProgressBar flavorImageLoadingBar; public View headlineFooter; @@ -504,7 +506,7 @@ public class OfflineHeadlinesFragment extends Fragment implements OnItemClickLis public View flavorImageOverflow; public View headlineHeader; public ImageView attachmentsView; - public ImageView scoreView; + public MaterialButton scoreView; public ArticleViewHolder(View v) { @@ -791,6 +793,9 @@ public class OfflineHeadlinesFragment extends Fragment implements OnItemClickLis TypedValue tvAccent = new TypedValue(); m_activity.getTheme().resolveAttribute(R.attr.colorAccent, tvAccent, true); + TypedValue tvPrimary = new TypedValue(); + m_activity.getTheme().resolveAttribute(R.attr.colorPrimary, tvPrimary, true); + if (holder.attachmentsView != null) { holder.attachmentsView.setVisibility(View.GONE); } @@ -806,12 +811,12 @@ public class OfflineHeadlinesFragment extends Fragment implements OnItemClickLis m_activity.getTheme().resolveAttribute(marked ? R.attr.ic_star : R.attr.ic_star_outline, tv, true); - holder.markedView.setImageResource(tv.resourceId); + holder.markedView.setIconResource(tv.resourceId); if (marked) - holder.markedView.setColorFilter(tvAccent.data); + holder.markedView.setIconTint(ColorStateList.valueOf(tvAccent.data)); else - holder.markedView.setColorFilter(null); + holder.markedView.setIconTint(ColorStateList.valueOf(tvPrimary.data)); holder.markedView.setOnClickListener(new OnClickListener() { @@ -837,12 +842,12 @@ public class OfflineHeadlinesFragment extends Fragment implements OnItemClickLis m_activity.getTheme().resolveAttribute(published ? R.attr.ic_checkbox_marked : R.attr.ic_rss_box, tv, true); - holder.publishedView.setImageResource(tv.resourceId); + holder.publishedView.setIconResource(tv.resourceId); if (published) - holder.publishedView.setColorFilter(tvAccent.data); + holder.publishedView.setIconTint(ColorStateList.valueOf(tvAccent.data)); else - holder.publishedView.setColorFilter(null); + holder.publishedView.setIconTint(ColorStateList.valueOf(tvPrimary.data)); holder.publishedView.setOnClickListener(new OnClickListener() { diff --git a/org.fox.ttrss/src/main/res/layout/headlines_row.xml b/org.fox.ttrss/src/main/res/layout/headlines_row.xml index 2e997e2c..f2057b8f 100755 --- a/org.fox.ttrss/src/main/res/layout/headlines_row.xml +++ b/org.fox.ttrss/src/main/res/layout/headlines_row.xml @@ -1,6 +1,7 @@ @@ -226,7 +227,8 @@ android:textSize="12sp" android:textStyle="italic" /> - + app:icon="?ic_action_trending_flat" /> - + app:icon="?ic_attachment" /> - + app:icon="?ic_star_outline" /> - + app:icon="?ic_rss_box" /> - + app:icon="?ic_dots_vertical" /> diff --git a/org.fox.ttrss/src/main/res/layout/headlines_row_compact.xml b/org.fox.ttrss/src/main/res/layout/headlines_row_compact.xml index d139313e..6375b574 100755 --- a/org.fox.ttrss/src/main/res/layout/headlines_row_compact.xml +++ b/org.fox.ttrss/src/main/res/layout/headlines_row_compact.xml @@ -2,6 +2,7 @@ - + app:icon="?ic_star_outline" /> diff --git a/org.fox.ttrss/src/main/res/layout/headlines_row_selected_compact.xml b/org.fox.ttrss/src/main/res/layout/headlines_row_selected_compact.xml index 2e449dbb..da2401eb 100755 --- a/org.fox.ttrss/src/main/res/layout/headlines_row_selected_compact.xml +++ b/org.fox.ttrss/src/main/res/layout/headlines_row_selected_compact.xml @@ -2,6 +2,7 @@ - + app:icon="?ic_star_outline" /> diff --git a/org.fox.ttrss/src/main/res/layout/headlines_row_selected_unread_compact.xml b/org.fox.ttrss/src/main/res/layout/headlines_row_selected_unread_compact.xml index 024eb7cf..3b6436fe 100755 --- a/org.fox.ttrss/src/main/res/layout/headlines_row_selected_unread_compact.xml +++ b/org.fox.ttrss/src/main/res/layout/headlines_row_selected_unread_compact.xml @@ -2,6 +2,7 @@ - + app:icon="?ic_star_outline" /> diff --git a/org.fox.ttrss/src/main/res/layout/headlines_row_unread.xml b/org.fox.ttrss/src/main/res/layout/headlines_row_unread.xml index ba70bb89..aafad9a8 100755 --- a/org.fox.ttrss/src/main/res/layout/headlines_row_unread.xml +++ b/org.fox.ttrss/src/main/res/layout/headlines_row_unread.xml @@ -1,6 +1,7 @@ - + app:icon="?ic_action_trending_flat" /> - + app:icon="?ic_attachment" /> - + app:icon="?ic_star_outline" /> - + app:icon="?ic_rss_box" /> - + app:icon="?ic_dots_vertical" /> diff --git a/org.fox.ttrss/src/main/res/layout/toolbar.xml b/org.fox.ttrss/src/main/res/layout/toolbar.xml index f5fb7654..94aa1eec 100755 --- a/org.fox.ttrss/src/main/res/layout/toolbar.xml +++ b/org.fox.ttrss/src/main/res/layout/toolbar.xml @@ -5,8 +5,8 @@ android:id="@+id/toolbar" android:elevation="4dp" app:layout_scrollFlags="scroll|enterAlways" - android:theme="@style/ThemeOverlay.AppCompat.Dark.ActionBar" - app:popupTheme="@style/ThemeOverlay.AppCompat.Light" + android:theme="@style/ThemeOverlay.Material3.Dark.ActionBar" + app:popupTheme="@style/ThemeOverlay.Material3.Light" android:layout_height="wrap_content" android:layout_width="match_parent" android:minHeight="?attr/actionBarSize" diff --git a/org.fox.ttrss/src/main/res/values-night-v21/style.xml b/org.fox.ttrss/src/main/res/values-night-v21/style.xml deleted file mode 100644 index c154ed8a..00000000 --- a/org.fox.ttrss/src/main/res/values-night-v21/style.xml +++ /dev/null @@ -1,12 +0,0 @@ - - - - - - \ No newline at end of file diff --git a/org.fox.ttrss/src/main/res/values-v21/style.xml b/org.fox.ttrss/src/main/res/values-v21/style.xml deleted file mode 100755 index 3e26f96f..00000000 --- a/org.fox.ttrss/src/main/res/values-v21/style.xml +++ /dev/null @@ -1,20 +0,0 @@ - - - - - - - - \ No newline at end of file diff --git a/org.fox.ttrss/src/main/res/values/style.xml b/org.fox.ttrss/src/main/res/values/style.xml index 033a9492..41b0a3ae 100755 --- a/org.fox.ttrss/src/main/res/values/style.xml +++ b/org.fox.ttrss/src/main/res/values/style.xml @@ -1,6 +1,6 @@ - - - - - - - - \ No newline at end of file -- cgit v1.2.3-54-g00ecf From e4fa3f1c1084a7527216831d856942c37072aa01 Mon Sep 17 00:00:00 2001 From: Andrew Dolgov Date: Tue, 6 May 2025 12:45:38 +0300 Subject: fix actionbar actionmode (i.e. selection mode) style --- org.fox.ttrss/src/main/res/values/style.xml | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/org.fox.ttrss/src/main/res/values/style.xml b/org.fox.ttrss/src/main/res/values/style.xml index 41b0a3ae..6a494015 100755 --- a/org.fox.ttrss/src/main/res/values/style.xml +++ b/org.fox.ttrss/src/main/res/values/style.xml @@ -44,6 +44,8 @@ #216d96 #F4511E + @style/action_mode_style + @drawable/ic_rss_box_dark @drawable/ic_checkbox_marked_dark @drawable/ic_star_dark @@ -72,4 +74,12 @@ + + \ No newline at end of file -- cgit v1.2.3-54-g00ecf From 73f8dac69f24ba8e07b08a79b393cd64e13907e9 Mon Sep 17 00:00:00 2001 From: Andrew Dolgov Date: Tue, 6 May 2025 13:04:28 +0300 Subject: switch some more imageviews to material buttons and drop hardcoded article background preferring material3 default --- .../main/java/org/fox/ttrss/ArticleFragment.java | 48 +++++++++++----------- .../fox/ttrss/offline/OfflineArticleFragment.java | 8 ++-- .../main/res/layout-sw600dp/activity_detail.xml | 1 - .../src/main/res/layout/activity_detail_phone.xml | 3 +- .../src/main/res/layout/fragment_article.xml | 19 +++++---- 5 files changed, 39 insertions(+), 40 deletions(-) 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 0523c144..08905aec 100755 --- a/org.fox.ttrss/src/main/java/org/fox/ttrss/ArticleFragment.java +++ b/org.fox.ttrss/src/main/java/org/fox/ttrss/ArticleFragment.java @@ -6,6 +6,7 @@ import android.app.AlertDialog; import android.app.Dialog; import android.content.DialogInterface; import android.content.SharedPreferences; +import android.content.res.ColorStateList; import android.content.res.Resources; import android.graphics.Color; import android.net.Uri; @@ -35,6 +36,7 @@ import android.widget.TextView; import androidx.core.text.HtmlCompat; import com.evernote.android.state.State; +import com.google.android.material.button.MaterialButton; import org.fox.ttrss.types.Article; import org.fox.ttrss.types.Attachment; @@ -218,21 +220,11 @@ public class ArticleFragment extends StateSavedFragment { } - final ImageView scoreView = view.findViewById(R.id.score); + final MaterialButton scoreView = view.findViewById(R.id.score); if (scoreView != null) { setScoreImage(scoreView, m_article.score); - Resources.Theme theme = m_activity.getTheme(); - TypedValue tv = new TypedValue(); - theme.resolveAttribute(R.attr.headlineTitleHighScoreUnreadTextColor, tv, true); - int titleHighScoreUnreadColor = tv.data; - - if (m_article.score > Article.SCORE_HIGH) - scoreView.setColorFilter(titleHighScoreUnreadColor); - else - scoreView.setColorFilter(null); - if (m_activity.getApiLevel() >= 16) { scoreView.setOnClickListener(new OnClickListener() { @Override @@ -282,7 +274,7 @@ public class ArticleFragment extends StateSavedFragment { } } - ImageView attachments = view.findViewById(R.id.attachments); + MaterialButton attachments = view.findViewById(R.id.attachments); if (attachments != null) { if (m_article.attachments != null && m_article.attachments.size() > 0) { @@ -298,7 +290,7 @@ public class ArticleFragment extends StateSavedFragment { } } - ImageView share = view.findViewById(R.id.share); + MaterialButton share = view.findViewById(R.id.share); if (share != null) { share.setOnClickListener(new OnClickListener() { @@ -409,6 +401,8 @@ public class ArticleFragment extends StateSavedFragment { m_web = view.findViewById(R.id.article_content); + m_web.setBackgroundColor(Color.TRANSPARENT); + m_web.setWebViewClient(new WebViewClient() { @Override public boolean shouldOverrideUrlLoading(WebView view, String url) { @@ -447,7 +441,7 @@ public class ArticleFragment extends StateSavedFragment { return view; } - private void setScoreImage(ImageView scoreView, int score) { + private void setScoreImage(MaterialButton scoreView, int score) { TypedValue tv = new TypedValue(); int scoreAttr = R.attr.ic_action_trending_flat; @@ -458,7 +452,20 @@ public class ArticleFragment extends StateSavedFragment { m_activity.getTheme().resolveAttribute(scoreAttr, tv, true); - scoreView.setImageResource(tv.resourceId); + scoreView.setIconResource(tv.resourceId); + + Resources.Theme theme = m_activity.getTheme(); + TypedValue tvColorHighScore = new TypedValue(); + theme.resolveAttribute(R.attr.headlineTitleHighScoreUnreadTextColor, tvColorHighScore, true); + + TypedValue tvPrimary = new TypedValue(); + m_activity.getTheme().resolveAttribute(R.attr.colorPrimary, tvPrimary, true); + + if (m_article.score > Article.SCORE_HIGH) + scoreView.setIconTint(ColorStateList.valueOf(tvColorHighScore.data)); + else + scoreView.setIconTint(ColorStateList.valueOf(tvPrimary.data)); + } protected void renderContent(Bundle savedInstanceState) { @@ -469,21 +476,12 @@ public class ArticleFragment extends StateSavedFragment { WebSettings ws = m_web.getSettings(); ws.setSupportZoom(false); - TypedValue tvBackground = new TypedValue(); - getActivity().getTheme().resolveAttribute(R.attr.articleBackground, tvBackground, true); - - String backgroundHexColor = String.format("#%06X", (0xFFFFFF & tvBackground.data)); - - String cssOverride = ""; - - cssOverride = "body { background : "+ backgroundHexColor+"; }"; - TypedValue tvTextColor = new TypedValue(); getActivity().getTheme().resolveAttribute(R.attr.articleTextColor, tvTextColor, true); String textColor = String.format("#%06X", (0xFFFFFF & tvTextColor.data)); - cssOverride += "body { color : "+textColor+"; }"; + String cssOverride = "body { color : "+textColor+"; }"; TypedValue tvLinkColor = new TypedValue(); getActivity().getTheme().resolveAttribute(R.attr.linkColor, tvLinkColor, true); 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 3f452a63..28839388 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 @@ -43,6 +43,8 @@ import java.util.Date; import androidx.fragment.app.Fragment; +import com.google.android.material.button.MaterialButton; + public class OfflineArticleFragment extends Fragment { private final String TAG = this.getClass().getSimpleName(); @@ -234,19 +236,19 @@ public class OfflineArticleFragment extends Fragment { } - ImageView score = view.findViewById(R.id.score); + MaterialButton score = view.findViewById(R.id.score); if (score != null) { score.setVisibility(View.GONE); } - ImageView attachments = view.findViewById(R.id.attachments); + MaterialButton attachments = view.findViewById(R.id.attachments); if (attachments != null) { attachments.setVisibility(View.GONE); } - ImageView share = view.findViewById(R.id.share); + MaterialButton share = view.findViewById(R.id.share); if (share != null) { share.setOnClickListener(new OnClickListener() { diff --git a/org.fox.ttrss/src/main/res/layout-sw600dp/activity_detail.xml b/org.fox.ttrss/src/main/res/layout-sw600dp/activity_detail.xml index 95215992..89ab61f5 100644 --- a/org.fox.ttrss/src/main/res/layout-sw600dp/activity_detail.xml +++ b/org.fox.ttrss/src/main/res/layout-sw600dp/activity_detail.xml @@ -35,7 +35,6 @@ android:layout_width="0dp" android:layout_weight="0.7" android:elevation="4dp" - android:background="?articleBackground" android:layout_height="match_parent"> + android:layout_height="wrap_content"> diff --git a/org.fox.ttrss/src/main/res/layout/fragment_article.xml b/org.fox.ttrss/src/main/res/layout/fragment_article.xml index 61215a40..cffc7c33 100755 --- a/org.fox.ttrss/src/main/res/layout/fragment_article.xml +++ b/org.fox.ttrss/src/main/res/layout/fragment_article.xml @@ -3,8 +3,7 @@ xmlns:tools="http://schemas.android.com/tools" android:id="@+id/article_fragment" android:layout_width="fill_parent" - android:layout_height="match_parent" - android:background="?articleBackground"> + android:layout_height="match_parent"> - - - -- cgit v1.2.3-54-g00ecf From 650c24732e70c528635d45314cea31de9fe571af Mon Sep 17 00:00:00 2001 From: Andrew Dolgov Date: Tue, 6 May 2025 15:06:31 +0300 Subject: drop annotation-based save handling and go back to stone-age vanilla methods --- org.fox.ttrss/build.gradle | 4 -- .../src/main/java/org/fox/ttrss/Application.java | 19 --------- .../main/java/org/fox/ttrss/ArticleFragment.java | 23 +++++++--- .../src/main/java/org/fox/ttrss/ArticlePager.java | 29 +++++++++---- .../java/org/fox/ttrss/BaseFeedlistFragment.java | 6 +-- .../main/java/org/fox/ttrss/CommonActivity.java | 10 ++--- .../main/java/org/fox/ttrss/DetailActivity.java | 14 ++++--- .../java/org/fox/ttrss/FeedCategoriesFragment.java | 27 ++++++++---- .../src/main/java/org/fox/ttrss/FeedsFragment.java | 41 ++++++++++++++---- .../main/java/org/fox/ttrss/GalleryActivity.java | 24 ++++++++--- .../java/org/fox/ttrss/GalleryBaseFragment.java | 2 +- .../java/org/fox/ttrss/GalleryImageFragment.java | 20 +++++++-- .../java/org/fox/ttrss/GalleryVideoFragment.java | 26 +++++++++--- .../main/java/org/fox/ttrss/HeadlinesFragment.java | 49 +++++++++++++++------- .../main/java/org/fox/ttrss/LogcatActivity.java | 20 ++++++--- .../main/java/org/fox/ttrss/MasterActivity.java | 12 ++++-- .../java/org/fox/ttrss/StateSavedFragment.java | 23 ---------- .../org/fox/ttrss/share/CommonShareActivity.java | 19 +++++++-- .../java/org/fox/ttrss/types/GalleryEntry.java | 39 ++++++++++++++++- 19 files changed, 276 insertions(+), 131 deletions(-) delete mode 100755 org.fox.ttrss/src/main/java/org/fox/ttrss/StateSavedFragment.java diff --git a/org.fox.ttrss/build.gradle b/org.fox.ttrss/build.gradle index 1b5cf135..be54fc88 100755 --- a/org.fox.ttrss/build.gradle +++ b/org.fox.ttrss/build.gradle @@ -121,10 +121,6 @@ dependencies { implementation 'me.relex:circleindicator:1.2.2@aar' implementation 'com.nineoldandroids:library:2.4.0' implementation 'com.github.amulyakhare:TextDrawable:558677ea31' - implementation 'com.evernote:android-state:1.4.1' - compileOnly 'com.evernote:android-state:1.4.1' - annotationProcessor 'com.evernote:android-state:1.4.1' - implementation 'com.github.livefront:bridge:v1.1.1' } java { toolchain { 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 a8c4ab00..ae6eaef6 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 @@ -2,16 +2,9 @@ package org.fox.ttrss; import android.os.Bundle; -import com.evernote.android.state.StateSaver; -import com.livefront.bridge.Bridge; -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 java.util.LinkedHashMap; public class Application extends android.app.Application { @@ -33,18 +26,6 @@ public class Application extends android.app.Application { public final void onCreate() { super.onCreate(); - Bridge.initialize(getApplicationContext(), new SavedStateHandler() { - @Override - public void saveInstanceState(@NonNull Object target, @NonNull Bundle state) { - StateSaver.saveInstanceState(target, state); - } - - @Override - public void restoreInstanceState(@NonNull Object target, @Nullable Bundle state) { - StateSaver.restoreInstanceState(target, state); - } - }); - m_singleton = this; } 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 08905aec..2f5464f9 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 @@ -10,10 +10,8 @@ import android.content.res.ColorStateList; import android.content.res.Resources; import android.graphics.Color; import android.net.Uri; -import android.os.Build; import android.os.Bundle; import android.preference.PreferenceManager; -import android.text.Html; import android.util.Log; import android.util.TypedValue; import android.view.ContextMenu; @@ -30,12 +28,10 @@ import android.webkit.WebView.HitTestResult; import android.webkit.WebViewClient; import android.widget.EditText; import android.widget.FrameLayout; -import android.widget.ImageView; import android.widget.TextView; import androidx.core.text.HtmlCompat; -import com.evernote.android.state.State; import com.google.android.material.button.MaterialButton; import org.fox.ttrss.types.Article; @@ -47,11 +43,10 @@ import java.text.DateFormat; import java.text.SimpleDateFormat; import java.util.Date; -public class ArticleFragment extends StateSavedFragment { +public class ArticleFragment extends androidx.fragment.app.Fragment { private final String TAG = this.getClass().getSimpleName(); private SharedPreferences m_prefs; - @State protected Article m_article; private DetailActivity m_activity; private WebView m_web; @@ -158,6 +153,15 @@ public class ArticleFragment extends StateSavedFragment { } + @Override + public void onCreate(Bundle savedInstanceState) { + super.onCreate(savedInstanceState); + + if (savedInstanceState != null) { + m_article = savedInstanceState.getParcelable("m_article"); + } + } + @SuppressLint("NewApi") @Override public View onCreateView(LayoutInflater inflater, ViewGroup container, final Bundle savedInstanceState) { @@ -627,4 +631,11 @@ public class ArticleFragment extends StateSavedFragment { m_activity = (DetailActivity)activity; } + + @Override + public void onSaveInstanceState(Bundle out) { + super.onSaveInstanceState(out); + + out.putParcelable("m_article", m_article); + } } 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 9f90df84..eb4cdd55 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 @@ -28,20 +28,18 @@ import org.fox.ttrss.util.HeadlinesRequest; import java.util.HashMap; -import com.evernote.android.state.State; - -public class ArticlePager extends StateSavedFragment { +public class ArticlePager extends androidx.fragment.app.Fragment { private final String TAG = "ArticlePager"; private PagerAdapter m_adapter; private HeadlinesEventListener m_listener; - @State protected Article m_article; - @State protected ArticleList m_articles = new ArticleList(); //m_articles = Application.getInstance().m_loadedArticles; + protected Article m_article; + protected ArticleList m_articles = new ArticleList(); //m_articles = Application.getInstance().m_loadedArticles; private OnlineActivity m_activity; private String m_searchQuery = ""; - @State protected Feed m_feed; + protected Feed m_feed; private SharedPreferences m_prefs; - @State protected int m_firstId = 0; + protected int m_firstId = 0; private boolean m_refreshInProgress; private boolean m_lazyLoadDisabled; @@ -115,6 +113,13 @@ public class ArticlePager extends StateSavedFragment { public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); + if (savedInstanceState != null) { + m_article = savedInstanceState.getParcelable("m_article"); + m_articles = savedInstanceState.getParcelable("m_articles"); + m_feed = savedInstanceState.getParcelable("m_feed"); + m_firstId = savedInstanceState.getInt("m_firstId"); + } + setRetainInstance(true); } @@ -354,6 +359,16 @@ public class ArticlePager extends StateSavedFragment { m_prefs = PreferenceManager.getDefaultSharedPreferences(getActivity().getApplicationContext()); } + + @Override + public void onSaveInstanceState(Bundle out) { + super.onSaveInstanceState(out); + + out.putParcelable("m_article", m_article); + out.putParcelable("m_articles", m_articles); + out.putParcelable("m_feed", m_feed); + out.putInt("m_firstId", m_firstId); + } @SuppressLint("NewApi") @Override 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 b97448fe..853cfcbd 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 @@ -11,14 +11,14 @@ import android.widget.ImageView; import android.widget.ListView; import android.widget.TextView; +import androidx.appcompat.widget.SwitchCompat; + 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 { +public abstract class BaseFeedlistFragment extends androidx.fragment.app.Fragment { abstract public void refresh(); public void initDrawerHeader(LayoutInflater inflater, View view, ListView list, final CommonActivity activity, final SharedPreferences prefs, boolean isRoot) { 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 13c4490a..f0416353 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 @@ -47,9 +47,7 @@ import com.bumptech.glide.Glide; import com.bumptech.glide.load.engine.DiskCacheStrategy; import com.bumptech.glide.request.animation.GlideAnimation; import com.bumptech.glide.request.target.SimpleTarget; -import com.evernote.android.state.State; import com.google.android.material.snackbar.Snackbar; -import com.livefront.bridge.Bridge; import org.fox.ttrss.util.DatabaseHelper; import org.fox.ttrss.widget.SmallWidgetProvider; @@ -90,7 +88,6 @@ public class CommonActivity extends AppCompatActivity implements SharedPreferenc //private SQLiteDatabase m_writableDb; private boolean m_smallScreenMode = true; - @State protected String m_theme; private boolean m_needRestart; @@ -263,10 +260,10 @@ public class CommonActivity extends AppCompatActivity implements SharedPreferenc setupWidgetUpdates(this); - Bridge.restoreInstanceState(this, savedInstanceState); - if (savedInstanceState == null) { m_theme = m_prefs.getString("theme", CommonActivity.THEME_DEFAULT); + } else { + m_theme = savedInstanceState.getString("m_theme"); } String customTabPackageName = getCustomTabPackageName(this); @@ -282,7 +279,8 @@ public class CommonActivity extends AppCompatActivity implements SharedPreferenc @Override public void onSaveInstanceState(Bundle out) { super.onSaveInstanceState(out); - Bridge.saveInstanceState(this, out); + + out.putString("m_theme", m_theme); } public boolean isSmallScreen() { 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 cd263d87..56fc1539 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 @@ -13,19 +13,17 @@ import android.util.Log; import android.view.MenuItem; import android.view.View; -import com.evernote.android.state.State; +import androidx.appcompat.widget.Toolbar; +import androidx.fragment.app.FragmentTransaction; + import com.google.android.material.floatingactionbutton.FloatingActionButton; 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; - public class DetailActivity extends OnlineActivity implements HeadlinesEventListener { private final String TAG = this.getClass().getSimpleName(); - @State protected ArticleList m_articles = new ArticleList(); protected SharedPreferences m_prefs; @@ -41,6 +39,10 @@ public class DetailActivity extends OnlineActivity implements HeadlinesEventList super.onCreate(savedInstanceState); + if (savedInstanceState != null) { + m_articles = savedInstanceState.getParcelable("m_articles"); + } + if (m_prefs.getBoolean("force_phone_layout", false)) { setContentView(R.layout.activity_detail_phone); } else { @@ -167,6 +169,8 @@ public class DetailActivity extends OnlineActivity implements HeadlinesEventList public void onSaveInstanceState(Bundle out) { super.onSaveInstanceState(out); + out.putParcelable("m_articles", m_articles); + Application.getInstance().save(out); } 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 876b3894..af925ea4 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 @@ -24,6 +24,10 @@ import android.widget.ImageView; import android.widget.ListView; import android.widget.TextView; +import androidx.loader.app.LoaderManager; +import androidx.loader.content.Loader; +import androidx.swiperefreshlayout.widget.SwipeRefreshLayout; + import com.google.gson.Gson; import com.google.gson.JsonArray; import com.google.gson.JsonElement; @@ -40,17 +44,12 @@ 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 com.evernote.android.state.State; - public class FeedCategoriesFragment extends BaseFeedlistFragment implements OnItemClickListener, OnSharedPreferenceChangeListener, LoaderManager.LoaderCallbacks { private final String TAG = this.getClass().getSimpleName(); private FeedCategoryListAdapter m_adapter; private FeedCategoryList m_cats = new FeedCategoryList(); - @State FeedCategory m_selectedCat; + FeedCategory m_selectedCat; private MasterActivity m_activity; private SwipeRefreshLayout m_swipeLayout; private ListView m_list; @@ -288,7 +287,16 @@ public class FeedCategoriesFragment extends BaseFeedlistFragment implements OnIt return null; } } - + + @Override + public void onCreate(Bundle savedInstanceState) { + super.onCreate(savedInstanceState); + + if (savedInstanceState != null) { + m_selectedCat = savedInstanceState.getParcelable("m_selectedCat"); + } + } + @Override public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { @@ -472,5 +480,10 @@ public class FeedCategoriesFragment extends BaseFeedlistFragment implements OnIt } } + @Override + public void onSaveInstanceState(Bundle out) { + super.onSaveInstanceState(out); + out.putParcelable("m_selectedCat", m_selectedCat); + } } 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 c415eee9..ec6c508d 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 @@ -29,6 +29,10 @@ import android.widget.ImageView; import android.widget.ListView; import android.widget.TextView; +import androidx.loader.app.LoaderManager; +import androidx.loader.content.Loader; +import androidx.swiperefreshlayout.widget.SwipeRefreshLayout; + import com.google.gson.Gson; import com.google.gson.JsonArray; import com.google.gson.JsonElement; @@ -45,11 +49,6 @@ 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 com.evernote.android.state.State; - public class FeedsFragment extends BaseFeedlistFragment implements OnItemClickListener, OnSharedPreferenceChangeListener, LoaderManager.LoaderCallbacks { private final String TAG = this.getClass().getSimpleName(); @@ -57,10 +56,10 @@ public class FeedsFragment extends BaseFeedlistFragment implements OnItemClickLi private FeedListAdapter m_adapter; private FeedList m_feeds = new FeedList(); private MasterActivity m_activity; - @State Feed m_selectedFeed; - @State FeedCategory m_activeCategory; + Feed m_selectedFeed; + FeedCategory m_activeCategory; private SwipeRefreshLayout m_swipeLayout; - @State boolean m_enableParentBtn = false; + boolean m_enableParentBtn = false; private ListView m_list; public void initialize(FeedCategory cat, boolean enableParentBtn) { @@ -332,6 +331,32 @@ public class FeedsFragment extends BaseFeedlistFragment implements OnItemClickLi super.onCreateContextMenu(menu, v, menuInfo); } + + @Override + public void onCreate(Bundle savedInstanceState) { + super.onCreate(savedInstanceState); + + if (savedInstanceState != null) { + ArrayList list = savedInstanceState.getParcelableArrayList("m_feeds"); + + m_feeds.clear(); + m_feeds.addAll(list); + + m_selectedFeed = savedInstanceState.getParcelable("m_selectedFeed"); + m_activeCategory = savedInstanceState.getParcelable("m_activeCategory"); + m_enableParentBtn = savedInstanceState.getBoolean("m_enableParentBtn"); + } + } + + @Override + public void onSaveInstanceState(Bundle out) { + super.onSaveInstanceState(out); + + out.putParcelableArrayList("m_feeds", m_feeds); + out.putParcelable("m_selectedFeed", m_selectedFeed); + out.putParcelable("m_activeCategory", m_activeCategory); + out.putBoolean("m_enableParentBtn", m_enableParentBtn); + } @Override public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { 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 e0cb2cea..f37d4a98 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 @@ -34,16 +34,15 @@ import java.util.ArrayList; import java.util.List; import java.util.concurrent.ExecutionException; -import com.evernote.android.state.State; import me.relex.circleindicator.CircleIndicator; public class GalleryActivity extends CommonActivity { private final String TAG = this.getClass().getSimpleName(); - @State protected ArrayList m_items = new ArrayList<>(); - @State protected String m_title; + protected ArrayList m_items = new ArrayList<>(); + protected String m_title; private ArticleImagesPagerAdapter m_adapter; - @State public String m_content; + public String m_content; private ViewPager m_pager; private ProgressBar m_checkProgress; @@ -234,6 +233,14 @@ public class GalleryActivity extends CommonActivity { return firstFound; } + public void onSaveInstanceState(Bundle out) { + super.onSaveInstanceState(out); + + out.putParcelableArrayList("m_items", m_items); + out.putString("m_title", m_title); + out.putString("m_content", m_content); + } + @Override public void onCreate(Bundle savedInstanceState) { ActivityCompat.postponeEnterTransition(this); @@ -242,7 +249,6 @@ public class GalleryActivity extends CommonActivity { m_prefs = PreferenceManager .getDefaultSharedPreferences(getApplicationContext()); - getDelegate().setLocalNightMode(AppCompatDelegate.MODE_NIGHT_YES); setTheme(R.style.AppTheme); @@ -273,6 +279,14 @@ public class GalleryActivity extends CommonActivity { if (!collectGalleryContents(imgSrcFirst, doc, uncheckedItems)) if (!collectGalleryContents("", doc, uncheckedItems)) m_items.add(new GalleryEntry(imgSrcFirst, GalleryEntry.GalleryEntryType.TYPE_IMAGE, null)); + } else { + ArrayList list = savedInstanceState.getParcelableArrayList("m_items"); + + m_items.clear(); + m_items.addAll(list); + + m_title = savedInstanceState.getString("m_title"); + m_content = savedInstanceState.getString("m_content"); } findViewById(R.id.gallery_overflow).setOnClickListener(new View.OnClickListener() { diff --git a/org.fox.ttrss/src/main/java/org/fox/ttrss/GalleryBaseFragment.java b/org.fox.ttrss/src/main/java/org/fox/ttrss/GalleryBaseFragment.java index 338845a2..b35ca9e7 100755 --- a/org.fox.ttrss/src/main/java/org/fox/ttrss/GalleryBaseFragment.java +++ b/org.fox.ttrss/src/main/java/org/fox/ttrss/GalleryBaseFragment.java @@ -5,7 +5,7 @@ import android.os.Bundle; import android.view.ContextMenu; import android.view.View; -public class GalleryBaseFragment extends StateSavedFragment { +public class GalleryBaseFragment extends androidx.fragment.app.Fragment { private final String TAG = this.getClass().getSimpleName(); protected GalleryActivity m_activity; 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 44dbea12..8513c50c 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 @@ -19,12 +19,19 @@ import com.bumptech.glide.request.RequestListener; import com.bumptech.glide.request.target.GlideDrawableImageViewTarget; import com.bumptech.glide.request.target.Target; -import com.evernote.android.state.State; - public class GalleryImageFragment extends GalleryBaseFragment { private final String TAG = this.getClass().getSimpleName(); - @State String m_url; + String m_url; + + @Override + public void onCreate(Bundle savedInstanceState) { + super.onCreate(savedInstanceState); + + if (savedInstanceState != null) { + m_url = savedInstanceState.getParcelable("m_url"); + } + } @Override public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { @@ -84,6 +91,13 @@ public class GalleryImageFragment extends GalleryBaseFragment { m_url = url; } + @Override + public void onSaveInstanceState(Bundle out) { + super.onSaveInstanceState(out); + + out.putString("m_url", m_url); + } + /*@Override public boolean onContextItemSelected(MenuItem item) { int position = m_pager.getCurrentItem(); 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 751975d3..2e2df149 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 @@ -15,20 +15,36 @@ import android.view.ViewGroup; import android.widget.ImageView; import android.widget.MediaController; -import java.io.IOException; - import androidx.core.app.ActivityCompat; import androidx.core.view.ViewCompat; -import com.evernote.android.state.State; + +import java.io.IOException; public class GalleryVideoFragment extends GalleryBaseFragment { private final String TAG = this.getClass().getSimpleName(); - @State String m_url; - @State String m_coverUrl; + String m_url; + String m_coverUrl; MediaPlayer m_mediaPlayer; private boolean m_userVisibleHint = false; + public void onCreate(Bundle savedInstanceState) { + super.onCreate(savedInstanceState); + + if (savedInstanceState != null) { + m_url = savedInstanceState.getString("m_url"); + m_coverUrl = savedInstanceState.getString("m_coverUrl"); + } + } + + @Override + public void onSaveInstanceState(Bundle out) { + super.onSaveInstanceState(out); + + out.putString("m_url", m_url); + out.putString("m_coverUrl", m_coverUrl); + } + @Override public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { final View view = inflater.inflate(R.layout.fragment_gallery_entry, container, false); 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 c6d4f902..35ca0dba 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 @@ -8,7 +8,6 @@ import android.content.Context; import android.content.DialogInterface; import android.content.Intent; import android.content.SharedPreferences; -import android.content.pm.ApplicationInfo; import android.content.res.ColorStateList; import android.content.res.Resources.Theme; import android.graphics.Paint; @@ -43,7 +42,6 @@ import android.view.ViewGroup; import android.view.ViewTreeObserver; import android.view.WindowManager; import android.widget.AdapterView.AdapterContextMenuInfo; -import android.widget.Button; import android.widget.CheckBox; import android.widget.EditText; import android.widget.ImageView; @@ -71,7 +69,6 @@ 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.evernote.android.state.State; import com.google.android.material.button.MaterialButton; import com.google.android.material.snackbar.Snackbar; import com.google.gson.JsonElement; @@ -91,14 +88,11 @@ import java.text.SimpleDateFormat; import java.util.ArrayList; import java.util.Date; import java.util.HashMap; -import java.util.List; import java.util.TimeZone; -import java.util.concurrent.TimeUnit; -import com.evernote.android.state.State; import jp.wasabeef.glide.transformations.CropCircleTransformation; -public class HeadlinesFragment extends StateSavedFragment { +public class HeadlinesFragment extends androidx.fragment.app.Fragment { public enum ArticlesSelection { ALL, NONE, UNREAD } @@ -109,24 +103,23 @@ public class HeadlinesFragment extends StateSavedFragment { private final String TAG = this.getClass().getSimpleName(); - @State Feed m_feed; - @State Article m_activeArticle; - @State String m_searchQuery = ""; + Article m_activeArticle; + String m_searchQuery = ""; private boolean m_refreshInProgress = false; - @State int m_firstId = 0; - @State boolean m_lazyLoadDisabled = false; + int m_firstId = 0; + boolean m_lazyLoadDisabled = false; private SharedPreferences m_prefs; private HeaderViewRecyclerAdapter m_adapter; - @State ArticleList m_articles = new ArticleList(); + ArticleList m_articles = new ArticleList(); private ArticleList m_readArticles = new ArticleList(); private HeadlinesEventListener m_listener; private OnlineActivity m_activity; private SwipeRefreshLayout m_swipeLayout; private int m_maxImageSize = 0; - @State boolean m_compactLayoutMode = false; + boolean m_compactLayoutMode = false; private RecyclerView m_list; private LinearLayoutManager m_layoutManager; @@ -287,11 +280,39 @@ public class HeadlinesFragment extends StateSavedFragment { public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); + if (savedInstanceState != null) { + m_feed = savedInstanceState.getParcelable("m_feed"); + m_activeArticle = savedInstanceState.getParcelable("m_activeArticle"); + m_searchQuery = savedInstanceState.getString("m_searchQuery"); + m_firstId = savedInstanceState.getInt("m_firstId"); + m_lazyLoadDisabled = savedInstanceState.getBoolean("m_lazyLoadDisabled"); + + ArrayList
list = savedInstanceState.getParcelableArrayList("m_articles"); + + m_articles.clear(); // ? + m_articles.addAll(list); + + savedInstanceState.getBoolean("m_compactLayoutMode", m_compactLayoutMode); + } + setRetainInstance(true); Glide.get(getContext()).clearMemory(); } + @Override + public void onSaveInstanceState(Bundle out) { + super.onSaveInstanceState(out); + + out.putParcelable("m_feed", m_feed); + out.putParcelable("m_activeArticle", m_activeArticle); + out.putString("m_searchQuery", m_searchQuery); + out.putInt("m_firstId", m_firstId); + out.putBoolean("m_lazyLoadDisabled", m_lazyLoadDisabled); + out.putParcelable("m_articles", m_articles); + out.putBoolean("m_compactLayoutMode", m_compactLayoutMode); + } + @Override public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { 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 75a9c268..60fad0ba 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 @@ -7,19 +7,18 @@ import android.view.MenuItem; import android.widget.ArrayAdapter; import android.widget.ListView; -import java.io.BufferedReader; -import java.io.InputStreamReader; -import java.util.ArrayList; - import androidx.appcompat.app.AppCompatDelegate; import androidx.appcompat.widget.Toolbar; import androidx.swiperefreshlayout.widget.SwipeRefreshLayout; -import com.evernote.android.state.State; + +import java.io.BufferedReader; +import java.io.InputStreamReader; +import java.util.ArrayList; public class LogcatActivity extends CommonActivity { private static final int MAX_LOG_ENTRIES = 500; private final String TAG = this.getClass().getSimpleName(); - @State protected ArrayList m_items = new ArrayList<>(); + protected ArrayList m_items = new ArrayList<>(); ArrayAdapter m_adapter; ListView m_list; @@ -41,6 +40,8 @@ public class LogcatActivity extends CommonActivity { if (savedInstanceState == null) { refresh(); + } else { + m_items = savedInstanceState.getStringArrayList("m_items"); } m_adapter = new ArrayAdapter<>(this, R.layout.logcat_row, m_items); @@ -59,6 +60,13 @@ public class LogcatActivity extends CommonActivity { }); } + @Override + public void onSaveInstanceState(Bundle out) { + super.onSaveInstanceState(out); + + out.putStringArrayList("m_items", m_items); + } + private void refresh() { m_items.clear(); 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 7591774d..62fa7227 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 @@ -34,8 +34,6 @@ import java.util.Date; import java.util.HashMap; import java.util.LinkedHashMap; -import com.evernote.android.state.State; - public class MasterActivity extends OnlineActivity implements HeadlinesEventListener { private final String TAG = this.getClass().getSimpleName(); @@ -45,8 +43,8 @@ public class MasterActivity extends OnlineActivity implements HeadlinesEventList protected long m_lastRefresh = 0; protected long m_lastWidgetRefresh = 0; - @State protected boolean m_feedIsSelected = false; - @State protected boolean m_userFeedSelected = false; + protected boolean m_feedIsSelected = false; + protected boolean m_userFeedSelected = false; private ActionBarDrawerToggle m_drawerToggle; private DrawerLayout m_drawerLayout; @@ -196,6 +194,9 @@ public class MasterActivity extends OnlineActivity implements HeadlinesEventList } else { // savedInstanceState != null + m_feedIsSelected = savedInstanceState.getBoolean("m_feedIsSelected"); + m_userFeedSelected = savedInstanceState.getBoolean("m_userFeedSelected"); + if (m_drawerLayout != null && !m_feedIsSelected) { m_drawerLayout.openDrawer(GravityCompat.START); } @@ -411,6 +412,9 @@ public class MasterActivity extends OnlineActivity implements HeadlinesEventList public void onSaveInstanceState(Bundle out) { super.onSaveInstanceState(out); + out.putBoolean("m_feedIsSelected", m_feedIsSelected); + out.putBoolean("m_userFeedSelected", m_userFeedSelected); + Application.getInstance().save(out); } 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 deleted file mode 100755 index 08802acd..00000000 --- a/org.fox.ttrss/src/main/java/org/fox/ttrss/StateSavedFragment.java +++ /dev/null @@ -1,23 +0,0 @@ -package org.fox.ttrss; - -import android.os.Bundle; - -import com.livefront.bridge.Bridge; - -import androidx.fragment.app.Fragment; - -public class StateSavedFragment extends Fragment { - @Override - public void onCreate(Bundle savedInstanceState) { - super.onCreate(savedInstanceState); - - Bridge.restoreInstanceState(this, savedInstanceState); - } - - @Override - public void onSaveInstanceState(Bundle out) { - super.onSaveInstanceState(out); - - Bridge.saveInstanceState(this, out); - } -} diff --git a/org.fox.ttrss/src/main/java/org/fox/ttrss/share/CommonShareActivity.java b/org.fox.ttrss/src/main/java/org/fox/ttrss/share/CommonShareActivity.java index e810f49f..620916f8 100755 --- a/org.fox.ttrss/src/main/java/org/fox/ttrss/share/CommonShareActivity.java +++ b/org.fox.ttrss/src/main/java/org/fox/ttrss/share/CommonShareActivity.java @@ -16,13 +16,11 @@ import org.fox.ttrss.PreferencesActivity; import org.fox.ttrss.R; import org.fox.ttrss.util.SimpleLoginManager; -import com.evernote.android.state.State; - public abstract class CommonShareActivity extends CommonActivity { protected SharedPreferences m_prefs; - @State protected String m_sessionId; - @State protected int m_apiLevel = 0; + protected String m_sessionId; + protected int m_apiLevel = 0; private final String TAG = this.getClass().getSimpleName(); @@ -31,9 +29,22 @@ public abstract class CommonShareActivity extends CommonActivity { m_prefs = PreferenceManager .getDefaultSharedPreferences(getApplicationContext()); + if (savedInstanceState != null) { + m_sessionId = savedInstanceState.getString("m_sessionId"); + m_apiLevel = savedInstanceState.getInt("m_apiLevel"); + } + super.onCreate(savedInstanceState); } + @Override + public void onSaveInstanceState(Bundle out) { + super.onSaveInstanceState(out); + + out.putString("m_sessionId", m_sessionId); + out.putInt("m_apiLevel", m_apiLevel); + } + protected abstract void onLoggedIn(int requestId); protected abstract void onLoggingIn(int requestId); diff --git a/org.fox.ttrss/src/main/java/org/fox/ttrss/types/GalleryEntry.java b/org.fox.ttrss/src/main/java/org/fox/ttrss/types/GalleryEntry.java index 0eb45074..50e34f78 100644 --- a/org.fox.ttrss/src/main/java/org/fox/ttrss/types/GalleryEntry.java +++ b/org.fox.ttrss/src/main/java/org/fox/ttrss/types/GalleryEntry.java @@ -1,14 +1,51 @@ package org.fox.ttrss.types; +import android.os.Parcel; +import android.os.Parcelable; + import java.io.Serializable; -public class GalleryEntry implements Serializable { +public class GalleryEntry implements Serializable, Parcelable { + @Override + public int describeContents() { + return 0; + } + + @SuppressWarnings("rawtypes") + public static final Parcelable.Creator CREATOR = + new Parcelable.Creator() { + public GalleryEntry createFromParcel(Parcel in) { + return new GalleryEntry(in); + } + + public GalleryEntry[] newArray(int size) { + return new GalleryEntry[size]; + } + }; + public enum GalleryEntryType { TYPE_IMAGE, TYPE_VIDEO } public String url; public GalleryEntryType type; public String coverUrl; + @Override + public void writeToParcel(Parcel out, int flags) { + out.writeString(url); + out.writeString(type.name()); + out.writeString(coverUrl); + } + + public void readFromParcel(Parcel in) { + url = in.readString(); + type = GalleryEntryType.valueOf(in.readString()); + coverUrl = in.readString(); + } + + public GalleryEntry(Parcel in) { + readFromParcel(in); + } + public GalleryEntry() { // } -- cgit v1.2.3-54-g00ecf From 9644a0f5925fa09d5677784ba92b6710bfc29d15 Mon Sep 17 00:00:00 2001 From: Andrew Dolgov Date: Tue, 6 May 2025 15:55:54 +0300 Subject: drop some custom colors, replace with material3 theme stock; some tablet fixes --- .../main/java/org/fox/ttrss/ArticleFragment.java | 8 ++----- .../src/main/java/org/fox/ttrss/ArticlePager.java | 22 +++++++++--------- .../main/java/org/fox/ttrss/DetailActivity.java | 1 + .../main/java/org/fox/ttrss/HeadlinesFragment.java | 15 ++++++++++--- .../fox/ttrss/offline/OfflineArticleFragment.java | 26 +++++----------------- .../ttrss/offline/OfflineHeadlinesFragment.java | 2 +- .../res/layout-sw600dp-land/activity_master.xml | 3 +-- .../res/layout-sw600dp-port/activity_master.xml | 6 ++--- .../main/res/layout-sw600dp/activity_detail.xml | 3 +-- .../src/main/res/layout/activity_detail_phone.xml | 3 +-- .../src/main/res/layout/activity_master_phone.xml | 6 ++--- .../src/main/res/layout/feeds_row_selected.xml | 2 +- .../res/layout/headlines_row_selected_compact.xml | 2 +- .../headlines_row_selected_unread_compact.xml | 2 +- .../src/main/res/layout/headlines_row_unread.xml | 2 +- .../res/layout/headlines_row_unread_compact.xml | 12 +++++----- org.fox.ttrss/src/main/res/values-night/style.xml | 6 ----- org.fox.ttrss/src/main/res/values/attrs.xml | 7 ------ org.fox.ttrss/src/main/res/values/style.xml | 6 ----- 19 files changed, 50 insertions(+), 84 deletions(-) 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 2f5464f9..86a68d5b 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 @@ -405,8 +405,6 @@ public class ArticleFragment extends androidx.fragment.app.Fragment { m_web = view.findViewById(R.id.article_content); - m_web.setBackgroundColor(Color.TRANSPARENT); - m_web.setWebViewClient(new WebViewClient() { @Override public boolean shouldOverrideUrlLoading(WebView view, String url) { @@ -495,17 +493,15 @@ public class ArticleFragment extends androidx.fragment.app.Fragment { String articleContent = m_article.content != null ? m_article.content : ""; - ws.setJavaScriptEnabled(true); + ws.setJavaScriptEnabled(false); m_chromeClient = new FSVideoChromeClient(getView()); m_web.setWebChromeClient(m_chromeClient); + m_web.setBackgroundColor(Color.TRANSPARENT); ws.setMixedContentMode(WebSettings.MIXED_CONTENT_ALWAYS_ALLOW); ws.setMediaPlaybackRequiresUserGesture(true); - if (m_activity.isUiNightMode()) { - m_web.setBackgroundColor(Color.BLACK); - } if (m_prefs.getBoolean("justify_article_text", true)) { cssOverride += "body { text-align : justify; } "; 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 eb4cdd55..cdaca2dd 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 @@ -109,13 +109,23 @@ public class ArticlePager extends androidx.fragment.app.Fragment { m_searchQuery = searchQuery; } + @Override + public void onSaveInstanceState(Bundle out) { + super.onSaveInstanceState(out); + + out.putParcelable("m_article", m_article); + //out.putParcelable("m_articles", m_articles); + out.putParcelable("m_feed", m_feed); + out.putInt("m_firstId", m_firstId); + } + @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); if (savedInstanceState != null) { m_article = savedInstanceState.getParcelable("m_article"); - m_articles = savedInstanceState.getParcelable("m_articles"); + //m_articles = savedInstanceState.getParcelable("m_articles"); m_feed = savedInstanceState.getParcelable("m_feed"); m_firstId = savedInstanceState.getInt("m_firstId"); } @@ -360,16 +370,6 @@ public class ArticlePager extends androidx.fragment.app.Fragment { m_prefs = PreferenceManager.getDefaultSharedPreferences(getActivity().getApplicationContext()); } - @Override - public void onSaveInstanceState(Bundle out) { - super.onSaveInstanceState(out); - - out.putParcelable("m_article", m_article); - out.putParcelable("m_articles", m_articles); - out.putParcelable("m_feed", m_feed); - out.putInt("m_firstId", m_firstId); - } - @SuppressLint("NewApi") @Override public void onResume() { 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 56fc1539..eda894dc 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 @@ -114,6 +114,7 @@ public class DetailActivity extends OnlineActivity implements HeadlinesEventList ArticleList tmp = Application.getInstance().tmpArticleList; if (tmp != null) { + m_articles.clear(); m_articles.addAll(tmp); } 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 35ca0dba..f1546080 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 @@ -287,10 +287,17 @@ public class HeadlinesFragment extends androidx.fragment.app.Fragment { m_firstId = savedInstanceState.getInt("m_firstId"); m_lazyLoadDisabled = savedInstanceState.getBoolean("m_lazyLoadDisabled"); - ArrayList
list = savedInstanceState.getParcelableArrayList("m_articles"); + /*ArrayList
list = savedInstanceState.getParcelableArrayList("m_articles"); m_articles.clear(); // ? - m_articles.addAll(list); + m_articles.addAll(list);*/ + + ArticleList tmp = Application.getInstance().tmpArticleList; + + if (tmp != null) { + m_articles.clear(); + m_articles.addAll(Application.getInstance().tmpArticleList); + } savedInstanceState.getBoolean("m_compactLayoutMode", m_compactLayoutMode); } @@ -309,8 +316,10 @@ public class HeadlinesFragment extends androidx.fragment.app.Fragment { out.putString("m_searchQuery", m_searchQuery); out.putInt("m_firstId", m_firstId); out.putBoolean("m_lazyLoadDisabled", m_lazyLoadDisabled); - out.putParcelable("m_articles", m_articles); + //out.putParcelable("m_articles", m_articles); out.putBoolean("m_compactLayoutMode", m_compactLayoutMode); + + Application.getInstance().tmpArticleList = m_articles; } @Override 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 28839388..465c461d 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 @@ -276,10 +276,6 @@ public class OfflineArticleFragment extends Fragment { if (m_web != null) { - if (m_activity.isUiNightMode()) { - m_web.setBackgroundColor(Color.BLACK); - } - m_web.setWebViewClient(new WebViewClient() { @Override public boolean shouldOverrideUrlLoading(WebView view, String url) { @@ -312,19 +308,16 @@ public class OfflineArticleFragment extends Fragment { }); String content; - String cssOverride = ""; WebSettings ws = m_web.getSettings(); ws.setSupportZoom(false); + ws.setJavaScriptEnabled(false); - if (android.os.Build.VERSION.SDK_INT >= Build.VERSION_CODES.KITKAT) { - ws.setJavaScriptEnabled(true); + m_chromeClient = new FSVideoChromeClient(getView()); + m_web.setWebChromeClient(m_chromeClient); + m_web.setBackgroundColor(Color.TRANSPARENT); - m_chromeClient = new FSVideoChromeClient(getView()); - m_web.setWebChromeClient(m_chromeClient); - - ws.setMediaPlaybackRequiresUserGesture(true); - } + ws.setMediaPlaybackRequiresUserGesture(true); // we need to show "insecure" file:// urls if (m_prefs.getBoolean("offline_image_cache_enabled", false) && @@ -333,19 +326,12 @@ public class OfflineArticleFragment extends Fragment { ws.setMixedContentMode(WebSettings.MIXED_CONTENT_ALWAYS_ALLOW); } - TypedValue tvBackground = new TypedValue(); - getActivity().getTheme().resolveAttribute(R.attr.articleBackground, tvBackground, true); - - String backgroundHexColor = String.format("#%06X", (0xFFFFFF & tvBackground.data)); - - cssOverride = "body { background : "+ backgroundHexColor+"; }"; - TypedValue tvTextColor = new TypedValue(); getActivity().getTheme().resolveAttribute(R.attr.articleTextColor, tvTextColor, true); String textColor = String.format("#%06X", (0xFFFFFF & tvTextColor.data)); - cssOverride += "body { color : "+textColor+"; }"; + String cssOverride = "body { color : "+textColor+"; }"; TypedValue tvLinkColor = new TypedValue(); getActivity().getTheme().resolveAttribute(R.attr.linkColor, tvLinkColor, true); 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 386af632..258a1ddd 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 @@ -505,7 +505,7 @@ public class OfflineHeadlinesFragment extends Fragment implements OnItemClickLis public ImageView flavorVideoKindView; public View flavorImageOverflow; public View headlineHeader; - public ImageView attachmentsView; + public MaterialButton attachmentsView; public MaterialButton scoreView; public ArticleViewHolder(View v) { diff --git a/org.fox.ttrss/src/main/res/layout-sw600dp-land/activity_master.xml b/org.fox.ttrss/src/main/res/layout-sw600dp-land/activity_master.xml index 9ba663f6..879725c1 100644 --- a/org.fox.ttrss/src/main/res/layout-sw600dp-land/activity_master.xml +++ b/org.fox.ttrss/src/main/res/layout-sw600dp-land/activity_master.xml @@ -27,14 +27,13 @@ android:layout_width="0dp" android:layout_height="match_parent" android:layout_weight="0.25" - android:background="?feedlistBackground" > + android:background="?colorSurfaceContainer"> + android:layout_height="wrap_content"/> @@ -45,7 +44,6 @@ android:layout_width="300dp" android:layout_height="match_parent" android:layout_gravity="start" - android:background="@android:color/white" android:elevation="10dp" android:fitsSystemWindows="true" app:insetForeground="#4000"> @@ -53,7 +51,7 @@ diff --git a/org.fox.ttrss/src/main/res/layout-sw600dp/activity_detail.xml b/org.fox.ttrss/src/main/res/layout-sw600dp/activity_detail.xml index 89ab61f5..be10ef36 100644 --- a/org.fox.ttrss/src/main/res/layout-sw600dp/activity_detail.xml +++ b/org.fox.ttrss/src/main/res/layout-sw600dp/activity_detail.xml @@ -26,8 +26,7 @@ android:id="@+id/headlines_fragment" android:layout_width="0dp" android:layout_height="match_parent" - android:layout_weight="0.3" - android:background="?headlinesBackground" > + android:layout_weight="0.3"> + android:layout_width="0dp"> \ No newline at end of file diff --git a/org.fox.ttrss/src/main/res/layout/activity_master_phone.xml b/org.fox.ttrss/src/main/res/layout/activity_master_phone.xml index 6ae5064f..9f47eb24 100644 --- a/org.fox.ttrss/src/main/res/layout/activity_master_phone.xml +++ b/org.fox.ttrss/src/main/res/layout/activity_master_phone.xml @@ -31,8 +31,7 @@ android:id="@+id/headlines_fragment" app:layout_behavior=".util.FabAwareScrollingViewBehavior" android:layout_width="match_parent" - android:layout_height="wrap_content" - android:background="?headlinesBackground" /> + android:layout_height="wrap_content"/> @@ -42,7 +41,6 @@ android:layout_width="300dp" android:layout_height="match_parent" android:layout_gravity="start" - android:background="@android:color/white" android:elevation="10dp" android:fitsSystemWindows="true" app:insetForeground="#4000"> @@ -50,7 +48,7 @@ diff --git a/org.fox.ttrss/src/main/res/layout/feeds_row_selected.xml b/org.fox.ttrss/src/main/res/layout/feeds_row_selected.xml index d5b6cb3c..6c7a4b29 100755 --- a/org.fox.ttrss/src/main/res/layout/feeds_row_selected.xml +++ b/org.fox.ttrss/src/main/res/layout/feeds_row_selected.xml @@ -5,7 +5,7 @@ android:layout_width="match_parent" android:layout_height="wrap_content" android:descendantFocusability="blocksDescendants" - android:background="?feedsSelectedBackground" + android:background="?colorSurfaceDim" android:paddingLeft="16dp" android:paddingRight="16dp" android:paddingTop="8dp" diff --git a/org.fox.ttrss/src/main/res/layout/headlines_row_selected_compact.xml b/org.fox.ttrss/src/main/res/layout/headlines_row_selected_compact.xml index da2401eb..bd114157 100755 --- a/org.fox.ttrss/src/main/res/layout/headlines_row_selected_compact.xml +++ b/org.fox.ttrss/src/main/res/layout/headlines_row_selected_compact.xml @@ -8,7 +8,7 @@ android:layout_width="fill_parent" android:layout_height="wrap_content" android:orientation="horizontal" - android:background="?headlineSelectedBackground" + android:background="?colorPrimaryContainer" tools:ignore="HardcodedText" > + android:background="?colorSurfaceContainerLowest"> - - - + app:icon="?ic_star_outline" /> diff --git a/org.fox.ttrss/src/main/res/values-night/style.xml b/org.fox.ttrss/src/main/res/values-night/style.xml index 3c15a0fd..9f9183e8 100644 --- a/org.fox.ttrss/src/main/res/values-night/style.xml +++ b/org.fox.ttrss/src/main/res/values-night/style.xml @@ -13,19 +13,13 @@ #00FF00 #bebebe ?headlineSelectedExcerptTextColor - #1c1c1c #99000000 - #101010 #2d92c8 @android:color/black #bebebe #303030 #101010 @android:drawable/divider_horizontal_dark - #1c1d1e - #1c1d1e - @android:color/black - #1c1c1c @android:color/white @android:color/transparent @android:color/white diff --git a/org.fox.ttrss/src/main/res/values/attrs.xml b/org.fox.ttrss/src/main/res/values/attrs.xml index 93892545..a16fd6f4 100755 --- a/org.fox.ttrss/src/main/res/values/attrs.xml +++ b/org.fox.ttrss/src/main/res/values/attrs.xml @@ -1,16 +1,9 @@ - - - - - - - diff --git a/org.fox.ttrss/src/main/res/values/style.xml b/org.fox.ttrss/src/main/res/values/style.xml index 6a494015..ab3f39dc 100755 --- a/org.fox.ttrss/src/main/res/values/style.xml +++ b/org.fox.ttrss/src/main/res/values/style.xml @@ -11,14 +11,8 @@ @android:drawable/divider_horizontal_bright - #e0e0e0 #909090 - #f0f0f0 - @android:color/white - #dddddd #ccffffff - @android:color/white - #dddddd @android:color/black @android:color/black @android:color/black -- cgit v1.2.3-54-g00ecf From dadff9f5b83169298ba462c328aa2db0c7b7acff Mon Sep 17 00:00:00 2001 From: Andrew Dolgov Date: Tue, 6 May 2025 16:04:23 +0300 Subject: drop some more colors & switch toggle unread only to material switch --- .../main/res/layout/activity_tasker_settings.xml | 36 ---------------------- org.fox.ttrss/src/main/res/layout/feeds_row.xml | 2 +- .../src/main/res/layout/feeds_row_selected.xml | 2 +- .../src/main/res/layout/feeds_row_toggle.xml | 3 +- org.fox.ttrss/src/main/res/values-night/style.xml | 2 -- org.fox.ttrss/src/main/res/values/attrs.xml | 1 - org.fox.ttrss/src/main/res/values/style.xml | 2 -- 7 files changed, 4 insertions(+), 44 deletions(-) delete mode 100644 org.fox.ttrss/src/main/res/layout/activity_tasker_settings.xml diff --git a/org.fox.ttrss/src/main/res/layout/activity_tasker_settings.xml b/org.fox.ttrss/src/main/res/layout/activity_tasker_settings.xml deleted file mode 100644 index efdd76ab..00000000 --- a/org.fox.ttrss/src/main/res/layout/activity_tasker_settings.xml +++ /dev/null @@ -1,36 +0,0 @@ - - -