|
@@ -30,6 +30,7 @@ import android.os.Environment;
|
|
|
import android.preference.PreferenceManager;
|
|
|
import android.support.v4.app.DialogFragment;
|
|
|
import android.support.v7.app.ActionBar;
|
|
|
+import android.view.Menu;
|
|
|
import android.view.MenuItem;
|
|
|
import android.view.View;
|
|
|
import android.view.View.OnClickListener;
|
|
@@ -62,11 +63,13 @@ public class UploadFilesActivity extends FileActivity implements
|
|
|
|
|
|
private ArrayAdapter<String> mDirectories;
|
|
|
private File mCurrentDir = null;
|
|
|
+ private boolean mSelectAll = false;
|
|
|
private LocalFileListFragment mFileListFragment;
|
|
|
private Button mCancelBtn;
|
|
|
private Button mUploadBtn;
|
|
|
private Account mAccountOnCreation;
|
|
|
private DialogFragment mCurrentDialog;
|
|
|
+ private Menu mOptionsMenu;
|
|
|
|
|
|
public static final String EXTRA_CHOSEN_FILES =
|
|
|
UploadFilesActivity.class.getCanonicalName() + ".EXTRA_CHOSEN_FILES";
|
|
@@ -75,6 +78,9 @@ public class UploadFilesActivity extends FileActivity implements
|
|
|
|
|
|
private static final String KEY_DIRECTORY_PATH =
|
|
|
UploadFilesActivity.class.getCanonicalName() + ".KEY_DIRECTORY_PATH";
|
|
|
+ private static final String KEY_ALL_SELECTED =
|
|
|
+ UploadFilesActivity.class.getCanonicalName() + ".KEY_ALL_SELECTED";
|
|
|
+
|
|
|
private static final String TAG = "UploadFilesActivity";
|
|
|
private static final String WAIT_DIALOG_TAG = "WAIT";
|
|
|
private static final String QUERY_TO_MOVE_DIALOG_TAG = "QUERY_TO_MOVE";
|
|
@@ -90,6 +96,9 @@ public class UploadFilesActivity extends FileActivity implements
|
|
|
if(savedInstanceState != null) {
|
|
|
mCurrentDir = new File(savedInstanceState.getString(
|
|
|
UploadFilesActivity.KEY_DIRECTORY_PATH));
|
|
|
+ mSelectAll = savedInstanceState.getBoolean(
|
|
|
+ UploadFilesActivity.KEY_ALL_SELECTED, false);
|
|
|
+
|
|
|
} else {
|
|
|
mCurrentDir = Environment.getExternalStorageDirectory();
|
|
|
}
|
|
@@ -168,6 +177,15 @@ public class UploadFilesActivity extends FileActivity implements
|
|
|
activity.startActivityForResult(action, requestCode);
|
|
|
}
|
|
|
|
|
|
+ @Override
|
|
|
+ public boolean onCreateOptionsMenu(Menu menu) {
|
|
|
+ mOptionsMenu = menu;
|
|
|
+ getMenuInflater().inflate(R.menu.upload_files_picker, menu);
|
|
|
+ MenuItem selectAll = menu.findItem(R.id.action_select_all);
|
|
|
+ setSelectAllMenuItem(selectAll, mSelectAll);
|
|
|
+ return super.onCreateOptionsMenu(menu);
|
|
|
+ }
|
|
|
+
|
|
|
@Override
|
|
|
public boolean onOptionsItemSelected(MenuItem item) {
|
|
|
boolean retval = true;
|
|
@@ -178,6 +196,13 @@ public class UploadFilesActivity extends FileActivity implements
|
|
|
}
|
|
|
break;
|
|
|
}
|
|
|
+ case R.id.action_select_all: {
|
|
|
+ item.setChecked(!item.isChecked());
|
|
|
+ mSelectAll = item.isChecked();
|
|
|
+ setSelectAllMenuItem(item, mSelectAll);
|
|
|
+ mFileListFragment.selectAllFiles(item.isChecked());
|
|
|
+ break;
|
|
|
+ }
|
|
|
default:
|
|
|
retval = super.onOptionsItemSelected(item);
|
|
|
}
|
|
@@ -213,7 +238,10 @@ public class UploadFilesActivity extends FileActivity implements
|
|
|
if(mCurrentDir.getParentFile() == null){
|
|
|
ActionBar actionBar = getSupportActionBar();
|
|
|
actionBar.setDisplayHomeAsUpEnabled(false);
|
|
|
- }
|
|
|
+ }
|
|
|
+
|
|
|
+ // invalidate checked state when navigating directories
|
|
|
+ setSelectAllMenuItem(mOptionsMenu.findItem(R.id.action_select_all), false);
|
|
|
}
|
|
|
|
|
|
|
|
@@ -224,9 +252,10 @@ public class UploadFilesActivity extends FileActivity implements
|
|
|
Log_OC.d(TAG, "onSaveInstanceState() start");
|
|
|
super.onSaveInstanceState(outState);
|
|
|
outState.putString(UploadFilesActivity.KEY_DIRECTORY_PATH, mCurrentDir.getAbsolutePath());
|
|
|
+ outState.putBoolean(UploadFilesActivity.KEY_ALL_SELECTED,
|
|
|
+ mOptionsMenu.findItem(R.id.action_select_all).isChecked());
|
|
|
Log_OC.d(TAG, "onSaveInstanceState() end");
|
|
|
}
|
|
|
-
|
|
|
|
|
|
/**
|
|
|
* Pushes a directory to the drop down list
|
|
@@ -250,7 +279,16 @@ public class UploadFilesActivity extends FileActivity implements
|
|
|
return !mDirectories.isEmpty();
|
|
|
}
|
|
|
|
|
|
-
|
|
|
+ private void setSelectAllMenuItem(MenuItem selectAll, boolean checked) {
|
|
|
+ selectAll.setChecked(checked);
|
|
|
+ if(checked) {
|
|
|
+ selectAll.setIcon(R.drawable.ic_select_none);
|
|
|
+ } else {
|
|
|
+ selectAll.setIcon(R.drawable.ic_select_all);
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
// Custom array adapter to override text colors
|
|
|
private class CustomArrayAdapter<T> extends ArrayAdapter<T> {
|
|
|
|
|
@@ -283,6 +321,11 @@ public class UploadFilesActivity extends FileActivity implements
|
|
|
*/
|
|
|
@Override
|
|
|
public void onDirectoryClick(File directory) {
|
|
|
+ // invalidate checked state when navigating directories
|
|
|
+ MenuItem selectAll = mOptionsMenu.findItem(R.id.action_select_all);
|
|
|
+ selectAll.setChecked(false);
|
|
|
+ selectAll.setIcon(R.drawable.ic_select_all);
|
|
|
+
|
|
|
pushDirname(directory);
|
|
|
ActionBar actionBar = getSupportActionBar();
|
|
|
actionBar.setDisplayHomeAsUpEnabled(true);
|
|
@@ -447,7 +490,5 @@ public class UploadFilesActivity extends FileActivity implements
|
|
|
setResult(RESULT_CANCELED);
|
|
|
finish();
|
|
|
}
|
|
|
- }
|
|
|
-
|
|
|
-
|
|
|
+ }
|
|
|
}
|