package org.sorz.lab.smallcloudemoji.fragments; import android.app.AlertDialog; import android.content.Context; import android.content.DialogInterface; import android.content.pm.PackageInfo; import android.content.pm.PackageManager; import android.os.Bundle; import android.preference.Preference; import android.preference.PreferenceFragment; import android.widget.Toast; import org.sorz.lab.smallcloudemoji.R; import org.sorz.lab.smallcloudemoji.db.DaoSession; import org.sorz.lab.smallcloudemoji.db.DatabaseHelper; import org.sorz.lab.smallcloudemoji.db.Entry; import org.sorz.lab.smallcloudemoji.db.EntryDao; import java.util.List; /** * Show all settings. Shown inside SettingsActivity. * Include source sync (downloading XML). */ public class SettingsFragment extends PreferenceFragment { private Context context; private DaoSession daoSession; private OnSourceManageClickListener mListener; @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); context = getActivity(); mListener = (OnSourceManageClickListener) context; daoSession = DatabaseHelper.getInstance(context).getDaoSession(); addPreferencesFromResource(R.xml.preferences); // Usage history clean Preference historyCleanPreference = findPreference("history_clean"); historyCleanPreference.setOnPreferenceClickListener(new Preference.OnPreferenceClickListener() { @Override public boolean onPreferenceClick(Preference preference) { EntryDao entryDao = daoSession.getEntryDao(); List<Entry> entries = entryDao.queryBuilder() .where(EntryDao.Properties.LastUsed.isNotNull()) .list(); for (Entry entry : entries) { entry.setLastUsed(null); } entryDao.updateInTx(entries); Toast.makeText(context, R.string.pref_history_clean_done, Toast.LENGTH_SHORT).show(); return true; } }); // Stars clean Preference starCleanPreference = findPreference("star_clean"); starCleanPreference.setOnPreferenceClickListener(new Preference.OnPreferenceClickListener() { @Override public boolean onPreferenceClick(Preference preference) { AlertDialog.Builder builder = new AlertDialog.Builder(context); builder.setTitle(R.string.pref_star_clean_confirm_title) .setMessage(R.string.pref_star_clean_confirm_msg) .setCancelable(true); builder.setPositiveButton(android.R.string.ok, new DialogInterface.OnClickListener() { @Override public void onClick(DialogInterface dialog, int which) { EntryDao entryDao = daoSession.getEntryDao(); List<Entry> entries = entryDao.queryBuilder() .where(EntryDao.Properties.Star.eq(true)) .list(); for (Entry entry : entries) { entry.setStar(false); } entryDao.updateInTx(entries); Toast.makeText(context, R.string.pref_star_clean_done, Toast.LENGTH_SHORT).show(); } }); builder.show(); return true; } }); // Click source management final Preference sourceManagePreference = findPreference("source_manage"); sourceManagePreference.setOnPreferenceClickListener(new Preference.OnPreferenceClickListener() { @Override public boolean onPreferenceClick(Preference preference) { if (!mListener.onSourceManageClick()) sourceManagePreference.setSummary(R.string.see_right_side); return true; } }); // Version try { PackageManager packageManager = context.getPackageManager(); PackageInfo packageInfo = packageManager.getPackageInfo(context.getPackageName(), 0); String version = String.format(getResources().getString(R.string.pref_version_title), packageInfo.versionName, packageInfo.versionCode); findPreference("version").setTitle(version); } catch (PackageManager.NameNotFoundException e) { e.printStackTrace(); } } @Override public void onDetach() { super.onDetach(); mListener = null; } public interface OnSourceManageClickListener { public boolean onSourceManageClick(); } }