From 8d676855dac88a5330df3111fe29fc08f223ee7c Mon Sep 17 00:00:00 2001 From: Felix Ableitner Date: Tue, 20 Jan 2015 02:16:34 +0100 Subject: [PATCH] Only show "add folder/device" in that tab, and hide either in drawer (ref #110). --- .../activities/MainActivity.java | 41 ++++++++++----- .../fragments/DevicesFragment.java | 23 +++++++++ .../fragments/FoldersFragment.java | 25 ++++++++- .../fragments/LocalDeviceInfoFragment.java | 51 +++++-------------- src/main/res/menu/device_list.xml | 11 ++++ src/main/res/menu/folder_list.xml | 11 ++++ src/main/res/menu/main.xml | 11 ---- src/main/res/values/strings.xml | 4 -- 8 files changed, 108 insertions(+), 69 deletions(-) create mode 100644 src/main/res/menu/device_list.xml create mode 100644 src/main/res/menu/folder_list.xml diff --git a/src/main/java/com/nutomic/syncthingandroid/activities/MainActivity.java b/src/main/java/com/nutomic/syncthingandroid/activities/MainActivity.java index fee031c1..9d23dea5 100644 --- a/src/main/java/com/nutomic/syncthingandroid/activities/MainActivity.java +++ b/src/main/java/com/nutomic/syncthingandroid/activities/MainActivity.java @@ -1,6 +1,7 @@ package com.nutomic.syncthingandroid.activities; import android.annotation.SuppressLint; +import android.app.Activity; import android.app.AlertDialog; import android.content.ComponentName; import android.content.DialogInterface; @@ -194,8 +195,7 @@ public class MainActivity extends SyncthingActivity .beginTransaction() .replace(R.id.drawer, mLocalDeviceInfoFragment) .commit(); - mDrawerToggle = mLocalDeviceInfoFragment.new Toggle(this, mDrawerLayout, - R.drawable.ic_drawer); + mDrawerToggle = new Toggle(this, mDrawerLayout, R.drawable.ic_drawer); mDrawerLayout.setDrawerListener(mDrawerToggle); } @@ -259,18 +259,6 @@ public class MainActivity extends SyncthingActivity } switch (item.getItemId()) { - case R.id.add_folder: - Intent intent = new Intent(this, SettingsActivity.class) - .setAction(SettingsActivity.ACTION_REPO_SETTINGS_FRAGMENT) - .putExtra(SettingsActivity.EXTRA_IS_CREATE, true); - startActivity(intent); - return true; - case R.id.add_device: - intent = new Intent(this, SettingsActivity.class) - .setAction(SettingsActivity.ACTION_NODE_SETTINGS_FRAGMENT) - .putExtra(SettingsActivity.EXTRA_IS_CREATE, true); - startActivity(intent); - return true; case R.id.web_gui: startActivity(new Intent(this, WebGuiActivity.class)); return true; @@ -298,4 +286,29 @@ public class MainActivity extends SyncthingActivity mDrawerToggle.onConfigurationChanged(newConfig); } + /** + * Receives drawer opened and closed events. + */ + public class Toggle extends ActionBarDrawerToggle { + public Toggle(Activity activity, DrawerLayout drawerLayout, int drawerImageRes) { + super(activity, drawerLayout, drawerImageRes, R.string.app_name, R.string.app_name); + } + + @Override + public void onDrawerOpened(View drawerView) { + super.onDrawerOpened(drawerView); + mLocalDeviceInfoFragment.onDrawerOpened(); + mFolderFragment.setHasOptionsMenu(false); + mDevicesFragment.setHasOptionsMenu(false); + } + + @Override + public void onDrawerClosed(View view) { + super.onDrawerClosed(view); + mLocalDeviceInfoFragment.onDrawerClosed(); + mFolderFragment.setHasOptionsMenu(true); + mDevicesFragment.setHasOptionsMenu(true); + } + } + } diff --git a/src/main/java/com/nutomic/syncthingandroid/fragments/DevicesFragment.java b/src/main/java/com/nutomic/syncthingandroid/fragments/DevicesFragment.java index e9aaf49f..e46f87b8 100644 --- a/src/main/java/com/nutomic/syncthingandroid/fragments/DevicesFragment.java +++ b/src/main/java/com/nutomic/syncthingandroid/fragments/DevicesFragment.java @@ -3,6 +3,9 @@ package com.nutomic.syncthingandroid.fragments; import android.content.Intent; import android.os.Bundle; import android.support.v4.app.ListFragment; +import android.view.Menu; +import android.view.MenuInflater; +import android.view.MenuItem; import android.view.View; import android.widget.AdapterView; import android.widget.ListView; @@ -46,6 +49,7 @@ public class DevicesFragment extends ListFragment implements SyncthingService.On super.onActivityCreated(savedInstanceState); initAdapter(); + setHasOptionsMenu(true); } private void initAdapter() { @@ -96,4 +100,23 @@ public class DevicesFragment extends ListFragment implements SyncthingService.On startActivity(intent); } + @Override + public void onCreateOptionsMenu(Menu menu, MenuInflater inflater) { + inflater.inflate(R.menu.device_list, menu); + } + + @Override + public boolean onOptionsItemSelected(MenuItem item) { + switch (item.getItemId()) { + case R.id.add_device: + Intent intent = new Intent(getActivity(), SettingsActivity.class) + .setAction(SettingsActivity.ACTION_NODE_SETTINGS_FRAGMENT) + .putExtra(SettingsActivity.EXTRA_IS_CREATE, true); + startActivity(intent); + return true; + default: + return super.onOptionsItemSelected(item); + } + } + } diff --git a/src/main/java/com/nutomic/syncthingandroid/fragments/FoldersFragment.java b/src/main/java/com/nutomic/syncthingandroid/fragments/FoldersFragment.java index 1140637c..c3705894 100644 --- a/src/main/java/com/nutomic/syncthingandroid/fragments/FoldersFragment.java +++ b/src/main/java/com/nutomic/syncthingandroid/fragments/FoldersFragment.java @@ -3,9 +3,10 @@ package com.nutomic.syncthingandroid.fragments; import android.content.Intent; import android.net.Uri; import android.os.Bundle; -import android.os.Environment; import android.support.v4.app.ListFragment; -import android.util.Log; +import android.view.Menu; +import android.view.MenuInflater; +import android.view.MenuItem; import android.view.View; import android.widget.AdapterView; @@ -47,6 +48,7 @@ public class FoldersFragment extends ListFragment implements SyncthingService.On super.onActivityCreated(savedInstanceState); initAdapter(); + setHasOptionsMenu(true); } private void initAdapter() { @@ -110,4 +112,23 @@ public class FoldersFragment extends ListFragment implements SyncthingService.On return true; } + @Override + public void onCreateOptionsMenu(Menu menu, MenuInflater inflater) { + inflater.inflate(R.menu.folder_list, menu); + } + + @Override + public boolean onOptionsItemSelected(MenuItem item) { + switch (item.getItemId()) { + case R.id.add_folder: + Intent intent = new Intent(getActivity(), SettingsActivity.class) + .setAction(SettingsActivity.ACTION_REPO_SETTINGS_FRAGMENT) + .putExtra(SettingsActivity.EXTRA_IS_CREATE, true); + startActivity(intent); + return true; + default: + return super.onOptionsItemSelected(item); + } + } + } diff --git a/src/main/java/com/nutomic/syncthingandroid/fragments/LocalDeviceInfoFragment.java b/src/main/java/com/nutomic/syncthingandroid/fragments/LocalDeviceInfoFragment.java index cd494220..0e7cd0ce 100644 --- a/src/main/java/com/nutomic/syncthingandroid/fragments/LocalDeviceInfoFragment.java +++ b/src/main/java/com/nutomic/syncthingandroid/fragments/LocalDeviceInfoFragment.java @@ -1,10 +1,7 @@ package com.nutomic.syncthingandroid.fragments; -import android.app.Activity; import android.os.Bundle; -import android.support.v4.app.ActionBarDrawerToggle; import android.support.v4.app.Fragment; -import android.support.v4.widget.DrawerLayout; import android.view.LayoutInflater; import android.view.MenuItem; import android.view.MotionEvent; @@ -44,31 +41,22 @@ public class LocalDeviceInfoFragment extends Fragment private MainActivity mActivity; - /** - * Starts polling for status when opened, stops when closed. - */ - public class Toggle extends ActionBarDrawerToggle { - public Toggle(Activity activity, DrawerLayout drawerLayout, int drawerImageRes) { - super(activity, drawerLayout, drawerImageRes, R.string.app_name, R.string.system_info); - } + public void onDrawerOpened() { + mTimer = new Timer(); + mTimer.schedule(new TimerTask() { + @Override + public void run() { + updateGui(); + } - @Override - public void onDrawerClosed(View view) { - super.onDrawerClosed(view); - mTimer.cancel(); - mTimer = null; - mActivity.getSupportActionBar().setTitle(R.string.app_name); - mActivity.supportInvalidateOptionsMenu(); - } - - @Override - public void onDrawerOpened(View drawerView) { - super.onDrawerOpened(drawerView); - LocalDeviceInfoFragment.this.onDrawerOpened(); - } + }, 0, SyncthingService.GUI_UPDATE_INTERVAL); + mActivity.supportInvalidateOptionsMenu(); } - ; + public void onDrawerClosed() { + mTimer.cancel(); + mTimer = null; + } @Override public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { @@ -99,19 +87,6 @@ public class LocalDeviceInfoFragment extends Fragment outState.putBoolean("active", mTimer != null); } - private void onDrawerOpened() { - mTimer = new Timer(); - mTimer.schedule(new TimerTask() { - @Override - public void run() { - updateGui(); - } - - }, 0, SyncthingService.GUI_UPDATE_INTERVAL); - mActivity.getSupportActionBar().setTitle(R.string.system_info); - mActivity.supportInvalidateOptionsMenu(); - } - /** * Invokes status callbacks. */ diff --git a/src/main/res/menu/device_list.xml b/src/main/res/menu/device_list.xml new file mode 100644 index 00000000..6a64d3b5 --- /dev/null +++ b/src/main/res/menu/device_list.xml @@ -0,0 +1,11 @@ + + + + + + + diff --git a/src/main/res/menu/folder_list.xml b/src/main/res/menu/folder_list.xml new file mode 100644 index 00000000..4872d548 --- /dev/null +++ b/src/main/res/menu/folder_list.xml @@ -0,0 +1,11 @@ + + + + + + + diff --git a/src/main/res/menu/main.xml b/src/main/res/menu/main.xml index 17d322f4..b64b95ea 100644 --- a/src/main/res/menu/main.xml +++ b/src/main/res/menu/main.xml @@ -9,17 +9,6 @@ android:title="@string/share_device_id" app:showAsAction="ifRoom" /> - - - - - diff --git a/src/main/res/values/strings.xml b/src/main/res/values/strings.xml index 8b41d3e8..5a46d30f 100644 --- a/src/main/res/values/strings.xml +++ b/src/main/res/values/strings.xml @@ -59,10 +59,6 @@ - - - System Info - Download:\u0020