X-Git-Url: http://git.linex4red.de/pub/Android/ownCloud.git/blobdiff_plain/b154fba6ee7e2dfb77ff10e20c20c080758d2a1d..ec19a11a385ff21d3e85a94e618d48d8be9ef20d:/src/com/owncloud/android/ui/activity/Preferences.java diff --git a/src/com/owncloud/android/ui/activity/Preferences.java b/src/com/owncloud/android/ui/activity/Preferences.java index 27113686..d078b1e2 100644 --- a/src/com/owncloud/android/ui/activity/Preferences.java +++ b/src/com/owncloud/android/ui/activity/Preferences.java @@ -51,9 +51,9 @@ import com.owncloud.android.R; import com.owncloud.android.authentication.AccountUtils; import com.owncloud.android.authentication.AuthenticatorActivity; import com.owncloud.android.db.DbHandler; +import com.owncloud.android.lib.common.utils.Log_OC; import com.owncloud.android.ui.LongClickableCheckBoxPreference; import com.owncloud.android.utils.DisplayUtils; -import com.owncloud.android.utils.Log_OC; /** @@ -66,19 +66,15 @@ public class Preferences extends SherlockPreferenceActivity implements AccountMa private static final String TAG = "OwnCloudPreferences"; - private static final String PREVIOUS_ACCOUNT_KEY = "ACCOUNT"; - private DbHandler mDbHandler; private CheckBoxPreference pCode; - //private CheckBoxPreference pLogging; - //private Preference pLoggingHistory; private Preference pAboutApp; - private Account mPreviousAccount = null; private PreferenceCategory mAccountsPrefCategory = null; private final Handler mHandler = new Handler(); private String mAccountName; private boolean mShowContextMenu = false; + private String mUploadPath; @SuppressWarnings("deprecation") @@ -91,12 +87,9 @@ public class Preferences extends SherlockPreferenceActivity implements AccountMa ActionBar actionBar = getSherlock().getActionBar(); actionBar.setIcon(DisplayUtils.getSeasonalIconId()); actionBar.setDisplayHomeAsUpEnabled(true); - - if (savedInstanceState != null) { - mPreviousAccount = savedInstanceState.getParcelable(PREVIOUS_ACCOUNT_KEY); - } else { - mPreviousAccount = AccountUtils.getCurrentOwnCloudAccount(this); - } + actionBar.setTitle(R.string.actionbar_settings); + + loadInstantUploadPath(); // Load the accounts category for adding the list of accounts mAccountsPrefCategory = (PreferenceCategory) findPreference("accounts_category"); @@ -249,6 +242,16 @@ public class Preferences extends SherlockPreferenceActivity implements AccountMa preferenceCategory.removePreference(pImprint); } } + + Preference pInstantUploadPathApp = (Preference) findPreference("instant_upload_path"); + + pInstantUploadPathApp.setOnPreferenceChangeListener(new OnPreferenceChangeListener() { + @Override + public boolean onPreferenceChange(Preference preference, Object newValue) { + mUploadPath = updateInstantUploadPath(newValue.toString()); + return true; + } + }); /* About App */ pAboutApp = (Preference) findPreference("about_app"); @@ -262,44 +265,12 @@ public class Preferences extends SherlockPreferenceActivity implements AccountMa Log_OC.e(TAG, "Error while showing about dialog", e); } } - - /* DISABLED FOR RELEASE UNTIL FIXED - pLogging = (CheckBoxPreference) findPreference("log_to_file"); - if (pLogging != null) { - pLogging.setOnPreferenceChangeListener(new OnPreferenceChangeListener() { - @Override - public boolean onPreferenceChange(Preference preference, Object newValue) { - - String logpath = Environment.getExternalStorageDirectory()+File.separator+"owncloud"+File.separator+"log"; - - if(!pLogging.isChecked()) { - Log_OC.d("Debug", "start logging"); - Log_OC.v("PATH", logpath); - Log_OC.startLogging(logpath); - } - else { - Log_OC.d("Debug", "stop logging"); - Log_OC.stopLogging(); - } - return true; - } - }); - } - - pLoggingHistory = (Preference) findPreference("log_history"); - if (pLoggingHistory != null) { - pLoggingHistory.setOnPreferenceClickListener(new OnPreferenceClickListener() { - - @Override - public boolean onPreferenceClick(Preference preference) { - Intent intent = new Intent(getApplicationContext(),LogHistoryActivity.class); - startActivity(intent); - return true; - } - }); - } - */ - + } + + @Override + protected void onPause() { + saveInstantUploadPathOnPreferences(); + super.onPause(); } @Override @@ -454,8 +425,23 @@ public class Preferences extends SherlockPreferenceActivity implements AccountMa for (Account a : accounts) { CheckBoxPreference p = (CheckBoxPreference) findPreference(a.name); if (key.equals(a.name)) { + boolean accountChanged = !p.isChecked(); p.setChecked(true); - AccountUtils.setCurrentOwnCloudAccount(getApplicationContext(), a.name); + AccountUtils.setCurrentOwnCloudAccount( + getApplicationContext(), + a.name + ); + if (accountChanged) { + // restart the main activity + Intent i = new Intent( + Preferences.this, + FileDisplayActivity.class + ); + i.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP); + startActivity(i); + } else { + finish(); + } } else { p.setChecked(false); } @@ -495,22 +481,47 @@ public class Preferences extends SherlockPreferenceActivity implements AccountMa } - @Override - protected void onPause() { - if (this.isFinishing()) { - Account current = AccountUtils.getCurrentOwnCloudAccount(this); - if ((mPreviousAccount == null && current != null) - || (mPreviousAccount != null && !mPreviousAccount.equals(current))) { - // the account set as default changed since this activity was - // created - - // restart the main activity - Intent i = new Intent(this, FileDisplayActivity.class); - i.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP); - startActivity(i); + /** + * Update the upload path checking that it is a correct path + * @param uploadPath: path write by user + * @return String: uploadPath + */ + private String updateInstantUploadPath(String uploadPath) { + String slashString = "/"; + + // If slashes are duplicated, replace them for only one slash + uploadPath = uploadPath.replaceAll("/+", slashString); + + // Remove last slash from path + if (uploadPath.length() > 0 && uploadPath.charAt(uploadPath.length()-1) == slashString.charAt(0)) { + uploadPath = uploadPath.substring(0, uploadPath.length()-1); + } + + if (uploadPath.isEmpty()) { // Set default instant upload path + uploadPath = getString(R.string.instant_upload_path); + }else { + if (!uploadPath.startsWith(slashString)) { // Add initial slash on path if necessary + uploadPath = slashString.concat(uploadPath); } } - super.onPause(); + return uploadPath; } + /** + * Load upload path set on preferences + */ + private void loadInstantUploadPath() { + SharedPreferences appPrefs = PreferenceManager.getDefaultSharedPreferences(getApplicationContext()); + mUploadPath = appPrefs.getString("instant_upload_path", getString(R.string.instant_upload_path)); + } + + /** + * Save the "Instant Upload Path" on preferences + */ + private void saveInstantUploadPathOnPreferences() { + SharedPreferences appPrefs = PreferenceManager.getDefaultSharedPreferences(getApplicationContext()); + SharedPreferences.Editor editor = appPrefs.edit(); + editor.putString("instant_upload_path", mUploadPath); + editor.commit(); + } }