package org.qii.weiciyuan.ui.preference;
import org.qii.weiciyuan.R;
import org.qii.weiciyuan.support.file.FileManager;
import org.qii.weiciyuan.support.lib.MyAsyncTask;
import org.qii.weiciyuan.support.settinghelper.SettingUtility;
import org.qii.weiciyuan.ui.interfaces.AbstractAppActivity;
import android.content.Intent;
import android.os.Bundle;
import android.preference.Preference;
import android.preference.PreferenceCategory;
import android.preference.PreferenceFragment;
import android.preference.PreferenceScreen;
import android.view.MenuItem;
import android.widget.Toast;
/**
* User: qii
* Date: 13-9-17
*/
public class OtherActivity extends AbstractAppActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
getActionBar().setDisplayShowHomeEnabled(false);
getActionBar().setDisplayShowTitleEnabled(true);
getActionBar().setDisplayHomeAsUpEnabled(true);
getActionBar().setTitle(getString(R.string.pref_other_title));
if (savedInstanceState == null) {
getFragmentManager().beginTransaction()
.replace(android.R.id.content, new OtherFragment())
.commit();
}
}
@Override
public boolean onOptionsItemSelected(MenuItem item) {
Intent intent;
switch (item.getItemId()) {
case android.R.id.home:
intent = new Intent(this, SettingActivity.class);
intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP | Intent.FLAG_ACTIVITY_NEW_TASK);
startActivity(intent);
return true;
}
return false;
}
public static class OtherFragment extends PreferenceFragment {
private static final String DEBUG_INFO = "pref_debug_info_key";
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setRetainInstance(false);
addPreferencesFromResource(R.xml.other_pref);
final Preference cleanCachePre = findPreference(SettingActivity.CLICK_TO_CLEAN_CACHE);
if (FileManager.isExternalStorageMounted()) {
new CalcCacheSize(cleanCachePre)
.executeOnExecutor(
MyAsyncTask.THREAD_POOL_EXECUTOR);
} else {
cleanCachePre.setSummary(R.string.please_insert_sd_card);
}
cleanCachePre
.setOnPreferenceClickListener(new Preference.OnPreferenceClickListener() {
@Override
public boolean onPreferenceClick(Preference preference) {
if (FileManager.isExternalStorageMounted()) {
new CleanCacheTask(cleanCachePre)
.executeOnExecutor(MyAsyncTask.THREAD_POOL_EXECUTOR);
} else {
Toast.makeText(getActivity(),
getString(R.string.please_insert_sd_card),
Toast.LENGTH_SHORT).show();
}
return true;
}
});
detectDebugPreference();
}
private void detectDebugPreference() {
Preference debugPreferenceCategory = (PreferenceCategory) findPreference(DEBUG_INFO);
if (!SettingUtility.isBlackMagicEnabled()) {
PreferenceScreen screen = getPreferenceScreen();
screen.removePreference(debugPreferenceCategory);
}
}
private class CalcCacheSize extends MyAsyncTask<Void, Void, String> {
Preference preference;
public CalcCacheSize(Preference preference) {
this.preference = preference;
}
@Override
protected void onPreExecute() {
super.onPreExecute();
this.preference.setSummary(R.string.getting_cache_size);
}
@Override
protected String doInBackground(Void... params) {
return FileManager.getPictureCacheSize();
}
@Override
protected void onPostExecute(String s) {
super.onPostExecute(s);
if (getActivity() == null) {
return;
}
preference.setSummary(
getString(R.string.pref_max_file_cache_size_is_300mb_current_size_is, s));
}
}
private class CleanCacheTask extends MyAsyncTask<Void, Void, Void> {
Preference preference;
public CleanCacheTask(Preference preference) {
this.preference = preference;
}
@Override
protected void onPreExecute() {
super.onPreExecute();
Toast.makeText(getActivity(), getString(R.string.start_clean_cache),
Toast.LENGTH_SHORT).show();
}
@Override
protected Void doInBackground(Void... params) {
FileManager.deletePictureCache();
return null;
}
@Override
protected void onPostExecute(Void aVoid) {
super.onPostExecute(aVoid);
if (getActivity() == null) {
return;
}
Toast.makeText(getActivity(), getString(R.string.clean_cache_finish),
Toast.LENGTH_SHORT).show();
new CalcCacheSize(preference)
.executeOnExecutor(
MyAsyncTask.THREAD_POOL_EXECUTOR);
}
}
}
}