+
+ /**
+ * Create the list of accounts that has been added into the app
+ */
+ @SuppressWarnings("deprecation")
+ private void addAccountsCheckboxPreferences() {
+
+ // Remove accounts in case list is refreshing for avoiding to have
+ // duplicate items
+ if (mAccountsPrefCategory.getPreferenceCount() > 0) {
+ mAccountsPrefCategory.removeAll();
+ }
+
+ AccountManager am = (AccountManager) getSystemService(ACCOUNT_SERVICE);
+ Account accounts[] = am.getAccountsByType(MainApp.getAccountType());
+ Account currentAccount = AccountUtils.getCurrentOwnCloudAccount(getApplicationContext());
+
+ if (am.getAccountsByType(MainApp.getAccountType()).length == 0) {
+ // Show create account screen if there isn't any account
+ am.addAccount(MainApp.getAccountType(), null, null, null, this,
+ null,
+ null);
+ }
+ else {
+
+ for (Account a : accounts) {
+ RadioButtonPreference accountPreference = new RadioButtonPreference(this);
+ accountPreference.setKey(a.name);
+ // Handle internationalized domain names
+ accountPreference.setTitle(DisplayUtils.convertIdn(a.name, false));
+ mAccountsPrefCategory.addPreference(accountPreference);
+
+ // Check the current account that is being used
+ if (a.name.equals(currentAccount.name)) {
+ accountPreference.setChecked(true);
+ } else {
+ accountPreference.setChecked(false);
+ }
+
+ accountPreference.setOnPreferenceChangeListener(new OnPreferenceChangeListener() {
+ @Override
+ public boolean onPreferenceChange(Preference preference, Object newValue) {
+ String key = preference.getKey();
+ AccountManager am = (AccountManager) getSystemService(ACCOUNT_SERVICE);
+ Account accounts[] = am.getAccountsByType(MainApp.getAccountType());
+ for (Account a : accounts) {
+ RadioButtonPreference p = (RadioButtonPreference) findPreference(a.name);
+ if (key.equals(a.name)) {
+ boolean accountChanged = !p.isChecked();
+ p.setChecked(true);
+ 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);
+ }
+ }
+ return (Boolean) newValue;
+ }
+ });
+
+ }
+
+ // Add Create Account preference at the end of account list if
+ // Multiaccount is enabled
+ if (getResources().getBoolean(R.bool.multiaccount_support)) {
+ createAddAccountPreference();
+ }
+
+ }
+ }
+
+ /**
+ * Create the preference for allow adding new accounts
+ */
+ private void createAddAccountPreference() {
+ Preference addAccountPref = new Preference(this);
+ addAccountPref.setKey("add_account");
+ addAccountPref.setTitle(getString(R.string.prefs_add_account));
+ mAccountsPrefCategory.addPreference(addAccountPref);
+
+ addAccountPref.setOnPreferenceClickListener(new OnPreferenceClickListener() {
+ @Override
+ public boolean onPreferenceClick(Preference preference) {
+ AccountManager am = AccountManager.get(getApplicationContext());
+ am.addAccount(MainApp.getAccountType(), null, null, null, Preferences.this, null, null);
+ return true;
+ }
+ });
+
+ }
+
+ /**
+ * 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));
+ mPrefInstantUploadPath.setSummary(mUploadPath);
+ }
+
+ /**
+ * 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();
+ }
+
+ /**
+ * Load upload video path set on preferences
+ */
+ private void loadInstantUploadVideoPath() {
+ SharedPreferences appPrefs = PreferenceManager.getDefaultSharedPreferences(getApplicationContext());
+ mUploadVideoPath = appPrefs.getString("instant_video_upload_path", getString(R.string.instant_upload_path));
+ mPrefInstantVideoUploadPath.setSummary(mUploadVideoPath);
+ }
+
+ /**
+ * Save the "Instant Video Upload Path" on preferences
+ */
+ private void saveInstantUploadVideoPathOnPreferences() {
+ SharedPreferences appPrefs = PreferenceManager.getDefaultSharedPreferences(getApplicationContext());
+ SharedPreferences.Editor editor = appPrefs.edit();
+ editor.putString("instant_video_upload_path", mUploadVideoPath);
+ editor.commit();
+ }
+
+ // Methods for ComponetsGetter
+ @Override
+ public FileDownloader.FileDownloaderBinder getFileDownloaderBinder() {
+ return mDownloaderBinder;
+ }
+
+
+ @Override
+ public FileUploader.FileUploaderBinder getFileUploaderBinder() {
+ return mUploaderBinder;
+ }
+
+ @Override
+ public OperationsService.OperationsServiceBinder getOperationsServiceBinder() {
+ return null;
+ }
+
+ @Override
+ public FileDataStorageManager getStorageManager() {
+ return null;
+ }
+
+ @Override
+ public FileOperationsHelper getFileOperationsHelper() {
+ return null;
+ }
+
+ protected ServiceConnection newTransferenceServiceConnection() {
+ return new PreferencesServiceConnection();
+ }
+
+ /** Defines callbacks for service binding, passed to bindService() */
+ private class PreferencesServiceConnection implements ServiceConnection {
+
+ @Override
+ public void onServiceConnected(ComponentName component, IBinder service) {
+
+ if (component.equals(new ComponentName(Preferences.this, FileDownloader.class))) {
+ mDownloaderBinder = (FileDownloader.FileDownloaderBinder) service;
+
+ } else if (component.equals(new ComponentName(Preferences.this, FileUploader.class))) {
+ Log_OC.d(TAG, "Upload service connected");
+ mUploaderBinder = (FileUploader.FileUploaderBinder) service;
+ } else {
+ return;
+ }
+
+ }
+
+ @Override
+ public void onServiceDisconnected(ComponentName component) {
+ if (component.equals(new ComponentName(Preferences.this, FileDownloader.class))) {
+ Log_OC.d(TAG, "Download service suddenly disconnected");
+ mDownloaderBinder = null;
+ } else if (component.equals(new ComponentName(Preferences.this, FileUploader.class))) {
+ Log_OC.d(TAG, "Upload service suddenly disconnected");
+ mUploaderBinder = null;
+ }
+ }
+ };