package com.databases.example.features.checkbook.transactions; import android.app.AlertDialog; import android.app.Dialog; import android.content.SharedPreferences; import android.os.Bundle; import android.preference.PreferenceManager; import android.support.v4.app.DialogFragment; import android.view.LayoutInflater; import android.view.View; import android.widget.AdapterView; import android.widget.ListView; import com.databases.example.R; import com.databases.example.database.DatabaseHelper; import timber.log.Timber; /** * Created by kev on 10/6/14. */ public class TransactionSortDialogFragment extends DialogFragment { public static TransactionSortDialogFragment newInstance() { TransactionSortDialogFragment frag = new TransactionSortDialogFragment(); Bundle args = new Bundle(); frag.setArguments(args); return frag; } @Override public Dialog onCreateDialog(Bundle savedInstanceState) { final SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(getActivity()); LayoutInflater li = LayoutInflater.from(this.getActivity()); View accountSortView = li.inflate(R.layout.sort_transactions, null); AlertDialog.Builder alertDialogBuilder = new AlertDialog.Builder(this.getActivity()); alertDialogBuilder.setView(accountSortView); alertDialogBuilder.setTitle("Sort"); alertDialogBuilder.setCancelable(true); ListView sortOptions = (ListView) accountSortView.findViewById(R.id.sort_options); sortOptions.setOnItemClickListener(new AdapterView.OnItemClickListener() { @Override public void onItemClick(AdapterView<?> parent, View view, int position, long id) { switch (position) { //Newest case 0: prefs.edit().putString(getString(R.string.pref_key_transaction_sort), DatabaseHelper.TRANS_DATE + " DESC, " + DatabaseHelper.TRANS_TIME + " DESC").apply(); break; //Oldest case 1: prefs.edit().putString(getString(R.string.pref_key_transaction_sort), DatabaseHelper.TRANS_DATE + " ASC, " + DatabaseHelper.TRANS_TIME + " ASC").apply(); break; //Largest case 2: prefs.edit().putString(getString(R.string.pref_key_transaction_sort), DatabaseHelper.TRANS_TYPE + " ASC, CAST (" + DatabaseHelper.TRANS_VALUE + " AS INTEGER)" + " DESC").apply(); break; //Smallest case 3: prefs.edit().putString(getString(R.string.pref_key_transaction_sort), DatabaseHelper.TRANS_TYPE + " ASC, CAST (" + DatabaseHelper.TRANS_VALUE + " AS INTEGER)" + " ASC").apply(); break; //Category case 4: prefs.edit().putString(getString(R.string.pref_key_transaction_sort), DatabaseHelper.TRANS_CATEGORY + " ASC").apply(); break; //Type case 5: prefs.edit().putString(getString(R.string.pref_key_transaction_sort), DatabaseHelper.TRANS_TYPE + " ASC").apply(); break; //Alphabetical case 6: prefs.edit().putString(getString(R.string.pref_key_transaction_sort), DatabaseHelper.TRANS_NAME + " ASC").apply(); break; //None case 7: prefs.edit().putString(getString(R.string.pref_key_transaction_sort), null).apply(); break; default: Timber.e("Unknown Sorting Option!"); break; } //Restart loader with new sort order getParentFragment().getLoaderManager().restartLoader(TransactionsFragment.TRANS_LOADER, null, (TransactionsFragment) getParentFragment()); getDialog().cancel(); } }); return alertDialogBuilder.create(); } }