From 97e92defd99b4d9b4bbb85a6a7170a70b05cae75 Mon Sep 17 00:00:00 2001 From: Andrew Dolgov Date: Tue, 6 May 2025 19:58:35 +0300 Subject: drawer style tweaks --- .../java/org/fox/ttrss/BaseFeedlistFragment.java | 210 +++++++++------------ .../java/org/fox/ttrss/FeedCategoriesFragment.java | 2 +- .../res/layout-sw600dp-land/activity_master.xml | 28 ++- .../res/layout-sw600dp-port/activity_master.xml | 11 +- .../src/main/res/layout/activity_detail_phone.xml | 1 - .../src/main/res/layout/activity_master_phone.xml | 24 +-- .../src/main/res/layout/drawer_header.xml | 38 ++-- org.fox.ttrss/src/main/res/layout/feeds_goback.xml | 8 +- org.fox.ttrss/src/main/res/layout/feeds_row.xml | 116 ++++++------ .../src/main/res/layout/feeds_row_selected.xml | 120 ++++++------ .../src/main/res/layout/feeds_row_toggle.xml | 6 +- .../src/main/res/layout/fragment_cats.xml | 20 -- .../src/main/res/layout/fragment_feeds.xml | 4 +- org.fox.ttrss/src/main/res/values/style.xml | 3 +- 14 files changed, 260 insertions(+), 331 deletions(-) delete mode 100755 org.fox.ttrss/src/main/res/layout/fragment_cats.xml (limited to 'org.fox.ttrss/src') 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 853cfcbd..0952e7f7 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 @@ -25,152 +25,112 @@ public abstract class BaseFeedlistFragment extends androidx.fragment.app.Fragmen boolean isOffline = activity instanceof OfflineActivity; - if (true /*m_activity.findViewById(R.id.headlines_drawer) != null*/) { - try { + try { + View layout = inflater.inflate(R.layout.drawer_header, list, false); + list.addHeaderView(layout, null, false); - boolean needSettingsFooter = false; + TextView login = view.findViewById(R.id.drawer_header_login); + TextView server = view.findViewById(R.id.drawer_header_server); - if (activity.isSmallScreen()) { - View layout = inflater.inflate(R.layout.drawer_header, list, false); - list.addHeaderView(layout, null, false); + login.setText(prefs.getString("login", "")); + try { + server.setText(new URL(prefs.getString("ttrss_url", "")).getHost()); + } catch (MalformedURLException e) { + server.setText(""); + } - TextView login = view.findViewById(R.id.drawer_header_login); - TextView server = view.findViewById(R.id.drawer_header_server); + View settings = view.findViewById(R.id.drawer_settings_btn); - login.setText(prefs.getString("login", "")); + settings.setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View v) { try { - server.setText(new URL(prefs.getString("ttrss_url", "")).getHost()); - } catch (MalformedURLException e) { - server.setText(""); - } + Intent intent = new Intent(getActivity(), + PreferencesActivity.class); - View settings = view.findViewById(R.id.drawer_settings_btn); + startActivityForResult(intent, 0); - settings.setOnClickListener(new View.OnClickListener() { - @Override - public void onClick(View v) { - try { - Intent intent = new Intent(getActivity(), - PreferencesActivity.class); + } catch (Exception e) { + e.printStackTrace(); + } + } + }); - startActivityForResult(intent, 0); + /* deal with ~material~ footers */ - } catch (Exception e) { - e.printStackTrace(); - } - } - }); - } else { - needSettingsFooter = true; + // divider + final View footer = inflater.inflate(R.layout.drawer_divider, list, false); + footer.setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View v) { + // + } + }); + list.addFooterView(footer); + + // unread only checkbox + final View rowToggle = inflater.inflate(R.layout.feeds_row_toggle, list, false); + list.addFooterView(rowToggle); + TextView text = rowToggle.findViewById(R.id.title); + text.setText(R.string.unread_only); + + ImageView icon = rowToggle.findViewById(R.id.icon); + TypedValue tv = new TypedValue(); + getActivity().getTheme().resolveAttribute(R.attr.ic_filter_variant, tv, true); + icon.setImageResource(tv.resourceId); + + final SwitchCompat rowSwitch = rowToggle.findViewById(R.id.row_switch); + rowSwitch.setChecked(activity.getUnreadOnly()); + + rowSwitch.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() { + @Override + public void onCheckedChanged(CompoundButton button, boolean isChecked) { + activity.setUnreadOnly(isChecked); + refresh(); } + }); - /* deal with ~material~ footers */ + footer.setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View v) { + rowSwitch.setChecked(!rowSwitch.isChecked()); + } + }); - // divider - View footer = inflater.inflate(R.layout.drawer_divider, list, false); - footer.setOnClickListener(new View.OnClickListener() { + // root or subdirectory (i.e. feed category) + if (isRoot) { + // offline + final View offlineFooter = inflater.inflate(R.layout.feeds_row, list, false); + offlineFooter.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { - // - } - }); - list.addFooterView(footer); - - // unread only checkbox - footer = inflater.inflate(R.layout.feeds_row_toggle, list, false); - list.addFooterView(footer); - TextView text = footer.findViewById(R.id.title); - text.setText(R.string.unread_only); - - ImageView icon = footer.findViewById(R.id.icon); - TypedValue tv = new TypedValue(); - getActivity().getTheme().resolveAttribute(R.attr.ic_filter_variant, tv, true); - icon.setImageResource(tv.resourceId); - - final SwitchCompat rowSwitch = footer.findViewById(R.id.row_switch); - rowSwitch.setChecked(activity.getUnreadOnly()); + if (activity instanceof OnlineActivity) { + ((OnlineActivity)activity).switchOffline(); - rowSwitch.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() { - @Override - public void onCheckedChanged(CompoundButton button, boolean isChecked) { - activity.setUnreadOnly(isChecked); - refresh(); - } - }); - - footer.setOnClickListener(new View.OnClickListener() { - @Override - public void onClick(View v) { - rowSwitch.setChecked(!rowSwitch.isChecked()); + } else if (activity instanceof OfflineActivity) { + ((OfflineActivity)activity).switchOnline(); + } } }); - if (isRoot) { - if (needSettingsFooter) { - // settings (as a list footer row) - - footer = inflater.inflate(R.layout.feeds_row, list, false); - footer.setOnClickListener(new View.OnClickListener() { - @Override - public void onClick(View v) { - try { - Intent intent = new Intent(getActivity(), - PreferencesActivity.class); - - startActivityForResult(intent, 0); - - } catch (Exception e) { - e.printStackTrace(); - } - } - }); - - list.addFooterView(footer); - text = footer.findViewById(R.id.title); - text.setText(R.string.action_settings); - - icon = footer.findViewById(R.id.icon); - tv = new TypedValue(); - getActivity().getTheme().resolveAttribute(R.attr.ic_settings, tv, true); - icon.setImageResource(tv.resourceId); - - TextView counter = footer.findViewById(R.id.unread_counter); - counter.setText(R.string.blank); - } + list.addFooterView(offlineFooter); + text = offlineFooter.findViewById(R.id.title); + text.setText(isOffline ? R.string.go_online : R.string.go_offline); - // offline - footer = inflater.inflate(R.layout.feeds_row, list, false); - footer.setOnClickListener(new View.OnClickListener() { - @Override - public void onClick(View v) { - if (activity instanceof OnlineActivity) { - ((OnlineActivity)activity).switchOffline(); - - } else if (activity instanceof OfflineActivity) { - ((OfflineActivity)activity).switchOnline(); - } - } - }); - - list.addFooterView(footer); - text = footer.findViewById(R.id.title); - text.setText(isOffline ? R.string.go_online : R.string.go_offline); - - icon = footer.findViewById(R.id.icon); - tv = new TypedValue(); - getActivity().getTheme().resolveAttribute(isOffline ? R.attr.ic_cloud_upload : R.attr.ic_cloud_download, tv, true); - icon.setImageResource(tv.resourceId); - - TextView counter = footer.findViewById(R.id.unread_counter); - counter.setText(R.string.blank); - } + icon = offlineFooter.findViewById(R.id.icon); + tv = new TypedValue(); + getActivity().getTheme().resolveAttribute(isOffline ? R.attr.ic_cloud_upload : R.attr.ic_cloud_download, tv, true); + icon.setImageResource(tv.resourceId); - } catch (InflateException e) { - // welp couldn't inflate header i guess - e.printStackTrace(); - } catch (java.lang.UnsupportedOperationException e) { - e.printStackTrace(); + TextView counter = offlineFooter.findViewById(R.id.unread_counter); + counter.setText(R.string.blank); } + + } catch (InflateException e) { + // welp couldn't inflate header i guess + e.printStackTrace(); + } catch (java.lang.UnsupportedOperationException e) { + e.printStackTrace(); } } 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 af925ea4..b805ee6a 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 @@ -300,7 +300,7 @@ public class FeedCategoriesFragment extends BaseFeedlistFragment implements OnIt @Override public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { - View view = inflater.inflate(R.layout.fragment_cats, container, false); + View view = inflater.inflate(R.layout.fragment_feeds, container, false); m_swipeLayout = view.findViewById(R.id.feeds_swipe_container); 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 879725c1..33b4ebba 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 @@ -1,19 +1,16 @@ - + android:orientation="horizontal"> - - + android:layout_gravity="start" + app:elevation="8dp"> + + + + + + + @@ -38,15 +37,13 @@ - + app:elevation="8dp"> - + diff --git a/org.fox.ttrss/src/main/res/layout/activity_detail_phone.xml b/org.fox.ttrss/src/main/res/layout/activity_detail_phone.xml index d21c2661..1edd3bea 100644 --- a/org.fox.ttrss/src/main/res/layout/activity_detail_phone.xml +++ b/org.fox.ttrss/src/main/res/layout/activity_detail_phone.xml @@ -1,6 +1,5 @@ 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 e154646f..afbddd08 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 @@ -1,6 +1,5 @@ @@ -37,23 +36,20 @@ - + android:layout_gravity="start"> - - + + - + diff --git a/org.fox.ttrss/src/main/res/layout/drawer_header.xml b/org.fox.ttrss/src/main/res/layout/drawer_header.xml index 56f7a225..d9a9cb0b 100755 --- a/org.fox.ttrss/src/main/res/layout/drawer_header.xml +++ b/org.fox.ttrss/src/main/res/layout/drawer_header.xml @@ -1,24 +1,15 @@ - - + tools:text="user" + android:textAppearance="?attr/textAppearanceHeadlineSmall" + android:textColor="?attr/colorOnSurface"/> + android:textAppearance="?attr/textAppearanceTitleSmall" + android:textColor="?attr/colorOnSurfaceVariant"/> diff --git a/org.fox.ttrss/src/main/res/layout/feeds_goback.xml b/org.fox.ttrss/src/main/res/layout/feeds_goback.xml index bb263237..90aac490 100755 --- a/org.fox.ttrss/src/main/res/layout/feeds_goback.xml +++ b/org.fox.ttrss/src/main/res/layout/feeds_goback.xml @@ -1,5 +1,6 @@ + android:src="?ic_go_back" + app:tint="?colorAccent" /> diff --git a/org.fox.ttrss/src/main/res/layout/feeds_row.xml b/org.fox.ttrss/src/main/res/layout/feeds_row.xml index 6b980382..cfdc284d 100755 --- a/org.fox.ttrss/src/main/res/layout/feeds_row.xml +++ b/org.fox.ttrss/src/main/res/layout/feeds_row.xml @@ -1,64 +1,64 @@ - - - - - + android:orientation="horizontal"> - + - + + + + + - \ No newline at end of file + 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 23a972e3..a3d66851 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 @@ -1,66 +1,72 @@ - + app:cardElevation="0dp" + android:backgroundTint="?colorSurfaceDim" + android:layout_height="wrap_content"> - - - + android:orientation="horizontal"> - + - + + + + + + + - \ No newline at end of file + diff --git a/org.fox.ttrss/src/main/res/layout/feeds_row_toggle.xml b/org.fox.ttrss/src/main/res/layout/feeds_row_toggle.xml index 0dbbcfc9..53947a04 100755 --- a/org.fox.ttrss/src/main/res/layout/feeds_row_toggle.xml +++ b/org.fox.ttrss/src/main/res/layout/feeds_row_toggle.xml @@ -28,15 +28,13 @@ android:fontFamily="sans-serif-medium" android:layout_width="wrap_content" android:layout_height="wrap_content" - android:gravity="center_vertical" + android:layout_gravity="center_vertical" android:layout_weight="1" android:ellipsize="end" - android:paddingStart="35dp" + android:paddingStart="16dp" android:paddingEnd="16dp" android:singleLine="true" tools:text="Unread only" - android:textAlignment="viewStart" - android:paddingBottom="2dp" android:textColor="?feedlistTextColor" android:textSize="14sp" /> diff --git a/org.fox.ttrss/src/main/res/layout/fragment_cats.xml b/org.fox.ttrss/src/main/res/layout/fragment_cats.xml deleted file mode 100755 index 64240be6..00000000 --- a/org.fox.ttrss/src/main/res/layout/fragment_cats.xml +++ /dev/null @@ -1,20 +0,0 @@ - - - - - - - - - \ No newline at end of file diff --git a/org.fox.ttrss/src/main/res/layout/fragment_feeds.xml b/org.fox.ttrss/src/main/res/layout/fragment_feeds.xml index 2d8d963b..bf26e3fc 100755 --- a/org.fox.ttrss/src/main/res/layout/fragment_feeds.xml +++ b/org.fox.ttrss/src/main/res/layout/fragment_feeds.xml @@ -11,8 +11,10 @@ - -- cgit v1.2.3-54-g00ecf