Java tutorial
/** * ORcycle, Copyright 2014, 2015, PSU Transportation, Technology, and People Lab. * * @author Robin Murray <robin5@pdx.edu> (code) * @author Miguel Figliozzi <figliozzi@pdx.edu> and ORcycle team (general app * design and features, report questionnaires and new ORcycle features) * * For more information on the project, go to * http://www.pdx.edu/transportation-lab/orcycle and http://www.pdx.edu/transportation-lab/app-development * * Updated/modified for Oregon pilot study and app deployment. * * ORcycle 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 3 of the License, or any later version. * ORcycle 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 * ORcycle. If not, see <http://www.gnu.org/licenses/>. * */ package edu.pdx.cecs.orcycle; import android.content.ComponentName; import android.content.Intent; import android.provider.Settings; import android.support.v4.app.Fragment; import android.util.Log; public class Controller { private static final String MODULE_TAG = "Controller"; private static final String COM_ANDROID_SETTINGS = "com.android.settings"; private static final String COM_ANDROID_SETTINGS_SECURITY_SETTINGS = "com.android.settings.SecuritySettings"; public static final int DSA_ID_WELCOME_DIALOG_ID = 1000; public static final int DSA_ID_WELCOME_DIALOG_CONTINUE = 1001; public static final int DSA_ID_WELCOME_DIALOG_INSTRUCTIONS = 1002; public static final int DSA_ID_WELCOME_BACK_FROM_INSTRUCTIONS = 1003; public static final int DSA_ID_USER_PROFILE_DIALOG_ID = 2000; public static final int DSA_ID_USER_PROFILE_DIALOG_OK = 2001; public static final int DSA_ID_USER_PROFILE_DIALOG_LATER = 2002; public static final int DSA_ID_HOW_TO_DIALOG_ID = 3000; public static final int DSA_ID_HOW_TO_DIALOG_CONTINUE = 3001; private static int nextHowToScreen; private static final int LAST_HOW_TO_SCREEN = 2; public Controller() { nextHowToScreen = 0; } // ********************************************************************************* // * FragmentMainInput Transitions // ********************************************************************************* public void finish(FragmentMainInput f) { finish(f, -1, -1); } public void finish(FragmentMainInput f, long tripId) { finish(f, tripId, -1); } public void finish(FragmentMainInput f, long tripId, long noteId) { switch (f.getResult()) { case UNDEFINED: Log.e(MODULE_TAG, "Fragment result value not set"); break; case SAVE_TRIP: transitionToTripQuestionsActivity(f, tripId); break; case REPORT: transitionToReportTypeActivity(f, tripId, noteId); break; case NO_GPS: transitionToLocationServices(f); break; case GET_USER_INFO: transitionToUserInfoActivity(f); break; case SHOW_INSTRUCTIONS: transitionToORcycle(f); break; case SHOW_WELCOME: transitionToDialogWelcome(f); break; case SHOW_DIALOG_USER_INFO: transitionToDialogUserInfo(f); break; case SHOW_TUTORIAL: transitionToTutorialActivity(f); break; } } public boolean setNextHowToScreen() { if (nextHowToScreen == LAST_HOW_TO_SCREEN) { return false; } else { ++nextHowToScreen; return true; } } private void transitionToTripQuestionsActivity(FragmentMainInput f, long tripId) { Intent intent = new Intent(f.getActivity(), TripQuestionsActivity.class); intent.putExtra(TripQuestionsActivity.EXTRA_TRIP_ID, tripId); f.startActivity(intent); f.getActivity().overridePendingTransition(R.anim.slide_in_right, R.anim.slide_out_left); f.getActivity().finish(); } private void transitionToReportTypeActivity(FragmentMainInput f, long tripId, long noteId) { Intent intent = new Intent(f.getActivity(), ReportTypeActivity.class); intent.putExtra(NoteQuestionsActivity.EXTRA_NOTE_ID, noteId); intent.putExtra(NoteQuestionsActivity.EXTRA_NOTE_SOURCE, NoteQuestionsActivity.EXTRA_NOTE_SOURCE_MAIN_INPUT); intent.putExtra(NoteQuestionsActivity.EXTRA_TRIP_ID, tripId); intent.putExtra(NoteQuestionsActivity.EXTRA_TRIP_SOURCE, NoteQuestionsActivity.EXTRA_TRIP_SOURCE_MAIN_INPUT); f.startActivity(intent); } private void transitionToLocationServices(Fragment f) { final ComponentName toLaunch = new ComponentName(COM_ANDROID_SETTINGS, COM_ANDROID_SETTINGS_SECURITY_SETTINGS); final Intent intent = new Intent(Settings.ACTION_LOCATION_SOURCE_SETTINGS); intent.addCategory(Intent.CATEGORY_LAUNCHER); intent.setComponent(toLaunch); intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK); f.startActivityForResult(intent, 0); } private void transitionToUserInfoActivity(FragmentMainInput f) { // Create intent to come back to this activity Intent intent = new Intent(f.getActivity(), UserInfoActivity.class); intent.putExtra(UserInfoActivity.EXTRA_PREVIOUS_ACTIVITY, UserInfoActivity.EXTRA_FRAGMENT_MAIN_INPUT); // Exit this activity f.startActivity(intent); f.getActivity().overridePendingTransition(R.anim.slide_in_right, R.anim.slide_out_left); f.getActivity().finish(); } private void transitionToORcycle(FragmentMainInput f) { //Intent intent = new Intent(Intent.ACTION_VIEW, Uri.parse(MyApplication.ORCYCLE_URI)); //startActivityForResult(intent, DSA_ID_WELCOME_DIALOG_ID); String title = f.getResources().getString(R.string.title_orcycle_instructions); Intent intent = new Intent(f.getActivity(), WebViewActivity.class); intent.putExtra(WebViewActivity.EXTRA_URL, MyApplication.ORCYCLE_URI); intent.putExtra(WebViewActivity.EXTRA_TITLE, title); f.startActivityForResult(intent, DSA_ID_WELCOME_DIALOG_ID); f.getActivity().overridePendingTransition(R.anim.slide_in_right, R.anim.slide_out_left); } private void transitionToDialogWelcome(FragmentMainInput f) { Intent intent = new Intent(f.getActivity(), DsaDialogActivity.class); String title = f.getResources().getString(R.string.fmi_welcome_title); String message = f.getResources().getString(R.string.fmi_welcome_message); String positiveText = f.getResources().getString(R.string.fmi_welcome_continue); String negativeText = f.getResources().getString(R.string.fmi_welcome_instructions); intent.putExtra(DsaDialogActivity.EXTRA_DIALOG_ID, DSA_ID_WELCOME_DIALOG_ID); intent.putExtra(DsaDialogActivity.EXTRA_TITLE, title); intent.putExtra(DsaDialogActivity.EXTRA_MESSAGE, message); intent.putExtra(DsaDialogActivity.EXTRA_POSITIVE_TEXT, positiveText); intent.putExtra(DsaDialogActivity.EXTRA_POSITIVE_ID, DSA_ID_WELCOME_DIALOG_CONTINUE); intent.putExtra(DsaDialogActivity.EXTRA_NEGATIVE_TEXT, negativeText); intent.putExtra(DsaDialogActivity.EXTRA_NEGATIVE_ID, DSA_ID_WELCOME_DIALOG_INSTRUCTIONS); f.startActivity(intent); } private void transitionToDialogHowTo(FragmentMainInput f) { Intent intent = new Intent(f.getActivity(), DsaDialogActivity.class); String title = f.getResources().getString(R.string.fmi_how_to_title); String message = f.getResources().getString(R.string.fmi_how_to_message); String positiveText = f.getResources().getString(R.string.fmi_how_to_continue); intent.putExtra(DsaDialogActivity.EXTRA_DIALOG_ID, DSA_ID_HOW_TO_DIALOG_ID); intent.putExtra(DsaDialogActivity.EXTRA_TITLE, title); intent.putExtra(DsaDialogActivity.EXTRA_MESSAGE, message); intent.putExtra(DsaDialogActivity.EXTRA_POSITIVE_TEXT, positiveText); intent.putExtra(DsaDialogActivity.EXTRA_POSITIVE_ID, DSA_ID_HOW_TO_DIALOG_CONTINUE); switch (nextHowToScreen) { default: intent.putExtra(DsaDialogActivity.EXTRA_IMAGE_ID, R.drawable.tutorial_start_trip); break; case 1: intent.putExtra(DsaDialogActivity.EXTRA_IMAGE_ID, R.drawable.tutorial_trips); break; case 2: intent.putExtra(DsaDialogActivity.EXTRA_IMAGE_ID, R.drawable.tutorial_reports); break; } f.startActivity(intent); } private void transitionToTutorialActivity(FragmentMainInput f) { Intent intent = new Intent(f.getActivity(), TutorialActivity.class); intent.putExtra(TutorialActivity.EXTRA_PREVIOUS_ACTIVITY, TutorialActivity.EXTRA_PREVIOUS_ACTIVITY_MAIN_INPUT); f.startActivity(intent); } private void transitionToDialogUserInfo(FragmentMainInput f) { Intent intent = new Intent(f.getActivity(), DsaDialogActivity.class); String title = f.getResources().getString(R.string.fmi_query_user_profile_title); String message = f.getResources().getString(R.string.fmi_query_user_profile); String positiveText = f.getResources().getString(R.string.fmi_qup_dialog_ok); String negativeText = f.getResources().getString(R.string.fmi_qup_dialog_later); intent.putExtra(DsaDialogActivity.EXTRA_DIALOG_ID, DSA_ID_USER_PROFILE_DIALOG_ID); intent.putExtra(DsaDialogActivity.EXTRA_TITLE, title); intent.putExtra(DsaDialogActivity.EXTRA_MESSAGE, message); intent.putExtra(DsaDialogActivity.EXTRA_POSITIVE_TEXT, positiveText); intent.putExtra(DsaDialogActivity.EXTRA_POSITIVE_ID, DSA_ID_USER_PROFILE_DIALOG_OK); intent.putExtra(DsaDialogActivity.EXTRA_NEGATIVE_TEXT, negativeText); intent.putExtra(DsaDialogActivity.EXTRA_NEGATIVE_ID, DSA_ID_USER_PROFILE_DIALOG_LATER); f.startActivity(intent); } }