X-Git-Url: http://git.linex4red.de/pub/Android/ownCloud.git/blobdiff_plain/3603c122ff194aff29fcd990dd0f0406738b9afe..ff82b51e49f40155e7c340090f5ee759af2bf3ad:/src/com/owncloud/android/ui/activity/FileActivity.java diff --git a/src/com/owncloud/android/ui/activity/FileActivity.java b/src/com/owncloud/android/ui/activity/FileActivity.java index e792df85..9a952e41 100644 --- a/src/com/owncloud/android/ui/activity/FileActivity.java +++ b/src/com/owncloud/android/ui/activity/FileActivity.java @@ -39,15 +39,14 @@ import android.support.v4.app.ActionBarDrawerToggle; import android.support.v4.app.Fragment; import android.support.v4.app.FragmentManager; import android.support.v4.app.FragmentTransaction; +import android.support.v4.view.GravityCompat; import android.support.v4.widget.DrawerLayout; import android.support.v7.app.ActionBar; import android.support.v7.app.ActionBarActivity; import android.view.View; import android.widget.AdapterView; -import android.widget.ImageView; import android.widget.LinearLayout; import android.widget.ListView; -import android.widget.TextView; import android.widget.Toast; import com.owncloud.android.BuildConfig; @@ -59,15 +58,14 @@ import com.owncloud.android.datamodel.FileDataStorageManager; import com.owncloud.android.datamodel.OCFile; import com.owncloud.android.files.FileOperationsHelper; import com.owncloud.android.files.services.FileDownloader; -import com.owncloud.android.files.services.FileUploader; import com.owncloud.android.files.services.FileDownloader.FileDownloaderBinder; +import com.owncloud.android.files.services.FileUploader; import com.owncloud.android.files.services.FileUploader.FileUploaderBinder; import com.owncloud.android.lib.common.operations.OnRemoteOperationListener; import com.owncloud.android.lib.common.operations.RemoteOperation; import com.owncloud.android.lib.common.operations.RemoteOperationResult; import com.owncloud.android.lib.common.operations.RemoteOperationResult.ResultCode; import com.owncloud.android.lib.common.utils.Log_OC; -import com.owncloud.android.lib.resources.files.FileUtils; import com.owncloud.android.operations.CreateShareOperation; import com.owncloud.android.operations.SynchronizeFolderOperation; import com.owncloud.android.operations.UnshareLinkOperation; @@ -77,7 +75,6 @@ import com.owncloud.android.ui.NavigationDrawerItem; import com.owncloud.android.ui.adapter.NavigationDrawerListAdapter; import com.owncloud.android.ui.dialog.LoadingDialog; import com.owncloud.android.ui.dialog.SharePasswordDialogFragment; -import com.owncloud.android.utils.DisplayUtils; import com.owncloud.android.utils.ErrorMessageAdapter; import java.util.ArrayList; @@ -103,6 +100,7 @@ public class FileActivity extends ActionBarActivity private static final String KEY_WAITING_FOR_OP_ID = "WAITING_FOR_OP_ID"; private static final String DIALOG_SHARE_PASSWORD = "DIALOG_SHARE_PASSWORD"; private static final String KEY_TRY_SHARE_AGAIN = "TRY_SHARE_AGAIN"; + private static final String KEY_ACTION_BAR_TITLE = "ACTION_BAR_TITLE"; protected static final long DELAY_TO_REQUEST_OPERATION_ON_ACTIVITY_RESULTS = 200; @@ -157,7 +155,9 @@ public class FileActivity extends ActionBarActivity protected NavigationDrawerListAdapter mNavigationDrawerAdapter = null; - protected boolean mShowAccounts = false; + + // TODO re-enable when "Accounts" is available in Navigation Drawer +// protected boolean mShowAccounts = false; /** * Loads the ownCloud {@link Account} and main {@link OCFile} to be handled by the instance of @@ -179,6 +179,7 @@ public class FileActivity extends ActionBarActivity savedInstanceState.getLong(KEY_WAITING_FOR_OP_ID, Long.MAX_VALUE) ); mTryShareAgain = savedInstanceState.getBoolean(KEY_TRY_SHARE_AGAIN); + getSupportActionBar().setTitle(savedInstanceState.getString(KEY_ACTION_BAR_TITLE)); } else { account = getIntent().getParcelableExtra(FileActivity.EXTRA_ACCOUNT); mFile = getIntent().getParcelableExtra(FileActivity.EXTRA_FILE); @@ -287,6 +288,10 @@ public class FileActivity extends ActionBarActivity // Sync the toggle state after onRestoreInstanceState has occurred. if (mDrawerToggle != null) { mDrawerToggle.syncState(); + if (mDrawerLayout.isDrawerOpen(GravityCompat.START)) { + getSupportActionBar().setTitle(R.string.app_name); + mDrawerToggle.setDrawerIndicatorEnabled(true); + } } } @@ -299,24 +304,29 @@ 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); mDrawerList = (ListView) navigationDrawerLayout.findViewById(R.id.drawer_list); - // load Account in the Drawer Title - // User-Icon - ImageView userIcon = (ImageView) navigationDrawerLayout.findViewById(R.id.drawer_userIcon); - userIcon.setImageResource(DisplayUtils.getSeasonalIconId()); - - // Username - TextView username = (TextView) navigationDrawerLayout.findViewById(R.id.drawer_username); - Account account = AccountUtils.getCurrentOwnCloudAccount(getApplicationContext()); - - if (account != null) { - int lastAtPos = account.name.lastIndexOf("@"); - username.setText(account.name.substring(0, lastAtPos)); - } + // TODO re-enable when "Accounts" is available in Navigation Drawer +// // load Account in the Drawer Title +// // User-Icon +// ImageView userIcon = (ImageView) navigationDrawerLayout.findViewById(R.id.drawer_userIcon); +// userIcon.setImageResource(DisplayUtils.getSeasonalIconId()); +// +// // Username +// TextView username = (TextView) navigationDrawerLayout.findViewById(R.id.drawer_username); +// Account account = AccountUtils.getCurrentOwnCloudAccount(getApplicationContext()); +// +// if (account != null) { +// int lastAtPos = account.name.lastIndexOf("@"); +// username.setText(account.name.substring(0, lastAtPos)); +// } // load slide menu items mDrawerTitles = getResources().getStringArray(R.array.drawer_items); @@ -328,10 +338,12 @@ public class FileActivity extends ActionBarActivity // nav drawer items mDrawerItems = new ArrayList(); // adding nav drawer items to array + // TODO re-enable when "Accounts" is available in Navigation Drawer // Accounts - mDrawerItems.add(new NavigationDrawerItem(mDrawerTitles[0], mDrawerContentDescriptions[0])); + // mDrawerItems.add(new NavigationDrawerItem(mDrawerTitles[0], + // mDrawerContentDescriptions[0])); // All Files - mDrawerItems.add(new NavigationDrawerItem(mDrawerTitles[1], mDrawerContentDescriptions[1])); + mDrawerItems.add(new NavigationDrawerItem(mDrawerTitles[0], mDrawerContentDescriptions[0])); // TODO Enable when "On Device" is recovered // On Device @@ -339,11 +351,11 @@ public class FileActivity extends ActionBarActivity // mDrawerContentDescriptions[2])); // Settings - mDrawerItems.add(new NavigationDrawerItem(mDrawerTitles[2], mDrawerContentDescriptions[2])); + mDrawerItems.add(new NavigationDrawerItem(mDrawerTitles[1], mDrawerContentDescriptions[1])); // Logs if (BuildConfig.DEBUG) { - mDrawerItems.add(new NavigationDrawerItem(mDrawerTitles[3], - mDrawerContentDescriptions[3])); + mDrawerItems.add(new NavigationDrawerItem(mDrawerTitles[2], + mDrawerContentDescriptions[2])); } // setting the nav drawer list adapter @@ -355,28 +367,26 @@ public class FileActivity extends ActionBarActivity this, mDrawerLayout, R.drawable.ic_drawer, - R.string.drawer_open, + R.string.app_name, R.string.drawer_close) { /** Called when a drawer has settled in a completely closed state. */ public void onDrawerClosed(View view) { super.onDrawerClosed(view); - updateActionBarTitle(); - getSupportActionBar().setDisplayShowTitleEnabled(true); - getSupportActionBar().setNavigationMode(ActionBar.NAVIGATION_MODE_STANDARD); + updateActionBarTitleAndHomeButton(null); invalidateOptionsMenu(); } /** Called when a drawer has settled in a completely open state. */ public void onDrawerOpened(View drawerView) { super.onDrawerOpened(drawerView); - getSupportActionBar().setTitle(R.string.drawer_open); - getSupportActionBar().setNavigationMode(ActionBar.NAVIGATION_MODE_STANDARD); + getSupportActionBar().setTitle(R.string.app_name); + mDrawerToggle.setDrawerIndicatorEnabled(true); invalidateOptionsMenu(); } }; - mDrawerToggle.setDrawerIndicatorEnabled(true); + //mDrawerToggle.setDrawerIndicatorEnabled(true); // Set the list's click listener mDrawerList.setOnItemClickListener(new DrawerItemClickListener()); @@ -384,16 +394,46 @@ public class FileActivity extends ActionBarActivity mDrawerLayout.setDrawerListener(mDrawerToggle); } - protected void updateActionBarTitle(){ - if (mFile.getParentId() == 0) { - getSupportActionBar().setTitle(getString( - R.string.default_display_name_for_root_folder)); - mDrawerToggle.setDrawerIndicatorEnabled(true); - } else { - 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) { + chosenFile = mFile; // if no file is passed, current file decides + } + inRoot = ( + chosenFile == null || + (chosenFile.isFolder() && chosenFile.getParentId() == FileDataStorageManager.ROOT_PARENT_ID) + ); + if (!inRoot) { + title = chosenFile.getFileName(); + } + + /// 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. * @@ -471,6 +511,7 @@ public class FileActivity extends ActionBarActivity outState.putBoolean(FileActivity.EXTRA_FROM_NOTIFICATION, mFromNotification); outState.putLong(KEY_WAITING_FOR_OP_ID, mFileOperationsHelper.getOpIdWaitingFor()); outState.putBoolean(KEY_TRY_SHARE_AGAIN, mTryShareAgain); + outState.putString(KEY_ACTION_BAR_TITLE, getSupportActionBar().getTitle().toString()); } @@ -818,9 +859,10 @@ public class FileActivity extends ActionBarActivity startActivity(i); } - public void closeDrawer() { - mDrawerLayout.closeDrawers(); - } +// TODO re-enable when "Accounts" is available in Navigation Drawer +// public void closeDrawer() { +// mDrawerLayout.closeDrawers(); +// } public void allFilesOption(){ restart(); @@ -829,17 +871,19 @@ public class FileActivity extends ActionBarActivity private class DrawerItemClickListener implements ListView.OnItemClickListener { @Override public void onItemClick(AdapterView parent, View view, int position, long id) { - if (mShowAccounts && position > 0){ - position = position - 1; - } + // TODO re-enable when "Accounts" is available in Navigation Drawer +// if (mShowAccounts && position > 0){ +// position = position - 1; +// } switch (position){ - case 0: // Accounts - mShowAccounts = !mShowAccounts; - mNavigationDrawerAdapter.setShowAccounts(mShowAccounts); - mNavigationDrawerAdapter.notifyDataSetChanged(); - break; + // TODO re-enable when "Accounts" is available in Navigation Drawer +// case 0: // Accounts +// mShowAccounts = !mShowAccounts; +// mNavigationDrawerAdapter.setShowAccounts(mShowAccounts); +// mNavigationDrawerAdapter.notifyDataSetChanged(); +// break; - case 1: // All Files + case 0: // All Files allFilesOption(); mDrawerLayout.closeDrawers(); break; @@ -850,16 +894,18 @@ public class FileActivity extends ActionBarActivity // mDrawerLayout.closeDrawers(); // break; - case 2: // Settings + case 1: // Settings Intent settingsIntent = new Intent(getApplicationContext(), Preferences.class); startActivity(settingsIntent); + mDrawerLayout.closeDrawers(); break; - case 3: // Logs + case 2: // Logs Intent loggerIntent = new Intent(getApplicationContext(), LogHistoryActivity.class); startActivity(loggerIntent); + mDrawerLayout.closeDrawers(); break; } }