From 42358f6f6d738b97a9e724688e3b497b693a57ba Mon Sep 17 00:00:00 2001 From: Andrew Dolgov Date: Thu, 4 Jun 2015 14:27:41 +0300 Subject: [PATCH] move settings and unread only switch to the drawer --- .../org/fox/ttrss/BaseFeedlistFragment.java | 109 ++++++++++++++++++ .../java/org/fox/ttrss/CommonActivity.java | 2 +- .../org/fox/ttrss/FeedCategoriesFragment.java | 77 ++++--------- .../java/org/fox/ttrss/FeedsActivity.java | 8 +- .../java/org/fox/ttrss/FeedsFragment.java | 71 ++++-------- .../OfflineFeedCategoriesFragment.java | 61 +++------- .../ttrss/offline/OfflineFeedsActivity.java | 8 +- .../ttrss/offline/OfflineFeedsFragment.java | 67 ++++------- .../res/drawable-hdpi/ic_settings_dark.png | Bin 0 -> 1288 bytes .../res/drawable-xhdpi/ic_settings_dark.png | Bin 0 -> 1778 bytes .../res/drawable-xxhdpi/ic_settings_dark.png | Bin 0 -> 2576 bytes .../res/drawable-xxxhdpi/ic_settings_dark.png | Bin 0 -> 3725 bytes .../src/main/res/layout/feeds_row.xml | 2 +- .../main/res/layout/feeds_row_selected.xml | 2 +- .../src/main/res/layout/feeds_row_toggle.xml | 46 ++++++++ .../src/main/res/layout/headlines_divider.xml | 15 +++ org.fox.ttrss/src/main/res/menu/main_menu.xml | 8 +- .../src/main/res/menu/offline_menu.xml | 4 +- org.fox.ttrss/src/main/res/values/attrs.xml | 1 + org.fox.ttrss/src/main/res/values/strings.xml | 1 + org.fox.ttrss/src/main/res/values/style.xml | 2 + 21 files changed, 271 insertions(+), 213 deletions(-) create mode 100755 org.fox.ttrss/src/main/java/org/fox/ttrss/BaseFeedlistFragment.java mode change 100644 => 100755 org.fox.ttrss/src/main/java/org/fox/ttrss/offline/OfflineFeedsActivity.java create mode 100755 org.fox.ttrss/src/main/res/drawable-hdpi/ic_settings_dark.png create mode 100755 org.fox.ttrss/src/main/res/drawable-xhdpi/ic_settings_dark.png create mode 100755 org.fox.ttrss/src/main/res/drawable-xxhdpi/ic_settings_dark.png create mode 100755 org.fox.ttrss/src/main/res/drawable-xxxhdpi/ic_settings_dark.png create mode 100755 org.fox.ttrss/src/main/res/layout/feeds_row_toggle.xml create mode 100755 org.fox.ttrss/src/main/res/layout/headlines_divider.xml 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 new file mode 100755 index 00000000..4a4585b6 --- /dev/null +++ b/org.fox.ttrss/src/main/java/org/fox/ttrss/BaseFeedlistFragment.java @@ -0,0 +1,109 @@ +package org.fox.ttrss; + +import android.content.Intent; +import android.content.SharedPreferences; +import android.net.Uri; +import android.support.v4.app.Fragment; +import android.support.v7.widget.SwitchCompat; +import android.util.TypedValue; +import android.view.InflateException; +import android.view.LayoutInflater; +import android.view.View; +import android.widget.CompoundButton; +import android.widget.ImageView; +import android.widget.ListView; +import android.widget.TextView; + +import java.net.MalformedURLException; +import java.net.URL; + +public abstract class BaseFeedlistFragment extends Fragment { + abstract public void refresh(boolean background); + + public void initDrawerHeader(LayoutInflater inflater, View view, ListView list, final CommonActivity activity, final SharedPreferences prefs) { + + if (true /*m_activity.findViewById(R.id.headlines_drawer) != null*/) { + try { + View layout = inflater.inflate(R.layout.drawer_header, list, false); + list.addHeaderView(layout, null, false); + + TextView login = (TextView) view.findViewById(R.id.drawer_header_login); + TextView server = (TextView) view.findViewById(R.id.drawer_header_server); + + login.setText(prefs.getString("login", "")); + try { + server.setText(new URL(prefs.getString("ttrss_url", "")).getHost()); + } catch (MalformedURLException e) { + server.setText(""); + } + + View account = view.findViewById(R.id.drawer_header_account); + + account.setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View v) { + try { + Intent intent = new Intent(Intent.ACTION_VIEW, + Uri.parse(prefs.getString("ttrss_url", ""))); + startActivity(intent); + } catch (Exception e) { + + } + } + }); + + /* deal with ~material~ footers */ + + // divider + View footer = inflater.inflate(R.layout.headlines_divider, list, false); + list.addFooterView(footer); + + // unread only checkbox + footer = inflater.inflate(R.layout.feeds_row_toggle, list, false); + list.addFooterView(footer); + TextView text = (TextView) footer.findViewById(R.id.title); + text.setText(R.string.unread_only); + + final SwitchCompat rowSwitch = (SwitchCompat) footer.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(true); + } + }); + + text.setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View v) { + rowSwitch.setChecked(!rowSwitch.isChecked()); + } + }); + + // settings + footer = inflater.inflate(R.layout.feeds_row, list, false); + list.addFooterView(footer); + text = (TextView) footer.findViewById(R.id.title); + text.setText(R.string.preferences); + + ImageView icon = (ImageView) footer.findViewById(R.id.icon); + TypedValue tv = new TypedValue(); + getActivity().getTheme().resolveAttribute(R.attr.ic_settings, tv, true); + icon.setImageResource(tv.resourceId); + + TextView counter = (TextView) footer.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/CommonActivity.java b/org.fox.ttrss/src/main/java/org/fox/ttrss/CommonActivity.java index 347c739b..347bb4b1 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 @@ -52,7 +52,7 @@ public class CommonActivity extends ActionBarActivity { } } } */ - + protected void setSmallScreen(boolean smallScreen) { Log.d(TAG, "m_smallScreenMode=" + smallScreen); m_smallScreenMode = smallScreen; 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 83f0ec25..795c0fe7 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 @@ -9,15 +9,12 @@ import android.content.DialogInterface; import android.content.Intent; import android.content.SharedPreferences; import android.content.SharedPreferences.OnSharedPreferenceChangeListener; -import android.net.Uri; import android.os.Bundle; import android.preference.PreferenceManager; -import android.support.v4.app.Fragment; import android.support.v4.widget.SwipeRefreshLayout; import android.util.Log; import android.view.ContextMenu; import android.view.ContextMenu.ContextMenuInfo; -import android.view.InflateException; import android.view.LayoutInflater; import android.view.MenuItem; import android.view.View; @@ -41,25 +38,23 @@ import org.fox.ttrss.types.FeedCategory; import org.fox.ttrss.types.FeedCategoryList; import java.lang.reflect.Type; -import java.net.MalformedURLException; -import java.net.URL; import java.util.ArrayList; import java.util.Collections; import java.util.Comparator; import java.util.HashMap; import java.util.List; -public class FeedCategoriesFragment extends Fragment implements OnItemClickListener, OnSharedPreferenceChangeListener { +public class FeedCategoriesFragment extends BaseFeedlistFragment implements OnItemClickListener, OnSharedPreferenceChangeListener { private final String TAG = this.getClass().getSimpleName(); - private SharedPreferences m_prefs; private FeedCategoryListAdapter m_adapter; private FeedCategoryList m_cats = new FeedCategoryList(); private FeedCategory m_selectedCat; private FeedsActivity m_activity; private SwipeRefreshLayout m_swipeLayout; private ListView m_list; + protected SharedPreferences m_prefs; - @SuppressLint("DefaultLocale") + @SuppressLint("DefaultLocale") class CatUnreadComparator implements Comparator { @Override public int compare(FeedCategory a, FeedCategory b) { @@ -222,44 +217,7 @@ public class FeedCategoriesFragment extends Fragment implements OnItemClickListe m_list = (ListView)view.findViewById(R.id.feeds); m_adapter = new FeedCategoryListAdapter(getActivity(), R.layout.feeds_row, (ArrayList)m_cats); - // TODO: better check - if (true /*m_activity.findViewById(R.id.headlines_drawer) != null*/) { - try { - View layout = inflater.inflate(R.layout.drawer_header, m_list, false); - m_list.addHeaderView(layout, null, false); - - TextView login = (TextView) view.findViewById(R.id.drawer_header_login); - TextView server = (TextView) view.findViewById(R.id.drawer_header_server); - - login.setText(m_prefs.getString("login", "")); - try { - server.setText(new URL(m_prefs.getString("ttrss_url", "")).getHost()); - } catch (MalformedURLException e) { - server.setText(""); - } - - View account = view.findViewById(R.id.drawer_header_account); - - account.setOnClickListener(new OnClickListener() { - @Override - public void onClick(View v) { - try { - Intent intent = new Intent(Intent.ACTION_VIEW, - Uri.parse(m_prefs.getString("ttrss_url", ""))); - startActivity(intent); - } catch (Exception e) { - - } - } - }); - - } catch (InflateException e) { - // welp couldn't inflate header i guess - e.printStackTrace(); - } catch (java.lang.UnsupportedOperationException e) { - e.printStackTrace(); - } - } + initDrawerHeader(inflater, view, m_list, m_activity, m_prefs); m_list.setAdapter(m_adapter); m_list.setOnItemClickListener(this); @@ -552,17 +510,28 @@ public class FeedCategoriesFragment extends Fragment implements OnItemClickListe Log.d(TAG, "onItemClick=" + position); if (list != null) { + + if (position == list.getCount() - 1) { + Intent intent = new Intent(m_activity, + PreferencesActivity.class); + startActivityForResult(intent, 0); + + return; + } + FeedCategory cat = (FeedCategory)list.getItemAtPosition(position); - if (cat.id < 0) { - m_activity.onCatSelected(cat, false); - } else { - m_activity.onCatSelected(cat); - } + if (cat != null) { + if (cat.id < 0) { + m_activity.onCatSelected(cat, false); + } else { + m_activity.onCatSelected(cat); + } - m_selectedCat = cat; - - m_adapter.notifyDataSetChanged(); + m_selectedCat = cat; + + m_adapter.notifyDataSetChanged(); + } } } diff --git a/org.fox.ttrss/src/main/java/org/fox/ttrss/FeedsActivity.java b/org.fox.ttrss/src/main/java/org/fox/ttrss/FeedsActivity.java index 5ad9b476..edc9ecef 100755 --- a/org.fox.ttrss/src/main/java/org/fox/ttrss/FeedsActivity.java +++ b/org.fox.ttrss/src/main/java/org/fox/ttrss/FeedsActivity.java @@ -229,13 +229,13 @@ public class FeedsActivity extends OnlineActivity implements HeadlinesEventListe //m_menu.findItem(R.id.headlines_toggle_sidebar).setVisible(false); - MenuItem item = m_menu.findItem(R.id.show_feeds); + /* MenuItem item = m_menu.findItem(R.id.show_feeds); if (getUnreadOnly()) { item.setTitle(R.string.menu_all_feeds); } else { item.setTitle(R.string.menu_unread_feeds); - } + } */ } } @@ -377,11 +377,11 @@ public class FeedsActivity extends OnlineActivity implements HeadlinesEventListe dialog.show(); return true; - case R.id.show_feeds: + /* case R.id.show_feeds: setUnreadOnly(!getUnreadOnly()); invalidateOptionsMenu(); refresh(); - return true; + return true; */ /*case R.id.update_feeds: //m_pullToRefreshAttacher.setRefreshing(true); refresh(); 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 ce25cdf5..fc1c7649 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 @@ -10,15 +10,12 @@ import android.content.Intent; import android.content.SharedPreferences; import android.content.SharedPreferences.OnSharedPreferenceChangeListener; import android.graphics.Typeface; -import android.net.Uri; import android.os.Bundle; import android.preference.PreferenceManager; -import android.support.v4.app.Fragment; import android.support.v4.widget.SwipeRefreshLayout; import android.util.Log; import android.view.ContextMenu; import android.view.ContextMenu.ContextMenuInfo; -import android.view.InflateException; import android.view.LayoutInflater; import android.view.MenuItem; import android.view.View; @@ -42,15 +39,13 @@ import org.fox.ttrss.types.FeedCategory; import org.fox.ttrss.types.FeedList; import java.lang.reflect.Type; -import java.net.MalformedURLException; -import java.net.URL; import java.util.ArrayList; import java.util.Collections; import java.util.Comparator; import java.util.HashMap; import java.util.List; -public class FeedsFragment extends Fragment implements OnItemClickListener, OnSharedPreferenceChangeListener { +public class FeedsFragment extends BaseFeedlistFragment implements OnItemClickListener, OnSharedPreferenceChangeListener { private final String TAG = this.getClass().getSimpleName(); private SharedPreferences m_prefs; private FeedListAdapter m_adapter; @@ -288,43 +283,7 @@ public class FeedsFragment extends Fragment implements OnItemClickListener, OnSh m_list = (ListView)view.findViewById(R.id.feeds); - // TODO: better check - if (true /*m_activity.findViewById(R.id.headlines_drawer) != null*/) { - try { - View layout = inflater.inflate(R.layout.drawer_header, m_list, false); - m_list.addHeaderView(layout, null, false); - - TextView login = (TextView) view.findViewById(R.id.drawer_header_login); - TextView server = (TextView) view.findViewById(R.id.drawer_header_server); - - login.setText(m_prefs.getString("login", "")); - try { - server.setText(new URL(m_prefs.getString("ttrss_url", "")).getHost()); - } catch (MalformedURLException e) { - server.setText(""); - } - - View account = view.findViewById(R.id.drawer_header_account); - - account.setOnClickListener(new OnClickListener() { - @Override - public void onClick(View v) { - try { - Intent intent = new Intent(Intent.ACTION_VIEW, - Uri.parse(m_prefs.getString("ttrss_url", ""))); - startActivity(intent); - } catch (Exception e) { - - } - } - }); - } catch (InflateException e) { - // welp couldn't inflate header i guess - e.printStackTrace(); - } catch (java.lang.UnsupportedOperationException e) { - e.printStackTrace(); - } - } + initDrawerHeader(inflater, view, m_list, m_activity, m_prefs); if (m_enableParentBtn) { View layout = inflater.inflate(R.layout.feeds_goback, m_list, false); @@ -399,16 +358,26 @@ public class FeedsFragment extends Fragment implements OnItemClickListener, OnSh ListView list = (ListView)av; if (list != null) { + if (position == list.getCount() - 1) { + Intent intent = new Intent(m_activity, + PreferencesActivity.class); + startActivityForResult(intent, 0); + + return; + } + Feed feed = (Feed)list.getItemAtPosition(position); - if (feed.is_cat) { - if (feed.always_display_as_feed) { - m_activity.onCatSelected(new FeedCategory(feed.id, feed.title, feed.unread), true); - } else { - m_activity.onCatSelected(new FeedCategory(feed.id, feed.title, feed.unread)); - } - } else { - m_activity.onFeedSelected(feed); + if (feed != null) { + if (feed.is_cat) { + if (feed.always_display_as_feed) { + m_activity.onCatSelected(new FeedCategory(feed.id, feed.title, feed.unread), true); + } else { + m_activity.onCatSelected(new FeedCategory(feed.id, feed.title, feed.unread)); + } + } else { + m_activity.onFeedSelected(feed); + } } m_selectedFeed = feed; 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 340b5997..0c48df4e 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 @@ -6,17 +6,14 @@ import android.content.Intent; import android.content.SharedPreferences; import android.content.SharedPreferences.OnSharedPreferenceChangeListener; import android.database.Cursor; -import android.net.Uri; import android.os.Bundle; import android.preference.PreferenceManager; import android.provider.BaseColumns; -import android.support.v4.app.Fragment; import android.support.v4.widget.SimpleCursorAdapter; import android.support.v4.widget.SwipeRefreshLayout; import android.util.Log; import android.view.ContextMenu; import android.view.ContextMenu.ContextMenuInfo; -import android.view.InflateException; import android.view.LayoutInflater; import android.view.MenuItem; import android.view.View; @@ -29,12 +26,11 @@ import android.widget.ImageButton; import android.widget.ListView; import android.widget.TextView; +import org.fox.ttrss.BaseFeedlistFragment; +import org.fox.ttrss.PreferencesActivity; import org.fox.ttrss.R; -import java.net.MalformedURLException; -import java.net.URL; - -public class OfflineFeedCategoriesFragment extends Fragment implements OnItemClickListener, OnSharedPreferenceChangeListener { +public class OfflineFeedCategoriesFragment extends BaseFeedlistFragment implements OnItemClickListener, OnSharedPreferenceChangeListener { private final String TAG = this.getClass().getSimpleName(); private SharedPreferences m_prefs; private FeedCategoryListAdapter m_adapter; @@ -152,43 +148,7 @@ public class OfflineFeedCategoriesFragment extends Fragment implements OnItemCli m_adapter = new FeedCategoryListAdapter(getActivity(), R.layout.feeds_row, m_cursor, new String[] { "title", "unread" }, new int[] { R.id.title, R.id.unread_counter }, 0); - // TODO: better check - if (true /*m_activity.findViewById(R.id.headlines_drawer) != null*/) { - try { - View layout = inflater.inflate(R.layout.drawer_header, m_list, false); - m_list.addHeaderView(layout, null, false); - - TextView login = (TextView) view.findViewById(R.id.drawer_header_login); - TextView server = (TextView) view.findViewById(R.id.drawer_header_server); - - login.setText(m_prefs.getString("login", "")); - try { - server.setText(new URL(m_prefs.getString("ttrss_url", "")).getHost()); - } catch (MalformedURLException e) { - server.setText(""); - } - - View account = view.findViewById(R.id.drawer_header_account); - - account.setOnClickListener(new OnClickListener() { - @Override - public void onClick(View v) { - try { - Intent intent = new Intent(Intent.ACTION_VIEW, - Uri.parse(m_prefs.getString("ttrss_url", ""))); - startActivity(intent); - } catch (Exception e) { - - } - } - }); - } catch (InflateException e) { - // welp couldn't inflate header i guess - e.printStackTrace(); - } catch (java.lang.UnsupportedOperationException e) { - e.printStackTrace(); - } - } + initDrawerHeader(inflater, view, m_list, m_activity, m_prefs); m_list.setAdapter(m_adapter); m_list.setOnItemClickListener(this); @@ -228,6 +188,14 @@ public class OfflineFeedCategoriesFragment extends Fragment implements OnItemCli ListView list = (ListView)getActivity().findViewById(R.id.feeds); if (list != null) { + if (position == list.getCount() - 1) { + Intent intent = new Intent(m_activity, + PreferencesActivity.class); + startActivityForResult(intent, 0); + + return; + } + Cursor cursor = (Cursor) list.getItemAtPosition(position); if (cursor != null) { @@ -243,6 +211,11 @@ public class OfflineFeedCategoriesFragment extends Fragment implements OnItemCli } } + @Override + public void refresh(boolean background) { + refresh(); + } + /* public void setLoadingStatus(int status, boolean showProgress) { if (getView() != null) { TextView tv = (TextView)getView().findViewById(R.id.loading_message); diff --git a/org.fox.ttrss/src/main/java/org/fox/ttrss/offline/OfflineFeedsActivity.java b/org.fox.ttrss/src/main/java/org/fox/ttrss/offline/OfflineFeedsActivity.java old mode 100644 new mode 100755 index 3d6817de..d6fd2e4e --- a/org.fox.ttrss/src/main/java/org/fox/ttrss/offline/OfflineFeedsActivity.java +++ b/org.fox.ttrss/src/main/java/org/fox/ttrss/offline/OfflineFeedsActivity.java @@ -180,11 +180,11 @@ public class OfflineFeedsActivity extends OfflineActivity implements OfflineHead dialog.show(); return true; - case R.id.show_feeds: + /* case R.id.show_feeds: setUnreadOnly(!getUnreadOnly()); invalidateOptionsMenu(); refresh(); - return true; + return true; */ default: Log.d(TAG, "onOptionsItemSelected, unhandled id=" + item.getItemId()); return super.onOptionsItemSelected(item); @@ -223,13 +223,13 @@ public class OfflineFeedsActivity extends OfflineActivity implements OfflineHead //m_menu.findItem(R.id.headlines_toggle_sidebar).setVisible(false); - MenuItem item = m_menu.findItem(R.id.show_feeds); + /* MenuItem item = m_menu.findItem(R.id.show_feeds); if (getUnreadOnly()) { item.setTitle(R.string.menu_all_feeds); } else { item.setTitle(R.string.menu_unread_feeds); - } + } */ } } 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 27f729f6..13d57dea 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 @@ -6,16 +6,13 @@ import android.content.Intent; import android.content.SharedPreferences; import android.content.SharedPreferences.OnSharedPreferenceChangeListener; import android.database.Cursor; -import android.net.Uri; import android.os.Bundle; import android.preference.PreferenceManager; -import android.support.v4.app.Fragment; import android.support.v4.widget.SimpleCursorAdapter; import android.support.v4.widget.SwipeRefreshLayout; import android.util.Log; import android.view.ContextMenu; import android.view.ContextMenu.ContextMenuInfo; -import android.view.InflateException; import android.view.LayoutInflater; import android.view.MenuItem; import android.view.View; @@ -28,12 +25,11 @@ import android.widget.ImageButton; import android.widget.ListView; import android.widget.TextView; +import org.fox.ttrss.BaseFeedlistFragment; +import org.fox.ttrss.PreferencesActivity; import org.fox.ttrss.R; -import java.net.MalformedURLException; -import java.net.URL; - -public class OfflineFeedsFragment extends Fragment implements OnItemClickListener, OnSharedPreferenceChangeListener { +public class OfflineFeedsFragment extends BaseFeedlistFragment implements OnItemClickListener, OnSharedPreferenceChangeListener { private final String TAG = this.getClass().getSimpleName(); private SharedPreferences m_prefs; private FeedListAdapter m_adapter; @@ -111,7 +107,7 @@ public class OfflineFeedsFragment extends Fragment implements OnItemClickListene null, unreadOnly, null, null, null, order); } } - + public void refresh() { try { if (!isAdded()) return; @@ -131,7 +127,7 @@ public class OfflineFeedsFragment extends Fragment implements OnItemClickListene e.printStackTrace(); } } - + @Override public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { @@ -154,45 +150,9 @@ public class OfflineFeedsFragment extends Fragment implements OnItemClickListene m_list = (ListView)view.findViewById(R.id.feeds); - // TODO: better check - if (true /*m_activity.findViewById(R.id.headlines_drawer) != null*/) { - try { - View layout = inflater.inflate(R.layout.drawer_header, m_list, false); - m_list.addHeaderView(layout, null, false); + initDrawerHeader(inflater, view, m_list, m_activity, m_prefs); - TextView login = (TextView) view.findViewById(R.id.drawer_header_login); - TextView server = (TextView) view.findViewById(R.id.drawer_header_server); - - login.setText(m_prefs.getString("login", "")); - try { - server.setText(new URL(m_prefs.getString("ttrss_url", "")).getHost()); - } catch (MalformedURLException e) { - server.setText(""); - } - - View account = view.findViewById(R.id.drawer_header_account); - - account.setOnClickListener(new OnClickListener() { - @Override - public void onClick(View v) { - try { - Intent intent = new Intent(Intent.ACTION_VIEW, - Uri.parse(m_prefs.getString("ttrss_url", ""))); - startActivity(intent); - } catch (Exception e) { - - } - } - }); - } catch (InflateException e) { - // welp couldn't inflate header i guess - e.printStackTrace(); - } catch (java.lang.UnsupportedOperationException e) { - e.printStackTrace(); - } - } - - if (m_enableParentBtn) { + if (m_enableParentBtn) { View layout = inflater.inflate(R.layout.feeds_goback, container, false); layout.setLayoutParams(new ListView.LayoutParams(ListView.LayoutParams.MATCH_PARENT, @@ -255,6 +215,14 @@ public class OfflineFeedsFragment extends Fragment implements OnItemClickListene ListView list = (ListView)getActivity().findViewById(R.id.feeds); if (list != null) { + if (position == list.getCount() - 1) { + Intent intent = new Intent(m_activity, + PreferencesActivity.class); + startActivityForResult(intent, 0); + + return; + } + Cursor cursor = (Cursor) list.getItemAtPosition(position); if (cursor != null) { @@ -270,6 +238,11 @@ public class OfflineFeedsFragment extends Fragment implements OnItemClickListene } } + @Override + public void refresh(boolean background) { + refresh(); + } + /* public void setLoadingStatus(int status, boolean showProgress) { if (getView() != null) { TextView tv = (TextView)getView().findViewById(R.id.loading_message); diff --git a/org.fox.ttrss/src/main/res/drawable-hdpi/ic_settings_dark.png b/org.fox.ttrss/src/main/res/drawable-hdpi/ic_settings_dark.png new file mode 100755 index 0000000000000000000000000000000000000000..1069b9a527a51d03f541459ed354e00cc01818ad GIT binary patch literal 1288 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 U#%1F$3jhEB07*qoM6N<$f+P`7v;Y7A literal 0 HcmV?d00001 diff --git a/org.fox.ttrss/src/main/res/drawable-xxhdpi/ic_settings_dark.png b/org.fox.ttrss/src/main/res/drawable-xxhdpi/ic_settings_dark.png new file mode 100755 index 0000000000000000000000000000000000000000..b6fe478addd739729d8d60abdedbfb0a4a5d329a GIT binary patch literal 2576 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 literal 0 HcmV?d00001 diff --git a/org.fox.ttrss/src/main/res/drawable-xxxhdpi/ic_settings_dark.png b/org.fox.ttrss/src/main/res/drawable-xxxhdpi/ic_settings_dark.png new file mode 100755 index 0000000000000000000000000000000000000000..6bde63cdcfb10afc1de90c0986cfada7ebfb2225 GIT binary patch literal 3725 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 literal 0 HcmV?d00001 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 138cede3..b8fe5724 100755 --- a/org.fox.ttrss/src/main/res/layout/feeds_row.xml +++ b/org.fox.ttrss/src/main/res/layout/feeds_row.xml @@ -2,7 +2,7 @@ + + + + + + + + + \ No newline at end of file diff --git a/org.fox.ttrss/src/main/res/layout/headlines_divider.xml b/org.fox.ttrss/src/main/res/layout/headlines_divider.xml new file mode 100755 index 00000000..40294376 --- /dev/null +++ b/org.fox.ttrss/src/main/res/layout/headlines_divider.xml @@ -0,0 +1,15 @@ + + + + + + + \ No newline at end of file diff --git a/org.fox.ttrss/src/main/res/menu/main_menu.xml b/org.fox.ttrss/src/main/res/menu/main_menu.xml index f3715010..8693dc2b 100755 --- a/org.fox.ttrss/src/main/res/menu/main_menu.xml +++ b/org.fox.ttrss/src/main/res/menu/main_menu.xml @@ -9,11 +9,11 @@ app:showAsAction="" android:title="@string/subscribe_to_feed"/> - + android:title="@string/menu_all_feeds"/> --> - + android:title="@string/preferences"/> --> diff --git a/org.fox.ttrss/src/main/res/menu/offline_menu.xml b/org.fox.ttrss/src/main/res/menu/offline_menu.xml index f51521b7..11c37642 100755 --- a/org.fox.ttrss/src/main/res/menu/offline_menu.xml +++ b/org.fox.ttrss/src/main/res/menu/offline_menu.xml @@ -7,11 +7,11 @@ app:showAsAction="" android:title="@string/go_online" android:visible="false"/> - + android:title="@string/menu_all_feeds"/> --> + \ No newline at end of file diff --git a/org.fox.ttrss/src/main/res/values/strings.xml b/org.fox.ttrss/src/main/res/values/strings.xml index 39246126..1d88f150 100755 --- a/org.fox.ttrss/src/main/res/values/strings.xml +++ b/org.fox.ttrss/src/main/res/values/strings.xml @@ -23,6 +23,7 @@ Loading, please wait… Show unread feeds Show all feeds + Unread only Refresh Share article Mark read diff --git a/org.fox.ttrss/src/main/res/values/style.xml b/org.fox.ttrss/src/main/res/values/style.xml index ffe02dc8..a3fe17f7 100755 --- a/org.fox.ttrss/src/main/res/values/style.xml +++ b/org.fox.ttrss/src/main/res/values/style.xml @@ -44,6 +44,7 @@ @drawable/ic_star_outline_dark @drawable/ic_share_dark @drawable/ic_keyboard_backspace_dark + @drawable/ic_settings_dark