Browse Source

Refactor method to update title and home (up) button of FileActivity

David A. Velasco 10 years ago
parent
commit
a45c0f57f9

+ 46 - 17
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. 
      * 

+ 7 - 39
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);
         }
+
     }
 
 

+ 1 - 2
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