Disable use hosts switch if no hosts file

This commit is contained in:
M66B 2016-01-23 22:14:04 +01:00
parent 59decdbdae
commit d7c2d64280
1 changed files with 38 additions and 41 deletions

View File

@ -180,6 +180,7 @@ public class ActivitySettings extends AppCompatActivity implements SharedPrefere
// Handle hosts // Handle hosts
Preference pref_hosts = screen.findPreference("hosts"); Preference pref_hosts = screen.findPreference("hosts");
Preference pref_block_domains = screen.findPreference("use_hosts"); Preference pref_block_domains = screen.findPreference("use_hosts");
pref_block_domains.setEnabled(new File(getCacheDir(), "hosts.txt").exists());
if (Util.isPlayStoreInstall(this)) { if (Util.isPlayStoreInstall(this)) {
PreferenceCategory pref_backup = (PreferenceCategory) screen.findPreference("category_backup"); PreferenceCategory pref_backup = (PreferenceCategory) screen.findPreference("category_backup");
@ -393,10 +394,10 @@ public class ActivitySettings extends AppCompatActivity implements SharedPrefere
.create().show(); .create().show();
} }
} else if ("use_hosts".equals(name)) { } else if ("use_hosts".equals(name))
SinkholeService.reload(null, "setting changed", this); SinkholeService.reload(null, "setting changed", this);
} else if ("auto_enable".equals(name)) else if ("auto_enable".equals(name))
getPreferenceScreen().findPreference(name).setTitle(getString(R.string.setting_auto, prefs.getString(name, "0"))); getPreferenceScreen().findPreference(name).setTitle(getString(R.string.setting_auto, prefs.getString(name, "0")));
else if ("screen_delay".equals(name)) else if ("screen_delay".equals(name))
@ -540,7 +541,8 @@ public class ActivitySettings extends AppCompatActivity implements SharedPrefere
handleImport(data); handleImport(data);
} else if (requestCode == REQUEST_HOSTS) { } else if (requestCode == REQUEST_HOSTS) {
handleHosts(resultCode == RESULT_OK ? data : null); if (resultCode == RESULT_OK && data != null)
handleHosts(data);
} else { } else {
Log.w(TAG, "Unknown activity result request=" + requestCode); Log.w(TAG, "Unknown activity result request=" + requestCode);
@ -609,12 +611,7 @@ public class ActivitySettings extends AppCompatActivity implements SharedPrefere
@Override @Override
protected Throwable doInBackground(Object... objects) { protected Throwable doInBackground(Object... objects) {
File hosts = new File(getCacheDir(), "hosts.txt"); File hosts = new File(getCacheDir(), "hosts.txt");
if (data == null) {
// TODO user confirmation
if (hosts.exists())
hosts.delete();
return null;
} else {
FileOutputStream out = null; FileOutputStream out = null;
InputStream in = null; InputStream in = null;
try { try {
@ -651,13 +648,13 @@ public class ActivitySettings extends AppCompatActivity implements SharedPrefere
} }
} }
} }
}
@Override @Override
protected void onPostExecute(Throwable ex) { protected void onPostExecute(Throwable ex) {
if (ex == null) { if (ex == null) {
Toast.makeText(ActivitySettings.this, R.string.msg_completed, Toast.LENGTH_LONG).show(); Toast.makeText(ActivitySettings.this, R.string.msg_completed, Toast.LENGTH_LONG).show();
SinkholeService.reload(null, "hosts", ActivitySettings.this); SinkholeService.reload(null, "hosts", ActivitySettings.this);
getPreferenceScreen().findPreference("use_hosts").setEnabled(true);
} else } else
Toast.makeText(ActivitySettings.this, ex.toString(), Toast.LENGTH_LONG).show(); Toast.makeText(ActivitySettings.this, ex.toString(), Toast.LENGTH_LONG).show();
} }