package org.rudirect.android.fragment;
import android.app.AlertDialog;
import android.content.DialogInterface;
import android.content.Intent;
import android.net.Uri;
import android.os.Bundle;
import android.preference.Preference;
import android.preference.PreferenceFragment;
import com.google.android.gms.analytics.HitBuilders;
import org.rudirect.android.BuildConfig;
import org.rudirect.android.R;
import org.rudirect.android.activity.AttributionsActivity;
import org.rudirect.android.activity.SettingsActivity;
import org.rudirect.android.data.constants.RUDirectApplication;
public class SettingsFragment extends PreferenceFragment {
private SettingsActivity settingsActivity;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
settingsActivity = (SettingsActivity) getActivity();
addPreferencesFromResource(R.xml.preferences);
setupContributors();
setupAbout();
}
// Set up the Contributors section
private void setupContributors() {
// Set up team info
Preference teamPref = findPreference(getString(R.string.team_key));
teamPref.setOnPreferenceClickListener(new Preference.OnPreferenceClickListener() {
@Override
public boolean onPreferenceClick(Preference preference) {
AlertDialog.Builder builder = new AlertDialog.Builder(settingsActivity);
builder.setTitle(R.string.pref_team_title)
.setMessage(R.string.team_message)
.setPositiveButton(R.string.ok, new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int id) { /* Do nothing */ }
}).create().show();
return true;
}
});
// Set up contributors info
Preference contributorsPref = findPreference(getString(R.string.contributors_key));
contributorsPref.setOnPreferenceClickListener(new Preference.OnPreferenceClickListener() {
@Override
public boolean onPreferenceClick(Preference preference) {
AlertDialog.Builder builder = new AlertDialog.Builder(settingsActivity);
builder.setTitle(R.string.pref_other_contributors_title)
.setMessage(R.string.contributors_message)
.setPositiveButton(R.string.ok, new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int id) { /* Do nothing */ }
}).create().show();
return true;
}
});
// Set up special thanks info
Preference specialThanksPref = findPreference(getString(R.string.special_thanks_key));
specialThanksPref.setOnPreferenceClickListener(new Preference.OnPreferenceClickListener() {
@Override
public boolean onPreferenceClick(Preference preference) {
AlertDialog.Builder builder = new AlertDialog.Builder(settingsActivity);
builder.setTitle(R.string.pref_special_thanks_title)
.setMessage(R.string.special_thanks_message)
.setPositiveButton(R.string.ok, new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int id) { /* Do nothing */ }
}).create().show();
return true;
}
});
}
// Set up the About section
private void setupAbout() {
// Set up version info
Preference versionPref = findPreference(getString(R.string.version_key));
versionPref.setTitle("RU Direct v" + BuildConfig.VERSION_NAME);
// Set up open source info
Preference openSourcePref = findPreference(getString(R.string.open_source_key));
openSourcePref.setOnPreferenceClickListener(new Preference.OnPreferenceClickListener() {
@Override
public boolean onPreferenceClick(Preference preference) {
Intent browserIntent = new Intent(Intent.ACTION_VIEW, Uri.parse("https://github.com/churichard/ru-direct"));
startActivity(browserIntent);
return true;
}
});
// Set up attributions
Preference attributionsPref = findPreference(getString(R.string.attributions_key));
attributionsPref.setOnPreferenceClickListener(new Preference.OnPreferenceClickListener() {
public boolean onPreferenceClick(Preference preference) {
Intent intent = new Intent(settingsActivity, AttributionsActivity.class);
startActivity(intent);
return true;
}
});
}
@Override
public void setUserVisibleHint(boolean isVisibleToUser) {
super.setUserVisibleHint(isVisibleToUser);
if (isVisibleToUser && isAdded()) {
RUDirectApplication.getTracker().send(new HitBuilders.EventBuilder()
.setCategory(getString(R.string.settings_category))
.setAction(getString(R.string.view_action))
.build());
}
}
}