diff options
Diffstat (limited to 'main/src/cgeo/geocaching/SettingsActivity.java')
| -rw-r--r-- | main/src/cgeo/geocaching/SettingsActivity.java | 1069 |
1 files changed, 0 insertions, 1069 deletions
diff --git a/main/src/cgeo/geocaching/SettingsActivity.java b/main/src/cgeo/geocaching/SettingsActivity.java deleted file mode 100644 index 872d5ee..0000000 --- a/main/src/cgeo/geocaching/SettingsActivity.java +++ /dev/null @@ -1,1069 +0,0 @@ -package cgeo.geocaching; - -import cgeo.geocaching.activity.AbstractActivity; -import cgeo.geocaching.apps.cache.navi.NavigationAppFactory; -import cgeo.geocaching.apps.cache.navi.NavigationAppFactory.NavigationAppsEnum; -import cgeo.geocaching.compatibility.Compatibility; -import cgeo.geocaching.connector.gc.Login; -import cgeo.geocaching.connector.oc.OCAuthorizationActivity; -import cgeo.geocaching.enumerations.StatusCode; -import cgeo.geocaching.files.SimpleDirChooser; -import cgeo.geocaching.maps.MapProviderFactory; -import cgeo.geocaching.maps.interfaces.MapSource; -import cgeo.geocaching.network.Cookies; -import cgeo.geocaching.network.Network; -import cgeo.geocaching.network.Parameters; -import cgeo.geocaching.twitter.TwitterAuthorizationActivity; -import cgeo.geocaching.ui.Formatter; -import cgeo.geocaching.utils.Log; -import cgeo.geocaching.utils.LogTemplateProvider; -import cgeo.geocaching.utils.LogTemplateProvider.LogTemplate; -import cgeo.geocaching.utils.RunnableWithArgument; - -import ch.boye.httpclientandroidlib.HttpResponse; - -import org.apache.commons.lang3.StringUtils; -import org.apache.commons.lang3.tuple.ImmutablePair; -import org.openintents.intents.FileManagerIntents; - -import android.app.ProgressDialog; -import android.content.Context; -import android.content.Intent; -import android.content.res.Configuration; -import android.graphics.drawable.Drawable; -import android.net.Uri; -import android.os.Bundle; -import android.os.Handler; -import android.os.Message; -import android.view.ContextMenu; -import android.view.ContextMenu.ContextMenuInfo; -import android.view.Menu; -import android.view.MenuItem; -import android.view.View; -import android.view.ViewGroup; -import android.widget.AdapterView; -import android.widget.AdapterView.OnItemSelectedListener; -import android.widget.ArrayAdapter; -import android.widget.Button; -import android.widget.CheckBox; -import android.widget.EditText; -import android.widget.Spinner; -import android.widget.TextView; - -import java.io.File; -import java.util.ArrayList; -import java.util.Collection; -import java.util.List; - -public class SettingsActivity extends AbstractActivity { - - private final static int SELECT_MAPFILE_REQUEST = 1; - private final static int SELECT_GPX_EXPORT_REQUEST = 2; - private final static int SELECT_GPX_IMPORT_REQUEST = 3; - private final static int SELECT_THEMEFOLDER_REQUEST = 4; - - private ProgressDialog loginDialog = null; - private ProgressDialog webDialog = null; - private boolean enableTemplatesMenu = false; - private Handler logInHandler = new Handler() { - - @Override - public void handleMessage(Message msg) { - try { - if (loginDialog != null && loginDialog.isShowing()) { - loginDialog.dismiss(); - } - - if (msg.obj == null || (msg.obj instanceof Drawable)) { - helpDialog(res.getString(R.string.init_login_popup), res.getString(R.string.init_login_popup_ok), - (Drawable) msg.obj); - } else { - helpDialog(res.getString(R.string.init_login_popup), - res.getString(R.string.init_login_popup_failed_reason) + " " + - ((StatusCode) msg.obj).getErrorString(res) + "."); - } - } catch (Exception e) { - showToast(res.getString(R.string.err_login_failed)); - - Log.e("SettingsActivity.logInHandler", e); - } - - if (loginDialog != null && loginDialog.isShowing()) { - loginDialog.dismiss(); - } - - init(); - } - }; - - private Handler webAuthHandler = new Handler() { - - @Override - public void handleMessage(Message msg) { - try { - if (webDialog != null && webDialog.isShowing()) { - webDialog.dismiss(); - } - - if (msg.what > 0) { - helpDialog(res.getString(R.string.init_sendToCgeo), res.getString(R.string.init_sendToCgeo_register_ok).replace("####", String.valueOf(msg.what))); - } else { - helpDialog(res.getString(R.string.init_sendToCgeo), res.getString(R.string.init_sendToCgeo_register_fail)); - } - } catch (Exception e) { - showToast(res.getString(R.string.init_sendToCgeo_register_fail)); - - Log.e("SettingsActivity.webHandler", e); - } - - if (webDialog != null && webDialog.isShowing()) { - webDialog.dismiss(); - } - - init(); - } - }; - - @Override - public void onCreate(Bundle savedInstanceState) { - super.onCreate(savedInstanceState, R.layout.settings_activity); - - init(); - } - - @Override - public void onConfigurationChanged(Configuration newConfig) { - super.onConfigurationChanged(newConfig); - - init(); - } - - @Override - public void onPause() { - saveValues(); - super.onPause(); - } - - @Override - public void onStop() { - saveValues(); - Compatibility.dataChanged(getPackageName()); - super.onStop(); - } - - @Override - public void onDestroy() { - saveValues(); - - super.onDestroy(); - } - - @Override - public boolean onCreateOptionsMenu(Menu menu) { - getMenuInflater().inflate(R.menu.settings_activity_options, menu); - return true; - } - - @Override - public boolean onOptionsItemSelected(MenuItem item) { - if (item.getItemId() == R.id.menu_clear) { - ((EditText) findViewById(R.id.username)).setText(""); - ((EditText) findViewById(R.id.password)).setText(""); - ((EditText) findViewById(R.id.passvote)).setText(""); - - if (saveValues()) { - showToast(res.getString(R.string.init_cleared)); - } else { - showToast(res.getString(R.string.err_init_cleared)); - } - - finish(); - } - - return false; - } - - @Override - public void onCreateContextMenu(ContextMenu menu, View v, - ContextMenuInfo menuInfo) { - if (enableTemplatesMenu) { - menu.setHeaderTitle(R.string.init_signature_template_button); - for (LogTemplate template : LogTemplateProvider.getTemplates()) { - menu.add(0, template.getItemId(), 0, template.getResourceId()); - } - } - } - - @Override - public boolean onContextItemSelected(MenuItem item) { - LogTemplate template = LogTemplateProvider.getTemplate(item.getItemId()); - if (template != null) { - return insertSignatureTemplate(template); - } - return super.onContextItemSelected(item); - } - - private boolean insertSignatureTemplate(final LogTemplate template) { - EditText sig = (EditText) findViewById(R.id.signature); - String insertText = "[" + template.getTemplateString() + "]"; - insertAtPosition(sig, insertText, true); - return true; - } - - public void init() { - - // geocaching.com settings - final CheckBox gcCheck = (CheckBox) findViewById(R.id.gc_option); - gcCheck.setChecked(Settings.isGCConnectorActive()); - gcCheck.setOnClickListener(new View.OnClickListener() { - - @Override - public void onClick(View v) { - Settings.setGCConnectorActive(gcCheck.isChecked()); - } - }); - final ImmutablePair<String, String> login = Settings.getLogin(); - if (login != null) { - ((EditText) findViewById(R.id.username)).setText(login.left); - ((EditText) findViewById(R.id.password)).setText(login.right); - } - - Button logMeIn = (Button) findViewById(R.id.log_me_in); - logMeIn.setOnClickListener(new LoginListener()); - - TextView legalNote = (TextView) findViewById(R.id.legal_note); - legalNote.setClickable(true); - legalNote.setOnClickListener(new View.OnClickListener() { - - @Override - public void onClick(View arg0) { - startActivity(new Intent(Intent.ACTION_VIEW, Uri.parse("http://www.geocaching.com/about/termsofuse.aspx"))); - } - }); - - // opencaching.de settings - final CheckBox ocCheck = (CheckBox) findViewById(R.id.oc_option); - ocCheck.setChecked(Settings.isOCConnectorActive()); - ocCheck.setOnClickListener(new View.OnClickListener() { - - @Override - public void onClick(View v) { - Settings.setOCConnectorActive(ocCheck.isChecked()); - } - }); - - Button checkOCUser = (Button) findViewById(R.id.register_oc_de); - checkOCUser.setOnClickListener(new OCDEAuthorizeCgeoListener()); - - // gcvote settings - final ImmutablePair<String, String> gcvoteLogin = Settings.getGCvoteLogin(); - if (null != gcvoteLogin && null != gcvoteLogin.right) { - ((EditText) findViewById(R.id.passvote)).setText(gcvoteLogin.right); - } - - // Twitter settings - Button authorizeTwitter = (Button) findViewById(R.id.authorize_twitter); - authorizeTwitter.setOnClickListener(new View.OnClickListener() { - - @Override - public void onClick(View arg0) { - Intent authIntent = new Intent(SettingsActivity.this, TwitterAuthorizationActivity.class); - startActivity(authIntent); - } - }); - - final CheckBox twitterButton = (CheckBox) findViewById(R.id.twitter_option); - twitterButton.setChecked(Settings.isUseTwitter() && Settings.isTwitterLoginValid()); - twitterButton.setOnClickListener(new View.OnClickListener() { - - @Override - public void onClick(View v) { - Settings.setUseTwitter(twitterButton.isChecked()); - if (Settings.isUseTwitter() && !Settings.isTwitterLoginValid()) { - Intent authIntent = new Intent(SettingsActivity.this, TwitterAuthorizationActivity.class); - startActivity(authIntent); - } - - twitterButton.setChecked(Settings.isUseTwitter()); - } - }); - - // Signature settings - EditText sigEdit = (EditText) findViewById(R.id.signature); - if (sigEdit.getText().length() == 0) { - sigEdit.setText(Settings.getSignature()); - } - Button sigBtn = (Button) findViewById(R.id.signature_help); - sigBtn.setOnClickListener(new View.OnClickListener() { - @Override - public void onClick(View v) { - helpDialog(res.getString(R.string.init_signature_help_title), res.getString(R.string.init_signature_help_text)); - } - }); - Button templates = (Button) findViewById(R.id.signature_template); - registerForContextMenu(templates); - templates.setOnClickListener(new View.OnClickListener() { - @Override - public void onClick(View v) { - enableTemplatesMenu = true; - openContextMenu(v); - enableTemplatesMenu = false; - } - }); - final CheckBox autoinsertButton = (CheckBox) findViewById(R.id.sigautoinsert); - autoinsertButton.setChecked(Settings.isAutoInsertSignature()); - autoinsertButton.setOnClickListener(new View.OnClickListener() { - - @Override - public void onClick(View v) { - Settings.setAutoInsertSignature(autoinsertButton.isChecked()); - } - }); - - // Cache details - final CheckBox autoloadButton = (CheckBox) findViewById(R.id.autoload); - autoloadButton.setChecked(Settings.isAutoLoadDescription()); - autoloadButton.setOnClickListener(new View.OnClickListener() { - - @Override - public void onClick(View v) { - Settings.setAutoLoadDesc(autoloadButton.isChecked()); - } - }); - - final CheckBox ratingWantedButton = (CheckBox) findViewById(R.id.ratingwanted); - ratingWantedButton.setChecked(Settings.isRatingWanted()); - ratingWantedButton.setOnClickListener(new View.OnClickListener() { - - @Override - public void onClick(View v) { - Settings.setRatingWanted(ratingWantedButton.isChecked()); - } - }); - - final CheckBox elevationWantedButton = (CheckBox) findViewById(R.id.elevationwanted); - elevationWantedButton.setChecked(Settings.isElevationWanted()); - elevationWantedButton.setOnClickListener(new View.OnClickListener() { - - @Override - public void onClick(View v) { - Settings.setElevationWanted(elevationWantedButton.isChecked()); - } - }); - - final CheckBox friendLogsWantedButton = (CheckBox) findViewById(R.id.friendlogswanted); - friendLogsWantedButton.setChecked(Settings.isFriendLogsWanted()); - friendLogsWantedButton.setOnClickListener(new View.OnClickListener() { - - @Override - public void onClick(View v) { - Settings.setFriendLogsWanted(friendLogsWantedButton.isChecked()); - } - }); - - final CheckBox openLastDetailsPageButton = (CheckBox) findViewById(R.id.openlastdetailspage); - openLastDetailsPageButton.setChecked(Settings.isOpenLastDetailsPage()); - openLastDetailsPageButton.setOnClickListener(new View.OnClickListener() { - - @Override - public void onClick(View v) { - Settings.setOpenLastDetailsPage(openLastDetailsPageButton.isChecked()); - } - }); - - // Other settings - final CheckBox skinButton = (CheckBox) findViewById(R.id.skin); - skinButton.setChecked(Settings.isLightSkin()); - skinButton.setOnClickListener(new View.OnClickListener() { - - @Override - public void onClick(View v) { - Settings.setLightSkin(skinButton.isChecked()); - } - }); - - final CheckBox addressButton = (CheckBox) findViewById(R.id.address); - addressButton.setChecked(Settings.isShowAddress()); - addressButton.setOnClickListener(new View.OnClickListener() { - - @Override - public void onClick(View v) { - Settings.setShowAddress(addressButton.isChecked()); - } - }); - - final CheckBox captchaButton = (CheckBox) findViewById(R.id.captcha); - captchaButton.setEnabled(!Settings.isPremiumMember()); - captchaButton.setChecked(Settings.isShowCaptcha()); - captchaButton.setOnClickListener(new View.OnClickListener() { - - @Override - public void onClick(View v) { - Settings.setShowCaptcha(captchaButton.isChecked()); - } - }); - - final CheckBox dirImgButton = (CheckBox) findViewById(R.id.loaddirectionimg); - dirImgButton.setEnabled(!Settings.isPremiumMember()); - dirImgButton.setChecked(Settings.getLoadDirImg()); - dirImgButton.setOnClickListener(new View.OnClickListener() { - - @Override - public void onClick(View v) { - Settings.setLoadDirImg(!Settings.getLoadDirImg()); - dirImgButton.setChecked(Settings.getLoadDirImg()); - } - }); - - final CheckBox useEnglishButton = (CheckBox) findViewById(R.id.useenglish); - useEnglishButton.setChecked(Settings.isUseEnglish()); - useEnglishButton.setOnClickListener(new View.OnClickListener() { - - @Override - public void onClick(View v) { - Settings.setUseEnglish(useEnglishButton.isChecked()); - } - }); - - final CheckBox excludeButton = (CheckBox) findViewById(R.id.exclude); - excludeButton.setChecked(Settings.isExcludeMyCaches()); - excludeButton.setOnClickListener(new View.OnClickListener() { - - @Override - public void onClick(View v) { - Settings.setExcludeMine(excludeButton.isChecked()); - } - }); - - final CheckBox disabledButton = (CheckBox) findViewById(R.id.disabled); - disabledButton.setChecked(Settings.isExcludeDisabledCaches()); - disabledButton.setOnClickListener(new View.OnClickListener() { - - @Override - public void onClick(View v) { - Settings.setExcludeDisabledCaches(disabledButton.isChecked()); - } - }); - - TextView showWaypointsThreshold = (TextView) findViewById(R.id.showwaypointsthreshold); - showWaypointsThreshold.setText(String.valueOf(Settings.getWayPointsThreshold())); - - final CheckBox autovisitButton = (CheckBox) findViewById(R.id.trackautovisit); - autovisitButton.setChecked(Settings.isTrackableAutoVisit()); - autovisitButton.setOnClickListener(new View.OnClickListener() { - - @Override - public void onClick(View v) { - Settings.setTrackableAutoVisit(autovisitButton.isChecked()); - } - }); - - final CheckBox offlineButton = (CheckBox) findViewById(R.id.offline); - offlineButton.setChecked(Settings.isStoreOfflineMaps()); - offlineButton.setOnClickListener(new View.OnClickListener() { - - @Override - public void onClick(View v) { - Settings.setStoreOfflineMaps(offlineButton.isChecked()); - } - }); - - final CheckBox offlineWpButton = (CheckBox) findViewById(R.id.offline_wp); - offlineWpButton.setChecked(Settings.isStoreOfflineWpMaps()); - offlineWpButton.setOnClickListener(new View.OnClickListener() { - - @Override - public void onClick(View v) { - Settings.setStoreOfflineWpMaps(offlineWpButton.isChecked()); - } - }); - - final CheckBox saveLogImgButton = (CheckBox) findViewById(R.id.save_log_img); - saveLogImgButton.setChecked(Settings.isStoreLogImages()); - saveLogImgButton.setOnClickListener(new View.OnClickListener() { - - @Override - public void onClick(View v) { - Settings.setStoreLogImages(saveLogImgButton.isChecked()); - } - }); - - final CheckBox livelistButton = (CheckBox) findViewById(R.id.livelist); - livelistButton.setChecked(Settings.isLiveList()); - livelistButton.setOnClickListener(new View.OnClickListener() { - - @Override - public void onClick(View v) { - Settings.setLiveList(livelistButton.isChecked()); - } - }); - - final CheckBox unitsButton = (CheckBox) findViewById(R.id.units); - unitsButton.setChecked(!Settings.isUseMetricUnits()); - unitsButton.setOnClickListener(new View.OnClickListener() { - - @Override - public void onClick(View v) { - Settings.setUseMetricUnits(!unitsButton.isChecked()); - } - }); - - final CheckBox logOffline = (CheckBox) findViewById(R.id.log_offline); - logOffline.setChecked(Settings.getLogOffline()); - logOffline.setOnClickListener(new View.OnClickListener() { - - @Override - public void onClick(View v) { - Settings.setLogOffline(!Settings.getLogOffline()); - logOffline.setChecked(Settings.getLogOffline()); - } - }); - - final CheckBox chooseList = (CheckBox) findViewById(R.id.choose_list); - chooseList.setChecked(Settings.getChooseList()); - chooseList.setOnClickListener(new View.OnClickListener() { - - @Override - public void onClick(View v) { - Settings.setChooseList(!Settings.getChooseList()); - chooseList.setChecked(Settings.getChooseList()); - } - }); - - final CheckBox plainLogs = (CheckBox) findViewById(R.id.plain_logs); - plainLogs.setChecked(Settings.getPlainLogs()); - plainLogs.setOnClickListener(new View.OnClickListener() { - - @Override - public void onClick(View v) { - Settings.setPlainLogs(!Settings.getPlainLogs()); - plainLogs.setChecked(Settings.getPlainLogs()); - } - }); - - // Workaround for cspire customers on mobile connections #1843 - final CheckBox useNativeUserAgent = (CheckBox) findViewById(R.id.use_native_ua); - useNativeUserAgent.setChecked(Settings.getUseNativeUa()); - useNativeUserAgent.setOnClickListener(new View.OnClickListener() { - - @Override - public void onClick(View v) { - Settings.setUseNativeUa(!Settings.getUseNativeUa()); - useNativeUserAgent.setChecked(Settings.getUseNativeUa()); - } - }); - - // Altitude settings - EditText altitudeEdit = (EditText) findViewById(R.id.altitude); - altitudeEdit.setText(String.valueOf(Settings.getAltCorrection())); - - //Send2cgeo settings - String webDeviceName = Settings.getWebDeviceName(); - - if (StringUtils.isNotBlank(webDeviceName)) { - ((EditText) findViewById(R.id.webDeviceName)).setText(webDeviceName); - } else { - String s = android.os.Build.MODEL; - ((EditText) findViewById(R.id.webDeviceName)).setText(s); - } - - Button webAuth = (Button) findViewById(R.id.sendToCgeo_register); - webAuth.setOnClickListener(new WebAuthListener()); - - // Map source settings - updateMapSourceMenu(); - - Button selectMapDirectory = (Button) findViewById(R.id.select_map_directory); - selectMapDirectory.setOnClickListener(new View.OnClickListener() { - - @Override - public void onClick(View v) { - Intent selectIntent = new Intent(SettingsActivity.this, SelectMapfileActivity.class); - startActivityForResult(selectIntent, SELECT_MAPFILE_REQUEST); - } - }); - - // Theme folder settings - initThemefolderEdittext(false); - - Button selectThemefolder = (Button) findViewById(R.id.select_themefolder); - selectThemefolder.setOnClickListener(new View.OnClickListener() { - - @Override - public void onClick(View v) { - selectDirectory(Settings.getCustomRenderThemeBaseFolder(), SELECT_THEMEFOLDER_REQUEST); - } - }); - - // GPX Export directory - final EditText gpxExportDir = (EditText) findViewById(R.id.gpx_exportdir); - gpxExportDir.setText(Settings.getGpxExportDir()); - Button selectGpxExportDir = (Button) findViewById(R.id.select_gpx_exportdir); - selectGpxExportDir.setOnClickListener(new View.OnClickListener() { - - @Override - public void onClick(View v) { - selectDirectory(Settings.getGpxExportDir(), SELECT_GPX_EXPORT_REQUEST); - } - }); - - // GPX Import directory - final EditText gpxImportDir = (EditText) findViewById(R.id.gpx_importdir); - gpxImportDir.setText(Settings.getGpxImportDir()); - Button selectGpxImportDir = (Button) findViewById(R.id.select_gpx_importdir); - selectGpxImportDir.setOnClickListener(new View.OnClickListener() { - - @Override - public void onClick(View v) { - selectDirectory(Settings.getGpxImportDir(), SELECT_GPX_IMPORT_REQUEST); - } - }); - - // Display trail on map - final CheckBox trailButton = (CheckBox) findViewById(R.id.trail); - trailButton.setChecked(Settings.isMapTrail()); - trailButton.setOnClickListener(new View.OnClickListener() { - - @Override - public void onClick(View v) { - Settings.setMapTrail(trailButton.isChecked()); - } - }); - - // Default navigation tool settings - Spinner defaultNavigationToolSelector = (Spinner) findViewById(R.id.default_navigation_tool); - final List<NavigationAppsEnum> apps = NavigationAppFactory.getInstalledDefaultNavigationApps(); - ArrayAdapter<NavigationAppsEnum> naviAdapter = new ArrayAdapter<NavigationAppsEnum>(this, android.R.layout.simple_spinner_item, apps) { - @Override - public View getView(int position, View convertView, ViewGroup parent) { - TextView textView = (TextView) super.getView(position, convertView, parent); - textView.setText(getItem(position).app.getName()); - return textView; - } - - @Override - public View getDropDownView(int position, View convertView, ViewGroup parent) { - TextView textView = (TextView) super.getDropDownView(position, convertView, parent); - textView.setText(getItem(position).app.getName()); - return textView; - } - }; - naviAdapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item); - defaultNavigationToolSelector.setAdapter(naviAdapter); - int defaultNavigationTool = Settings.getDefaultNavigationTool(); - int ordinal = 0; - for (int i = 0; i < apps.size(); i++) { - if (apps.get(i).id == defaultNavigationTool) { - ordinal = i; - break; - } - } - defaultNavigationToolSelector.setSelection(ordinal); - defaultNavigationToolSelector.setOnItemSelectedListener(new OnItemSelectedListener() { - @Override - public void onItemSelected(AdapterView<?> parent, View view, int position, long id) { - NavigationAppsEnum item = (NavigationAppsEnum) parent.getItemAtPosition(position); - if (item != null) { - Settings.setDefaultNavigationTool(item.id); - } - } - - @Override - public void onNothingSelected(AdapterView<?> arg0) { - // noop - } - }); - - // 2nd Default navigation tool settings - Spinner defaultNavigationTool2Selector = (Spinner) findViewById(R.id.default_navigation_tool_2); - // final List<NavigationAppsEnum> apps = NavigationAppFactory.getInstalledNavigationApps(this); - ArrayAdapter<NavigationAppsEnum> navi2Adapter = new ArrayAdapter<NavigationAppsEnum>(this, android.R.layout.simple_spinner_item, apps) { - @Override - public View getView(int position, View convertView, ViewGroup parent) { - TextView textView = (TextView) super.getView(position, convertView, parent); - textView.setText(getItem(position).app.getName()); - return textView; - } - - @Override - public View getDropDownView(int position, View convertView, ViewGroup parent) { - TextView textView = (TextView) super.getDropDownView(position, convertView, parent); - textView.setText(getItem(position).app.getName()); - return textView; - } - }; - navi2Adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item); - defaultNavigationTool2Selector.setAdapter(navi2Adapter); - int defaultNavigationTool2 = Settings.getDefaultNavigationTool2(); - int ordinal2 = 0; - for (int i = 0; i < apps.size(); i++) { - if (apps.get(i).id == defaultNavigationTool2) { - ordinal2 = i; - break; - } - } - defaultNavigationTool2Selector.setSelection(ordinal2); - defaultNavigationTool2Selector.setOnItemSelectedListener(new OnItemSelectedListener() { - @Override - public void onItemSelected(AdapterView<?> parent, View view, int position, long id) { - NavigationAppsEnum item = (NavigationAppsEnum) parent.getItemAtPosition(position); - if (item != null) { - Settings.setDefaultNavigationTool2(item.id); - } - } - - @Override - public void onNothingSelected(AdapterView<?> arg0) { - // noop - } - }); - - refreshBackupLabel(); - - // Database location - refreshDbOnSDCardSetting(); - - final CheckBox dbOnSDCardButton = (CheckBox) findViewById(R.id.dbonsdcard); - dbOnSDCardButton.setOnClickListener(new View.OnClickListener() { - - @Override - public void onClick(View v) { - app.moveDatabase(SettingsActivity.this); - } - }); - - // Debug settings - final CheckBox debugButton = (CheckBox) findViewById(R.id.debug); - debugButton.setChecked(Settings.isDebug()); - debugButton.setOnClickListener(new View.OnClickListener() { - - @Override - public void onClick(View v) { - Settings.setDebug(!Settings.isDebug()); - debugButton.setChecked(Settings.isDebug()); - } - }); - } - - private void updateMapSourceMenu() { - Collection<String> mapSourceNames = new ArrayList<String>(); - for (MapSource mapSource : MapProviderFactory.getMapSources()) { - mapSourceNames.add(mapSource.getName()); - } - Spinner mapSourceSelector = (Spinner) findViewById(R.id.mapsource); - ArrayAdapter<CharSequence> adapter = new ArrayAdapter<CharSequence>(this, android.R.layout.simple_spinner_item, mapSourceNames.toArray(new String[mapSourceNames.size()])); - adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item); - mapSourceSelector.setAdapter(adapter); - final int index = MapProviderFactory.getMapSources().indexOf(Settings.getMapSource()); - mapSourceSelector.setSelection(index); - mapSourceSelector.setOnItemSelectedListener(new ChangeMapSourceListener()); - - initMapDirectoryEdittext(false); - } - - private void initMapDirectoryEdittext(boolean setFocus) { - final EditText mapDirectoryEdit = (EditText) findViewById(R.id.map_directory); - mapDirectoryEdit.setText(Settings.getMapFileDirectory()); - if (setFocus) { - mapDirectoryEdit.requestFocus(); - } - } - - private void initThemefolderEdittext(boolean setFocus) { - EditText themeFileEdit = (EditText) findViewById(R.id.themefolder); - themeFileEdit.setText(Settings.getCustomRenderThemeBaseFolder()); - if (setFocus) { - themeFileEdit.requestFocus(); - } - } - - /** - * @param view - * unused here but needed since this method is referenced from XML layout - */ - public void backup(View view) { - // avoid overwriting an existing backup with an empty database (can happen directly after reinstalling the app) - if (cgData.getAllCachesCount() == 0) { - helpDialog(res.getString(R.string.init_backup), res.getString(R.string.init_backup_unnecessary)); - return; - } - - final ProgressDialog dialog = ProgressDialog.show(this, res.getString(R.string.init_backup), res.getString(R.string.init_backup_running), true, false); - new Thread() { - @Override - public void run() { - final String backupFileName = cgData.backupDatabase(); - runOnUiThread(new Runnable() { - @Override - public void run() { - dialog.dismiss(); - helpDialog(res.getString(R.string.init_backup_backup), - backupFileName != null ? res.getString(R.string.init_backup_success) + "\n" + backupFileName : res.getString(R.string.init_backup_failed)); - refreshBackupLabel(); - } - }); - } - }.start(); - } - - private void refreshBackupLabel() { - TextView lastBackup = (TextView) findViewById(R.id.backup_last); - File lastBackupFile = cgData.getRestoreFile(); - if (lastBackupFile != null) { - lastBackup.setText(res.getString(R.string.init_backup_last) + " " + Formatter.formatTime(lastBackupFile.lastModified()) + ", " + Formatter.formatDate(lastBackupFile.lastModified())); - } else { - lastBackup.setText(res.getString(R.string.init_backup_last_no)); - } - } - - private void refreshDbOnSDCardSetting() { - final CheckBox dbOnSDCardButton = (CheckBox) findViewById(R.id.dbonsdcard); - dbOnSDCardButton.setChecked(Settings.isDbOnSDCard()); - } - - /** - * @param view - * unused here but needed since this method is referenced from XML layout - */ - public void restore(View view) { - app.restoreDatabase(this); - } - - public boolean saveValues() { - String usernameNew = StringUtils.trimToEmpty(((EditText) findViewById(R.id.username)).getText().toString()); - String passwordNew = StringUtils.trimToEmpty(((EditText) findViewById(R.id.password)).getText().toString()); - String passvoteNew = StringUtils.trimToEmpty(((EditText) findViewById(R.id.passvote)).getText().toString()); - // don't trim signature, user may want to have whitespace at the beginning - String signatureNew = ((EditText) findViewById(R.id.signature)).getText().toString(); - String mapDirectoryNew = StringUtils.trimToEmpty(((EditText) findViewById(R.id.map_directory)).getText().toString()); - String themesDirectoryNew = StringUtils.trimToEmpty(((EditText) findViewById(R.id.themefolder)).getText().toString()); - - String altitudeNew = StringUtils.trimToNull(((EditText) findViewById(R.id.altitude)).getText().toString()); - int altitudeNewInt = parseNumber(altitudeNew, 0); - - TextView field = (TextView) findViewById(R.id.showwaypointsthreshold); - final int waypointThreshold = parseNumber(field.getText().toString(), 5); - - final boolean status1 = Settings.setLogin(usernameNew, passwordNew); - final boolean status2 = Settings.setGCvoteLogin(passvoteNew); - final boolean status3 = Settings.setSignature(signatureNew); - final boolean status4 = Settings.setAltCorrection(altitudeNewInt); - final boolean status5 = Settings.setMapFileDirectory(mapDirectoryNew); - final boolean status6 = Settings.setCustomRenderThemeBaseFolder(themesDirectoryNew); - Settings.setShowWaypointsThreshold(waypointThreshold); - - String importNew = StringUtils.trimToEmpty(((EditText) findViewById(R.id.gpx_importdir)).getText().toString()); - String exportNew = StringUtils.trimToEmpty(((EditText) findViewById(R.id.gpx_exportdir)).getText().toString()); - Settings.setGpxImportDir(importNew); - Settings.setGpxExportDir(exportNew); - - return status1 && status2 && status3 && status4 && status5 && status6; - } - - /** - * Returns the integer value from the string - * - * @param field - * the field to retrieve the integer value from - * @param defaultValue - * the default value - * @return either the field content or the default value - */ - - static private int parseNumber(final String number, int defaultValue) { - try { - return Integer.parseInt(number); - } catch (NumberFormatException e) { - return defaultValue; - } - } - - private static class ChangeMapSourceListener implements OnItemSelectedListener { - - @Override - public void onItemSelected(AdapterView<?> arg0, View arg1, int position, - long arg3) { - Settings.setMapSource(MapProviderFactory.getMapSources().get(position)); - } - - @Override - public void onNothingSelected(AdapterView<?> arg0) { - arg0.setSelection(MapProviderFactory.getMapSources().indexOf(Settings.getMapSource())); - } - } - - private class LoginListener implements View.OnClickListener { - - @Override - public void onClick(View arg0) { - final String username = ((EditText) findViewById(R.id.username)).getText().toString(); - final String password = ((EditText) findViewById(R.id.password)).getText().toString(); - - if (StringUtils.isBlank(username) || StringUtils.isBlank(password)) { - showToast(res.getString(R.string.err_missing_auth)); - return; - } - - loginDialog = ProgressDialog.show(SettingsActivity.this, res.getString(R.string.init_login_popup), res.getString(R.string.init_login_popup_working), true); - loginDialog.setCancelable(false); - - Settings.setLogin(username, password); - Cookies.clearCookies(); - - (new Thread() { - - @Override - public void run() { - final StatusCode loginResult = Login.login(); - Object payload = loginResult; - if (loginResult == StatusCode.NO_ERROR) { - Login.detectGcCustomDate(); - payload = Login.downloadAvatarAndGetMemberStatus(); - } - logInHandler.obtainMessage(0, payload).sendToTarget(); - } - }).start(); - } - } - - private class OCDEAuthorizeCgeoListener implements View.OnClickListener { - - @Override - public void onClick(View v) { - Intent authIntent = new Intent(SettingsActivity.this, OCAuthorizationActivity.class); - startActivity(authIntent); - } - } - - private class WebAuthListener implements View.OnClickListener { - - @Override - public void onClick(View arg0) { - final String deviceName = ((EditText) findViewById(R.id.webDeviceName)).getText().toString(); - final String deviceCode = Settings.getWebDeviceCode(); - - if (StringUtils.isBlank(deviceName)) { - showToast(res.getString(R.string.err_missing_device_name)); - return; - } - - webDialog = ProgressDialog.show(SettingsActivity.this, res.getString(R.string.init_sendToCgeo), res.getString(R.string.init_sendToCgeo_registering), true); - webDialog.setCancelable(false); - - (new Thread() { - - @Override - public void run() { - int pin = 0; - - final String nam = StringUtils.defaultString(deviceName); - final String cod = StringUtils.defaultString(deviceCode); - - final Parameters params = new Parameters("name", nam, "code", cod); - HttpResponse response = Network.getRequest("http://send2.cgeo.org/auth.html", params); - - if (response != null && response.getStatusLine().getStatusCode() == 200) { - //response was OK - String[] strings = Network.getResponseData(response).split(","); - try { - pin = Integer.parseInt(strings[1].trim()); - } catch (Exception e) { - Log.e("webDialog", e); - } - String code = strings[0]; - Settings.setWebNameCode(nam, code); - } - - webAuthHandler.sendEmptyMessage(pin); - } - }).start(); - } - } - - @Override - protected void onActivityResult(int requestCode, int resultCode, final Intent data) { - super.onActivityResult(requestCode, resultCode, data); - if (resultCode != RESULT_OK) { - return; - } - - switch (requestCode) { - case SELECT_MAPFILE_REQUEST: - if (data.hasExtra(Intents.EXTRA_MAP_FILE)) { - final String mapFile = data.getStringExtra(Intents.EXTRA_MAP_FILE); - Settings.setMapFile(mapFile); - if (!Settings.isValidMapFile(Settings.getMapFile())) { - showToast(res.getString(R.string.warn_invalid_mapfile)); - } - } - updateMapSourceMenu(); - initMapDirectoryEdittext(true); - break; - case SELECT_GPX_EXPORT_REQUEST: - checkDirectory(resultCode, data, R.id.gpx_exportdir, new RunnableWithArgument<String>() { - - @Override - public void run(String directory) { - Settings.setGpxExportDir(directory); - } - }); - break; - case SELECT_GPX_IMPORT_REQUEST: - checkDirectory(resultCode, data, R.id.gpx_importdir, new RunnableWithArgument<String>() { - - @Override - public void run(String directory) { - Settings.setGpxImportDir(directory); - } - }); - break; - case SELECT_THEMEFOLDER_REQUEST: - checkDirectory(resultCode, data, R.id.themefolder, new RunnableWithArgument<String>() { - - @Override - public void run(String directory) { - Settings.setCustomRenderThemeBaseFolder(directory); - } - }); - break; - default: - throw new IllegalArgumentException(); - } - } - - private void checkDirectory(int resultCode, Intent data, int textField, RunnableWithArgument<String> runnableSetDir) { - if (resultCode != RESULT_OK) { - return; - } - final String directory = new File(data.getData().getPath()).getAbsolutePath(); - if (StringUtils.isNotBlank(directory)) { - runnableSetDir.run(directory); - EditText directoryText = (EditText) findViewById(textField); - directoryText.setText(directory); - directoryText.requestFocus(); - } - } - - private void selectDirectory(String startDirectory, int directoryKind) { - try { - final Intent dirChooser = new Intent(FileManagerIntents.ACTION_PICK_DIRECTORY); - if (StringUtils.isNotBlank(startDirectory)) { - dirChooser.setData(Uri.fromFile(new File(startDirectory))); - } - dirChooser.putExtra(FileManagerIntents.EXTRA_TITLE, res.getString(R.string.simple_dir_chooser_title)); - dirChooser.putExtra(FileManagerIntents.EXTRA_BUTTON_TEXT, res.getString(android.R.string.ok)); - startActivityForResult(dirChooser, directoryKind); - } catch (android.content.ActivityNotFoundException ex) { - // OI file manager not available - final Intent dirChooser = new Intent(this, SimpleDirChooser.class); - dirChooser.putExtra(Intents.EXTRA_START_DIR, startDirectory); - startActivityForResult(dirChooser, directoryKind); - } - } - - public static void startActivity(Context fromActivity) { - final Intent initIntent = new Intent(fromActivity, SettingsActivity.class); - fromActivity.startActivity(initIntent); - } - -} |
