X-Git-Url: http://git.linex4red.de/pub/Android/ownCloud.git/blobdiff_plain/c20041d157baebede8e47a5f6837ba7dd51204f7..080a8ab7af2bc48e3c5fa1334ae91d21073e26c2:/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..e1c5c10d 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; @@ -73,6 +82,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 +97,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 +120,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 +153,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 +226,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); @@ -211,7 +267,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 +291,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 +380,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 +407,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; } @@ -423,40 +484,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 +502,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 +515,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 +554,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 +568,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 +582,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 +651,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 +716,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 +769,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 +781,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 +791,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,7 +802,8 @@ 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); } @@ -703,7 +812,8 @@ public class Preferences extends PreferenceActivity * 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();