X-Git-Url: http://git.linex4red.de/pub/Android/ownCloud.git/blobdiff_plain/cdabcf7b34dfe47835fdf1bee5a538928d966dce..a99a28cc61d48eca63803c3d661ea1be14f99aec:/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 60687ce7..863a0e4b 100644 --- a/src/com/owncloud/android/ui/activity/Preferences.java +++ b/src/com/owncloud/android/ui/activity/Preferences.java @@ -34,6 +34,7 @@ import android.content.pm.PackageInfo; import android.content.pm.PackageManager.NameNotFoundException; import android.content.res.Configuration; import android.net.Uri; +import android.os.AsyncTask; import android.os.Bundle; import android.os.Environment; import android.os.Handler; @@ -63,6 +64,7 @@ import android.widget.AdapterView.OnItemLongClickListener; import android.widget.ArrayAdapter; import android.widget.ListAdapter; import android.widget.ListView; +import android.widget.Toast; import com.owncloud.android.BuildConfig; import com.owncloud.android.MainApp; @@ -71,6 +73,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; @@ -81,6 +84,12 @@ import com.owncloud.android.ui.PreferenceWithLongSummary; import com.owncloud.android.ui.RadioButtonPreference; import com.owncloud.android.utils.DisplayUtils; +import java.io.BufferedReader; +import java.io.IOException; +import java.io.InputStreamReader; +import java.net.MalformedURLException; +import java.net.URL; +import java.util.concurrent.ExecutionException; import java.io.File; @@ -97,6 +106,8 @@ public class Preferences extends PreferenceActivity private static final int ACTION_SELECT_UPLOAD_PATH = 1; private static final int ACTION_SELECT_UPLOAD_VIDEO_PATH = 2; + private static final int ACTION_REQUEST_PASSCODE = 5; + private static final int ACTION_CONFIRM_PASSCODE = 6; private static final int ACTION_SELECT_STORAGE_PATH = 3; private static final int ACTION_PERFORM_MIGRATION = 4; @@ -125,6 +136,7 @@ public class Preferences extends PreferenceActivity private PreferenceWithLongSummary mPrefStoragePath; private String mStoragePath; + @SuppressWarnings("deprecation") @Override public void onCreate(Bundle savedInstanceState) { @@ -227,28 +239,53 @@ public class Preferences extends PreferenceActivity registerForContextMenu(getListView()); pCode = (CheckBoxPreference) findPreference("set_pincode"); - if (pCode != null){ + if (pCode != null) { pCode.setOnPreferenceChangeListener(new OnPreferenceChangeListener() { @Override public boolean onPreferenceChange(Preference preference, Object newValue) { Intent i = new Intent(getApplicationContext(), PassCodeActivity.class); - Boolean enable = (Boolean) newValue; + Boolean incoming = (Boolean) newValue; + i.setAction( - enable.booleanValue() ? PassCodeActivity.ACTION_ENABLE : - PassCodeActivity.ACTION_DISABLE + incoming.booleanValue() ? PassCodeActivity.ACTION_REQUEST_WITH_RESULT : + PassCodeActivity.ACTION_CHECK_WITH_RESULT ); - startActivity(i); - - return true; + + startActivityForResult(i, incoming.booleanValue() ? ACTION_REQUEST_PASSCODE : + ACTION_CONFIRM_PASSCODE); + + // Don't update just yet, we will decide on it in onActivityResult + return false; } - }); + }); } + 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); - Preference pHelp = findPreference("help"); + Preference pHelp = findPreference("help"); if (pHelp != null ){ if (helpEnabled) { pHelp.setOnPreferenceClickListener(new OnPreferenceClickListener() { @@ -270,7 +307,7 @@ public class Preferences extends PreferenceActivity } if (BuildConfig.DEBUG) { - Preference pLog = findPreference("log"); + Preference pLog = findPreference("log"); if (pLog != null ){ pLog.setOnPreferenceClickListener(new OnPreferenceClickListener() { @Override @@ -313,7 +350,7 @@ public class Preferences extends PreferenceActivity intent.putExtra(Intent.EXTRA_TEXT, recommendText); startActivity(intent); - return(true); + return true; } }); @@ -330,9 +367,10 @@ public class Preferences extends PreferenceActivity pFeedback.setOnPreferenceClickListener(new OnPreferenceClickListener() { @Override public boolean onPreferenceClick(Preference preference) { - String feedbackMail =(String) getText(R.string.mail_feedback); - String feedback =(String) getText(R.string.prefs_feedback) + " - android v" + appVersion; - Intent intent = new Intent(Intent.ACTION_SENDTO); + String feedbackMail = (String) getText(R.string.mail_feedback); + String feedback = String.format("%s - android v%s", getText(R.string.prefs_feedback), appVersion); + Intent intent = new Intent(Intent.ACTION_SENDTO); + intent.setType("text/plain"); intent.putExtra(Intent.EXTRA_SUBJECT, feedback); @@ -371,7 +409,7 @@ public class Preferences extends PreferenceActivity } } - mPrefStoragePath = findPreference("storage_path"); + mPrefStoragePath = (PreferenceWithLongSummary)findPreference("storage_path"); if (mPrefStoragePath != null) { mPrefStoragePath.setOnPreferenceClickListener(new OnPreferenceClickListener() { @@ -393,7 +431,7 @@ public class Preferences extends PreferenceActivity }); } - mPrefInstantUploadPath = findPreference("instant_upload_path"); + mPrefInstantUploadPath = (PreferenceWithLongSummary)findPreference("instant_upload_path"); if (mPrefInstantUploadPath != null){ mPrefInstantUploadPath.setOnPreferenceClickListener(new OnPreferenceClickListener() { @@ -413,7 +451,7 @@ public class Preferences extends PreferenceActivity mPrefInstantUploadCategory = (PreferenceCategory) findPreference("instant_uploading_category"); - mPrefInstantUploadPathWiFi = findPreference("instant_upload_on_wifi"); + mPrefInstantUploadPathWiFi = findPreference("instant_upload_on_wifi"); mPrefInstantUpload = findPreference("instant_uploading"); toggleInstantPictureOptions(((CheckBoxPreference) mPrefInstantUpload).isChecked()); @@ -459,10 +497,17 @@ public class Preferences extends PreferenceActivity }); /* About App */ - pAboutApp = (Preference) findPreference("about_app"); + pAboutApp = findPreference("about_app"); if (pAboutApp != null) { - pAboutApp.setTitle(String.format(getString(R.string.about_android), getString(R.string.app_name))); - pAboutApp.setSummary(String.format(getString(R.string.about_version), appVersion)); + pAboutApp.setTitle(String.format(getString(R.string.about_android), + getString(R.string.app_name))); + try { + Integer currentVersion = getPackageManager().getPackageInfo + (getPackageName(), 0).versionCode; + pAboutApp.setSummary(String.format(getString(R.string.about_version), + currentVersion)); + } catch (NameNotFoundException e) { + } } loadInstantUploadPath(); @@ -481,6 +526,65 @@ 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) { + Integer latestVersion = -1; + Integer currentVersion = -1; + try { + currentVersion = getPackageManager().getPackageInfo + (getPackageName(), 0).versionCode; + LoadingVersionNumberTask loadTask = new LoadingVersionNumberTask(); + loadTask.execute(); + latestVersion = loadTask.get(); + } catch (InterruptedException | ExecutionException e) { + e.printStackTrace(); + } catch (NameNotFoundException e) { + e.printStackTrace(); + } + if (latestVersion == -1 || currentVersion == -1) { + Toast.makeText(getApplicationContext(), "No information available!", + Toast.LENGTH_SHORT).show(); + } + if (latestVersion > currentVersion) { + String betaLinkWeb = (String) getText(R.string.beta_link) + + latestVersion + ".apk"; + if (betaLinkWeb != null && betaLinkWeb.length() > 0) { + Uri uriUrl = Uri.parse(betaLinkWeb); + Intent intent = new Intent(Intent.ACTION_VIEW, uriUrl); + startActivity(intent); + return true; + } + } else { + Toast.makeText(getApplicationContext(), "No new version available!", + Toast.LENGTH_SHORT).show(); + return true; + } + return true; + } + }); + } + + /* Link to Beta apks */ + Preference pChangelogLink = findPreference("changelog_link"); + if (pChangelogLink != null) { + pChangelogLink.setOnPreferenceClickListener(new OnPreferenceClickListener() { + @Override + public boolean onPreferenceClick(Preference preference) { + String betaLinkWeb = getString(R.string.changelog); + if (betaLinkWeb != null && betaLinkWeb.length() > 0) { + Uri uriUrl = Uri.parse(betaLinkWeb); + Intent intent = new Intent(Intent.ACTION_VIEW, uriUrl); + startActivity(intent); + return true; + } + return true; + } + }); + } } private void toggleInstantPictureOptions(Boolean value){ @@ -488,8 +592,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); } } @@ -498,8 +602,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); } } @@ -585,8 +689,7 @@ public class Preferences extends PreferenceActivity if (requestCode == ACTION_SELECT_UPLOAD_PATH && resultCode == RESULT_OK){ - OCFile folderToUpload = - (OCFile) data.getParcelableExtra(UploadPathActivity.EXTRA_FOLDER); + OCFile folderToUpload = data.getParcelableExtra(UploadPathActivity.EXTRA_FOLDER); mUploadPath = folderToUpload.getRemotePath(); @@ -599,8 +702,7 @@ 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 = data.getParcelableExtra(UploadPathActivity.EXTRA_FOLDER); mUploadVideoPath = folderToUploadVideo.getRemotePath(); @@ -625,6 +727,29 @@ public class Preferences extends PreferenceActivity } else if (requestCode == ACTION_PERFORM_MIGRATION && resultCode == RESULT_OK) { String resultStorageDir = data.getStringExtra(StorageMigrationActivity.KEY_MIGRATION_TARGET_DIR); saveStoragePath(resultStorageDir); + } else if (requestCode == ACTION_REQUEST_PASSCODE && resultCode == RESULT_OK) { + String passcode = data.getStringExtra(PassCodeActivity.KEY_PASSCODE); + if (passcode != null && passcode.length() == 4) { + SharedPreferences.Editor appPrefs = PreferenceManager + .getDefaultSharedPreferences(getApplicationContext()).edit(); + + for (int i = 1; i <= 4; ++i) { + appPrefs.putString("PrefPinCode" + i, passcode.substring(i-1, i)); + } + appPrefs.putBoolean("set_pincode", true); + appPrefs.commit(); + Toast.makeText(this, R.string.pass_code_stored, Toast.LENGTH_LONG).show(); + } + } else if (requestCode == ACTION_CONFIRM_PASSCODE && resultCode == RESULT_OK) { + if (data.getBooleanExtra(PassCodeActivity.KEY_CHECK_RESULT, false)) { + + SharedPreferences.Editor appPrefs = PreferenceManager + .getDefaultSharedPreferences(getApplicationContext()).edit(); + appPrefs.putBoolean("set_pincode", false); + appPrefs.commit(); + + Toast.makeText(this, R.string.pass_code_removed, Toast.LENGTH_LONG).show(); + } } } @@ -649,6 +774,7 @@ public class Preferences extends PreferenceActivity public void setContentView(View view) { getDelegate().setContentView(view); } + @Override public void setContentView(View view, ViewGroup.LayoutParams params) { getDelegate().setContentView(view, params); @@ -843,6 +969,7 @@ public class Preferences extends PreferenceActivity MainApp.setStoragePath(mStoragePath); SharedPreferences.Editor editor = appPrefs.edit(); editor.putString("storage_path", mStoragePath); + editor.commit(); mPrefStoragePath.setSummary(mStoragePath); } @@ -886,7 +1013,7 @@ public class Preferences extends PreferenceActivity editor.commit(); } - // Methods for ComponetsGetter + // Methods for ComponentsGetter @Override public FileDownloader.FileDownloaderBinder getFileDownloaderBinder() { return mDownloaderBinder; @@ -925,14 +1052,10 @@ public class Preferences extends PreferenceActivity 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 @@ -946,4 +1069,29 @@ public class Preferences extends PreferenceActivity } } }; + + /** + * + * Class for loading the version number + * + */ + private class LoadingVersionNumberTask extends AsyncTask { + protected Integer doInBackground(Void... args) { + try { + URL url = new URL("https://github.com/owncloud/android/raw/beta/apks/latest"); + BufferedReader in = new BufferedReader(new InputStreamReader(url.openStream())); + + Integer latestVersion = Integer.parseInt(in.readLine()); + in.close(); + + return latestVersion; + + } catch (MalformedURLException e) { + e.printStackTrace(); + } catch (IOException e) { + e.printStackTrace(); + } + return -1; + } + } }