aboutsummaryrefslogtreecommitdiff
path: root/org.fox.ttrss/src/main/java/org/fox
diff options
context:
space:
mode:
Diffstat (limited to 'org.fox.ttrss/src/main/java/org/fox')
-rwxr-xr-xorg.fox.ttrss/src/main/java/org/fox/ttrss/ArticleFragment.java3
-rwxr-xr-xorg.fox.ttrss/src/main/java/org/fox/ttrss/ArticlePager.java64
-rwxr-xr-xorg.fox.ttrss/src/main/java/org/fox/ttrss/DetailActivity.java111
-rwxr-xr-xorg.fox.ttrss/src/main/java/org/fox/ttrss/HeadlinesFragment.java12
-rwxr-xr-xorg.fox.ttrss/src/main/java/org/fox/ttrss/OnlineActivity.java99
-rwxr-xr-xorg.fox.ttrss/src/main/java/org/fox/ttrss/offline/OfflineHeadlinesFragment.java8
-rw-r--r--org.fox.ttrss/src/main/java/org/fox/ttrss/util/DetailActivityScrollingViewBehavior.java7
7 files changed, 171 insertions, 133 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 dd27631b..f7fb8433 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
@@ -39,6 +39,7 @@ import java.text.DateFormat;
import java.text.SimpleDateFormat;
import java.util.Date;
+// TODO: add ability to update already rendered contents from article somehow (to refresh note, etc)
public class ArticleFragment extends androidx.fragment.app.Fragment {
private final String TAG = this.getClass().getSimpleName();
@@ -336,8 +337,6 @@ public class ArticleFragment extends androidx.fragment.app.Fragment {
}
});
- m_web.setVisibility(View.VISIBLE);
-
renderContent(savedInstanceState);
return view;
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 c94f0c3a..9b1455f3 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
@@ -14,9 +14,13 @@ import android.view.View;
import android.view.ViewGroup;
import androidx.fragment.app.Fragment;
+import androidx.fragment.app.FragmentActivity;
import androidx.fragment.app.FragmentManager;
import androidx.fragment.app.FragmentStatePagerAdapter;
+import androidx.recyclerview.widget.RecyclerView;
import androidx.viewpager.widget.ViewPager;
+import androidx.viewpager2.adapter.FragmentStateAdapter;
+import androidx.viewpager2.widget.ViewPager2;
import com.google.android.material.snackbar.Snackbar;
import com.google.gson.JsonElement;
@@ -31,7 +35,7 @@ import java.util.HashMap;
public class ArticlePager extends androidx.fragment.app.Fragment {
private final String TAG = "ArticlePager";
- private PagerAdapter m_adapter;
+ private RecyclerView.Adapter m_adapter;
private HeadlinesEventListener m_listener;
protected Article m_article;
protected ArticleList m_articles = new ArticleList(); //m_articles = Application.getInstance().m_loadedArticles;
@@ -42,29 +46,18 @@ public class ArticlePager extends androidx.fragment.app.Fragment {
protected int m_firstId = 0;
private boolean m_refreshInProgress;
private boolean m_lazyLoadDisabled;
+ private ViewPager2 m_pager;
- private class PagerAdapter extends FragmentStatePagerAdapter {
+ private class PagerAdapter extends FragmentStateAdapter {
- public PagerAdapter(FragmentManager fm) {
- super(fm);
+ public PagerAdapter(FragmentActivity fa) {
+ super(fa);
}
private ArticleFragment m_currentFragment;
- // workaround for possible TransactionTooLarge exception on 8.0+
- // we don't need to save member state anyway, bridge takes care of it
@Override
- public Parcelable saveState() {
- Bundle bundle = (Bundle) super.saveState();
-
- if (bundle != null)
- bundle.putParcelableArray("states", null); // Never maintain any states from the base class, just null it out
-
- return bundle;
- }
-
- @Override
- public Fragment getItem(int position) {
+ public Fragment createFragment(int position) {
try {
Article article = m_articles.get(position);
@@ -82,7 +75,7 @@ public class ArticlePager extends androidx.fragment.app.Fragment {
}
@Override
- public int getCount() {
+ public int getItemCount() {
return m_articles.size();
}
@@ -90,13 +83,6 @@ public class ArticlePager extends androidx.fragment.app.Fragment {
return m_currentFragment;
}
- @Override
- public void setPrimaryItem(ViewGroup container, int position, Object object) {
- m_currentFragment = ((ArticleFragment) object);
-
- super.setPrimaryItem(container, position, object);
- }
-
}
public void initialize(Article article, Feed feed, ArticleList articles) {
@@ -125,7 +111,6 @@ public class ArticlePager extends androidx.fragment.app.Fragment {
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");
}
@@ -136,30 +121,26 @@ public class ArticlePager extends androidx.fragment.app.Fragment {
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
View view = inflater.inflate(R.layout.fragment_article_pager, container, false);
-
+
if (savedInstanceState != null) {
if (m_activity instanceof DetailActivity) {
m_articles = ((DetailActivity)m_activity).m_articles;
}
}
- m_adapter = new PagerAdapter(getActivity().getSupportFragmentManager());
+ m_adapter = new PagerAdapter(getActivity());
- ViewPager pager = view.findViewById(R.id.article_pager);
-
+ m_pager = view.findViewById(R.id.article_pager);
+
int position = m_articles.indexOf(m_article);
m_listener.onArticleSelected(m_article, false);
- pager.setAdapter(m_adapter);
-
- pager.setCurrentItem(position);
- pager.addOnPageChangeListener(new ViewPager.OnPageChangeListener() {
- @Override
- public void onPageScrolled(int position, float positionOffset, int positionOffsetPixels) {
-
- }
+ m_pager.setAdapter(m_adapter);
+ m_pager.setOffscreenPageLimit(3);
+ m_pager.setCurrentItem(position);
+ m_pager.registerOnPageChangeCallback(new ViewPager2.OnPageChangeCallback() {
@Override
public void onPageSelected(int position) {
Log.d(TAG, "onPageSelected: " + position);
@@ -178,7 +159,7 @@ public class ArticlePager extends androidx.fragment.app.Fragment {
//Log.d(TAG, "Page #" + position + "/" + m_adapter.getCount());
- if (!m_refreshInProgress && !m_lazyLoadDisabled && (m_activity.isSmallScreen() || m_activity.isPortrait()) && position >= m_adapter.getCount() - 5) {
+ if (!m_refreshInProgress && !m_lazyLoadDisabled && (m_activity.isSmallScreen() || m_activity.isPortrait()) && position >= m_adapter.getItemCount() - 5) {
Log.d(TAG, "loading more articles...");
new Handler().postDelayed(new Runnable() {
@@ -190,11 +171,6 @@ public class ArticlePager extends androidx.fragment.app.Fragment {
}
}
}
-
- @Override
- public void onPageScrollStateChanged(int state) {
-
- }
});
return view;
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 0edd6c10..8c573910 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
@@ -10,12 +10,14 @@ import android.os.Bundle;
import android.os.Handler;
import android.preference.PreferenceManager;
import android.util.Log;
+import android.view.Menu;
import android.view.MenuItem;
import android.view.View;
import androidx.appcompat.widget.Toolbar;
import androidx.fragment.app.FragmentTransaction;
+import com.google.android.material.bottomappbar.BottomAppBar;
import com.google.android.material.floatingactionbutton.FloatingActionButton;
import org.fox.ttrss.types.Article;
@@ -25,6 +27,7 @@ import org.fox.ttrss.types.Feed;
public class DetailActivity extends OnlineActivity implements HeadlinesEventListener {
private final String TAG = this.getClass().getSimpleName();
protected ArticleList m_articles = new ArticleList();
+ protected BottomAppBar m_bottomAppBar;
protected SharedPreferences m_prefs;
private Article m_activeArticle;
@@ -68,6 +71,52 @@ public class DetailActivity extends OnlineActivity implements HeadlinesEventList
headlines.setVisibility(View.GONE);
}
+ m_bottomAppBar = findViewById(R.id.detail_bottom_appbar);
+
+ if (m_bottomAppBar != null) {
+ m_bottomAppBar.setOnMenuItemClickListener(new Toolbar.OnMenuItemClickListener() {
+ @Override
+ public boolean onMenuItemClick(MenuItem item) {
+
+ final ArticlePager ap = (ArticlePager) getSupportFragmentManager().findFragmentByTag(FRAG_ARTICLE);
+ final HeadlinesFragment hf = (HeadlinesFragment) getSupportFragmentManager().findFragmentByTag(FRAG_HEADLINES);
+
+ Article article = ap.getSelectedArticle();
+
+ if (article == null) return false;
+
+ int itemId = item.getItemId();
+
+ if (itemId == R.id.article_set_labels) {
+ editArticleLabels(article);
+
+ return true;
+ } else if (itemId == R.id.toggle_attachments) {
+ displayAttachments(article);
+
+ return true;
+ } else if (itemId == R.id.article_edit_note) {
+ editArticleNote(article);
+
+ return true;
+ } else if (itemId == R.id.article_set_score) {
+ setArticleScore(article);
+
+ return true;
+ } else if (itemId == R.id.toggle_unread) {
+ article.unread = !article.unread;
+ saveArticleUnread(article);
+
+ if (hf != null) {
+ hf.notifyUpdated();
+ }
+ }
+
+ return false;
+ }
+ });
+ }
+
FloatingActionButton fab = findViewById(R.id.detail_fab);
if (fab != null && m_prefs.getBoolean("enable_article_fab", true)) {
@@ -136,11 +185,50 @@ public class DetailActivity extends OnlineActivity implements HeadlinesEventList
if (feed != null)
setTitle(feed.title);
+
+ initBottomBarMenu();
+ }
+ }
+ }
+
+ @Override
+ public void invalidateOptionsMenu() {
+ super.invalidateOptionsMenu();
+
+ initBottomBarMenu();
+ }
+
+ protected void initBottomBarMenu() {
+ if (m_bottomAppBar != null) {
+ Menu menu = m_bottomAppBar.getMenu();
+
+ menu.findItem(R.id.article_set_labels).setEnabled(getApiLevel() >= 1);
+ menu.findItem(R.id.article_edit_note).setEnabled(getApiLevel() >= 1);
+
+ final ArticlePager ap = (ArticlePager) getSupportFragmentManager().findFragmentByTag(FRAG_ARTICLE);
+
+ if (ap != null) {
+ Article article = ap.getSelectedArticle();
+
+ if (article != null) {
+ if (article.score > 0) {
+ menu.findItem(R.id.article_set_score).setIcon(R.drawable.baseline_trending_up_24);
+ } else if (article.score < 0) {
+ menu.findItem(R.id.article_set_score).setIcon(R.drawable.baseline_trending_down_24);
+ } else {
+ menu.findItem(R.id.article_set_score).setIcon(R.drawable.baseline_trending_flat_24);
+ }
+
+ menu.findItem(R.id.toggle_unread).setIcon(article.unread ? R.drawable.baseline_mark_as_unread_24 :
+ R.drawable.baseline_email_24);
+
+ menu.findItem(R.id.toggle_attachments).setVisible(article.attachments != null && article.attachments.size() > 0);
+ }
}
}
}
- @Override
+ @Override
public void onConfigurationChanged(Configuration newConfig) {
super.onConfigurationChanged(newConfig);
@@ -197,30 +285,13 @@ public class DetailActivity extends OnlineActivity implements HeadlinesEventList
if (m_menu != null && getSessionId() != null) {
m_menu.setGroupVisible(R.id.menu_group_feeds, false);
- //HeadlinesFragment hf = (HeadlinesFragment)getSupportFragmentManager().findFragmentByTag(FRAG_HEADLINES);
-
m_menu.setGroupVisible(R.id.menu_group_headlines, !isPortrait() && !isSmallScreen());
- //m_menu.findItem(R.id.headlines_toggle_sidebar).setVisible(!isPortrait() && !isSmallScreen());
m_menu.findItem(R.id.headlines_toggle_sort_order).setVisible(false);
ArticlePager af = (ArticlePager) getSupportFragmentManager().findFragmentByTag(FRAG_ARTICLE);
m_menu.setGroupVisible(R.id.menu_group_article, af != null);
-
- if (af != null) {
- if (af.getSelectedArticle() != null && af.getSelectedArticle().attachments != null && af.getSelectedArticle().attachments.size() > 0) {
- /* if (!isCompatMode() && (isSmallScreen() || !isPortrait())) {
- m_menu.findItem(R.id.toggle_attachments).setShowAsAction(MenuItem.SHOW_AS_ACTION_IF_ROOM);
- } */
- m_menu.findItem(R.id.toggle_attachments).setVisible(true);
- } else {
- /* if (!isCompatMode()) {
- m_menu.findItem(R.id.toggle_attachments).setShowAsAction(MenuItem.SHOW_AS_ACTION_NEVER);
- } */
- m_menu.findItem(R.id.toggle_attachments).setVisible(false);
- }
- }
-
+
m_menu.findItem(R.id.search).setVisible(false);
}
}
@@ -278,7 +349,7 @@ public class DetailActivity extends OnlineActivity implements HeadlinesEventList
//Application.getInstance().m_activeArticle = article;
invalidateOptionsMenu();
-
+ initBottomBarMenu();
}
public void showSidebar(boolean show) {
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 b6953bc6..52ef4327 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
@@ -157,10 +157,10 @@ public class HeadlinesFragment extends androidx.fragment.app.Fragment {
if (article == null) return false;
int itemId = item.getItemId();
- if (itemId == R.id.set_labels) {
+ if (itemId == R.id.article_set_labels) {
m_activity.editArticleLabels(article);
return true;
- } else if (itemId == R.id.article_set_note) {
+ } else if (itemId == R.id.article_edit_note) {
m_activity.editArticleNote(article);
return true;
} else if (itemId == R.id.headlines_article_unread) {
@@ -268,8 +268,8 @@ public class HeadlinesFragment extends androidx.fragment.app.Fragment {
getActivity().getMenuInflater().inflate(R.menu.context_headlines, menu);
- menu.findItem(R.id.set_labels).setEnabled(m_activity.getApiLevel() >= 1);
- menu.findItem(R.id.article_set_note).setEnabled(m_activity.getApiLevel() >= 1);
+ menu.findItem(R.id.article_set_labels).setEnabled(m_activity.getApiLevel() >= 1);
+ menu.findItem(R.id.article_edit_note).setEnabled(m_activity.getApiLevel() >= 1);
super.onCreateContextMenu(menu, v, menuInfo);
}
@@ -1531,8 +1531,8 @@ public class HeadlinesFragment extends androidx.fragment.app.Fragment {
MenuInflater inflater = popup.getMenuInflater();
inflater.inflate(R.menu.context_headlines, popup.getMenu());
- popup.getMenu().findItem(R.id.set_labels).setEnabled(m_activity.getApiLevel() >= 1);
- popup.getMenu().findItem(R.id.article_set_note).setEnabled(m_activity.getApiLevel() >= 1);
+ popup.getMenu().findItem(R.id.article_set_labels).setEnabled(m_activity.getApiLevel() >= 1);
+ popup.getMenu().findItem(R.id.article_edit_note).setEnabled(m_activity.getApiLevel() >= 1);
popup.setOnMenuItemClickListener(new PopupMenu.OnMenuItemClickListener() {
@Override
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 f06c9a7c..ae4622ef 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
@@ -550,7 +550,7 @@ public class OnlineActivity extends CommonActivity {
/*case R.id.go_offline:
switchOffline();
return true;*/
- } else if (itemId == R.id.article_set_note) {
+ } else if (itemId == R.id.article_edit_note) {
if (ap != null && ap.getSelectedArticle() != null) {
editArticleNote(ap.getSelectedArticle());
}
@@ -859,7 +859,7 @@ public class OnlineActivity extends CommonActivity {
}
return true;
- } else if (itemId == R.id.set_labels) {
+ } else if (itemId == R.id.article_set_labels) {
if (ap != null && ap.getSelectedArticle() != null) {
if (getApiLevel() != 7) {
editArticleLabels(ap.getSelectedArticle());
@@ -937,27 +937,24 @@ public class OnlineActivity extends CommonActivity {
} */
public void editArticleNote(final Article article) {
- String note = "";
-
MaterialAlertDialogBuilder builder = new MaterialAlertDialogBuilder(this)
.setTitle(article.title);
final EditText topicEdit = new EditText(this);
- topicEdit.setText(note);
+ topicEdit.setText(article.note);
builder.setView(topicEdit);
- builder.setPositiveButton(R.string.article_set_note, new Dialog.OnClickListener() {
+ builder.setPositiveButton(R.string.article_edit_note, new Dialog.OnClickListener() {
public void onClick(DialogInterface dialog, int which) {
String note = topicEdit.getText().toString().trim();
saveArticleNote(article, note);
- article.published = true;
- article.note = note;
-
- saveArticlePublished(article);
-
+
HeadlinesFragment hf = (HeadlinesFragment) getSupportFragmentManager().findFragmentByTag(FRAG_HEADLINES);
if (hf != null) hf.notifyUpdated();
+
+ ArticlePager ap = (ArticlePager) getSupportFragmentManager().findFragmentByTag(FRAG_ARTICLE);
+ if (ap != null) ap.notifyUpdated();
}
});
@@ -1130,7 +1127,7 @@ public class OnlineActivity extends CommonActivity {
ApiRequest req = new ApiRequest(getApplicationContext()) {
protected void onPostExecute(JsonElement result) {
//toast(R.string.article_set_unread);
- initMenu();
+ invalidateOptionsMenu();
}
};
@@ -1204,7 +1201,7 @@ public class OnlineActivity extends CommonActivity {
public void saveArticleNote(final Article article, final String note) {
ApiRequest req = new ApiRequest(getApplicationContext()) {
protected void onPostExecute(JsonElement result) {
- //
+ article.note = note;
}
};
@@ -1413,64 +1410,54 @@ public class OnlineActivity extends CommonActivity {
}
// this may be called after activity has been destroyed (i.e. long asynctask)
- // might as well prevent null pointers if menu items are missing
protected void initMenu() {
- try {
- if (m_menu != null) {
- if (getSessionId() != null) {
- m_menu.setGroupVisible(R.id.menu_group_logged_in, true);
- m_menu.setGroupVisible(R.id.menu_group_logged_out, false);
- } else {
- m_menu.setGroupVisible(R.id.menu_group_logged_in, false);
- m_menu.setGroupVisible(R.id.menu_group_logged_out, true);
- }
-
- m_menu.setGroupVisible(R.id.menu_group_headlines, false);
- m_menu.setGroupVisible(R.id.menu_group_article, false);
- m_menu.setGroupVisible(R.id.menu_group_feeds, false);
+ if (m_menu != null) {
+ if (getSessionId() != null) {
+ m_menu.setGroupVisible(R.id.menu_group_logged_in, true);
+ m_menu.setGroupVisible(R.id.menu_group_logged_out, false);
+ } else {
+ m_menu.setGroupVisible(R.id.menu_group_logged_in, false);
+ m_menu.setGroupVisible(R.id.menu_group_logged_out, true);
+ }
- m_menu.findItem(R.id.set_labels).setEnabled(getApiLevel() >= 1);
- m_menu.findItem(R.id.article_set_note).setEnabled(getApiLevel() >= 1);
- m_menu.findItem(R.id.subscribe_to_feed).setEnabled(getApiLevel() >= 5);
+ m_menu.setGroupVisible(R.id.menu_group_headlines, false);
+ m_menu.setGroupVisible(R.id.menu_group_article, false);
+ m_menu.setGroupVisible(R.id.menu_group_feeds, false);
- MenuItem search = m_menu.findItem(R.id.search);
- search.setEnabled(getApiLevel() >= 2);
+ m_menu.findItem(R.id.subscribe_to_feed).setEnabled(getApiLevel() >= 5);
- ArticlePager ap = (ArticlePager) getSupportFragmentManager().findFragmentByTag(FRAG_ARTICLE);
+ MenuItem search = m_menu.findItem(R.id.search);
+ search.setEnabled(getApiLevel() >= 2);
- if (ap != null) {
- Article article = ap.getSelectedArticle();
+ ArticlePager ap = (ArticlePager) getSupportFragmentManager().findFragmentByTag(FRAG_ARTICLE);
- if (article != null) {
- m_menu.findItem(R.id.toggle_marked).setIcon(article.marked ? R.drawable.baseline_star_24 :
- R.drawable.baseline_star_outline_24);
+ if (ap != null) {
+ Article article = ap.getSelectedArticle();
- m_menu.findItem(R.id.toggle_published).setIcon(article.published ? R.drawable.baseline_check_box_24 :
- R.drawable.baseline_rss_feed_24);
+ if (article != null) {
+ m_menu.findItem(R.id.toggle_marked).setIcon(article.marked ? R.drawable.baseline_star_24 :
+ R.drawable.baseline_star_outline_24);
- m_menu.findItem(R.id.toggle_unread).setIcon(article.unread ? R.drawable.baseline_mark_as_unread_24 :
- R.drawable.baseline_email_24);
- }
+ m_menu.findItem(R.id.toggle_published).setIcon(article.published ? R.drawable.baseline_check_box_24 :
+ R.drawable.baseline_rss_feed_24);
}
+ }
- HeadlinesFragment hf = (HeadlinesFragment) getSupportFragmentManager().findFragmentByTag(FRAG_HEADLINES);
-
- if (hf != null && !m_forceDisableActionMode) {
- if (hf.getSelectedArticles().size() > 0) {
- if (m_headlinesActionMode == null) {
- m_headlinesActionMode = startSupportActionMode(m_headlinesActionModeCallback);
- }
+ HeadlinesFragment hf = (HeadlinesFragment) getSupportFragmentManager().findFragmentByTag(FRAG_HEADLINES);
- m_headlinesActionMode.setTitle(String.valueOf(hf.getSelectedArticles().size()));
- } else if (hf.getSelectedArticles().size() == 0 && m_headlinesActionMode != null) {
- m_headlinesActionMode.finish();
+ if (hf != null && !m_forceDisableActionMode) {
+ if (hf.getSelectedArticles().size() > 0) {
+ if (m_headlinesActionMode == null) {
+ m_headlinesActionMode = startSupportActionMode(m_headlinesActionModeCallback);
}
- } else if (m_forceDisableActionMode && m_headlinesActionMode != null) {
+
+ m_headlinesActionMode.setTitle(String.valueOf(hf.getSelectedArticles().size()));
+ } else if (hf.getSelectedArticles().size() == 0 && m_headlinesActionMode != null) {
m_headlinesActionMode.finish();
}
+ } else if (m_forceDisableActionMode && m_headlinesActionMode != null) {
+ m_headlinesActionMode.finish();
}
- } catch (NullPointerException e) {
- e.printStackTrace();
}
}
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 7994b576..0f1509fa 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
@@ -135,8 +135,8 @@ public class OfflineHeadlinesFragment extends Fragment implements OnItemClickLis
getActivity().getMenuInflater().inflate(R.menu.context_headlines, menu);
- menu.findItem(R.id.set_labels).setVisible(false);
- menu.findItem(R.id.article_set_note).setVisible(false);
+ menu.findItem(R.id.article_set_labels).setVisible(false);
+ menu.findItem(R.id.article_edit_note).setVisible(false);
if (m_prefs.getBoolean("offline_sort_by_feed", false)) {
menu.findItem(R.id.catchup_above).setVisible(false);
@@ -1037,8 +1037,8 @@ public class OfflineHeadlinesFragment extends Fragment implements OnItemClickLis
MenuInflater inflater = popup.getMenuInflater();
inflater.inflate(R.menu.context_headlines, popup.getMenu());
- popup.getMenu().findItem(R.id.set_labels).setVisible(false);
- popup.getMenu().findItem(R.id.article_set_note).setVisible(false);
+ popup.getMenu().findItem(R.id.article_set_labels).setVisible(false);
+ popup.getMenu().findItem(R.id.article_edit_note).setVisible(false);
popup.setOnMenuItemClickListener(new PopupMenu.OnMenuItemClickListener() {
@Override
diff --git a/org.fox.ttrss/src/main/java/org/fox/ttrss/util/DetailActivityScrollingViewBehavior.java b/org.fox.ttrss/src/main/java/org/fox/ttrss/util/DetailActivityScrollingViewBehavior.java
index 85e8ae4b..b977b9a8 100644
--- a/org.fox.ttrss/src/main/java/org/fox/ttrss/util/DetailActivityScrollingViewBehavior.java
+++ b/org.fox.ttrss/src/main/java/org/fox/ttrss/util/DetailActivityScrollingViewBehavior.java
@@ -7,6 +7,7 @@ import android.util.AttributeSet;
import android.view.View;
import com.google.android.material.appbar.AppBarLayout;
+import com.google.android.material.bottomappbar.BottomAppBar;
import com.google.android.material.floatingactionbutton.FloatingActionButton;
import java.util.List;
@@ -29,7 +30,7 @@ public class DetailActivityScrollingViewBehavior extends AppBarLayout.ScrollingV
@Override
public boolean layoutDependsOn(CoordinatorLayout parent, View child, View dependency) {
return super.layoutDependsOn(parent, child, dependency) ||
- dependency instanceof FloatingActionButton;
+ dependency instanceof FloatingActionButton || dependency instanceof BottomAppBar;
}
@Override
@@ -54,6 +55,8 @@ public class DetailActivityScrollingViewBehavior extends AppBarLayout.ScrollingV
for (View view : dependencies) {
if (view instanceof FloatingActionButton) {
((FloatingActionButton) view).hide();
+ } else if (view instanceof BottomAppBar) {
+ ((BottomAppBar) view).performHide();
}
}
} else if (dy < 0) {
@@ -62,6 +65,8 @@ public class DetailActivityScrollingViewBehavior extends AppBarLayout.ScrollingV
for (View view : dependencies) {
if (view instanceof FloatingActionButton) {
((FloatingActionButton) view).show();
+ } else if (view instanceof BottomAppBar) {
+ ((BottomAppBar) view).performShow();
}
}
}