From: David A. Velasco Date: Wed, 3 Jun 2015 11:29:11 +0000 (+0200) Subject: Refactor method to update title and home (up) button of FileActivity X-Git-Tag: oc-android-1.7.2~1^2~23^2~14 X-Git-Url: http://git.linex4red.de/pub/Android/ownCloud.git/commitdiff_plain/a45c0f57f9dabd6421e76e0ac2456a29617c93f0 Refactor method to update title and home (up) button of FileActivity --- diff --git a/src/com/owncloud/android/ui/activity/FileActivity.java b/src/com/owncloud/android/ui/activity/FileActivity.java index 13bad2ed..c37477cf 100644 --- a/src/com/owncloud/android/ui/activity/FileActivity.java +++ b/src/com/owncloud/android/ui/activity/FileActivity.java @@ -155,6 +155,7 @@ public class FileActivity extends ActionBarActivity protected NavigationDrawerListAdapter mNavigationDrawerAdapter = null; + // TODO re-enable when "Accounts" is available in Navigation Drawer // protected boolean mShowAccounts = false; @@ -303,6 +304,10 @@ public class FileActivity extends ActionBarActivity } protected void initDrawer(){ + // constant settings for action bar when navigation drawer is inited + getSupportActionBar().setNavigationMode(ActionBar.NAVIGATION_MODE_STANDARD); + + mDrawerLayout = (DrawerLayout) findViewById(R.id.drawer_layout); // Notification Drawer LinearLayout navigationDrawerLayout = (LinearLayout) findViewById(R.id.left_drawer); @@ -368,9 +373,7 @@ public class FileActivity extends ActionBarActivity /** Called when a drawer has settled in a completely closed state. */ public void onDrawerClosed(View view) { super.onDrawerClosed(view); - updateActionBarTitleAndHomeButton(); - getSupportActionBar().setDisplayShowTitleEnabled(true); - getSupportActionBar().setNavigationMode(ActionBar.NAVIGATION_MODE_STANDARD); + updateActionBarTitleAndHomeButton(null); invalidateOptionsMenu(); } @@ -378,13 +381,12 @@ public class FileActivity extends ActionBarActivity public void onDrawerOpened(View drawerView) { super.onDrawerOpened(drawerView); getSupportActionBar().setTitle(R.string.app_name); - getSupportActionBar().setNavigationMode(ActionBar.NAVIGATION_MODE_STANDARD); mDrawerToggle.setDrawerIndicatorEnabled(true); invalidateOptionsMenu(); } }; - mDrawerToggle.setDrawerIndicatorEnabled(true); + //mDrawerToggle.setDrawerIndicatorEnabled(true); // Set the list's click listener mDrawerList.setOnItemClickListener(new DrawerItemClickListener()); @@ -392,21 +394,48 @@ public class FileActivity extends ActionBarActivity mDrawerLayout.setDrawerListener(mDrawerToggle); } - protected void updateActionBarTitleAndHomeButton(){ - if (mFile.getParentId() == 0 || - (!mFile.isFolder() && mFile.getParentId() == 1)) { - getSupportActionBar().setTitle(getString( - R.string.default_display_name_for_root_folder)); - mDrawerToggle.setDrawerIndicatorEnabled(true); - } else if (mFile.isFolder()) { - getSupportActionBar().setTitle(mFile.getFileName().toString()); - mDrawerToggle.setDrawerIndicatorEnabled(false); + /** + * Updates title bar and home buttons (state and icon). + * + * Assumes that navigation drawer is NOT visible. + */ + protected void updateActionBarTitleAndHomeButton(OCFile chosenFile) { + String title = getString(R.string.default_display_name_for_root_folder); // default + boolean inRoot; + + /// choose the appropiate title + if (chosenFile == null) { + // mFile determines the title + inRoot = (mFile == null || mFile.getParentId() == 0); + if (!inRoot) { + title = mFile.getFileName(); + } + } else { - getSupportActionBar().setTitle(getStorageManager().getFileById(mFile.getParentId()) - .getFileName().toString()); - mDrawerToggle.setDrawerIndicatorEnabled(false); + // chosenFile determines the title, instead of mFile + title = chosenFile.getFileName(); + inRoot = false; } + + /// set the chosen title + ActionBar actionBar = getSupportActionBar(); + actionBar.setTitle(title); + /// also as content description + View actionBarTitleView = getWindow().getDecorView().findViewById( + getResources().getIdentifier("action_bar_title", "id", "android") + ); + if (actionBarTitleView != null) { // it's null in Android 2.x + actionBarTitleView.setContentDescription(title); + } + + /// set home button properties + mDrawerToggle.setDrawerIndicatorEnabled(inRoot); + actionBar.setDisplayHomeAsUpEnabled(true); + actionBar.setDisplayShowTitleEnabled(true); + } + + /** * Sets and validates the ownCloud {@link Account} associated to the Activity. * diff --git a/src/com/owncloud/android/ui/activity/FileDisplayActivity.java b/src/com/owncloud/android/ui/activity/FileDisplayActivity.java index ebf20f53..a851c006 100644 --- a/src/com/owncloud/android/ui/activity/FileDisplayActivity.java +++ b/src/com/owncloud/android/ui/activity/FileDisplayActivity.java @@ -1156,48 +1156,16 @@ public class FileDisplayActivity extends HookActivity setFile(file); } - - /** - * TODO - */ - private void updateActionBarTitleAndHomeButton(OCFile chosenFile) { - ActionBar actionBar = getSupportActionBar(); - - // For adding content description tag to a title field in the action bar - int actionBarTitleId = getResources().getIdentifier("action_bar_title", "id", "android"); - - if (chosenFile == null || mDualPane) { - // only list of files - set for browsing through folders - OCFile currentDir = getCurrentDir(); - boolean noRoot = (currentDir != null && currentDir.getParentId() != 0); - //actionBar.setDisplayHomeAsUpEnabled(noRoot); - //actionBar.setDisplayShowTitleEnabled(!noRoot); - actionBar.setDisplayHomeAsUpEnabled(true); - actionBar.setDisplayShowTitleEnabled(true); - mDrawerToggle.setDrawerIndicatorEnabled(!noRoot); - String title = getString(R.string.default_display_name_for_root_folder); - if (noRoot) { - title = currentDir.getFileName(); - } - actionBar.setTitle(title); - View actionBarTitleView = getWindow().getDecorView().findViewById(actionBarTitleId); - if (actionBarTitleView != null) { // it's null in Android 2.x - actionBarTitleView.setContentDescription(title); - } - actionBar.setNavigationMode(ActionBar.NAVIGATION_MODE_STANDARD); + @Override + protected void updateActionBarTitleAndHomeButton(OCFile chosenFile) { + if (mDualPane) { + // in dual pane mode, keep the focus of title an action bar in the current folder + super.updateActionBarTitleAndHomeButton(null); } else { - actionBar.setDisplayHomeAsUpEnabled(true); - actionBar.setDisplayShowTitleEnabled(true); - mDrawerToggle.setDrawerIndicatorEnabled(false); - actionBar.setTitle(chosenFile.getFileName()); - actionBar.setNavigationMode(ActionBar.NAVIGATION_MODE_STANDARD); - View actionBarTitleView = getWindow().getDecorView().findViewById(actionBarTitleId); - if (actionBarTitleView != null) { // it's null in Android 2.x - getWindow().getDecorView().findViewById(actionBarTitleId). - setContentDescription(chosenFile.getFileName()); - } + super.updateActionBarTitleAndHomeButton(chosenFile); } + } diff --git a/src/com/owncloud/android/ui/preview/PreviewImageActivity.java b/src/com/owncloud/android/ui/preview/PreviewImageActivity.java index 12ba1662..3d36f096 100644 --- a/src/com/owncloud/android/ui/preview/PreviewImageActivity.java +++ b/src/com/owncloud/android/ui/preview/PreviewImageActivity.java @@ -102,10 +102,9 @@ public class PreviewImageActivity extends FileActivity implements // ActionBar ActionBar actionBar = getSupportActionBar(); actionBar.setIcon(DisplayUtils.getSeasonalIconId()); - actionBar.setDisplayHomeAsUpEnabled(true); + updateActionBarTitleAndHomeButton(null); actionBar.hide(); - updateActionBarTitleAndHomeButton(); // Make sure we're running on Honeycomb or higher to use FullScreen and // Immersive Mode