diff options
Diffstat (limited to 'org.fox.ttrss')
19 files changed, 276 insertions, 131 deletions
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<JsonElement> { 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<JsonElement> { 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<Feed> 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<GalleryEntry> m_items = new ArrayList<>(); - @State protected String m_title; + protected ArrayList<GalleryEntry> 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<GalleryEntry> 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,12 +280,40 @@ 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<Article> 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) { if (savedInstanceState != null) { 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<String> m_items = new ArrayList<>(); + protected ArrayList<String> m_items = new ArrayList<>(); ArrayAdapter<String> 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() { // } |