package com.linroid.sky31radio.ui.fragment; import android.app.Activity; import android.app.AlertDialog; import android.app.ProgressDialog; import android.content.ClipData; import android.content.ClipboardManager; import android.content.Context; 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 android.widget.Toast; import com.avos.avoscloud.feedback.FeedbackAgent; import com.linroid.sky31radio.BuildConfig; import com.linroid.sky31radio.R; import com.linroid.sky31radio.data.FirService; import com.linroid.sky31radio.model.FirVersion; import com.linroid.sky31radio.module.Injector; import javax.inject.Inject; import de.psdev.licensesdialog.LicensesDialog; import rx.Subscriber; import rx.android.app.AppObservable; /** * Created by linroid on 1/17/15. */ public class SettingsFragment extends PreferenceFragment { @Inject FirService firService; private boolean injected = false; @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); getActivity(); // Load the preferences from an XML resource addPreferencesFromResource(R.xml.preferences); findPreference(getString(R.string.pref_build_time)).setSummary(BuildConfig.BUILD_TIME); Preference checkVersionPref = findPreference(getString(R.string.pref_check_version)); checkVersionPref.setSummary(getString(R.string.tpl_version, BuildConfig.VERSION_NAME)); checkVersionPref.setOnPreferenceClickListener(new Preference.OnPreferenceClickListener() { @Override public boolean onPreferenceClick(Preference preference) { checkVersion(); return true; } }); findPreference(getString(R.string.pref_feedback)).setOnPreferenceClickListener(new Preference.OnPreferenceClickListener() { @Override public boolean onPreferenceClick(Preference preference) { openFeedback(); return true; } }); findPreference(getString(R.string.pref_license)).setOnPreferenceClickListener(new Preference.OnPreferenceClickListener() { @Override public boolean onPreferenceClick(Preference preference) { openLicenseDialog(); return true; } }); findPreference(getString(R.string.pref_donate)).setOnPreferenceClickListener(new Preference.OnPreferenceClickListener() { @Override public boolean onPreferenceClick(Preference preference) { openDonate(); return true; } }); } private void checkVersion() { final ProgressDialog dialog = new ProgressDialog(getActivity()); dialog.setMessage(getString(R.string.msg_checking_version)); dialog.show(); AppObservable.bindFragment(this, firService.checkVersion(BuildConfig.APPLICATION_ID)) .subscribe(new Subscriber<FirVersion>() { @Override public void onCompleted() { } @Override public void onError(Throwable e) { Toast.makeText(getActivity(), e.getMessage(), Toast.LENGTH_SHORT).show(); dialog.dismiss(); } @Override public void onNext(FirVersion firVersion) { if(firVersion.getVersion()> BuildConfig.VERSION_CODE){ dialog.dismiss(); showNewVersionFoundDialog(firVersion); }else{ Toast.makeText(getActivity(), R.string.msg_no_new_version, Toast.LENGTH_SHORT).show(); } } }); } private void showNewVersionFoundDialog(final FirVersion newFirVersion) { new AlertDialog.Builder(getActivity()) .setTitle(R.string.title_new_version_found) .setMessage(getString(R.string.msg_new_version_found, newFirVersion.getVersionShort(), newFirVersion.getVersion(), newFirVersion.getChangeLog())) .setPositiveButton(R.string.btn_dialog_update, new DialogInterface.OnClickListener() { @Override public void onClick(DialogInterface dialog, int which) { Intent downloadPageIntent = new Intent(Intent.ACTION_VIEW); downloadPageIntent.setData(Uri.parse(newFirVersion.getUpdateUrl())); getActivity().startActivity(downloadPageIntent); } }) .setNegativeButton(android.R.string.cancel, null) .create() .show(); } @Override public void onAttach(Activity activity){ super.onAttach(activity); if(!injected){ injected = true; Injector injector = (Injector)getActivity(); injector.inject(this); } } private void openDonate() { String alipayAccount = getString(R.string.alipay_account); ClipboardManager cm = (ClipboardManager) getActivity().getSystemService(Context.CLIPBOARD_SERVICE); cm.setPrimaryClip(ClipData.newPlainText("AlipayAccount", alipayAccount)); Toast.makeText(getActivity(), getString(R.string.msg_donate, alipayAccount), Toast.LENGTH_LONG).show(); } private void openFeedback(){ FeedbackAgent agent = new FeedbackAgent(getActivity()); agent.startDefaultThreadActivity(); } private void openLicenseDialog(){ new LicensesDialog.Builder(getActivity()) .setNotices(R.raw.notices) .build() .show(); } }