X-Git-Url: http://git.linex4red.de/pub/Android/ownCloud.git/blobdiff_plain/c837207a40e7f647b93909c7f213e4b4b4a41d52..901b6ac61e4a84d281e86b4989aa099801b28de7:/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 460c5e0c..3ebb432c 100644 --- a/src/com/owncloud/android/ui/activity/Preferences.java +++ b/src/com/owncloud/android/ui/activity/Preferences.java @@ -1,237 +1,305 @@ -/* ownCloud Android client application - * Copyright (C) 2011 Bartek Przybylski - * Copyright (C) 2012-2013 ownCloud Inc. - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 2 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - * - */ -package com.owncloud.android.ui.activity; - -import java.util.Vector; - -import android.content.Intent; -import android.content.SharedPreferences; -import android.os.Bundle; -import android.preference.CheckBoxPreference; -import android.preference.ListPreference; -import android.preference.Preference; -import android.preference.PreferenceManager; -import android.preference.Preference.OnPreferenceChangeListener; -import android.preference.Preference.OnPreferenceClickListener; -import android.util.Log; - -import com.actionbarsherlock.app.ActionBar; -import com.actionbarsherlock.app.SherlockPreferenceActivity; -import com.actionbarsherlock.view.Menu; -import com.actionbarsherlock.view.MenuItem; -import com.owncloud.android.OwnCloudSession; -import com.owncloud.android.db.DbHandler; - -import com.owncloud.android.R; - -/** - * An Activity that allows the user to change the application's settings. - * - * @author Bartek Przybylski - * - */ -public class Preferences extends SherlockPreferenceActivity implements - OnPreferenceChangeListener{ - private static final String TAG = "OwnCloudPreferences"; - private final int mNewSession = 47; - private final int mEditSession = 48; - private DbHandler mDbHandler; - private Vector mSessions; - //private Account[] mAccounts; - //private ListPreference mAccountList; - private ListPreference mTrackingUpdateInterval; - private CheckBoxPreference mDeviceTracking; - private CheckBoxPreference pCode; - private int mSelectedMenuItem; - - @Override - public void onCreate(Bundle savedInstanceState) { - super.onCreate(savedInstanceState); - mDbHandler = new DbHandler(getBaseContext()); - mSessions = new Vector(); - addPreferencesFromResource(R.xml.preferences); - //populateAccountList(); - ActionBar actionBar = getSherlock().getActionBar(); - actionBar.setDisplayHomeAsUpEnabled(true); - Preference p = findPreference("manage_account"); - if (p != null) - p.setOnPreferenceClickListener(new OnPreferenceClickListener() { - @Override - public boolean onPreferenceClick(Preference preference) { - Intent i = new Intent(getApplicationContext(), AccountSelectActivity.class); - startActivity(i); - return true; - } - }); - - pCode = (CheckBoxPreference) findPreference("set_pincode"); - - - if (pCode != null){ - - pCode.setOnPreferenceChangeListener(new OnPreferenceChangeListener() { - @Override - public boolean onPreferenceChange(Preference preference, Object newValue) { - - Intent i = new Intent(getApplicationContext(), PinCodeActivity.class); - i.putExtra(PinCodeActivity.EXTRA_ACTIVITY, "preferences"); - i.putExtra(PinCodeActivity.EXTRA_NEW_STATE, newValue.toString()); - - startActivity(i); - - return true; - } - }); - - } - - } - - - @Override - protected void onResume() { - // TODO Auto-generated method stub - SharedPreferences appPrefs = PreferenceManager - .getDefaultSharedPreferences(getApplicationContext()); - - boolean state = appPrefs.getBoolean("set_pincode", false); - pCode.setChecked(state); - - super.onResume(); - } - - - - /** - * Populates the account selector - *-/ - private void populateAccountList() { - AccountManager accMan = AccountManager.get(this); - mAccounts = accMan.getAccountsByType(AccountAuthenticator.ACCOUNT_TYPE); - mAccountList = (ListPreference) findPreference("select_oc_account"); - mAccountList.setOnPreferenceChangeListener(this); - - // Display the name of the current account if there is any - Account defaultAccount = AccountUtils.getCurrentOwnCloudAccount(this); - if (defaultAccount != null) { - mAccountList.setSummary(defaultAccount.name); - } - - // Transform accounts into array of string for preferences to use - String[] accNames = new String[mAccounts.length]; - for (int i = 0; i < mAccounts.length; i++) { - Account account = mAccounts[i]; - accNames[i] = account.name; - } - - mAccountList.setEntries(accNames); - mAccountList.setEntryValues(accNames); - }*/ - - - - @Override - public boolean onCreateOptionsMenu(Menu menu) { - super.onCreateOptionsMenu(menu); - //MenuInflater inflater = getSherlock().getMenuInflater(); - //inflater.inflate(R.menu.prefs_menu, menu); - return true; - } - - @Override - public boolean onMenuItemSelected(int featureId, MenuItem item) { - super.onMenuItemSelected(featureId, item); - Intent intent; - - switch (item.getItemId()) { - //case R.id.addSessionItem: - case 1: - intent = new Intent(this, PreferencesNewSession.class); - startActivityForResult(intent, mNewSession); - break; - case R.id.SessionContextEdit: - intent = new Intent(this, PreferencesNewSession.class); - intent.putExtra("sessionId", mSessions.get(mSelectedMenuItem) - .getEntryId()); - intent.putExtra("sessionName", mSessions.get(mSelectedMenuItem) - .getName()); - intent.putExtra("sessionURL", mSessions.get(mSelectedMenuItem) - .getUrl()); - startActivityForResult(intent, mEditSession); - break; - case android.R.id.home: - intent = new Intent(getBaseContext(), FileDisplayActivity.class); - intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP); - startActivity(intent); - break; - default: - Log.w(TAG, "Unknown menu item triggered"); - return false; - } - return true; - } - - @Override - protected void onActivityResult(int requestCode, int resultCode, Intent data) { - super.onActivityResult(requestCode, resultCode, data); - } - - @Override - protected void onDestroy() { - mDbHandler.close(); - super.onDestroy(); - } - - - - @Override - /** - * Updates various summaries after updates. Also starts and stops - * the - */ - public boolean onPreferenceChange(Preference preference, Object newValue) { - // Update current account summary - /*if (preference.equals(mAccountList)) { - mAccountList.setSummary(newValue.toString()); - } - - // Update tracking interval summary - else*/ if (preference.equals(mTrackingUpdateInterval)) { - String trackingSummary = getResources().getString( - R.string.prefs_trackmydevice_interval_summary); - trackingSummary = String.format(trackingSummary, - newValue.toString()); - mTrackingUpdateInterval.setSummary(trackingSummary); - } - - // Start or stop tracking service - else if (preference.equals(mDeviceTracking)) { - Intent locationServiceIntent = new Intent(); - locationServiceIntent - .setAction("com.owncloud.android.location.LocationLauncher"); - locationServiceIntent.putExtra("TRACKING_SETTING", - (Boolean) newValue); - sendBroadcast(locationServiceIntent); - } - return true; - } - - - -} +/* ownCloud Android client application + * Copyright (C) 2011 Bartek Przybylski + * Copyright (C) 2012-2013 ownCloud Inc. + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License version 2, + * as published by the Free Software Foundation. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + * + */ +package com.owncloud.android.ui.activity; + +import android.accounts.Account; +import android.content.Intent; +import android.content.SharedPreferences; +import android.content.pm.PackageInfo; +import android.content.pm.PackageManager.NameNotFoundException; +import android.net.Uri; +import android.os.Bundle; +import android.preference.CheckBoxPreference; +import android.preference.Preference; +import android.preference.Preference.OnPreferenceChangeListener; +import android.preference.Preference.OnPreferenceClickListener; +import android.preference.PreferenceCategory; +import android.preference.PreferenceManager; + +import com.actionbarsherlock.app.ActionBar; +import com.actionbarsherlock.app.SherlockPreferenceActivity; +import com.actionbarsherlock.view.Menu; +import com.actionbarsherlock.view.MenuItem; +import com.owncloud.android.R; +import com.owncloud.android.authentication.AccountUtils; +import com.owncloud.android.db.DbHandler; +import com.owncloud.android.utils.DisplayUtils; +import com.owncloud.android.utils.Log_OC; + + +/** + * An Activity that allows the user to change the application's settings. + * + * @author Bartek Przybylski + * @author David A. Velasco + */ +public class Preferences extends SherlockPreferenceActivity { + + private static final String TAG = "OwnCloudPreferences"; + private DbHandler mDbHandler; + private CheckBoxPreference pCode; + //private CheckBoxPreference pLogging; + //private Preference pLoggingHistory; + private Preference pAboutApp; + + + @SuppressWarnings("deprecation") + @Override + public void onCreate(Bundle savedInstanceState) { + super.onCreate(savedInstanceState); + mDbHandler = new DbHandler(getBaseContext()); + addPreferencesFromResource(R.xml.preferences); + //populateAccountList(); + ActionBar actionBar = getSherlock().getActionBar(); + actionBar.setIcon(DisplayUtils.getSeasonalIconId()); + actionBar.setDisplayHomeAsUpEnabled(true); + + Preference p = findPreference("manage_account"); + if (p != null) + p.setOnPreferenceClickListener(new OnPreferenceClickListener() { + @Override + public boolean onPreferenceClick(Preference preference) { + Intent i = new Intent(getApplicationContext(), AccountSelectActivity.class); + startActivity(i); + return true; + } + }); + + pCode = (CheckBoxPreference) findPreference("set_pincode"); + if (pCode != null){ + pCode.setOnPreferenceChangeListener(new OnPreferenceChangeListener() { + @Override + public boolean onPreferenceChange(Preference preference, Object newValue) { + Intent i = new Intent(getApplicationContext(), PinCodeActivity.class); + i.putExtra(PinCodeActivity.EXTRA_ACTIVITY, "preferences"); + i.putExtra(PinCodeActivity.EXTRA_NEW_STATE, newValue.toString()); + startActivity(i); + + return true; + } + }); + + } + + + + PreferenceCategory preferenceCategory = (PreferenceCategory) findPreference("more"); + + boolean helpEnabled = getResources().getBoolean(R.bool.help_enabled); + Preference pHelp = findPreference("help"); + if (pHelp != null ){ + if (helpEnabled) { + pHelp.setOnPreferenceClickListener(new OnPreferenceClickListener() { + @Override + public boolean onPreferenceClick(Preference preference) { + String helpWeb =(String) getText(R.string.url_help); + if (helpWeb != null && helpWeb.length() > 0) { + Uri uriUrl = Uri.parse(helpWeb); + Intent intent = new Intent(Intent.ACTION_VIEW, uriUrl); + startActivity(intent); + } + return true; + } + }); + } else { + preferenceCategory.removePreference(pHelp); + } + + } + + + boolean recommendEnabled = getResources().getBoolean(R.bool.recommend_enabled); + Preference pRecommend = findPreference("recommend"); + if (pRecommend != null){ + if (recommendEnabled) { + pRecommend.setOnPreferenceClickListener(new OnPreferenceClickListener() { + @Override + public boolean onPreferenceClick(Preference preference) { + + Intent intent = new Intent(Intent.ACTION_SENDTO); + intent.setType("text/plain"); + intent.setData(Uri.parse(getString(R.string.mail_recommend))); + intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK); + + 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('@')); + + String recommendSubject = String.format(getString(R.string.recommend_subject), appName); + String recommendText = String.format(getString(R.string.recommend_text), appName, downloadUrl, username); + + intent.putExtra(Intent.EXTRA_SUBJECT, recommendSubject); + intent.putExtra(Intent.EXTRA_TEXT, recommendText); + startActivity(intent); + + + return(true); + + } + }); + } else { + preferenceCategory.removePreference(pRecommend); + } + + } + + boolean feedbackEnabled = getResources().getBoolean(R.bool.feedback_enabled); + Preference pFeedback = findPreference("feedback"); + if (pFeedback != null){ + if (feedbackEnabled) { + 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); + Intent intent = new Intent(Intent.ACTION_SENDTO); + intent.setType("text/plain"); + intent.putExtra(Intent.EXTRA_SUBJECT, feedback); + + intent.setData(Uri.parse(feedbackMail)); + intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK); + startActivity(intent); + + return true; + } + }); + } else { + preferenceCategory.removePreference(pFeedback); + } + + } + + boolean imprintEnabled = getResources().getBoolean(R.bool.imprint_enabled); + Preference pImprint = findPreference("imprint"); + if (pImprint != null) { + if (imprintEnabled) { + pImprint.setOnPreferenceClickListener(new OnPreferenceClickListener() { + @Override + public boolean onPreferenceClick(Preference preference) { + String imprintWeb = (String) getText(R.string.url_imprint); + if (imprintWeb != null && imprintWeb.length() > 0) { + Uri uriUrl = Uri.parse(imprintWeb); + Intent intent = new Intent(Intent.ACTION_VIEW, uriUrl); + startActivity(intent); + } + //ImprintDialog.newInstance(true).show(preference.get, "IMPRINT_DIALOG"); + return true; + } + }); + } else { + preferenceCategory.removePreference(pImprint); + } + } + + /* About App */ + pAboutApp = (Preference) findPreference("about_app"); + if (pAboutApp != null) { + pAboutApp.setTitle(String.format(getString(R.string.about_android), getString(R.string.app_name))); + PackageInfo pkg; + try { + pkg = getPackageManager().getPackageInfo(getPackageName(), 0); + pAboutApp.setSummary(String.format(getString(R.string.about_version), pkg.versionName)); + } catch (NameNotFoundException e) { + 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 onResume() { + SharedPreferences appPrefs = PreferenceManager.getDefaultSharedPreferences(getApplicationContext()); + boolean state = appPrefs.getBoolean("set_pincode", false); + pCode.setChecked(state); + super.onResume(); + } + + @Override + public boolean onCreateOptionsMenu(Menu menu) { + super.onCreateOptionsMenu(menu); + return true; + } + + @Override + public boolean onMenuItemSelected(int featureId, MenuItem item) { + super.onMenuItemSelected(featureId, item); + Intent intent; + + switch (item.getItemId()) { + case android.R.id.home: + intent = new Intent(getBaseContext(), FileDisplayActivity.class); + intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP); + startActivity(intent); + break; + default: + Log_OC.w(TAG, "Unknown menu item triggered"); + return false; + } + return true; + } + + @Override + protected void onActivityResult(int requestCode, int resultCode, Intent data) { + super.onActivityResult(requestCode, resultCode, data); + } + + @Override + protected void onDestroy() { + mDbHandler.close(); + super.onDestroy(); + } + +}