package com.myMinistry.fragments; import java.text.SimpleDateFormat; import java.util.Calendar; import java.util.Locale; import android.annotation.TargetApi; import android.app.Activity; import android.content.Intent; import android.database.Cursor; import android.os.Build; import android.os.Bundle; import android.os.Handler; import android.support.v4.app.Fragment; import android.support.v4.app.FragmentManager; import android.support.v4.app.FragmentTransaction; import android.view.LayoutInflater; import android.view.Menu; import android.view.MenuInflater; import android.view.MenuItem; import android.view.View; import android.view.ViewGroup; import android.widget.AdapterView; import android.widget.ArrayAdapter; import android.widget.Spinner; import android.widget.TextView; import com.myMinistry.FragmentActivityStatus; import com.myMinistry.R; import com.myMinistry.Techniques; import com.myMinistry.YoYo; import com.myMinistry.adapters.NavDrawerMenuItemAdapter; import com.myMinistry.dialogfragments.PublisherNewDialogFragment; import com.myMinistry.dialogfragments.PublisherNewDialogFragment.PublisherNewDialogFragmentListener; import com.myMinistry.model.NavDrawerMenuItem; import com.myMinistry.provider.MinistryContract.EntryType; import com.myMinistry.provider.MinistryContract.LiteratureType; import com.myMinistry.provider.MinistryContract.Publisher; import com.myMinistry.provider.MinistryDatabase; import com.myMinistry.provider.MinistryService; import com.myMinistry.ui.MainActivity; import com.myMinistry.util.PrefUtils; import com.myMinistry.util.TimeUtils; import com.nineoldandroids.animation.Animator; public class SummaryFragment extends Fragment { public static String ARG_PUBLISHER_ID = "publisher_id"; public final static int SERVICE_YEAR_START_MONTH = Calendar.SEPTEMBER; public final static int DIRECTION_NO_CHANGE = 0; private final int DIRECTION_CHANGE_TITLES = 1; private final int DIRECTION_INCREASE = 2; private final int DIRECTION_DECREASE = 3; private boolean is_dual_pane = false; private boolean is_month_summary = true; private String mMonth, mYear, mTotalHoursCount, mPublicationText0, mPublicationText1, mPublicationText2, mPublicationText3, mPublicationText4, mPublicationCount0, mPublicationCount1, mPublicationCount2, mPublicationCount3, mPublicationCount4, mRVText, mRVCount, mBSText, mBSCount, mRBCText, mRBCCount = ""; private Spinner publishers, monthly_or_yearly, view_type; private TextView month, year, total_hours_count, tv_pub_text_0, tv_pub_text_1, tv_pub_text_2, tv_pub_text_3, tv_pub_text_4, tv_pub_count_0, tv_pub_count_1, tv_pub_count_2, tv_pub_count_3, tv_pub_count_4, return_visits_text, return_visits_count, bible_studies_text, bible_studies_count, rbc_text, rbc_count; private Calendar monthPicked = Calendar.getInstance(); private Calendar serviceYear = Calendar.getInstance(); private int publisherId = 0; private final SimpleDateFormat buttonFormat = new SimpleDateFormat("MMMM", Locale.getDefault()); private NavDrawerMenuItemAdapter pubsAdapter; private FragmentManager fm; private FragmentActivityStatus fragmentActivityStatus; private MinistryService database; private static final int ANIMATION_DURATION = 200; private String dbDateFormatted = ""; private String dbTimeFrame = ""; public static SummaryFragment newInstance(int _publisherID) { SummaryFragment f = new SummaryFragment(); Bundle args = new Bundle(); args.putInt(ARG_PUBLISHER_ID, _publisherID); f.setArguments(args); return f; } @Override public void onCreateOptionsMenu(Menu menu, MenuInflater inflater) { inflater.inflate(R.menu.summary, menu); } @Override public void onAttach(Activity activity) { super.onAttach(activity); fragmentActivityStatus = (FragmentActivityStatus)activity; } @Override public void onPrepareOptionsMenu(Menu menu) { boolean drawerOpen = fragmentActivityStatus.isDrawerOpen(); if(menu.findItem(R.id.summary_send_report) != null) menu.findItem(R.id.summary_send_report).setVisible((menu.findItem(R.id.menu_save) != null) ? false : !drawerOpen); if(menu.findItem(R.id.summary_add_item) != null) menu.findItem(R.id.summary_add_item).setVisible((menu.findItem(R.id.menu_save) != null) ? false : !drawerOpen); super.onPrepareOptionsMenu(menu); } @Override public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { View root = inflater.inflate(R.layout.summary, container, false); Bundle args = getArguments(); if(args != null && args.containsKey(ARG_PUBLISHER_ID)) publisherId = args.getInt(ARG_PUBLISHER_ID); setHasOptionsMenu(true); fm = getActivity().getSupportFragmentManager(); database = new MinistryService(getActivity().getApplicationContext()); monthPicked.set(Calendar.MONTH, PrefUtils.getSummaryMonth(getActivity(), monthPicked)); monthPicked.set(Calendar.YEAR, PrefUtils.getSummaryYear(getActivity(), monthPicked)); setPublisherId(PrefUtils.getPublisherId(getActivity().getApplicationContext())); publishers = (Spinner) root.findViewById(R.id.publishers); monthly_or_yearly = (Spinner) root.findViewById(R.id.monthly_or_yearly); view_type = (Spinner) root.findViewById(R.id.view_type); tv_pub_text_0 = (TextView) root.findViewById(R.id.tv_pub_text_0); tv_pub_count_0 = (TextView) root.findViewById(R.id.tv_pub_count_0); tv_pub_text_1 = (TextView) root.findViewById(R.id.tv_pub_text_1); tv_pub_count_1 = (TextView) root.findViewById(R.id.tv_pub_count_1); tv_pub_text_2 = (TextView) root.findViewById(R.id.tv_pub_text_2); tv_pub_count_2 = (TextView) root.findViewById(R.id.tv_pub_count_2); tv_pub_text_3 = (TextView) root.findViewById(R.id.tv_pub_text_3); tv_pub_count_3 = (TextView) root.findViewById(R.id.tv_pub_count_3); tv_pub_text_4 = (TextView) root.findViewById(R.id.tv_pub_text_4); tv_pub_count_4 = (TextView) root.findViewById(R.id.tv_pub_count_4); return_visits_text = (TextView) root.findViewById(R.id.return_visits_text); return_visits_count = (TextView) root.findViewById(R.id.return_visits_count); bible_studies_text = (TextView) root.findViewById(R.id.bible_studies_text); bible_studies_count = (TextView) root.findViewById(R.id.bible_studies_count); rbc_text = (TextView) root.findViewById(R.id.rbc_text); rbc_count = (TextView) root.findViewById(R.id.rbc_count); month = (TextView) root.findViewById(R.id.month); year = (TextView) root.findViewById(R.id.year); total_hours_count = (TextView) root.findViewById(R.id.total_hours_count); root.findViewById(R.id.next).setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { if(is_month_summary) adjustMonth(1); else adjustYear(1); calculateSummaryValues(is_month_summary); animatePage(DIRECTION_INCREASE); } }); root.findViewById(R.id.prev).setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { if(is_month_summary) adjustMonth(-1); else adjustYear(-1); calculateSummaryValues(is_month_summary); animatePage(DIRECTION_DECREASE); } }); root.findViewById(R.id.monthYear).setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { refresh(DIRECTION_NO_CHANGE); } }); pubsAdapter = new NavDrawerMenuItemAdapter(getActivity().getApplicationContext()); ArrayAdapter<String> spinnerArrayAdapter = new ArrayAdapter<String>(this.getActivity().getApplicationContext(), R.layout.li_spinner_item); spinnerArrayAdapter.setDropDownViewResource(R.layout.li_spinner_item_dropdown); for(String name : getResources().getStringArray(R.array.summary_time_span)) { spinnerArrayAdapter.add(name); } monthly_or_yearly.setAdapter(spinnerArrayAdapter); monthly_or_yearly.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() { @Override public void onItemSelected(AdapterView<?> adapterView, View view, int position, long id) { if(position == 0) { updatePublisherSummaryMonthly(); } else { updatePublisherSummaryYearly(); } } @Override public void onNothingSelected(AdapterView<?> parent) { } }); ArrayAdapter<String> spinnerArrayAdapterType = new ArrayAdapter<String>(this.getActivity().getApplicationContext(), R.layout.li_spinner_item); spinnerArrayAdapterType.setDropDownViewResource(R.layout.li_spinner_item_dropdown); for(String name : getResources().getStringArray(R.array.summary_nav_view_type)) { spinnerArrayAdapterType.add(name); } view_type.setAdapter(spinnerArrayAdapterType); view_type.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() { @Override public void onItemSelected(AdapterView<?> adapterView, View view, int position, long id) { if(position == 1) { Calendar date = Calendar.getInstance(Locale.getDefault()); // Create new transaction FragmentTransaction ft = fm.beginTransaction(); ft.setTransition(FragmentTransaction.TRANSIT_FRAGMENT_FADE); // Create new fragment TimeEntriesFragment f = new TimeEntriesFragment().newInstance(PrefUtils.getSummaryMonth(getActivity().getApplicationContext(), date), PrefUtils.getSummaryYear(getActivity().getApplicationContext(), date), PrefUtils.getPublisherId(getActivity().getApplicationContext()), is_month_summary); // Replace whatever is in the fragment_container view with this fragment, ft.replace(R.id.primary_fragment_container, f); // Commit the transaction ft.commit(); } } @Override public void onNothingSelected(AdapterView<?> parent) { } }); return root; } @Override public void onActivityCreated(Bundle savedState) { super.onActivityCreated(savedState); is_dual_pane = getActivity().findViewById(R.id.secondary_fragment_container) != null; if(is_dual_pane) { view_type.setVisibility(View.GONE); } calculateSummaryValues(is_month_summary); fillPublisherSummary(); loadPublisherAdapter(); } public void setPublisherId(int _id) { if(pubsAdapter != null) { for(int i = 0; i <= pubsAdapter.getCount(); i++) { if(_id == pubsAdapter.getItem(i).getID()) { publishers.setSelection(i); break; } } } publisherId = _id; } public void adjustMonth(int addValue) { monthPicked.add(Calendar.MONTH, addValue); saveSharedPrefs(); } public void adjustYear(int addValue) { serviceYear.add(Calendar.YEAR, addValue); } public void setDate(Calendar _date) { monthPicked.set(Calendar.YEAR, _date.get(Calendar.YEAR)); monthPicked.set(Calendar.MONTH, _date.get(Calendar.MONTH)); serviceYear.set(Calendar.YEAR, _date.get(Calendar.YEAR)); serviceYear.set(Calendar.MONTH, _date.get(Calendar.MONTH)); saveSharedPrefs(); } public void resetDate() { monthPicked = Calendar.getInstance(Locale.getDefault()); saveSharedPrefs(); } public void refresh(final int changeDirection) { animatePage(changeDirection); } private void saveSharedPrefs() { if(getActivity() != null) PrefUtils.setSummaryMonthAndYear(getActivity(), monthPicked); } public void animatePage(final int changeDirection) { final Handler mHandler = new Handler(); mHandler.postDelayed(new Runnable() { @Override public void run() { YoYo.with(Techniques.FlipOutX).withListener(new Animator.AnimatorListener() { @Override public void onAnimationStart(Animator arg0) { if(changeDirection == DIRECTION_INCREASE) { if(is_month_summary) { YoYo.with(Techniques.SlideOutLeft).duration(ANIMATION_DURATION).playOn(month); } if(monthPicked.get(Calendar.MONTH) == Calendar.JANUARY || !is_month_summary) { YoYo.with(Techniques.SlideOutLeft).duration(ANIMATION_DURATION).playOn(year); } } else if(changeDirection == DIRECTION_DECREASE) { if(is_month_summary) { YoYo.with(Techniques.SlideOutRight).duration(ANIMATION_DURATION).playOn(month); } if(monthPicked.get(Calendar.MONTH) == Calendar.DECEMBER || !is_month_summary) { YoYo.with(Techniques.SlideOutRight).duration(ANIMATION_DURATION).playOn(year); } } else if(changeDirection == DIRECTION_CHANGE_TITLES) { YoYo.with(Techniques.SlideOutUp).duration(ANIMATION_DURATION).playOn(month); YoYo.with(Techniques.SlideOutDown).duration(ANIMATION_DURATION).playOn(year); } YoYo.with(Techniques.FlipOutX).duration(ANIMATION_DURATION).playOn(tv_pub_count_0); YoYo.with(Techniques.FlipOutX).duration(ANIMATION_DURATION).playOn(tv_pub_count_1); YoYo.with(Techniques.FlipOutX).duration(ANIMATION_DURATION).playOn(tv_pub_count_2); YoYo.with(Techniques.FlipOutX).duration(ANIMATION_DURATION).playOn(tv_pub_count_3); YoYo.with(Techniques.FlipOutX).duration(ANIMATION_DURATION).playOn(tv_pub_count_4); YoYo.with(Techniques.FlipOutX).duration(ANIMATION_DURATION).playOn(return_visits_count); YoYo.with(Techniques.FlipOutX).duration(ANIMATION_DURATION).playOn(bible_studies_count); YoYo.with(Techniques.FlipOutX).duration(ANIMATION_DURATION).playOn(rbc_count); } @Override public void onAnimationRepeat(Animator arg0) { } @Override public void onAnimationEnd(Animator arg0) { fillPublisherSummary(); displayTimeEntries(); if(changeDirection == DIRECTION_INCREASE) { if(is_month_summary) { YoYo.with(Techniques.SlideInRight).duration(ANIMATION_DURATION).playOn(month); } if(monthPicked.get(Calendar.MONTH) == Calendar.JANUARY || !is_month_summary) { YoYo.with(Techniques.SlideInRight).duration(ANIMATION_DURATION).playOn(year); } } else if(changeDirection == DIRECTION_DECREASE) { if(is_month_summary) { YoYo.with(Techniques.SlideInLeft).duration(ANIMATION_DURATION).playOn(month); } if(monthPicked.get(Calendar.MONTH) == Calendar.DECEMBER || !is_month_summary) { YoYo.with(Techniques.SlideInLeft).duration(ANIMATION_DURATION).playOn(year); } } else if(changeDirection == DIRECTION_CHANGE_TITLES) { YoYo.with(Techniques.SlideInDown).duration(ANIMATION_DURATION).playOn(month); YoYo.with(Techniques.SlideInUp).duration(ANIMATION_DURATION).playOn(year); } YoYo.with(Techniques.FlipInX).duration(ANIMATION_DURATION).playOn(total_hours_count); YoYo.with(Techniques.FlipInX).duration(ANIMATION_DURATION).playOn(tv_pub_count_0); YoYo.with(Techniques.FlipInX).duration(ANIMATION_DURATION).playOn(tv_pub_count_1); YoYo.with(Techniques.FlipInX).duration(ANIMATION_DURATION).playOn(tv_pub_count_2); YoYo.with(Techniques.FlipInX).duration(ANIMATION_DURATION).playOn(tv_pub_count_3); YoYo.with(Techniques.FlipInX).duration(ANIMATION_DURATION).playOn(tv_pub_count_4); YoYo.with(Techniques.FlipInX).duration(ANIMATION_DURATION).playOn(return_visits_count); YoYo.with(Techniques.FlipInX).duration(ANIMATION_DURATION).playOn(bible_studies_count); YoYo.with(Techniques.FlipInX).duration(ANIMATION_DURATION).playOn(rbc_count); } @Override public void onAnimationCancel(Animator arg0) { } }) .duration(ANIMATION_DURATION) .playOn(total_hours_count); } }, ANIMATION_DURATION); } public void displayTimeEntries() { if (is_dual_pane) { Fragment rf = fm.findFragmentById(R.id.secondary_fragment_container); if(rf instanceof TimeEntriesFragment) { TimeEntriesFragment f = (TimeEntriesFragment) fm.findFragmentById(R.id.secondary_fragment_container); f.setPublisherId(publisherId); if(is_month_summary) { f.switchToMonthList(monthPicked); } else { f.switchToYearList(serviceYear); } } else { TimeEntriesFragment f = new TimeEntriesFragment().newInstance(monthPicked.get(Calendar.MONTH), monthPicked.get(Calendar.YEAR), publisherId, is_month_summary); FragmentTransaction ft = fm.beginTransaction(); ft.setTransition(FragmentTransaction.TRANSIT_FRAGMENT_FADE); ft.replace(R.id.secondary_fragment_container, f); ft.commit(); } } } public void fillPublisherSummary() { month.setText(mMonth); year.setText(mYear); total_hours_count.setText(mTotalHoursCount); tv_pub_text_0.setText(mPublicationText0); tv_pub_count_0.setText(mPublicationCount0); tv_pub_text_1.setText(mPublicationText1); tv_pub_count_1.setText(mPublicationCount1); tv_pub_text_2.setText(mPublicationText2); tv_pub_count_2.setText(mPublicationCount2); tv_pub_text_3.setText(mPublicationText3); tv_pub_count_3.setText(mPublicationCount3); tv_pub_text_4.setText(mPublicationText4); tv_pub_count_4.setText(mPublicationCount4); bible_studies_text.setText(mBSText); bible_studies_count.setText(mBSCount); return_visits_text.setText(mRVText); return_visits_count.setText(mRVCount); rbc_text.setText(mRBCText); rbc_count.setText(mRBCCount); } public void calculateSummaryValues() { calculateSummaryValues(is_month_summary); } public void calculateSummaryValues(boolean is_month) { if(!database.isOpen()) database.openWritable(); if(is_month) { mMonth = buttonFormat.format(monthPicked.getTime()).toString().toUpperCase(Locale.getDefault()); mYear = String.valueOf(monthPicked.get(Calendar.YEAR)).toUpperCase(Locale.getDefault()); dbDateFormatted = TimeUtils.dbDateFormat.format(monthPicked.getTime()); dbTimeFrame = "month"; } else { mMonth = getActivity().getApplicationContext().getResources().getString(R.string.service_year).toUpperCase(Locale.getDefault()); mYear = serviceYear.get(Calendar.YEAR) + " - " + String.valueOf(serviceYear.get(Calendar.YEAR) + 1); dbDateFormatted = TimeUtils.dbDateFormat.format(serviceYear.getTime()); dbTimeFrame = "year"; } if(!database.isOpen()) database.openWritable(); if(PrefUtils.shouldCalculateRolloverTime(getActivity())) mTotalHoursCount = TimeUtils.getTimeLength(database.fetchListOfHoursForPublisher(dbDateFormatted, publisherId, dbTimeFrame), getActivity().getApplicationContext().getString(R.string.hours_label), getActivity().getApplicationContext().getString(R.string.minutes_label), PrefUtils.shouldShowMinutesInTotals(getActivity())); else mTotalHoursCount = TimeUtils.getTimeLength(database.fetchListOfHoursForPublisherNoRollover(dbDateFormatted, publisherId, dbTimeFrame), getActivity().getApplicationContext().getString(R.string.hours_label), getActivity().getApplicationContext().getString(R.string.minutes_label), PrefUtils.shouldShowMinutesInTotals(getActivity())); if(!database.isOpen()) database.openWritable(); Cursor literatureTypes = database.fetchTypesOfLiteratureCountsForPublisher(publisherId, dbDateFormatted, dbTimeFrame); for(literatureTypes.moveToFirst();!literatureTypes.isAfterLast();literatureTypes.moveToNext()) { switch(literatureTypes.getPosition()) { case 0: mPublicationText0 = literatureTypes.getString(literatureTypes.getColumnIndex(LiteratureType.NAME)); mPublicationCount0 = String.valueOf(literatureTypes.getInt(2)); break; case 1: mPublicationText1 = literatureTypes.getString(literatureTypes.getColumnIndex(LiteratureType.NAME)); mPublicationCount1 = String.valueOf(literatureTypes.getInt(2)); break; case 2: mPublicationText2 = literatureTypes.getString(literatureTypes.getColumnIndex(LiteratureType.NAME)); mPublicationCount2 = String.valueOf(literatureTypes.getInt(2)); break; case 3: mPublicationText3 = literatureTypes.getString(literatureTypes.getColumnIndex(LiteratureType.NAME)); mPublicationCount3 = String.valueOf(literatureTypes.getInt(2)); break; case 4: mPublicationText4 = literatureTypes.getString(literatureTypes.getColumnIndex(LiteratureType.NAME)); mPublicationCount4 = String.valueOf(literatureTypes.getInt(2)); break; } } literatureTypes.close(); if(!database.isOpen()) database.openWritable(); Cursor entryTypes = database.fetchEntryTypeCountsForPublisher(publisherId, dbDateFormatted, dbTimeFrame); for(entryTypes.moveToFirst();!entryTypes.isAfterLast();entryTypes.moveToNext()) { switch(entryTypes.getInt(entryTypes.getColumnIndex(EntryType._ID))) { case MinistryDatabase.ID_BIBLE_STUDY: mBSText = entryTypes.getString(entryTypes.getColumnIndex(EntryType.NAME)); mBSCount = String.valueOf(entryTypes.getInt(2)); break; case MinistryDatabase.ID_RETURN_VISIT: mRVText = entryTypes.getString(entryTypes.getColumnIndex(EntryType.NAME)); mRVCount = String.valueOf(entryTypes.getInt(2)); break; case MinistryDatabase.ID_RBC: mRBCText = entryTypes.getString(entryTypes.getColumnIndex(EntryType.NAME)); mRBCCount = TimeUtils.getTimeLength(database.fetchListOfRBCHoursForPublisher(dbDateFormatted, publisherId, dbTimeFrame), getActivity().getApplicationContext().getString(R.string.hours_label), getActivity().getApplicationContext().getString(R.string.minutes_label), PrefUtils.shouldShowMinutesInTotals(getActivity())); break; } } entryTypes.close(); database.close(); } private String populateShareString() { StringBuilder retVal = new StringBuilder(); String formattedDate = TimeUtils.dbDateFormat.format(monthPicked.getTime()).toString(); if(!database.isOpen()) database.openWritable(); /** Set the date */ retVal.append(buttonFormat.format(monthPicked.getTime()).toString() + " " + monthPicked.get(Calendar.YEAR)); Cursor pubs = database.fetchActivePublishers(); /** Loop over all the active publishers */ for(pubs.moveToFirst();!pubs.isAfterLast();pubs.moveToNext()) { if(pubs.getPosition() > 0) retVal.append("\n"); /** Set publisher's name */ retVal.append("\n" + pubs.getString(pubs.getColumnIndex(Publisher.NAME))); /** Set total hours */ retVal.append("\n" + getResources().getString(R.string.total_time) + ": "); if(PrefUtils.shouldCalculateRolloverTime(getActivity())) retVal.append(TimeUtils.getTimeLength(database.fetchListOfHoursForPublisher(formattedDate, pubs.getInt(pubs.getColumnIndex(Publisher._ID)), "month"), getActivity().getApplicationContext().getString(R.string.hours_label), getActivity().getApplicationContext().getString(R.string.minutes_label), PrefUtils.shouldShowMinutesInTotals(getActivity()))); else retVal.append(TimeUtils.getTimeLength(database.fetchListOfHoursForPublisherNoRollover(formattedDate, pubs.getInt(pubs.getColumnIndex(Publisher._ID)), "month"), getActivity().getApplicationContext().getString(R.string.hours_label), getActivity().getApplicationContext().getString(R.string.minutes_label), PrefUtils.shouldShowMinutesInTotals(getActivity()))); /** Fill all the publication amounts */ Cursor lit = database.fetchTypesOfLiteratureCountsForPublisher(pubs.getInt(pubs.getColumnIndex(Publisher._ID)), formattedDate, "month"); for(lit.moveToFirst();!lit.isAfterLast();lit.moveToNext()) { if(lit.getInt(2) > 0) { retVal.append("\n" + lit.getString(lit.getColumnIndex(LiteratureType.NAME)) + ": "); retVal.append(String.valueOf(lit.getInt(2))); } } lit.close(); /** Now for the other entry types */ Cursor entryTypes = database.fetchEntryTypeCountsForPublisher(pubs.getInt(pubs.getColumnIndex(Publisher._ID)), formattedDate, "month"); for(entryTypes.moveToFirst();!entryTypes.isAfterLast();entryTypes.moveToNext()) { if(entryTypes.getInt(2) > 0) { retVal.append("\n" + entryTypes.getString(lit.getColumnIndex(EntryType.NAME)) + ": "); if(entryTypes.getInt(entryTypes.getColumnIndex(EntryType._ID)) == MinistryDatabase.ID_RBC) retVal.append(TimeUtils.getTimeLength(database.fetchListOfRBCHoursForPublisher(formattedDate, pubs.getInt(pubs.getColumnIndex(Publisher._ID)), "month"), getActivity().getApplicationContext().getString(R.string.hours_label), getActivity().getApplicationContext().getString(R.string.minutes_label), PrefUtils.shouldShowMinutesInTotals(getActivity()))); else retVal.append(String.valueOf(entryTypes.getInt(2))); } } entryTypes.close(); } database.close(); return retVal.toString(); } @SuppressWarnings("deprecation") @TargetApi(Build.VERSION_CODES.LOLLIPOP) @Override public boolean onOptionsItemSelected(MenuItem item) { switch (item.getItemId()) { case R.id.summary_send_report: Intent share = new Intent(android.content.Intent.ACTION_SEND); share.setType("text/plain"); share.setFlags((Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) ? Intent.FLAG_ACTIVITY_NEW_DOCUMENT : Intent.FLAG_ACTIVITY_CLEAR_WHEN_TASK_RESET); share.putExtra(android.content.Intent.EXTRA_TEXT, populateShareString()); share.putExtra(android.content.Intent.EXTRA_SUBJECT, buttonFormat.format(monthPicked.getTime()).toString() + " " + monthPicked.get(Calendar.YEAR)); startActivity(Intent.createChooser(share, getResources().getString(R.string.menu_send_report))); return true; case R.id.summary_add_item: ((MainActivity)getActivity()).goToNavDrawerItem(MainActivity.TIME_ENTRY_ID); return true; } return super.onOptionsItemSelected(item); } public void updatePublisherSummaryYearly() { is_month_summary = false; serviceYear.set(monthPicked.get(Calendar.YEAR), monthPicked.get(Calendar.MONTH), 1); if(serviceYear.get(Calendar.MONTH) < SERVICE_YEAR_START_MONTH) { serviceYear.set(serviceYear.get(Calendar.YEAR) -1, SERVICE_YEAR_START_MONTH, 1); } else { serviceYear.set(serviceYear.get(Calendar.YEAR), SERVICE_YEAR_START_MONTH, 1); } calculateSummaryValues(is_month_summary); refresh(DIRECTION_CHANGE_TITLES); } public void updatePublisherSummaryMonthly() { is_month_summary = true; monthPicked.set(serviceYear.get(Calendar.YEAR), serviceYear.get(Calendar.MONTH), 1); calculateSummaryValues(is_month_summary); refresh(DIRECTION_CHANGE_TITLES); } private void loadPublisherAdapter() { int initialSelection = 0; // Add new publisher item pubsAdapter.addItem(new NavDrawerMenuItem(getActivity().getApplicationContext().getString(R.string.menu_add_new_publisher), R.drawable.ic_drawer_publisher, MinistryDatabase.CREATE_ID)); database.openWritable(); final Cursor cursor = database.fetchActivePublishers(); while(cursor.moveToNext()) { if(cursor.getInt(cursor.getColumnIndex(Publisher._ID)) == publisherId) initialSelection = pubsAdapter.getCount(); pubsAdapter.addItem(new NavDrawerMenuItem(cursor.getString(cursor.getColumnIndex(Publisher.NAME)), R.drawable.ic_drawer_publisher, cursor.getInt(cursor.getColumnIndex(Publisher._ID)))); } cursor.close(); database.close(); pubsAdapter.setDropDownViewResource(R.layout.simple_spinner_dropdown_item); publishers.setAdapter(pubsAdapter); if(initialSelection != 0) publishers.setSelection(initialSelection); publishers.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() { @Override public void onItemSelected(AdapterView<?> adapterView, View view, int position, long id) { if(pubsAdapter.getItem(position).getID() == MinistryDatabase.CREATE_ID) { PublisherNewDialogFragment f = PublisherNewDialogFragment.newInstance(); f.setPositiveButton(new PublisherNewDialogFragmentListener() { @Override public void setPositiveButton(int _ID, String _name) { pubsAdapter.addItem(new NavDrawerMenuItem(_name, R.drawable.ic_drawer_publisher, _ID)); publishers.setSelection(pubsAdapter.getCount() - 1); } }); f.show(fm, PublisherNewDialogFragment.TAG); } else { setPublisherId(pubsAdapter.getItem(position).getID()); PrefUtils.setPublisherId(getActivity().getApplicationContext(), pubsAdapter.getItem(position).getID()); calculateSummaryValues(is_month_summary); animatePage(DIRECTION_NO_CHANGE); } } @Override public void onNothingSelected(AdapterView<?> parent) { } }); } }