package com.distantfuture.videos.activities;
import android.app.Activity;
import android.app.ActivityOptions;
import android.content.Intent;
import android.os.Bundle;
import android.preference.Preference;
import android.preference.PreferenceFragment;
import android.preference.PreferenceScreen;
import android.view.MenuItem;
import com.distantfuture.videos.R;
import com.distantfuture.videos.introactivity.IntroActivity;
import com.distantfuture.videos.misc.Constants;
import com.distantfuture.videos.misc.DUtils;
import com.distantfuture.videos.misc.Utils;
import com.inscription.ChangeLogDialog;
import org.codechimp.apprater.AppRater;
public class SettingsActivity extends Activity {
public static void show(Activity activity) {
// add animation, see finish below for the back transition
ActivityOptions opts = ActivityOptions.makeCustomAnimation(activity, R.anim.scale_in, R.anim.scale_out);
Intent intent = new Intent();
intent.setClass(activity, SettingsActivity.class);
activity.startActivity(intent, opts.toBundle());
}
@Override
public void finish() {
super.finish();
// animate out
overridePendingTransition(R.anim.scale_out_rev, R.anim.scale_in_rev);
}
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
getActionBar().setDisplayHomeAsUpEnabled(true);
// Display the fragment as the main content.
getFragmentManager().beginTransaction()
.replace(android.R.id.content, new SettingsFragment())
.commit();
}
@Override
public boolean onOptionsItemSelected(MenuItem item) {
switch (item.getItemId()) {
// Respond to the action bar's Up/Home button
case android.R.id.home:
finish();
return true;
}
return super.onOptionsItemSelected(item);
}
// ----------------------------------------------------------------------
// ----------------------------------------------------------------------
public static class SettingsFragment extends PreferenceFragment {
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
// Load the preferences from an XML resource
addPreferencesFromResource(R.xml.preferences);
if (DUtils.isDebugBuild())
addPreferencesFromResource(R.xml.preferences_debug);
try {
Preference pref = findPreference("credits");
if (pref != null) {
pref.setOnPreferenceClickListener(new Preference.OnPreferenceClickListener() {
@Override
public boolean onPreferenceClick(Preference preference) {
return handlePrefClick(preference);
}
});
}
pref = findPreference("rate");
if (pref != null) {
if (!Constants.showAppRater) {
// hide the app rater pref button
PreferenceScreen screen = getPreferenceScreen();
screen.removePreference(pref);
}
else {
pref.setOnPreferenceClickListener(new Preference.OnPreferenceClickListener() {
@Override
public boolean onPreferenceClick(Preference preference) {
return handlePrefClick(preference);
}
});
}
}
pref = findPreference("log");
if (pref != null) {
pref.setSummary(Utils.getApplicationVersion(getActivity(), true));
pref.setOnPreferenceClickListener(new Preference.OnPreferenceClickListener() {
@Override
public boolean onPreferenceClick(Preference preference) {
return handlePrefClick(preference);
}
});
}
pref = findPreference("intro");
if (pref != null) {
pref.setOnPreferenceClickListener(new Preference.OnPreferenceClickListener() {
@Override
public boolean onPreferenceClick(Preference preference) {
return handlePrefClick(preference);
}
});
}
pref = findPreference("feedback");
if (pref != null) {
pref.setOnPreferenceClickListener(new Preference.OnPreferenceClickListener() {
@Override
public boolean onPreferenceClick(Preference preference) {
return handlePrefClick(preference);
}
});
}
} catch (Throwable throwable) {
DUtils.log("exception: " + throwable.getMessage());
}
}
private boolean handlePrefClick(Preference preference) {
if (preference.getKey().equals("credits")) {
CreditsActivity.show(getActivity());
return true;
} else if (preference.getKey().equals("rate")) {
AppRater.rateNow(getActivity());
return true;
} else if (preference.getKey().equals("log")) {
ChangeLogDialog.showChangeLog(getActivity());
return true;
} else if (preference.getKey().equals("intro")) {
IntroActivity.showIntro(getActivity(), true);
return true;
} else if (preference.getKey().equals("feedback")) {
Utils.sendFeedbackEmail(getActivity());
return true;
}
return false;
}
}
}