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;
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.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;
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;
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
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);
// 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);
+ }
}
}
}
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);
// nav drawer items
mDrawerItems = new ArrayList<NavigationDrawerItem>();
// 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
// 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
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);
- getSupportActionBar().setDisplayShowTitleEnabled(true);
- getSupportActionBar().setNavigationMode(ActionBar.NAVIGATION_MODE_LIST);
- //initFragmentsWithFile();
+ 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());
}
/**
+ * 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.
*
* If not valid, tries to swap it for other valid and existing ownCloud {@link Account}.
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());
}
*/
@Override
public void onRemoteOperationFinish(RemoteOperation operation, RemoteOperationResult result) {
- Log_OC.d(TAG, "Received result of operation in FileActivity - common behaviour for all the " +
- "FileActivities ");
+ Log_OC.d(TAG, "Received result of operation in FileActivity - common behaviour for all the "
+ + "FileActivities ");
mFileOperationsHelper.setOpIdWaitingFor(Long.MAX_VALUE);
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();
}
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
- // TODO Enable when "On Device" is recovered ?
- //MainApp.showOnlyFilesOnDevice(false);
+ case 0: // All Files
+ allFilesOption();
mDrawerLayout.closeDrawers();
break;
// 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;
}
}