From 477d76f5e29b1be0b5a43c316856218e1b93f5db Mon Sep 17 00:00:00 2001 From: mendhak Date: Sat, 11 Oct 2014 16:05:54 +0100 Subject: [PATCH] Indicate whether the selected folder is writeable Issue #275 --- .../settings/LoggingSettingsActivity.java | 14 +++++++++++++- gpslogger/src/main/res/values/strings.xml | 1 + 2 files changed, 14 insertions(+), 1 deletion(-) diff --git a/gpslogger/src/main/java/com/mendhak/gpslogger/settings/LoggingSettingsActivity.java b/gpslogger/src/main/java/com/mendhak/gpslogger/settings/LoggingSettingsActivity.java index 61726326f..4c0526f03 100644 --- a/gpslogger/src/main/java/com/mendhak/gpslogger/settings/LoggingSettingsActivity.java +++ b/gpslogger/src/main/java/com/mendhak/gpslogger/settings/LoggingSettingsActivity.java @@ -27,6 +27,7 @@ import android.preference.Preference; import android.preference.PreferenceActivity; import android.preference.PreferenceManager; +import android.text.Html; import android.view.MenuItem; import com.mendhak.gpslogger.GpsMainActivity; import com.mendhak.gpslogger.R; @@ -107,7 +108,11 @@ protected void onPostCreate(Bundle savedInstanceState) { Preference gpsloggerFolder = (Preference) findPreference("gpslogger_folder"); gpsloggerFolder.setOnPreferenceClickListener(this); - gpsloggerFolder.setSummary(prefs.getString("gpslogger_folder", Utilities.GetDefaultStorageFolder(getApplicationContext()).getAbsolutePath())); + String gpsLoggerFolderPath = prefs.getString("gpslogger_folder", Utilities.GetDefaultStorageFolder(getApplicationContext()).getAbsolutePath()); + gpsloggerFolder.setSummary(gpsLoggerFolderPath); + if(!(new File(gpsLoggerFolderPath)).canWrite()){ + gpsloggerFolder.setSummary(Html.fromHtml("" + gpsLoggerFolderPath + "")); + } CheckBoxPreference chkLog_opengts = (CheckBoxPreference) findPreference("log_opengts"); chkLog_opengts.setOnPreferenceClickListener(this); @@ -169,6 +174,11 @@ public synchronized void onActivityResult(final int requestCode, int resultCode, } tracer.debug("Folder path selected" + filePath); + if(!chosenFile.canWrite()){ + Utilities.MsgBox(getString(R.string.sorry), getString(R.string.pref_logging_file_no_permissions), LoggingSettingsActivity.this); + return; + } + SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(getApplicationContext()); SharedPreferences.Editor editor = prefs.edit(); editor.putString("gpslogger_folder", filePath); @@ -177,6 +187,8 @@ public synchronized void onActivityResult(final int requestCode, int resultCode, Preference gpsloggerFolder = (Preference) findPreference("gpslogger_folder"); gpsloggerFolder.setSummary(filePath); + + } else if (resultCode == Activity.RESULT_CANCELED) { tracer.debug("No file selected"); } diff --git a/gpslogger/src/main/res/values/strings.xml b/gpslogger/src/main/res/values/strings.xml index 886f7f8e7..ff2fdf18b 100644 --- a/gpslogger/src/main/res/values/strings.xml +++ b/gpslogger/src/main/res/values/strings.xml @@ -474,5 +474,6 @@ Which location providers to use when they are available; GPS for satellites, Network for cell tower/wifi, Passive is a special provider that listens for locations requested from other applications. Location providers Number of minutes + That folder is not writable by GPSLogger