From 436b307a230f6cc859dd8d9d69fc86b15d10c409 Mon Sep 17 00:00:00 2001 From: Twig N Date: Sun, 5 Jan 2020 21:15:25 +1100 Subject: [PATCH] - added tabs for local rss feeds - changed the way rss feeds refreshes a bit (RssfeedsFragment calls refresh during onResume() rather than activity) - RssfeedsFragment and RssitemsFragment now extends android.support.v4.app.Fragment - (WIP) it's gonna crash because tab2 currently returns null --- app/build.gradle | 2 + .../core/gui/rss/RssfeedsActivity.java | 66 +++++++++++++++++-- .../core/gui/rss/RssfeedsFragment.java | 8 ++- .../core/gui/rss/RssitemsFragment.java | 2 +- app/src/main/res/layout/activity_rssfeeds.xml | 22 +++++-- app/src/main/res/values/strings.xml | 4 +- 6 files changed, 90 insertions(+), 14 deletions(-) diff --git a/app/build.gradle b/app/build.gradle index 7f564591..ad4305d9 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -73,6 +73,8 @@ dependencies { implementation 'com.android.support:appcompat-v7:28.0.0' implementation 'com.android.support:recyclerview-v7:28.0.0' implementation 'com.android.support:support-annotations:28.0.0' + implementation 'com.android.support:design:28.0.0' + implementation 'com.android.support:support-v4:28.0.0' implementation 'com.getbase:floatingactionbutton:1.10.1' implementation 'com.nispok:snackbar:2.11.0' implementation 'com.github.aegnor:rencode-java:cb628e824e' diff --git a/app/src/main/java/org/transdroid/core/gui/rss/RssfeedsActivity.java b/app/src/main/java/org/transdroid/core/gui/rss/RssfeedsActivity.java index 88b180c7..8925d937 100644 --- a/app/src/main/java/org/transdroid/core/gui/rss/RssfeedsActivity.java +++ b/app/src/main/java/org/transdroid/core/gui/rss/RssfeedsActivity.java @@ -21,6 +21,12 @@ import android.content.Intent; import android.net.Uri; import android.os.Build; import android.os.Bundle; +import android.support.annotation.Nullable; +import android.support.design.widget.TabLayout; +import android.support.v4.app.Fragment; +import android.support.v4.app.FragmentManager; +import android.support.v4.app.FragmentPagerAdapter; +import android.support.v4.view.ViewPager; import android.support.v7.app.AppCompatActivity; import android.support.v7.widget.Toolbar; import android.text.TextUtils; @@ -61,12 +67,56 @@ public class RssfeedsActivity extends AppCompatActivity { protected List loaders; // Contained feeds and items fragments - @FragmentById(R.id.rssfeeds_fragment) protected RssfeedsFragment fragmentFeeds; @FragmentById(R.id.rssitems_fragment) protected RssitemsFragment fragmentItems; @ViewById protected Toolbar rssfeedsToolbar; + @ViewById(R.id.rssfeeds_tabs) + protected TabLayout tabLayout; + @ViewById(R.id.rssfeeds_pager) + protected ViewPager viewPager; + + protected static final int RSS_FEEDS_LOCAL = 0; + protected static final int RSS_FEEDS_REMOTE = 1; + + class PagerAdapter extends FragmentPagerAdapter { + public PagerAdapter(FragmentManager fm) { + super(fm); + } + + @Override + public Fragment getItem(int position) { + Fragment fragment = null; + + if (position == RSS_FEEDS_LOCAL) { + fragment = fragmentFeeds; + } + else if (position == RSS_FEEDS_REMOTE) { + fragment = null; + } + + return fragment; + } + + @Override + public int getCount() { + return 2; + } + + @Nullable + @Override + public CharSequence getPageTitle(int position) { + switch (position) { + case RSS_FEEDS_LOCAL: + return getString(R.string.navigation_rss_tabs_local); + case RSS_FEEDS_REMOTE: + return getString(R.string.navigation_rss_tabs_remote); + } + + return super.getPageTitle(position); + } + } @Override public void onCreate(Bundle savedInstanceState) { @@ -82,6 +132,14 @@ public class RssfeedsActivity extends AppCompatActivity { setSupportActionBar(rssfeedsToolbar); getSupportActionBar().setTitle(NavigationHelper.buildCondensedFontString(getString(R.string.rss_feeds))); getSupportActionBar().setDisplayHomeAsUpEnabled(true); + + fragmentFeeds = RssfeedsFragment_.builder().build(); + fragmentItems = RssitemsFragment_.builder().build(); + + PagerAdapter pagerAdapter = new PagerAdapter(getSupportFragmentManager()); + viewPager.setAdapter(pagerAdapter); + tabLayout.setupWithViewPager(viewPager); + viewPager.setCurrentItem(0); } @TargetApi(Build.VERSION_CODES.HONEYCOMB) @@ -90,12 +148,6 @@ public class RssfeedsActivity extends AppCompatActivity { TorrentsActivity_.intent(this).flags(Intent.FLAG_ACTIVITY_CLEAR_TOP).start(); } - @Override - protected void onResume() { - super.onResume(); - refreshFeeds(); - } - /** * Reload the RSS feed settings and start loading all the feeds. To be called from contained fragments. */ diff --git a/app/src/main/java/org/transdroid/core/gui/rss/RssfeedsFragment.java b/app/src/main/java/org/transdroid/core/gui/rss/RssfeedsFragment.java index df227b4b..d7025ec7 100644 --- a/app/src/main/java/org/transdroid/core/gui/rss/RssfeedsFragment.java +++ b/app/src/main/java/org/transdroid/core/gui/rss/RssfeedsFragment.java @@ -16,7 +16,7 @@ */ package org.transdroid.core.gui.rss; -import android.app.Fragment; +import android.support.v4.app.Fragment; import android.view.Menu; import android.view.MenuItem; import android.view.View; @@ -77,6 +77,12 @@ public class RssfeedsFragment extends Fragment { MainSettingsActivity_.intent(getActivity()).start(); } + @Override + public void onResume() { + super.onResume(); + this.refreshScreen(); + } + @OptionsItem(R.id.action_refresh) protected void refreshScreen() { ((RssfeedsActivity) getActivity()).refreshFeeds(); diff --git a/app/src/main/java/org/transdroid/core/gui/rss/RssitemsFragment.java b/app/src/main/java/org/transdroid/core/gui/rss/RssitemsFragment.java index 869baf68..31c5d7f1 100644 --- a/app/src/main/java/org/transdroid/core/gui/rss/RssitemsFragment.java +++ b/app/src/main/java/org/transdroid/core/gui/rss/RssitemsFragment.java @@ -17,13 +17,13 @@ package org.transdroid.core.gui.rss; import android.app.AlertDialog; -import android.app.Fragment; import android.app.SearchManager; import android.content.ClipData; import android.content.ClipboardManager; import android.content.Context; import android.content.Intent; import android.net.Uri; +import android.support.v4.app.Fragment; import android.support.v7.app.AppCompatActivity; import android.text.TextUtils; import android.view.ActionMode; diff --git a/app/src/main/res/layout/activity_rssfeeds.xml b/app/src/main/res/layout/activity_rssfeeds.xml index 6fb3f0e4..0d4fe9dd 100644 --- a/app/src/main/res/layout/activity_rssfeeds.xml +++ b/app/src/main/res/layout/activity_rssfeeds.xml @@ -32,12 +32,26 @@ style="@style/DefaultToolbarShadow" android:layout_below="@id/rssfeeds_toolbar" /> - + android:layout_marginTop="-2dp"> + + + + + + + + + + + + diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index 7eb5dc56..694d8e8d 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -99,7 +99,9 @@ Invert selection Add torrent to… http://… - + RSS feeds + Remote feeds + STATUS: %1$s Waiting to check… Verifying local data…