org.liberty.android.fantastischmemo.ui.MiscTabFragment.java Source code

Java tutorial

Introduction

Here is the source code for org.liberty.android.fantastischmemo.ui.MiscTabFragment.java

Source

/*
Copyright (C) 2012 Haowen Ning
    
This program is free software; you can redistribute it and/or
modify it under the terms of the GNU General Public License
as published by the Free Software Foundation; either version 2
of the License, or (at your option) any later version.
    
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
    
See the GNU General Public License for more details.
    
You should have received a copy of the GNU General Public License
along with this program; if not, write to the Free Software
Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.
    
*/
package org.liberty.android.fantastischmemo.ui;

import org.liberty.android.fantastischmemo.BuildConfig;
import org.liberty.android.fantastischmemo.AMEnv;
import org.liberty.android.fantastischmemo.R;
import org.liberty.android.fantastischmemo.converter.CSVExporter;
import org.liberty.android.fantastischmemo.converter.CSVImporter;
import org.liberty.android.fantastischmemo.converter.Mnemosyne2CardsExporter;
import org.liberty.android.fantastischmemo.converter.Mnemosyne2CardsImporter;
import org.liberty.android.fantastischmemo.converter.MnemosyneXMLExporter;
import org.liberty.android.fantastischmemo.converter.MnemosyneXMLImporter;
import org.liberty.android.fantastischmemo.converter.QATxtExporter;
import org.liberty.android.fantastischmemo.converter.QATxtImporter;
import org.liberty.android.fantastischmemo.converter.Supermemo2008XMLImporter;
import org.liberty.android.fantastischmemo.converter.SupermemoXMLImporter;
import org.liberty.android.fantastischmemo.converter.TabTxtExporter;
import org.liberty.android.fantastischmemo.converter.TabTxtImporter;
import org.liberty.android.fantastischmemo.converter.ZipExporter;
import org.liberty.android.fantastischmemo.converter.ZipImporter;

import roboguice.fragment.RoboFragment;

import android.app.Activity;
import android.app.AlertDialog;
import android.content.DialogInterface;
import android.content.Intent;
import android.content.SharedPreferences;
import android.content.pm.PackageManager;
import android.net.Uri;
import android.os.Bundle;
import android.preference.PreferenceManager;
import android.support.v4.app.DialogFragment;
import android.support.v4.app.FragmentActivity;
import android.text.Html;
import android.text.method.LinkMovementMethod;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.TextView;

public class MiscTabFragment extends RoboFragment implements View.OnClickListener {
    private static final String WEBSITE_VERSION = "http://anymemo.org/index.php?page=version";
    private Activity mActivity;
    private View optionButton;
    private View importButton;
    private View exportButton;
    private View importItems;
    private View exportItems;
    private View importMnemosyneButton;
    private View importSupermemoButton;
    private View importZipButton;
    private View importCSVButton;
    private View importTabButton;
    private View importQAButton;
    private View importSupermemo2008Button;
    private View importMnemosyne2CardsButton;
    private View exportMnemosyneButton;
    private View exportCSVButton;
    private View exportTabButton;
    private View exportQAButton;
    private View exportZipButton;
    private View exportMnemosyne2CardsButton;

    private View defaultSettingsButton;
    private View mergeButton;
    private View resetButton;
    private View donateButton;
    private View helpButton;
    private View aboutButton;

    public MiscTabFragment() {
    }

    @Override
    public void onAttach(Activity activity) {
        super.onAttach(activity);
        mActivity = activity;
    }

    @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
        View v = inflater.inflate(R.layout.misc_tab, container, false);
        optionButton = v.findViewById(R.id.misc_options);
        optionButton.setOnClickListener(this);
        importButton = v.findViewById(R.id.misc_import);
        importButton.setOnClickListener(this);
        exportButton = v.findViewById(R.id.misc_export);
        exportButton.setOnClickListener(this);
        importItems = v.findViewById(R.id.import_items);
        exportItems = v.findViewById(R.id.export_items);
        importMnemosyneButton = v.findViewById(R.id.import_mnemosyne);
        importMnemosyneButton.setOnClickListener(this);
        importSupermemoButton = v.findViewById(R.id.import_supermemo);
        importSupermemoButton.setOnClickListener(this);
        importCSVButton = v.findViewById(R.id.import_csv);
        importCSVButton.setOnClickListener(this);
        importZipButton = v.findViewById(R.id.import_zip);
        importZipButton.setOnClickListener(this);
        importTabButton = v.findViewById(R.id.import_tab);
        importTabButton.setOnClickListener(this);
        importQAButton = v.findViewById(R.id.import_qa);
        importQAButton.setOnClickListener(this);
        importSupermemo2008Button = v.findViewById(R.id.import_supermemo_2008);
        importSupermemo2008Button.setOnClickListener(this);
        importMnemosyne2CardsButton = v.findViewById(R.id.import_mnemosyne2_cards);
        importMnemosyne2CardsButton.setOnClickListener(this);
        exportMnemosyneButton = v.findViewById(R.id.export_mnemosyne);
        exportMnemosyneButton.setOnClickListener(this);
        exportCSVButton = v.findViewById(R.id.export_csv);
        exportCSVButton.setOnClickListener(this);
        exportTabButton = v.findViewById(R.id.export_tab);
        exportTabButton.setOnClickListener(this);
        exportQAButton = v.findViewById(R.id.export_qa);
        exportQAButton.setOnClickListener(this);
        exportZipButton = v.findViewById(R.id.export_zip);
        exportZipButton.setOnClickListener(this);
        exportMnemosyne2CardsButton = v.findViewById(R.id.export_mnemosyne2_cards);
        exportMnemosyne2CardsButton.setOnClickListener(this);

        defaultSettingsButton = v.findViewById(R.id.misc_default_settings);
        defaultSettingsButton.setOnClickListener(this);
        mergeButton = v.findViewById(R.id.misc_merge);
        mergeButton.setOnClickListener(this);
        resetButton = v.findViewById(R.id.misc_reset);
        resetButton.setOnClickListener(this);

        donateButton = v.findViewById(R.id.misc_donate);
        donateButton.setOnClickListener(this);

        // Pro version doesn't have donate button
        if (BuildConfig.FLAVOR.equals("pro")) {
            donateButton.setVisibility(View.GONE);
        }

        helpButton = v.findViewById(R.id.misc_help);
        helpButton.setOnClickListener(this);
        aboutButton = v.findViewById(R.id.misc_about);
        aboutButton.setOnClickListener(this);
        return v;
    }

    @Override
    public void onClick(View v) {
        if (v == optionButton) {
            startActivity(new Intent(mActivity, OptionScreen.class));
        }
        /* Toggle visibility for import and export buttons */
        if (v == importButton) {
            if (importItems.getVisibility() == View.GONE) {
                importItems.setVisibility(View.VISIBLE);
            } else {
                importItems.setVisibility(View.GONE);
            }
        }

        if (v == exportButton) {
            if (exportItems.getVisibility() == View.GONE) {
                exportItems.setVisibility(View.VISIBLE);
            } else {
                exportItems.setVisibility(View.GONE);
            }
        }

        if (v == importMnemosyneButton) {
            DialogFragment df = new ConverterFragment();
            Bundle b = new Bundle();
            b.putSerializable(ConverterFragment.EXTRA_CONVERTER_CLASS, MnemosyneXMLImporter.class);
            b.putString(FileBrowserFragment.EXTRA_FILE_EXTENSIONS, ".xml");
            df.setArguments(b);
            df.show(((FragmentActivity) mActivity).getSupportFragmentManager(), "ImportMnemosyne");
        }
        if (v == importSupermemoButton) {
            DialogFragment df = new ConverterFragment();
            Bundle b = new Bundle();
            b.putSerializable(ConverterFragment.EXTRA_CONVERTER_CLASS, SupermemoXMLImporter.class);
            b.putString(FileBrowserFragment.EXTRA_FILE_EXTENSIONS, ".xml");
            df.setArguments(b);
            df.show(((FragmentActivity) mActivity).getSupportFragmentManager(), "ImportSuperMemo2008");
        }
        if (v == importCSVButton) {
            DialogFragment df = new ConverterFragment();
            Bundle b = new Bundle();
            b.putSerializable(ConverterFragment.EXTRA_CONVERTER_CLASS, CSVImporter.class);
            b.putString(FileBrowserFragment.EXTRA_FILE_EXTENSIONS, ".csv");
            df.setArguments(b);
            df.show(((FragmentActivity) mActivity).getSupportFragmentManager(), "ImportCSV");
        }
        if (v == importZipButton) {
            DialogFragment df = new ConverterFragment();
            Bundle b = new Bundle();
            b.putSerializable(ConverterFragment.EXTRA_CONVERTER_CLASS, ZipImporter.class);
            b.putString(FileBrowserFragment.EXTRA_FILE_EXTENSIONS, ".zip");
            df.setArguments(b);
            df.show(((FragmentActivity) mActivity).getSupportFragmentManager(), "ImportZip");
        }
        if (v == importTabButton) {
            DialogFragment df = new ConverterFragment();
            Bundle b = new Bundle();
            b.putSerializable(ConverterFragment.EXTRA_CONVERTER_CLASS, TabTxtImporter.class);
            b.putString(FileBrowserFragment.EXTRA_FILE_EXTENSIONS, ".txt");
            df.setArguments(b);
            df.show(((FragmentActivity) mActivity).getSupportFragmentManager(), "ImportTabTxt");
        }
        if (v == importQAButton) {
            DialogFragment df = new ConverterFragment();
            Bundle b = new Bundle();
            b.putSerializable(ConverterFragment.EXTRA_CONVERTER_CLASS, QATxtImporter.class);
            b.putString(FileBrowserFragment.EXTRA_FILE_EXTENSIONS, ".txt");
            df.setArguments(b);
            df.show(((FragmentActivity) mActivity).getSupportFragmentManager(), "ImportCSV");
        }
        if (v == importSupermemo2008Button) {
            DialogFragment df = new ConverterFragment();
            Bundle b = new Bundle();
            b.putSerializable(ConverterFragment.EXTRA_CONVERTER_CLASS, Supermemo2008XMLImporter.class);
            b.putString(FileBrowserFragment.EXTRA_FILE_EXTENSIONS, ".xml");
            df.setArguments(b);
            df.show(((FragmentActivity) mActivity).getSupportFragmentManager(), "ImportSuperMemo2008");
        }
        if (v == importMnemosyne2CardsButton) {
            DialogFragment df = new ConverterFragment();
            Bundle b = new Bundle();
            b.putSerializable(ConverterFragment.EXTRA_CONVERTER_CLASS, Mnemosyne2CardsImporter.class);
            b.putString(FileBrowserFragment.EXTRA_FILE_EXTENSIONS, ".cards");
            df.setArguments(b);
            df.show(((FragmentActivity) mActivity).getSupportFragmentManager(), "ImportMnemosyne2Cards");
        }
        if (v == exportMnemosyneButton) {
            DialogFragment df = new ConverterFragment();
            Bundle b = new Bundle();
            b.putSerializable(ConverterFragment.EXTRA_CONVERTER_CLASS, MnemosyneXMLExporter.class);
            b.putString(FileBrowserFragment.EXTRA_FILE_EXTENSIONS, ".db");
            df.setArguments(b);
            df.show(((FragmentActivity) mActivity).getSupportFragmentManager(), "ExportMnemosyne");
        }
        if (v == exportCSVButton) {
            DialogFragment df = new ConverterFragment();
            Bundle b = new Bundle();
            b.putSerializable(ConverterFragment.EXTRA_CONVERTER_CLASS, CSVExporter.class);
            b.putString(FileBrowserFragment.EXTRA_FILE_EXTENSIONS, ".db");
            df.setArguments(b);
            df.show(((FragmentActivity) mActivity).getSupportFragmentManager(), "ExportCSV");
        }
        if (v == exportTabButton) {
            DialogFragment df = new ConverterFragment();
            Bundle b = new Bundle();
            b.putSerializable(ConverterFragment.EXTRA_CONVERTER_CLASS, TabTxtExporter.class);
            b.putString(FileBrowserFragment.EXTRA_FILE_EXTENSIONS, ".db");
            df.setArguments(b);
            df.show(((FragmentActivity) mActivity).getSupportFragmentManager(), "ExportTabTxt");
        }
        if (v == exportQAButton) {
            DialogFragment df = new ConverterFragment();
            Bundle b = new Bundle();
            b.putSerializable(ConverterFragment.EXTRA_CONVERTER_CLASS, QATxtExporter.class);
            b.putString(FileBrowserFragment.EXTRA_FILE_EXTENSIONS, ".db");
            df.setArguments(b);
            df.show(((FragmentActivity) mActivity).getSupportFragmentManager(), "ExportQA");
        }
        if (v == exportZipButton) {
            DialogFragment df = new ConverterFragment();
            Bundle b = new Bundle();
            b.putSerializable(ConverterFragment.EXTRA_CONVERTER_CLASS, ZipExporter.class);
            b.putString(FileBrowserFragment.EXTRA_FILE_EXTENSIONS, ".db");
            df.setArguments(b);
            df.show(((FragmentActivity) mActivity).getSupportFragmentManager(), "ExportZip");
        }
        if (v == exportMnemosyne2CardsButton) {
            DialogFragment df = new ConverterFragment();
            Bundle b = new Bundle();
            b.putSerializable(ConverterFragment.EXTRA_CONVERTER_CLASS, Mnemosyne2CardsExporter.class);
            b.putString(FileBrowserFragment.EXTRA_FILE_EXTENSIONS, ".db");
            df.setArguments(b);
            df.show(((FragmentActivity) mActivity).getSupportFragmentManager(), "ExportMnemosyne2Cards");
        }

        if (v == defaultSettingsButton) {
            Intent intent = new Intent(mActivity, SettingsScreen.class);

            String emptyDbPath = mActivity.getApplicationContext().getFilesDir().getAbsolutePath() + "/"
                    + AMEnv.EMPTY_DB_NAME;
            intent.putExtra(SettingsScreen.EXTRA_DBPATH, emptyDbPath);
            startActivity(intent);
        }
        if (v == mergeButton) {
            Intent myIntent = new Intent(mActivity, DatabaseMerger.class);
            startActivity(myIntent);
        }
        if (v == resetButton) {
            new AlertDialog.Builder(mActivity).setTitle(R.string.clear_all_pref)
                    .setMessage(R.string.reset_all_pref_warning)
                    .setPositiveButton(R.string.ok_text, new DialogInterface.OnClickListener() {
                        @Override
                        public void onClick(DialogInterface arg0, int arg1) {
                            SharedPreferences settings = PreferenceManager.getDefaultSharedPreferences(mActivity);
                            SharedPreferences.Editor editor = settings.edit();
                            editor.clear();
                            editor.commit();
                            mActivity.finish();
                        }
                    }).setNegativeButton(R.string.cancel_text, null).show();
        }
        if (v == donateButton) {
            View alertView = View.inflate(mActivity, R.layout.link_alert, null);
            TextView textView = (TextView) alertView.findViewById(R.id.link_alert_message);
            textView.setText(Html.fromHtml(getString(R.string.donate_summary)));
            textView.setMovementMethod(LinkMovementMethod.getInstance());
            new AlertDialog.Builder(mActivity).setView(alertView).setTitle(R.string.donate_text)
                    .setPositiveButton(getString(R.string.buy_pro_text), new DialogInterface.OnClickListener() {
                        @Override
                        public void onClick(DialogInterface arg0, int arg1) {
                            Intent myIntent = new Intent();
                            myIntent.setAction(Intent.ACTION_VIEW);
                            myIntent.addCategory(Intent.CATEGORY_BROWSABLE);
                            myIntent.setData(Uri.parse(getString(R.string.anymemo_pro_link)));
                            startActivity(myIntent);
                        }
                    }).setNegativeButton(getString(R.string.cancel_text), null).show();
        }
        if (v == helpButton) {
            Intent myIntent = new Intent();
            myIntent.setAction(Intent.ACTION_VIEW);
            myIntent.addCategory(Intent.CATEGORY_BROWSABLE);
            myIntent.setData(Uri.parse(WEBSITE_VERSION));
            startActivity(myIntent);
        }
        if (v == aboutButton) {
            // Get the version defined in the AndroidManifest.
            String versionName = "";
            try {
                versionName = getActivity().getPackageManager().getPackageInfo(getActivity().getPackageName(),
                        0).versionName;
            } catch (PackageManager.NameNotFoundException e) {
                versionName = "1.0";
            }

            View alertView = View.inflate(mActivity, R.layout.link_alert, null);
            TextView textView = (TextView) alertView.findViewById(R.id.link_alert_message);
            textView.setText(Html.fromHtml(getString(R.string.about_text)));
            textView.setMovementMethod(LinkMovementMethod.getInstance());
            new AlertDialog.Builder(mActivity).setView(alertView)
                    .setTitle(getString(R.string.app_full_name) + " " + versionName)
                    .setPositiveButton(getString(R.string.ok_text), null)
                    .setNegativeButton(getString(R.string.about_version), new DialogInterface.OnClickListener() {
                        @Override
                        public void onClick(DialogInterface arg0, int arg1) {
                            Intent myIntent = new Intent();
                            myIntent.setAction(Intent.ACTION_VIEW);
                            myIntent.addCategory(Intent.CATEGORY_BROWSABLE);
                            myIntent.setData(Uri.parse(WEBSITE_VERSION));
                            startActivity(myIntent);
                        }
                    }).show();
        }
    }
}