X-Git-Url: http://git.linex4red.de/pub/Android/ownCloud.git/blobdiff_plain/7d331765096d4cbc2fccbae5ee0a9e33c7f6a62a..fc40765890415abe9f2569a44adcbe88412ea1ba:/src/com/owncloud/android/ui/activity/Uploader.java diff --git a/src/com/owncloud/android/ui/activity/Uploader.java b/src/com/owncloud/android/ui/activity/Uploader.java index 9a33620b..d221bc92 100644 --- a/src/com/owncloud/android/ui/activity/Uploader.java +++ b/src/com/owncloud/android/ui/activity/Uploader.java @@ -2,6 +2,7 @@ * ownCloud Android client application * * @author Bartek Przybylski + * @author masensio * Copyright (C) 2012 Bartek Przybylski * Copyright (C) 2015 ownCloud Inc. * @@ -32,8 +33,8 @@ import java.util.Vector; import android.accounts.Account; import android.accounts.AccountManager; -import android.app.AlertDialog; -import android.app.AlertDialog.Builder; +import android.support.v7.app.AlertDialog; +import android.support.v7.app.AlertDialog.Builder; import android.app.Dialog; import android.app.ProgressDialog; import android.content.Context; @@ -55,25 +56,28 @@ import android.provider.MediaStore.Video; import android.support.v4.app.Fragment; import android.support.v4.app.FragmentManager; import android.support.v4.app.FragmentTransaction; +import android.support.v7.app.ActionBar; +import android.view.Menu; +import android.view.MenuInflater; +import android.view.MenuItem; import android.view.View; import android.widget.AdapterView; import android.widget.AdapterView.OnItemClickListener; import android.widget.Button; import android.widget.EditText; import android.widget.ListView; +import android.widget.ProgressBar; import android.widget.SimpleAdapter; import android.widget.Toast; -import com.actionbarsherlock.app.ActionBar; -import com.actionbarsherlock.view.MenuItem; import com.owncloud.android.MainApp; import com.owncloud.android.R; import com.owncloud.android.authentication.AccountAuthenticator; import com.owncloud.android.datamodel.OCFile; import com.owncloud.android.files.services.FileUploader; +import com.owncloud.android.lib.common.utils.Log_OC; import com.owncloud.android.lib.common.operations.RemoteOperation; import com.owncloud.android.lib.common.operations.RemoteOperationResult; -import com.owncloud.android.lib.common.utils.Log_OC; import com.owncloud.android.operations.CreateFolderOperation; import com.owncloud.android.ui.dialog.CreateFolderDialogFragment; import com.owncloud.android.ui.dialog.LoadingDialog; @@ -98,6 +102,7 @@ public class Uploader extends FileActivity private String mUploadPath; private OCFile mFile; private boolean mAccountSelected; + private boolean mAccountSelectionShowing; private ArrayList mRemoteCacheData; private int mNumCacheFile; @@ -112,6 +117,7 @@ public class Uploader extends FileActivity private final static String KEY_PARENTS = "PARENTS"; private final static String KEY_FILE = "FILE"; private final static String KEY_ACCOUNT_SELECTED = "ACCOUNT_SELECTED"; + private final static String KEY_ACCOUNT_SELECTION_SHOWING = "ACCOUNT_SELECTION_SHOWING"; private final static String KEY_NUM_CACHE_FILE = "NUM_CACHE_FILE"; private final static String KEY_REMOTE_CACHE_DATA = "REMOTE_CACHE_DATA"; @@ -124,6 +130,7 @@ public class Uploader extends FileActivity if (savedInstanceState == null) { mParents = new Stack(); mAccountSelected = false; + mAccountSelectionShowing = false; mNumCacheFile = 0; // ArrayList for files with path in private storage @@ -132,6 +139,7 @@ public class Uploader extends FileActivity mParents = (Stack) savedInstanceState.getSerializable(KEY_PARENTS); mFile = savedInstanceState.getParcelable(KEY_FILE); mAccountSelected = savedInstanceState.getBoolean(KEY_ACCOUNT_SELECTED); + mAccountSelectionShowing = savedInstanceState.getBoolean(KEY_ACCOUNT_SELECTION_SHOWING); mNumCacheFile = savedInstanceState.getInt(KEY_NUM_CACHE_FILE); mRemoteCacheData = savedInstanceState.getStringArrayList(KEY_REMOTE_CACHE_DATA); } @@ -141,11 +149,6 @@ public class Uploader extends FileActivity if (mAccountSelected) { setAccount((Account) savedInstanceState.getParcelable(FileActivity.EXTRA_ACCOUNT)); } - - - ActionBar actionBar = getSupportActionBar(); - actionBar.setIcon(DisplayUtils.getSeasonalIconId()); - } @Override @@ -156,9 +159,10 @@ public class Uploader extends FileActivity if (accounts.length == 0) { Log_OC.i(TAG, "No ownCloud account is available"); showDialog(DIALOG_NO_ACCOUNT); - } else if (accounts.length > 1 && !mAccountSelected) { + } else if (accounts.length > 1 && !mAccountSelected && !mAccountSelectionShowing) { Log_OC.i(TAG, "More than one ownCloud is available"); showDialog(DIALOG_MULTIPLE_ACCOUNT); + mAccountSelectionShowing = true; } else { if (!savedAccount) { setAccount(accounts[0]); @@ -187,6 +191,7 @@ public class Uploader extends FileActivity //outState.putParcelable(KEY_ACCOUNT, mAccount); outState.putParcelable(KEY_FILE, mFile); outState.putBoolean(KEY_ACCOUNT_SELECTED, mAccountSelected); + outState.putBoolean(KEY_ACCOUNT_SELECTION_SHOWING, mAccountSelectionShowing); outState.putInt(KEY_NUM_CACHE_FILE, mNumCacheFile); outState.putStringArrayList(KEY_REMOTE_CACHE_DATA, mRemoteCacheData); outState.putParcelable(FileActivity.EXTRA_ACCOUNT, getAccount()); @@ -199,10 +204,19 @@ public class Uploader extends FileActivity final AlertDialog.Builder builder = new Builder(this); switch (id) { case DIALOG_WAITING: - ProgressDialog pDialog = new ProgressDialog(this); + final ProgressDialog pDialog = new ProgressDialog(this, R.style.ProgressDialogTheme); pDialog.setIndeterminate(false); pDialog.setCancelable(false); pDialog.setMessage(getResources().getString(R.string.uploader_info_uploading)); + pDialog.setOnShowListener(new DialogInterface.OnShowListener() { + @Override + public void onShow(DialogInterface dialog) { + ProgressBar v = (ProgressBar) pDialog.findViewById(android.R.id.progress); + v.getIndeterminateDrawable().setColorFilter(getResources().getColor(R.color.color_accent), + android.graphics.PorterDuff.Mode.MULTIPLY); + + } + }); return pDialog; case DIALOG_NO_ACCOUNT: builder.setIcon(android.R.drawable.ic_dialog_alert); @@ -213,7 +227,8 @@ public class Uploader extends FileActivity builder.setPositiveButton(R.string.uploader_wrn_no_account_setup_btn_text, new OnClickListener() { @Override public void onClick(DialogInterface dialog, int which) { - if (android.os.Build.VERSION.SDK_INT > android.os.Build.VERSION_CODES.ECLAIR_MR1) { + if (android.os.Build.VERSION.SDK_INT > + android.os.Build.VERSION_CODES.ECLAIR_MR1) { // using string value since in API7 this // constatn is not defined // in API7 < this constatant is defined in @@ -255,12 +270,14 @@ public class Uploader extends FileActivity onAccountSet(mAccountWasRestored); dialog.dismiss(); mAccountSelected = true; + mAccountSelectionShowing = false; } }); builder.setCancelable(true); builder.setOnCancelListener(new OnCancelListener() { @Override public void onCancel(DialogInterface dialog) { + mAccountSelectionShowing = false; dialog.cancel(); finish(); } @@ -316,7 +333,8 @@ public class Uploader extends FileActivity public void onItemClick(AdapterView parent, View view, int position, long id) { // click on folder in the list Log_OC.d(TAG, "on item click"); - Vector tmpfiles = getStorageManager().getFolderContent(mFile); + // TODO Enable when "On Device" is recovered ? + Vector tmpfiles = getStorageManager().getFolderContent(mFile /*, false*/); if (tmpfiles.size() <= 0) return; // filter on dirtype Vector files = new Vector(); @@ -345,9 +363,8 @@ public class Uploader extends FileActivity break; - case R.id.uploader_new_folder: - CreateFolderDialogFragment dialog = CreateFolderDialogFragment.newInstance(mFile); - dialog.show(getSupportFragmentManager(), "createdirdialog"); + case R.id.uploader_cancel: + finish(); break; @@ -401,7 +418,8 @@ public class Uploader extends FileActivity mFile = getStorageManager().getFileByPath(full_path); if (mFile != null) { - Vector files = getStorageManager().getFolderContent(mFile); + // TODO Enable when "On Device" is recovered ? + Vector files = getStorageManager().getFolderContent(mFile/*, false*/); List> data = new LinkedList>(); for (OCFile f : files) { HashMap h = new HashMap(); @@ -414,13 +432,13 @@ public class Uploader extends FileActivity data, R.layout.uploader_list_item_layout, new String[] {"dirname"}, - new int[] {R.id.textView1}); + new int[] {R.id.filename}); mListView.setAdapter(sa); Button btnChooseFolder = (Button) findViewById(R.id.uploader_choose_folder); btnChooseFolder.setOnClickListener(this); - Button btnNewFolder = (Button) findViewById(R.id.uploader_new_folder); + Button btnNewFolder = (Button) findViewById(R.id.uploader_cancel); btnNewFolder.setOnClickListener(this); mListView.setOnItemClickListener(this); @@ -530,7 +548,8 @@ public class Uploader extends FileActivity if (data == null) { mRemoteCacheData.add(filePath); CopyTmpFileAsyncTask copyTask = new CopyTmpFileAsyncTask(this); - Object[] params = { uri, filePath, mRemoteCacheData.size()-1 }; + Object[] params = { uri, filePath, mRemoteCacheData.size()-1, + getAccount().name, getContentResolver()}; mNumCacheFile++; showWaitingCopyDialog(); copyTask.execute(params); @@ -625,6 +644,7 @@ public class Uploader extends FileActivity mParents.add(""); } else{ String[] dir_names = last_path.split("/"); + mParents.clear(); for (String dir : dir_names) mParents.add(dir); } @@ -634,11 +654,26 @@ public class Uploader extends FileActivity } } + @Override + public boolean onCreateOptionsMenu(Menu menu) { + MenuInflater inflater = getMenuInflater(); + inflater.inflate(R.menu.main_menu, menu); + menu.findItem(R.id.action_upload).setVisible(false); + menu.findItem(R.id.action_sort).setVisible(false); + menu.findItem(R.id.action_sync_account).setVisible(false); + return true; + } @Override public boolean onOptionsItemSelected(MenuItem item) { boolean retval = true; switch (item.getItemId()) { + case R.id.action_create_dir: + CreateFolderDialogFragment dialog = CreateFolderDialogFragment.newInstance(mFile); + dialog.show( + getSupportFragmentManager(), + CreateFolderDialogFragment.CREATE_FOLDER_FRAGMENT); + break; case android.R.id.home: if((mParents.size() > 1)) { onBackPressed(); @@ -658,7 +693,7 @@ public class Uploader extends FileActivity * @param index */ @Override - public void OnCopyTmpFileTaskListener(String result, int index) { + public void onTmpFileCopied(String result, int index) { if (mNumCacheFile -- == 0) { dismissWaitingCopyDialog(); } @@ -674,7 +709,7 @@ public class Uploader extends FileActivity String message = String.format(getString(R.string.uploader_error_forbidden_content), getString(R.string.app_name)); Toast.makeText(this, message, Toast.LENGTH_LONG).show(); - Log_OC.d(TAG, message ); + Log_OC.d(TAG, message); } }