package yuku.alkitab.base.ac; import android.app.Activity; import android.content.Intent; import android.os.Bundle; import android.os.Handler; import android.support.v7.app.ActionBar; import android.support.v7.preference.ListPreference; import android.support.v7.preference.Preference; import android.support.v7.preference.PreferenceFragmentCompat; import android.support.v7.widget.Toolbar; import android.widget.Toast; import com.afollestad.materialdialogs.MaterialDialog; import gnu.trove.set.TLongSet; import yuku.afw.V; import yuku.afw.storage.Preferences; import yuku.alkitab.base.App; import yuku.alkitab.base.S; import yuku.alkitab.base.ac.base.BaseActivity; import yuku.alkitab.base.model.MVersionDb; import yuku.alkitab.base.storage.Prefkey; import yuku.alkitab.base.util.Announce; import yuku.alkitab.base.util.Sqlitil; import yuku.alkitab.base.widget.ConfigurationWrapper; import yuku.alkitab.debug.R; import yuku.alkitab.model.ProgressMark; import yuku.alkitab.model.ProgressMarkHistory; import java.util.ArrayList; import java.util.List; public class SecretSettingsActivity extends BaseActivity { public static final String TAG = SecretSettingsActivity.class.getSimpleName(); public static class SecretSettingsFragment extends PreferenceFragmentCompat { private Preference.OnPreferenceClickListener secret_progress_mark_history_click = preference -> { final List<ProgressMark> progressMarks = S.getDb().listAllProgressMarks(); final CharSequence[] labels = new CharSequence[progressMarks.size()]; for (int i = 0; i < progressMarks.size(); i++) { final ProgressMark progressMark = progressMarks.get(i); labels[i] = progressMark.caption + " (preset_id " + progressMark.preset_id + ")"; } new MaterialDialog.Builder(getActivity()) .items(labels) .itemsCallback((dialog, itemView, position, text) -> { final List<ProgressMarkHistory> pmhs = S.getDb().listProgressMarkHistoryByPresetId(progressMarks.get(position).preset_id); final CharSequence[] items = new CharSequence[pmhs.size()]; for (int i = 0; i < pmhs.size(); i++) { final ProgressMarkHistory pmh = pmhs.get(i); items[i] = "'" + pmh.progress_mark_caption + "' " + Sqlitil.toLocaleDateMedium(pmh.createTime) + ": " + S.activeVersion.reference(pmh.ari); } new MaterialDialog.Builder(getActivity()) .items(items) .show(); }) .show(); return true; }; private Preference.OnPreferenceClickListener secret_version_table_click = preference -> { List<String> items = new ArrayList<>(); for (final MVersionDb mv : S.getDb().listAllVersions()) { items.add( String.format("filename=%s preset_name=%s modifyTime=%s active=%s ordering=%s locale=%s shortName=%s longName=%s description=%s", mv.filename, mv.preset_name, mv.modifyTime, mv.getActive(), mv.ordering, mv.locale, mv.shortName, mv.longName, mv.description) ); } new MaterialDialog.Builder(getActivity()) .items(items) .show(); return true; }; Preference.OnPreferenceClickListener secret_sync_debug = preference -> { startActivity(new Intent(App.context, SecretSyncDebugActivity.class)); return true; }; Preference.OnPreferenceClickListener secret_reset_read_announcements = preference -> { final TLongSet read = Announce.getReadAnnouncementIds(); Preferences.remove(Prefkey.announce_read_ids); Toast.makeText(getActivity(), "Cleared read announcement ids.\n\nPreviously has " + read.size() + " items:\n" + read, Toast.LENGTH_LONG).show(); return true; }; final Preference.OnPreferenceChangeListener configurationPreferenceChangeListener = (preference, newValue) -> { final Handler handler = new Handler(); // do this after this method returns true handler.post(() -> { ConfigurationWrapper.notifyConfigurationNeedsUpdate(); // restart this activity final Activity ac = getActivity(); ac.recreate(); }); return true; }; @Override public void onCreatePreferences(final Bundle savedInstanceState, final String rootKey) { addPreferencesFromResource(R.xml.secret_settings); findPreference("secret_progress_mark_history").setOnPreferenceClickListener(secret_progress_mark_history_click); findPreference("secret_version_table").setOnPreferenceClickListener(secret_version_table_click); findPreference("secret_sync_debug").setOnPreferenceClickListener(secret_sync_debug); findPreference("secret_reset_read_announcements").setOnPreferenceClickListener(secret_reset_read_announcements); final ListPreference pref_forceFontScale = (ListPreference) findPreference(getString(R.string.pref_forceFontScale_key)); pref_forceFontScale.setOnPreferenceChangeListener(configurationPreferenceChangeListener); SettingsActivity.autoDisplayListPreference(pref_forceFontScale); } } @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_secret_settings); final Toolbar toolbar = V.get(this, R.id.toolbar); setSupportActionBar(toolbar); final ActionBar ab = getSupportActionBar(); assert ab != null; ab.setDisplayHomeAsUpEnabled(true); } public static Intent createIntent() { return new Intent(App.context, SecretSettingsActivity.class); } }