Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/acomminos/Plumble.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAndrew Comminos <andrew@comminos.com>2016-02-01 08:07:39 +0300
committerAndrew Comminos <andrew@comminos.com>2016-02-01 08:07:39 +0300
commit69998097a38e32255a89c6149d934b05512ba39d (patch)
tree2b34e2531b16bf80304c02025801c3c533b589cb
parentfb2cd883c385c02dbcf340ac9264e04de494a94e (diff)
Added option to show/hide channel count.
-rw-r--r--app/src/main/java/com/morlunk/mumbleclient/Settings.java10
-rw-r--r--app/src/main/java/com/morlunk/mumbleclient/channel/ChannelListAdapter.java22
-rw-r--r--app/src/main/java/com/morlunk/mumbleclient/channel/ChannelListFragment.java25
-rw-r--r--app/src/main/res/values/preference.xml2
-rw-r--r--app/src/main/res/xml/settings_appearance.xml6
5 files changed, 60 insertions, 5 deletions
diff --git a/app/src/main/java/com/morlunk/mumbleclient/Settings.java b/app/src/main/java/com/morlunk/mumbleclient/Settings.java
index 4fe6676..450c4fe 100644
--- a/app/src/main/java/com/morlunk/mumbleclient/Settings.java
+++ b/app/src/main/java/com/morlunk/mumbleclient/Settings.java
@@ -156,6 +156,9 @@ public class Settings {
public static final String PREF_STAY_AWAKE = "stay_awake";
public static final boolean DEFAULT_STAY_AWAKE = false;
+ public static final String PREF_SHOW_USER_COUNT = "show_user_count";
+ public static final boolean DEFAULT_SHOW_USER_COUNT = false;
+
static {
ARRAY_INPUT_METHODS = new HashSet<String>();
ARRAY_INPUT_METHODS.add(ARRAY_INPUT_METHOD_VOICE);
@@ -429,4 +432,11 @@ public class Settings {
public boolean isUsingCertificate() {
return getDefaultCertificate() >= 0;
}
+
+ /**
+ * @return true if the user count should be shown next to channels.
+ */
+ public boolean shouldShowUserCount() {
+ return preferences.getBoolean(PREF_SHOW_USER_COUNT, DEFAULT_SHOW_USER_COUNT);
+ }
}
diff --git a/app/src/main/java/com/morlunk/mumbleclient/channel/ChannelListAdapter.java b/app/src/main/java/com/morlunk/mumbleclient/channel/ChannelListAdapter.java
index cc30afe..bc993a9 100644
--- a/app/src/main/java/com/morlunk/mumbleclient/channel/ChannelListAdapter.java
+++ b/app/src/main/java/com/morlunk/mumbleclient/channel/ChannelListAdapter.java
@@ -84,15 +84,18 @@ public class ChannelListAdapter extends RecyclerView.Adapter implements UserMenu
private HashMap<Integer, Boolean> mExpandedChannels;
private OnUserClickListener mUserClickListener;
private OnChannelClickListener mChannelClickListener;
+ private boolean mShowChannelUserCount;
private final FragmentManager mFragmentManager;
public ChannelListAdapter(Context context, IJumbleService service, PlumbleDatabase database,
- FragmentManager fragmentManager, boolean showPinnedOnly) throws RemoteException {
+ FragmentManager fragmentManager, boolean showPinnedOnly,
+ boolean showChannelUserCount) throws RemoteException {
setHasStableIds(true);
mContext = context;
mService = service;
mDatabase = database;
mFragmentManager = fragmentManager;
+ mShowChannelUserCount = showChannelUserCount;
mRootChannels = new ArrayList<Integer>();
if(showPinnedOnly) {
@@ -154,8 +157,13 @@ public class ChannelListAdapter extends RecyclerView.Adapter implements UserMenu
cvh.mChannelName.setText(channel.getName());
- int userCount = channel.getSubchannelUserCount();
- cvh.mChannelUserCount.setText(String.format("%d", userCount));
+ if (mShowChannelUserCount) {
+ cvh.mChannelUserCount.setVisibility(View.VISIBLE);
+ int userCount = channel.getSubchannelUserCount();
+ cvh.mChannelUserCount.setText(String.format("%d", userCount));
+ } else {
+ cvh.mChannelUserCount.setVisibility(View.GONE);
+ }
// Pad the view depending on channel's nested level.
DisplayMetrics metrics = mContext.getResources().getDisplayMetrics();
@@ -387,6 +395,14 @@ public class ChannelListAdapter extends RecyclerView.Adapter implements UserMenu
}
/**
+ * Sets whether to show the channel user count in a channel row.
+ */
+ public void setShowChannelUserCount(boolean showUserCount) {
+ mShowChannelUserCount = showUserCount;
+ notifyDataSetChanged();
+ }
+
+ /**
* Recursively creates a list of {@link Node}s representing the channel hierarchy.
* @param parent The parent node to propagate under.
* @param channel The parent channel.
diff --git a/app/src/main/java/com/morlunk/mumbleclient/channel/ChannelListFragment.java b/app/src/main/java/com/morlunk/mumbleclient/channel/ChannelListFragment.java
index fc1991e..3427509 100644
--- a/app/src/main/java/com/morlunk/mumbleclient/channel/ChannelListFragment.java
+++ b/app/src/main/java/com/morlunk/mumbleclient/channel/ChannelListFragment.java
@@ -23,11 +23,13 @@ import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.Intent;
import android.content.IntentFilter;
+import android.content.SharedPreferences;
import android.database.CursorWrapper;
import android.graphics.PorterDuff;
import android.media.AudioManager;
import android.os.Bundle;
import android.os.RemoteException;
+import android.preference.PreferenceManager;
import android.support.v4.view.MenuItemCompat;
import android.support.v7.app.ActionBarActivity;
import android.support.v7.view.ActionMode;
@@ -48,10 +50,11 @@ import com.morlunk.jumble.util.IJumbleObserver;
import com.morlunk.jumble.util.JumbleException;
import com.morlunk.jumble.util.JumbleObserver;
import com.morlunk.mumbleclient.R;
+import com.morlunk.mumbleclient.Settings;
import com.morlunk.mumbleclient.db.DatabaseProvider;
import com.morlunk.mumbleclient.util.JumbleServiceFragment;
-public class ChannelListFragment extends JumbleServiceFragment implements OnChannelClickListener, OnUserClickListener {
+public class ChannelListFragment extends JumbleServiceFragment implements OnChannelClickListener, OnUserClickListener, SharedPreferences.OnSharedPreferenceChangeListener {
private IJumbleObserver mServiceObserver = new JumbleObserver() {
@Override
@@ -128,6 +131,7 @@ public class ChannelListFragment extends JumbleServiceFragment implements OnChan
private ChatTargetProvider mTargetProvider;
private DatabaseProvider mDatabaseProvider;
private ActionMode mActionMode;
+ private Settings mSettings;
@Override
public void onCreate(Bundle savedInstanceState) {
@@ -148,6 +152,9 @@ public class ChannelListFragment extends JumbleServiceFragment implements OnChan
} catch (ClassCastException e) {
throw new ClassCastException(getActivity().toString()+" must implement DatabaseProvider");
}
+ mSettings = Settings.getInstance(activity);
+ SharedPreferences preferences = PreferenceManager.getDefaultSharedPreferences(activity);
+ preferences.registerOnSharedPreferenceChangeListener(this);
}
@Override
@@ -174,6 +181,13 @@ public class ChannelListFragment extends JumbleServiceFragment implements OnChan
}
@Override
+ public void onDestroy() {
+ super.onDestroy();
+ SharedPreferences preferences = PreferenceManager.getDefaultSharedPreferences(getActivity());
+ preferences.unregisterOnSharedPreferenceChangeListener(this);
+ }
+
+ @Override
public IJumbleObserver getServiceObserver() {
return mServiceObserver;
}
@@ -294,7 +308,7 @@ public class ChannelListFragment extends JumbleServiceFragment implements OnChan
private void setupChannelList() throws RemoteException {
mChannelListAdapter = new ChannelListAdapter(getActivity(), getService(),
mDatabaseProvider.getDatabase(), getChildFragmentManager(),
- isShowingPinnedChannels());
+ isShowingPinnedChannels(), mSettings.shouldShowUserCount());
mChannelListAdapter.setOnChannelClickListener(this);
mChannelListAdapter.setOnUserClickListener(this);
mChannelView.setAdapter(mChannelListAdapter);
@@ -356,4 +370,11 @@ public class ChannelListFragment extends JumbleServiceFragment implements OnChan
mActionMode = ((ActionBarActivity)getActivity()).startSupportActionMode(cb);
}
}
+
+ @Override
+ public void onSharedPreferenceChanged(SharedPreferences sharedPreferences, String key) {
+ if (Settings.PREF_SHOW_USER_COUNT.equals(key) && mChannelListAdapter != null) {
+ mChannelListAdapter.setShowChannelUserCount(mSettings.shouldShowUserCount());
+ }
+ }
}
diff --git a/app/src/main/res/values/preference.xml b/app/src/main/res/values/preference.xml
index fcbc015..4a093ab 100644
--- a/app/src/main/res/values/preference.xml
+++ b/app/src/main/res/values/preference.xml
@@ -127,4 +127,6 @@
<string name="pref_import_certificate_summary">Import a certificate from external storage.</string>
<string name="pref_export_certificate_title">Export Certificate</string>
<string name="pref_export_certificate_summary">Exports a certificate to external storage.</string>
+ <string name="pref_show_user_count">Show Channel User Count</string>
+ <string name="pref_show_user_count_summary">Show a counter with the number of users in a channel subtree.</string>
</resources>
diff --git a/app/src/main/res/xml/settings_appearance.xml b/app/src/main/res/xml/settings_appearance.xml
index 449fbab..ab6fc07 100644
--- a/app/src/main/res/xml/settings_appearance.xml
+++ b/app/src/main/res/xml/settings_appearance.xml
@@ -25,6 +25,12 @@
android:key="theme"
android:summary="@string/themeSum"
android:title="@string/theme" />
+
+ <CheckBoxPreference
+ android:key="show_user_count"
+ android:defaultValue="false"
+ android:title="@string/pref_show_user_count"
+ android:summary="@string/pref_show_user_count_summary" />
<!--
<ListPreference
android:defaultValue="35"