X-Git-Url: http://git.linex4red.de/pub/Android/ownCloud.git/blobdiff_plain/c20041d157baebede8e47a5f6837ba7dd51204f7..f15c2f32ceea2f2e6abff36f828a37196db3040a:/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 ef8c2226..8ba64280 100644 --- a/src/com/owncloud/android/ui/activity/Preferences.java +++ b/src/com/owncloud/android/ui/activity/Preferences.java @@ -32,6 +32,7 @@ import android.content.ServiceConnection; import android.content.SharedPreferences; import android.content.pm.PackageInfo; import android.content.pm.PackageManager.NameNotFoundException; +import android.content.res.Configuration; import android.net.Uri; import android.os.Bundle; import android.os.Handler; @@ -43,14 +44,22 @@ import android.preference.Preference.OnPreferenceClickListener; import android.preference.PreferenceActivity; import android.preference.PreferenceCategory; import android.preference.PreferenceManager; +import android.support.annotation.LayoutRes; +import android.support.annotation.Nullable; import android.support.v7.app.ActionBar; +import android.support.v7.app.AlertDialog; +import android.support.v7.app.AppCompatDelegate; +import android.support.v7.widget.Toolbar; import android.view.ContextMenu; import android.view.ContextMenu.ContextMenuInfo; import android.view.Menu; +import android.view.MenuInflater; import android.view.MenuItem; import android.view.View; +import android.view.ViewGroup; import android.widget.AdapterView; import android.widget.AdapterView.OnItemLongClickListener; +import android.widget.ArrayAdapter; import android.widget.ListAdapter; import android.widget.ListView; @@ -61,6 +70,7 @@ import com.owncloud.android.authentication.AccountUtils; import com.owncloud.android.authentication.AuthenticatorActivity; import com.owncloud.android.datamodel.FileDataStorageManager; import com.owncloud.android.datamodel.OCFile; +import com.owncloud.android.datamodel.ThumbnailsCacheManager; import com.owncloud.android.db.DbHandler; import com.owncloud.android.files.FileOperationsHelper; import com.owncloud.android.files.services.FileDownloader; @@ -73,6 +83,9 @@ import com.owncloud.android.utils.DisplayUtils; /** * An Activity that allows the user to change the application's settings. + * + * It proxies the necessary calls via {@link android.support.v7.app.AppCompatDelegate} to be used + * with AppCompat. */ public class Preferences extends PreferenceActivity implements AccountManagerCallback, ComponentsGetter { @@ -85,6 +98,7 @@ public class Preferences extends PreferenceActivity private DbHandler mDbHandler; private CheckBoxPreference pCode; private Preference pAboutApp; + private AppCompatDelegate mDelegate; private PreferenceCategory mAccountsPrefCategory = null; private final Handler mHandler = new Handler(); @@ -107,15 +121,15 @@ public class Preferences extends PreferenceActivity @SuppressWarnings("deprecation") @Override public void onCreate(Bundle savedInstanceState) { + getDelegate().installViewFactory(); + getDelegate().onCreate(savedInstanceState); super.onCreate(savedInstanceState); mDbHandler = new DbHandler(getBaseContext()); addPreferencesFromResource(R.xml.preferences); - // TODO: Add Toolbar -// ActionBar actionBar = getSherlock().getActionBar(); -// actionBar.setIcon(DisplayUtils.getSeasonalIconId()); -// actionBar.setDisplayHomeAsUpEnabled(true); -// actionBar.setTitle(R.string.actionbar_settings); + ActionBar actionBar = getSupportActionBar(); + actionBar.setDisplayHomeAsUpEnabled(true); + actionBar.setTitle(R.string.actionbar_settings); // For adding content description tag to a title field in the action bar int actionBarTitleId = getResources().getIdentifier("action_bar_title", "id", "android"); @@ -140,7 +154,49 @@ public class Preferences extends PreferenceActivity mShowContextMenu = true; mAccountName = ((RadioButtonPreference) obj).getKey(); - Preferences.this.openContextMenu(listView); + String[] items = { + getResources().getString(R.string.change_password), + getResources().getString(R.string.delete_account) + }; + final AlertDialog.Builder alertDialogBuilder = new AlertDialog.Builder(Preferences.this); + View convertView = getLayoutInflater().inflate(R.layout.alert_dialog_list_view, null); + alertDialogBuilder.setView(convertView); + ListView lv = (ListView) convertView.findViewById(R.id.list); + ArrayAdapter adapter = new ArrayAdapter( + Preferences.this,R.layout.simple_dialog_list_item,items); + lv.setAdapter(adapter); + + //Setup proper inline listener + final AlertDialog alertDialog = alertDialogBuilder.create(); + lv.setOnItemClickListener(new AdapterView.OnItemClickListener() { + @Override + public void onItemClick(AdapterView parent, View view, int position, long id) { + AccountManager am = (AccountManager) getSystemService(ACCOUNT_SERVICE); + Account accounts[] = am.getAccountsByType(MainApp.getAccountType()); + for (Account a : accounts) { + if (a.name.equals(mAccountName)) { + if (position==0) { + + // Change account password + Intent updateAccountCredentials = new Intent(Preferences.this, AuthenticatorActivity.class); + updateAccountCredentials.putExtra(AuthenticatorActivity.EXTRA_ACCOUNT, a); + updateAccountCredentials.putExtra(AuthenticatorActivity.EXTRA_ACTION, + AuthenticatorActivity.ACTION_UPDATE_TOKEN); + startActivity(updateAccountCredentials); + alertDialog.cancel(); + + } else if (position==1) { + + // Remove account + am.removeAccount(a, Preferences.this, mHandler); + Log_OC.d(TAG, "Remove an account " + a.name); + alertDialog.cancel(); + } + } + } + } + }); + alertDialog.show(); View.OnLongClickListener longListener = (View.OnLongClickListener) obj; return longListener.onLongClick(view); @@ -171,7 +227,8 @@ public class Preferences extends PreferenceActivity Intent i = new Intent(getApplicationContext(), PassCodeActivity.class); Boolean enable = (Boolean) newValue; i.setAction( - enable.booleanValue() ? PassCodeActivity.ACTION_ENABLE : PassCodeActivity.ACTION_DISABLE + enable.booleanValue() ? PassCodeActivity.ACTION_ENABLE : + PassCodeActivity.ACTION_DISABLE ); startActivity(i); @@ -181,6 +238,27 @@ public class Preferences extends PreferenceActivity } + final Preference pCacheSize = findPreference("pref_cache_size"); + if (pCacheSize != null){ + final SharedPreferences appPrefs = + PreferenceManager.getDefaultSharedPreferences(getApplicationContext()); + Long cacheSize = ThumbnailsCacheManager.getMaxSize(); + pCacheSize.setSummary(cacheSize + " Mb"); + pCacheSize.setOnPreferenceChangeListener(new OnPreferenceChangeListener() { + @Override + public boolean onPreferenceChange(Preference preference, Object newValue) { + Long size = Long.decode((String) newValue); + if (ThumbnailsCacheManager.setMaxSize(size)){ + appPrefs.edit().putString("pref_cache_size", size.toString()); + pCacheSize.setSummary(size + " MB"); + return true; + } else { + return false; + } + } + }); + } + PreferenceCategory preferenceCategory = (PreferenceCategory) findPreference("more"); boolean helpEnabled = getResources().getBoolean(R.bool.help_enabled); @@ -211,7 +289,8 @@ public class Preferences extends PreferenceActivity pLog.setOnPreferenceClickListener(new OnPreferenceClickListener() { @Override public boolean onPreferenceClick(Preference preference) { - Intent loggerIntent = new Intent(getApplicationContext(),LogHistoryActivity.class); + Intent loggerIntent = new Intent(getApplicationContext(), + LogHistoryActivity.class); startActivity(loggerIntent); return true; } @@ -234,13 +313,15 @@ public class Preferences extends PreferenceActivity String appName = getString(R.string.app_name); String downloadUrl = getString(R.string.url_app_download); - Account currentAccount = AccountUtils.getCurrentOwnCloudAccount(Preferences.this); - String username = currentAccount.name.substring(0, currentAccount.name.lastIndexOf('@')); + Account currentAccount = AccountUtils. + getCurrentOwnCloudAccount(Preferences.this); + String username = currentAccount.name.substring(0, + currentAccount.name.lastIndexOf('@')); String recommendSubject = String.format(getString(R.string.recommend_subject), appName); String recommendText = String.format(getString(R.string.recommend_text), - appName, downloadUrl, username); + appName, downloadUrl); intent.putExtra(Intent.EXTRA_SUBJECT, recommendSubject); intent.putExtra(Intent.EXTRA_TEXT, recommendText); @@ -321,7 +402,8 @@ public class Preferences extends PreferenceActivity }); } - mPrefInstantUploadCategory = (PreferenceCategory) findPreference("instant_uploading_category"); + mPrefInstantUploadCategory = + (PreferenceCategory) findPreference("instant_uploading_category"); mPrefInstantUploadPathWiFi = findPreference("instant_upload_on_wifi"); mPrefInstantUpload = findPreference("instant_uploading"); @@ -347,7 +429,8 @@ public class Preferences extends PreferenceActivity mUploadVideoPath += OCFile.PATH_SEPARATOR; } Intent intent = new Intent(Preferences.this, UploadPathActivity.class); - intent.putExtra(UploadPathActivity.KEY_INSTANT_UPLOAD_PATH, mUploadVideoPath); + intent.putExtra(UploadPathActivity.KEY_INSTANT_UPLOAD_PATH, + mUploadVideoPath); startActivityForResult(intent, ACTION_SELECT_UPLOAD_VIDEO_PATH); return true; } @@ -389,6 +472,22 @@ public class Preferences extends PreferenceActivity Context.BIND_AUTO_CREATE); } + /* Link to Beta apks */ + Preference pBetaLink = findPreference("beta_link"); + if (pBetaLink != null ){ + pBetaLink.setOnPreferenceClickListener(new OnPreferenceClickListener() { + @Override + public boolean onPreferenceClick(Preference preference) { + String betaLinkWeb = (String) getText(R.string.beta_link); + if (betaLinkWeb != null && betaLinkWeb.length() > 0) { + Uri uriUrl = Uri.parse(betaLinkWeb); + Intent intent = new Intent(Intent.ACTION_VIEW, uriUrl); + startActivity(intent); + } + return true; + } + }); + } } private void toggleInstantPictureOptions(Boolean value){ @@ -396,8 +495,8 @@ public class Preferences extends PreferenceActivity mPrefInstantUploadCategory.addPreference(mPrefInstantUploadPathWiFi); mPrefInstantUploadCategory.addPreference(mPrefInstantUploadPath); } else { - mPrefInstantUploadCategory.removePreference(mPrefInstantUploadPathWiFi); - mPrefInstantUploadCategory.removePreference(mPrefInstantUploadPath); +// mPrefInstantUploadCategory.removePreference(mPrefInstantUploadPathWiFi); +// mPrefInstantUploadCategory.removePreference(mPrefInstantUploadPath); } } @@ -406,8 +505,8 @@ public class Preferences extends PreferenceActivity mPrefInstantUploadCategory.addPreference(mPrefInstantVideoUploadPathWiFi); mPrefInstantUploadCategory.addPreference(mPrefInstantVideoUploadPath); } else { - mPrefInstantUploadCategory.removePreference(mPrefInstantVideoUploadPathWiFi); - mPrefInstantUploadCategory.removePreference(mPrefInstantVideoUploadPath); +// mPrefInstantUploadCategory.removePreference(mPrefInstantVideoUploadPathWiFi); +// mPrefInstantUploadCategory.removePreference(mPrefInstantVideoUploadPath); } } @@ -423,40 +522,6 @@ public class Preferences extends PreferenceActivity super.onCreateContextMenu(menu, v, menuInfo); } - /** - * Called when the user clicked on an item into the context menu created at - * {@link #onCreateContextMenu(ContextMenu, View, ContextMenuInfo)} for - * every ownCloud {@link Account} , containing 'secondary actions' for them. - * - * {@inheritDoc} - */ - @Override - public boolean onContextItemSelected(android.view.MenuItem item) { - AccountManager am = (AccountManager) getSystemService(ACCOUNT_SERVICE); - Account accounts[] = am.getAccountsByType(MainApp.getAccountType()); - for (Account a : accounts) { - if (a.name.equals(mAccountName)) { - if (item.getItemId() == R.id.change_password) { - - // Change account password - Intent updateAccountCredentials = new Intent(this, AuthenticatorActivity.class); - updateAccountCredentials.putExtra(AuthenticatorActivity.EXTRA_ACCOUNT, a); - updateAccountCredentials.putExtra(AuthenticatorActivity.EXTRA_ACTION, - AuthenticatorActivity.ACTION_UPDATE_TOKEN); - startActivity(updateAccountCredentials); - - } else if (item.getItemId() == R.id.delete_account) { - - // Remove account - am.removeAccount(a, this, mHandler); - Log_OC.d(TAG, "Remove an account " + a.name); - } - } - } - - return true; - } - @Override public void run(AccountManagerFuture future) { if (future.isDone()) { @@ -475,7 +540,8 @@ public class Preferences extends PreferenceActivity Account a = AccountUtils.getCurrentOwnCloudAccount(this); String accountName = ""; if (a == null) { - Account[] accounts = AccountManager.get(this).getAccountsByType(MainApp.getAccountType()); + Account[] accounts = AccountManager.get(this) + .getAccountsByType(MainApp.getAccountType()); if (accounts.length != 0) accountName = accounts[0].name; AccountUtils.setCurrentOwnCloudAccount(this, accountName); @@ -487,7 +553,8 @@ public class Preferences extends PreferenceActivity @Override protected void onResume() { super.onResume(); - SharedPreferences appPrefs = PreferenceManager.getDefaultSharedPreferences(getApplicationContext()); + SharedPreferences appPrefs = + PreferenceManager.getDefaultSharedPreferences(getApplicationContext()); boolean state = appPrefs.getBoolean("set_pincode", false); pCode.setChecked(state); @@ -525,7 +592,8 @@ public class Preferences extends PreferenceActivity if (requestCode == ACTION_SELECT_UPLOAD_PATH && resultCode == RESULT_OK){ - OCFile folderToUpload = (OCFile) data.getParcelableExtra(UploadPathActivity.EXTRA_FOLDER); + OCFile folderToUpload = + (OCFile) data.getParcelableExtra(UploadPathActivity.EXTRA_FOLDER); mUploadPath = folderToUpload.getRemotePath(); @@ -538,7 +606,8 @@ public class Preferences extends PreferenceActivity } else if (requestCode == ACTION_SELECT_UPLOAD_VIDEO_PATH && resultCode == RESULT_OK){ - OCFile folderToUploadVideo = (OCFile) data.getParcelableExtra(UploadPathActivity.EXTRA_FOLDER); + OCFile folderToUploadVideo = + (OCFile) data.getParcelableExtra(UploadPathActivity.EXTRA_FOLDER); mUploadVideoPath = folderToUploadVideo.getRemotePath(); @@ -551,6 +620,61 @@ public class Preferences extends PreferenceActivity } } + public ActionBar getSupportActionBar() { + return getDelegate().getSupportActionBar(); + } + + public void setSupportActionBar(@Nullable Toolbar toolbar) { + getDelegate().setSupportActionBar(toolbar); + } + + @Override + public MenuInflater getMenuInflater() { + return getDelegate().getMenuInflater(); + } + + @Override + public void setContentView(@LayoutRes int layoutResID) { + getDelegate().setContentView(layoutResID); + } + @Override + public void setContentView(View view) { + getDelegate().setContentView(view); + } + @Override + public void setContentView(View view, ViewGroup.LayoutParams params) { + getDelegate().setContentView(view, params); + } + + @Override + public void addContentView(View view, ViewGroup.LayoutParams params) { + getDelegate().addContentView(view, params); + } + + @Override + protected void onPostResume() { + super.onPostResume(); + getDelegate().onPostResume(); + } + + @Override + protected void onTitleChanged(CharSequence title, int color) { + super.onTitleChanged(title, color); + getDelegate().setTitle(title); + } + + @Override + public void onConfigurationChanged(Configuration newConfig) { + super.onConfigurationChanged(newConfig); + getDelegate().onConfigurationChanged(newConfig); + } + + @Override + protected void onPostCreate(Bundle savedInstanceState) { + super.onPostCreate(savedInstanceState); + getDelegate().onPostCreate(savedInstanceState); + } + @Override protected void onDestroy() { mDbHandler.close(); @@ -565,6 +689,24 @@ public class Preferences extends PreferenceActivity } super.onDestroy(); + getDelegate().onDestroy(); + } + + @Override + protected void onStop() { + super.onStop(); + getDelegate().onStop(); + } + + public void invalidateOptionsMenu() { + getDelegate().invalidateOptionsMenu(); + } + + private AppCompatDelegate getDelegate() { + if (mDelegate == null) { + mDelegate = AppCompatDelegate.create(this, null); + } + return mDelegate; } /** @@ -612,7 +754,8 @@ public class Preferences extends PreferenceActivity AccountManager am = (AccountManager) getSystemService(ACCOUNT_SERVICE); Account accounts[] = am.getAccountsByType(MainApp.getAccountType()); for (Account a : accounts) { - RadioButtonPreference p = (RadioButtonPreference) findPreference(a.name); + RadioButtonPreference p = + (RadioButtonPreference) findPreference(a.name); if (key.equals(a.name)) { boolean accountChanged = !p.isChecked(); p.setChecked(true); @@ -664,7 +807,8 @@ public class Preferences extends PreferenceActivity @Override public boolean onPreferenceClick(Preference preference) { AccountManager am = AccountManager.get(getApplicationContext()); - am.addAccount(MainApp.getAccountType(), null, null, null, Preferences.this, null, null); + am.addAccount(MainApp.getAccountType(), null, null, null, Preferences.this, + null, null); return true; } }); @@ -675,7 +819,8 @@ public class Preferences extends PreferenceActivity * Load upload path set on preferences */ private void loadInstantUploadPath() { - SharedPreferences appPrefs = PreferenceManager.getDefaultSharedPreferences(getApplicationContext()); + SharedPreferences appPrefs = + PreferenceManager.getDefaultSharedPreferences(getApplicationContext()); mUploadPath = appPrefs.getString("instant_upload_path", getString(R.string.instant_upload_path)); mPrefInstantUploadPath.setSummary(mUploadPath); } @@ -684,7 +829,8 @@ public class Preferences extends PreferenceActivity * Save the "Instant Upload Path" on preferences */ private void saveInstantUploadPathOnPreferences() { - SharedPreferences appPrefs = PreferenceManager.getDefaultSharedPreferences(getApplicationContext()); + SharedPreferences appPrefs = + PreferenceManager.getDefaultSharedPreferences(getApplicationContext()); SharedPreferences.Editor editor = appPrefs.edit(); editor.putString("instant_upload_path", mUploadPath); editor.commit(); @@ -694,16 +840,18 @@ public class Preferences extends PreferenceActivity * Load upload video path set on preferences */ private void loadInstantUploadVideoPath() { - SharedPreferences appPrefs = PreferenceManager.getDefaultSharedPreferences(getApplicationContext()); + SharedPreferences appPrefs = + PreferenceManager.getDefaultSharedPreferences(getApplicationContext()); mUploadVideoPath = appPrefs.getString("instant_video_upload_path", getString(R.string.instant_upload_path)); - mPrefInstantVideoUploadPath.setSummary(mUploadVideoPath); +// mPrefInstantVideoUploadPath.setSummary(mUploadVideoPath); } /** * Save the "Instant Video Upload Path" on preferences */ private void saveInstantUploadVideoPathOnPreferences() { - SharedPreferences appPrefs = PreferenceManager.getDefaultSharedPreferences(getApplicationContext()); + SharedPreferences appPrefs = + PreferenceManager.getDefaultSharedPreferences(getApplicationContext()); SharedPreferences.Editor editor = appPrefs.edit(); editor.putString("instant_video_upload_path", mUploadVideoPath); editor.commit();