package com.pwittchen.eegreader.activity.controller; import android.app.Activity; import android.app.ProgressDialog; import android.content.Intent; import android.net.Uri; import android.os.Handler; import android.speech.tts.TextToSpeech; import android.text.TextUtils; import android.view.View; import android.widget.CompoundButton; import android.widget.Toast; import com.pwittchen.eegreader.R; import com.pwittchen.eegreader.activity.contract.ActivitySettingsContract; import com.pwittchen.eegreader.database.DatabaseHandler; import com.pwittchen.eegreader.database.asynctask.DeleteAllSignalsTask; import com.pwittchen.eegreader.dialog.PromptDialog; import com.pwittchen.eegreader.generics.GenericApplication; import com.pwittchen.eegreader.menu.item.MenuItemHome; import com.pwittchen.eegreader.preferences.SettingsSharedPreferences; import com.pwittchen.eegreader.utils.StringUtils; import static com.pwittchen.eegreader.utils.LogUtils.makeLogTag; public class SettingsController { private static final String TAG = makeLogTag(SettingsController.class); private ActivitySettingsContract activity; private SettingsSharedPreferences settingsSharedPreferences = new SettingsSharedPreferences(); public SettingsController(ActivitySettingsContract activity) { setActivity(activity); setOptionsMenu(); setCheckboxes(); setListeners(); setSavedSignalsCount(); } private void setSavedSignalsCount() { activity.setSavedSignalsCount(StringUtils.getStringFromResources(R.string.number_of_saved_signals) + " " + getSavedSignalsCount()); } public void resetSavedSignalsCount() { activity.setSavedSignalsCount(StringUtils.getStringFromResources(R.string.number_of_saved_signals) + " 0"); } public void resetSavedSignalsCountWithDelay(int delayInMilSeconds) { new Handler().postDelayed(new Runnable() { @Override public void run() { resetSavedSignalsCount(); } }, delayInMilSeconds); } private void setOptionsMenu() { activity.getOptionsMenu().put(android.R.id.home, new MenuItemHome()); } private void setCheckboxes() { activity.getCbKeepScreenTurnedOn().setChecked(settingsSharedPreferences.get(SettingsSharedPreferences.keepScreenTurnedOn)); activity.getCbSaveEegAndEyeBlinkingData().setChecked(settingsSharedPreferences.get(SettingsSharedPreferences.saveEegAndEyeBlinkingData)); activity.getCbEnableVoiceFeedback().setChecked(settingsSharedPreferences.get(SettingsSharedPreferences.enableVoiceFeedback)); } private void setListeners() { setKeepScreenTurnedOnCheckedListener(); setSaveEegAndEyeBlinkingDataCheckedListener(); setEnableVoiceFeedbackCheckedListener(); setAppAuthorNoteOnClickListener(); } private void setKeepScreenTurnedOnCheckedListener() { activity.getCbKeepScreenTurnedOn().setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() { @Override public void onCheckedChanged(CompoundButton compoundButton, boolean checked) { settingsSharedPreferences.put(SettingsSharedPreferences.keepScreenTurnedOn, checked); } }); } private void setSaveEegAndEyeBlinkingDataCheckedListener() { activity.getCbSaveEegAndEyeBlinkingData().setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() { @Override public void onCheckedChanged(CompoundButton compoundButton, boolean checked) { settingsSharedPreferences.put(SettingsSharedPreferences.saveEegAndEyeBlinkingData, checked); } }); } private void setAppAuthorNoteOnClickListener() { activity.getTvAppAuthorNote().setOnClickListener(new View.OnClickListener() { @Override public void onClick(View view) { Intent intent = new Intent(Intent.ACTION_VIEW, Uri.parse(StringUtils.getStringFromResources(R.string.app_author_website))); activity.callStartActivity(intent); } }); } private String getVoiceFeedbackActivatedString() { return StringUtils.getStringFromResources(R.string.voice_feedback_activated); } private void setEnableVoiceFeedbackCheckedListener() { activity.getCbEnableVoiceFeedback().setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() { @Override public void onCheckedChanged(CompoundButton compoundButton, boolean checked) { settingsSharedPreferences.put(SettingsSharedPreferences.enableVoiceFeedback, checked); if (checked) { activity.getTextToSpeech().speak(getVoiceFeedbackActivatedString(), TextToSpeech.QUEUE_FLUSH, null); } } }); } public void clearDataOnDevice() { PromptDialog clearDataDialog = new PromptDialog(); Runnable runnable = new Runnable() { @Override public void run() { new DeleteAllSignalsTask(getSettingsControllerInstance()).execute(); } }; clearDataDialog.activity((Activity) activity).createDialog(R.string.clear_data_question, runnable).show(); } public void showProgressDialog(String title, String message) { activity.setProgressDialog(ProgressDialog.show((Activity) activity, title, message)); } private boolean isProgressDialogShowing() { return (activity.getProgressDialog() != null && activity.getProgressDialog().isShowing()); } public void dismissProgressDialogWithDelay(final int delayInMilSeconds, final String toastMessage) { if (isProgressDialogShowing()) { new Handler().postDelayed(new Runnable() { @Override public void run() { activity.getProgressDialog().dismiss(); if (!TextUtils.isEmpty(toastMessage)) { Toast.makeText(GenericApplication.getContext(), toastMessage, Toast.LENGTH_LONG).show(); } } }, delayInMilSeconds); } } public void setActivity(ActivitySettingsContract activity) { this.activity = activity; } public int getSavedSignalsCount() { DatabaseHandler databaseHandler = new DatabaseHandler(GenericApplication.getContext()); return databaseHandler.getSignalTableController().getCount(); } private SettingsController getSettingsControllerInstance() { return this; } }