org.devcon.android.util.MenuUtil.java Source code

Java tutorial

Introduction

Here is the source code for org.devcon.android.util.MenuUtil.java

Source

package org.devcon.android.util;

import android.app.AlertDialog;
import android.app.Dialog;
import android.content.Context;
import android.content.DialogInterface;
import android.content.pm.PackageInfo;
import android.content.pm.PackageManager;
import android.os.Bundle;
import android.support.v4.app.DialogFragment;
import android.support.v4.app.Fragment;
import android.support.v4.app.FragmentActivity;
import android.support.v4.app.FragmentManager;
import android.support.v4.app.FragmentTransaction;
import android.text.Html;
import android.text.SpannableString;
import android.text.SpannableStringBuilder;
import android.text.method.LinkMovementMethod;
import android.text.style.ClickableSpan;
import android.view.LayoutInflater;
import android.view.View;
import android.webkit.WebView;
import android.widget.TextView;

import org.devcon.android.R;

import static org.devcon.android.util.LogUtil.makeLogTag;

public class MenuUtil {

    private static final String TAG = makeLogTag(MenuUtil.class);

    public static void showAbout(FragmentActivity fa) {
        FragmentManager fm = fa.getSupportFragmentManager();
        FragmentTransaction ft = fm.beginTransaction();
        Fragment prev = fm.findFragmentByTag("dialog_about");
        if (prev != null) {
            ft.remove(prev);
        }
        ft.addToBackStack(null);

        new AboutDialog().show(ft, "dialog_about");
    }

    public static class AboutDialog extends DialogFragment {

        @Override
        public Dialog onCreateDialog(Bundle savedInstanceState) {

            PackageManager pm = getActivity().getPackageManager();
            String packageName = getActivity().getPackageName();
            String versionName = null;
            try {
                assert pm != null;
                PackageInfo info = pm.getPackageInfo(packageName, 0);
                versionName = info.versionName;
            } catch (PackageManager.NameNotFoundException e) {
                e.printStackTrace();
            }

            SpannableStringBuilder stb = new SpannableStringBuilder();
            LogUtil.LOGD(TAG, "version name " + versionName);
            stb.append(Html.fromHtml(getString(R.string.about_body, versionName)));

            SpannableString opensourcelicenses = new SpannableString(getString(R.string.licenses));
            opensourcelicenses.setSpan(new ClickableSpan() {

                @Override
                public void onClick(View widget) {
                    MenuUtil.showOpenSourceLicenses(getActivity());
                }

            }, 0, opensourcelicenses.length(), 0);
            stb.append("\n\n");
            stb.append(opensourcelicenses);

            LayoutInflater inflater = (LayoutInflater) getActivity()
                    .getSystemService(Context.LAYOUT_INFLATER_SERVICE);
            TextView tv = (TextView) inflater.inflate(R.layout.about_dialog, null);
            assert tv != null;
            tv.setText(stb);
            tv.setMovementMethod(new LinkMovementMethod());

            return new AlertDialog.Builder(getActivity()).setTitle(R.string.about).setView(tv)
                    .setPositiveButton(android.R.string.ok, new DialogInterface.OnClickListener() {
                        public void onClick(DialogInterface dialog, int whichButton) {
                            dialog.dismiss();
                        }
                    }).create();

        }
    }

    public static void showOpenSourceLicenses(FragmentActivity activity) {
        FragmentManager fm = activity.getSupportFragmentManager();
        FragmentTransaction ft = fm.beginTransaction();
        Fragment prev = fm.findFragmentByTag("dialog_licenses");
        if (prev != null) {
            ft.remove(prev);
        }
        ft.addToBackStack(null);

        new showLicenses().show(ft, "dialog_licenses");
    }

    public static class showLicenses extends DialogFragment {

        public showLicenses() {
        }

        @Override
        public Dialog onCreateDialog(Bundle savedInstanceState) {
            WebView webView = new WebView(getActivity());
            webView.loadUrl("file:///android_asset/licenses.html");

            return new AlertDialog.Builder(getActivity()).setTitle(R.string.licenses).setView(webView)
                    .setPositiveButton(android.R.string.ok, new DialogInterface.OnClickListener() {
                        public void onClick(DialogInterface dialog, int whichButton) {
                            dialog.dismiss();
                        }
                    }).create();
        }
    }
}