package me.barrasso.android.volume.activities; import android.app.Activity; import android.app.AlertDialog; import android.app.Dialog; import android.app.DialogFragment; import android.app.Fragment; import android.app.FragmentManager; import android.app.FragmentTransaction; import android.content.Context; import android.content.DialogInterface; import android.content.SharedPreferences; import android.content.pm.PackageManager; import android.os.Bundle; import android.preference.PreferenceManager; import android.view.LayoutInflater; import it.gmariotti.changelibs.library.view.ChangeLogListView; import me.barrasso.android.volume.LogUtils; import me.barrasso.android.volume.R; /** * Example with Dialog * * @author Gabriele Mariotti (gabri.mariotti@gmail.com) */ public class ChangeLogDialog extends DialogFragment { public static void show(Activity activity, final boolean check) { if (check && !showChangeLog(activity)) return; FragmentManager fm = activity.getFragmentManager(); FragmentTransaction ft = fm.beginTransaction(); String tag = ChangeLogDialog.class.getSimpleName(); Fragment prev = fm.findFragmentByTag(tag); if (prev != null) ft.remove(prev); ft.addToBackStack(null); new ChangeLogDialog().show(ft, tag); } protected static boolean showChangeLog(Context context) { final String version = "version"; SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(context); final int versionCode = getVersionCode(context); final boolean hasVersion = prefs.contains(version); final int savedVersion = prefs.getInt(version, versionCode); SharedPreferences.Editor editor = prefs.edit(); editor.putInt(version, versionCode); editor.apply(); return (!hasVersion || (savedVersion < versionCode)); } protected static int getVersionCode(Context context) { try { return context.getPackageManager().getPackageInfo(context.getPackageName(), 0).versionCode; } catch (PackageManager.NameNotFoundException nnfe) { LogUtils.LOGE(ChangeLogDialog.class.getSimpleName(), "Error obtaining version code.", nnfe); return -1; } } public ChangeLogDialog() { } @Override public Dialog onCreateDialog(Bundle savedInstanceState) { LayoutInflater layoutInflater = LayoutInflater.from(getActivity()); ChangeLogListView chgList = (ChangeLogListView) layoutInflater.inflate(R.layout.changelog_fragment, null); return new AlertDialog.Builder(getActivity()) .setTitle(R.string.changelog_title) .setView(chgList) .setPositiveButton(android.R.string.ok, new DialogInterface.OnClickListener() { @Override public void onClick(DialogInterface dialog, int whichButton) { dialog.dismiss(); } } ).create(); } }