Search in sources :

Example 1 with AndroidPermissions

use of com.alexstyl.specialdates.permissions.AndroidPermissions in project Memento-Calendar by alexstyl.

the class DailyReminderFragment method onCreate.

@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    Context context = getActivity().getApplicationContext();
    scheduler = new DailyReminderScheduler(AlarmManagerCompat.from(context), context);
    AppComponent applicationModule = ((MementoApplication) getActivity().getApplication()).getApplicationModule();
    applicationModule.inject(this);
    addPreferencesFromResource(R.xml.preference_dailyreminder);
    permissionChecker = new AndroidPermissions(tracker, getActivity());
    enablePreference = findPreference(R.string.key_daily_reminder);
    preferences = DailyReminderPreferences.newInstance(getActivity());
    enablePreference.setOnPreferenceChangeListener(new OnPreferenceChangeListener() {

        @Override
        public boolean onPreferenceChange(Preference preference, Object newValue) {
            boolean isEnabled = (boolean) newValue;
            preferences.setEnabled(isEnabled);
            if (isEnabled) {
                analytics.trackDailyReminderEnabled();
                scheduler.setupReminder(preferences);
            } else {
                analytics.trackDailyReminderDisabled();
                scheduler.cancelReminder();
            }
            return true;
        }
    });
    ringtonePreference = findPreference(R.string.key_daily_reminder_ringtone);
    ringtonePreference.setOnPreferenceClickListener(new Preference.OnPreferenceClickListener() {

        @Override
        public boolean onPreferenceClick(Preference preference) {
            if (permissionChecker.canReadExternalStorage()) {
                // the permission exists. Let the system handle the event
                return false;
            } else {
                requestPermissions(new String[] { Manifest.permission.READ_EXTERNAL_STORAGE }, EXTERNAL_STORAGE_REQUEST_CODE);
                return true;
            }
        }
    });
    ringtonePreference.setOnPreferenceChangeListener(new Preference.OnPreferenceChangeListener() {

        @Override
        public boolean onPreferenceChange(Preference preference, Object newValue) {
            updateRingtoneSummaryFor(Uri.parse((String) newValue));
            return true;
        }
    });
    timePreference = findPreference(R.string.key_daily_reminder_time);
    timePreference.setOnPreferenceChangeListener(new OnPreferenceChangeListener() {

        @Override
        public boolean onPreferenceChange(Preference preference, Object newValue) {
            int[] time = (int[]) newValue;
            TimeOfDay timeOfDay = new TimeOfDay(time[0], time[1]);
            updateTimeSet(timeOfDay);
            analytics.trackDailyReminderTimeUpdated(timeOfDay);
            preferences.setDailyReminderTime(timeOfDay);
            scheduler.updateReminderTime(timeOfDay);
            return true;
        }
    });
    hideVibratorSettingIfNotPresent();
}
Also used : Context(android.content.Context) TimeOfDay(com.alexstyl.specialdates.TimeOfDay) MementoApplication(com.alexstyl.specialdates.MementoApplication) OnPreferenceChangeListener(android.preference.Preference.OnPreferenceChangeListener) AndroidPermissions(com.alexstyl.specialdates.permissions.AndroidPermissions) CheckBoxPreference(android.preference.CheckBoxPreference) TimePreference(com.alexstyl.android.preferences.widget.TimePreference) Preference(android.preference.Preference) AppComponent(com.alexstyl.specialdates.AppComponent) DailyReminderScheduler(com.alexstyl.specialdates.dailyreminder.DailyReminderScheduler) OnPreferenceChangeListener(android.preference.Preference.OnPreferenceChangeListener)

Example 2 with AndroidPermissions

use of com.alexstyl.specialdates.permissions.AndroidPermissions in project Memento-Calendar by alexstyl.

the class AddEventActivity method onCreate.

@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    overridePendingTransition(R.anim.slide_in_from_below, R.anim.stay);
    setContentView(R.layout.activity_add_event);
    AppComponent applicationModule = ((MementoApplication) getApplication()).getApplicationModule();
    applicationModule.inject(this);
    analytics.trackScreen(Screen.ADD_EVENT);
    filePathProvider = new FilePathProvider(this);
    MementoToolbar toolbar = Views.findById(this, R.id.memento_toolbar);
    setSupportActionBar(toolbar);
    toolbar.displayNavigationIconAsClose();
    AvatarPickerView avatarView = Views.findById(this, R.id.add_event_avatar);
    RecyclerView eventsView = Views.findById(this, R.id.add_event_events);
    eventsView.setLayoutManager(new LinearLayoutManager(this, LinearLayoutManager.VERTICAL, false));
    eventsView.setHasFixedSize(true);
    ContactDetailsAdapter adapter = new ContactDetailsAdapter(contactDetailsListener);
    eventsView.setAdapter(adapter);
    AddEventContactEventViewModelFactory factory = new AddEventContactEventViewModelFactory(new AndroidDateLabelCreator(this));
    AddEventViewModelFactory addEventFactory = new AddEventViewModelFactory(strings);
    ContactEventsFetcher contactEventsFetcher = new ContactEventsFetcher(getSupportLoaderManager(), this, peopleEventsProvider, factory, addEventFactory);
    WriteableAccountsProvider accountsProvider = WriteableAccountsProvider.from(this);
    ContactOperations contactOperations = new ContactOperations(getContentResolver(), accountsProvider, peopleEventsProvider, ShortDateLabelCreator.INSTANCE);
    MessageDisplayer messageDisplayer = new ToastDisplayer(getApplicationContext());
    ContactOperationsExecutor operationsExecutor = new ContactOperationsExecutor(getContentResolver(), tracker);
    ImageDecoder imageDecoder = new ImageDecoder();
    AvatarPresenter avatarPresenter = new AvatarPresenter(imageLoader, avatarView, createToolbarAnimator(toolbar), imageDecoder);
    EventsPresenter eventsPresenter = new EventsPresenter(contactEventsFetcher, adapter, factory, addEventFactory);
    presenter = new AddContactEventsPresenter(analytics, avatarPresenter, eventsPresenter, contactOperations, messageDisplayer, operationsExecutor);
    permissionChecker = new AndroidPermissions(tracker, this);
    presenter.startPresenting(new OnCameraClickedListener() {

        @RequiresApi(api = Build.VERSION_CODES.M)
        @Override
        public void onPictureRetakenRequested() {
            if (permissionChecker.canReadExternalStorage()) {
                BottomSheetPicturesDialog.includeClearImageOption().show(getSupportFragmentManager(), "picture_pick");
            } else {
                requestExternalStoragePermission();
            }
        }

        @RequiresApi(api = Build.VERSION_CODES.M)
        @Override
        public void onNewPictureTakenRequested() {
            if (permissionChecker.canReadExternalStorage()) {
                BottomSheetPicturesDialog.newInstance().show(getSupportFragmentManager(), "picture_pick");
            } else {
                requestExternalStoragePermission();
            }
        }

        @RequiresApi(api = Build.VERSION_CODES.M)
        private void requestExternalStoragePermission() {
            requestPermissions(new String[] { Manifest.permission.READ_EXTERNAL_STORAGE }, CODE_PERMISSION_EXTERNAL_STORAGE);
        }
    });
}
Also used : LinearLayoutManager(android.support.v7.widget.LinearLayoutManager) MementoToolbar(com.alexstyl.specialdates.ui.widget.MementoToolbar) AndroidDateLabelCreator(com.alexstyl.specialdates.date.AndroidDateLabelCreator) MementoApplication(com.alexstyl.specialdates.MementoApplication) ImageDecoder(com.alexstyl.specialdates.images.ImageDecoder) AvatarPickerView(com.alexstyl.specialdates.addevent.ui.AvatarPickerView) AndroidPermissions(com.alexstyl.specialdates.permissions.AndroidPermissions) AppComponent(com.alexstyl.specialdates.AppComponent) RequiresApi(android.support.annotation.RequiresApi) RecyclerView(android.support.v7.widget.RecyclerView)

Example 3 with AndroidPermissions

use of com.alexstyl.specialdates.permissions.AndroidPermissions in project Memento-Calendar by alexstyl.

the class DailyReminderIntentService method onCreate.

@Override
public void onCreate() {
    super.onCreate();
    AppComponent applicationModule = ((MementoApplication) getApplication()).getApplicationModule();
    applicationModule.inject(this);
    bankHolidaysPreferences = AndroidBankHolidaysPreferences.newInstance(this);
    checker = new AndroidPermissions(tracker, this);
}
Also used : AndroidPermissions(com.alexstyl.specialdates.permissions.AndroidPermissions) MementoApplication(com.alexstyl.specialdates.MementoApplication) AppComponent(com.alexstyl.specialdates.AppComponent)

Aggregations

AppComponent (com.alexstyl.specialdates.AppComponent)3 MementoApplication (com.alexstyl.specialdates.MementoApplication)3 AndroidPermissions (com.alexstyl.specialdates.permissions.AndroidPermissions)3 Context (android.content.Context)1 CheckBoxPreference (android.preference.CheckBoxPreference)1 Preference (android.preference.Preference)1 OnPreferenceChangeListener (android.preference.Preference.OnPreferenceChangeListener)1 RequiresApi (android.support.annotation.RequiresApi)1 LinearLayoutManager (android.support.v7.widget.LinearLayoutManager)1 RecyclerView (android.support.v7.widget.RecyclerView)1 TimePreference (com.alexstyl.android.preferences.widget.TimePreference)1 TimeOfDay (com.alexstyl.specialdates.TimeOfDay)1 AvatarPickerView (com.alexstyl.specialdates.addevent.ui.AvatarPickerView)1 DailyReminderScheduler (com.alexstyl.specialdates.dailyreminder.DailyReminderScheduler)1 AndroidDateLabelCreator (com.alexstyl.specialdates.date.AndroidDateLabelCreator)1 ImageDecoder (com.alexstyl.specialdates.images.ImageDecoder)1 MementoToolbar (com.alexstyl.specialdates.ui.widget.MementoToolbar)1