Android Open Source - Tacere Service State Manager






From Project

Back to project page Tacere.

License

The source code is released under:

MIT License

If you think the Android project Tacere listed in this page is inappropriate, such as containing malicious code/tools or violating the copyright, please email info at java2s dot com, thanks.

Java Source Code

/*
 * Copyright (c) 2014 Jonathan Nelson//from  ww w.  j  a v a2 s .c  o m
 * Released under the BSD license.  For details see the COPYING file.
 */

package org.ciasaboark.tacere.manager;

import android.content.Context;

import org.ciasaboark.tacere.event.EventInstance;
import org.ciasaboark.tacere.prefs.Prefs;

public class ServiceStateManager {
    @SuppressWarnings("unused")
    public static final String SERVICE_STATE_KEY = "serviceState";
    private static final String SERVICE_STATE_TIMESTAMP_KEY = "serviceStateTimestampKey";
    private static final String TAG = "StateManager";
    private static ServiceStateManager instance = null;
    private static EventInstance activeEvent = null;
    private final Prefs prefs;

    private ServiceStateManager(Context ctx) {
        this.prefs = new Prefs(ctx);
    }

    public static ServiceStateManager getInstance(Context ctx) {
        if (ctx == null) {
            throw new IllegalArgumentException("Context can not be null");
        }

        if (instance == null) {
            instance = new ServiceStateManager(ctx);
        }

        return instance;
    }

    public void resetServiceState() {
        activeEvent = null;
        prefs.getBaseSharedPreferences().edit().remove(SERVICE_STATE_TIMESTAMP_KEY).commit();
        setServiceState(ServiceStates.NOT_ACTIVE);
    }

    public void setQuickSilenceActive(long endTimestamp) throws IllegalStateException {
        if (isEventActive()) {
            throw new IllegalArgumentException("Can not transition to quicksilence while an event is still active");
        }
        activeEvent = null;
        setServiceState(ServiceStates.QUICKSILENCE);
        storeEndTimeStamp(endTimestamp);
    }

    public boolean isEventActive() {
        return activeEvent != null &&
                ServiceStates.EVENT_ACTIVE.equals(getServiceState());
    }

    private void storeEndTimeStamp(long timestamp) {
        prefs.storePreference(SERVICE_STATE_TIMESTAMP_KEY, timestamp);
    }

    private String getServiceState() {
        String currentState = tryReadServiceState();
        if (currentState == null) {
            currentState = ServiceStates.NOT_ACTIVE;
        }
        return currentState;
    }

    private void setServiceState(String state) {
        if (!state.equals(ServiceStates.QUICKSILENCE) && !state.equals(ServiceStates.EVENT_ACTIVE)
                & !state.equals(ServiceStates.NOT_ACTIVE)) {
            throw new IllegalArgumentException("unknown state: " + state);
        }

        prefs.storePreference(SERVICE_STATE_KEY, state);
    }

    private String tryReadServiceState() {
        String storedString = null;
        try {
            storedString = prefs.readString(SERVICE_STATE_KEY);
        } catch (IllegalArgumentException e) {
            //the service state might not have been stored yet, this is fine
        }
        return storedString;
    }

    public long getEndTimeStamp() {
        long endTimeStamp = prefs.getBaseSharedPreferences().getLong(SERVICE_STATE_TIMESTAMP_KEY, 0);
        return endTimeStamp;
    }

    public boolean isEventNotActive() {
        return !isEventActive();
    }

    public boolean isServiceNotActive() {
        return !isServiceActive();
    }

    public boolean isServiceActive() {
        return ServiceStates.NOT_ACTIVE.equals(getServiceState());
    }

    public boolean isQuicksilenceNotActive() {
        return !isQuicksilenceActive();
    }

    public boolean isQuicksilenceActive() {
        return ServiceStates.QUICKSILENCE.equals(getServiceState());
    }

    public long getActiveEventId() {
        long id = -1;
        if (activeEvent != null) {
            id = activeEvent.getId();
        }
        return id;
    }

    public EventInstance getActiveEvent() {
        return activeEvent;
    }

    public void setActiveEvent(EventInstance event) throws IllegalStateException {
        if (event == null) {
            throw new IllegalArgumentException("event can not be null");
        }
        if (isQuicksilenceActive()) {
            throw new IllegalStateException("An event can not become active while quicksilence is still active");
        }

        activeEvent = event;
        prefs.storePreference(SERVICE_STATE_TIMESTAMP_KEY, event.getEffectiveEnd());
        setServiceState(ServiceStates.EVENT_ACTIVE);
    }

    public class ServiceStates {
        public static final String QUICKSILENCE = "quickSilence";
        public static final String EVENT_ACTIVE = "active";
        public static final String NOT_ACTIVE = "notActive";
    }
}




Java Source Code List

.EventInstanceTest.java
com.viewpagerindicator.BuildConfig.java
com.viewpagerindicator.BuildConfig.java
com.viewpagerindicator.CirclePageIndicator.java
com.viewpagerindicator.IconPageIndicator.java
com.viewpagerindicator.IconPagerAdapter.java
com.viewpagerindicator.IcsLinearLayout.java
com.viewpagerindicator.LinePageIndicator.java
com.viewpagerindicator.PageIndicator.java
com.viewpagerindicator.TabPageIndicator.java
com.viewpagerindicator.TitlePageIndicator.java
com.viewpagerindicator.UnderlinePageIndicator.java
org.ciasaboark.tacere.ApplicationTest.java
org.ciasaboark.tacere.Tacere.java
org.ciasaboark.tacere.activity.AboutActivity.java
org.ciasaboark.tacere.activity.AboutLicenseActivity.java
org.ciasaboark.tacere.activity.AdvancedSettingsActivity.java
org.ciasaboark.tacere.activity.BetaReleaseActivity.java
org.ciasaboark.tacere.activity.BetaSettingsActivity.java
org.ciasaboark.tacere.activity.BugReportActivity.java
org.ciasaboark.tacere.activity.DonationActivityTest.java
org.ciasaboark.tacere.activity.LicenseCheckWrapper.java
org.ciasaboark.tacere.activity.MainActivity.java
org.ciasaboark.tacere.activity.ProUpgradeActivity.java
org.ciasaboark.tacere.activity.SelectCalendarsActivity.java
org.ciasaboark.tacere.activity.SettingsActivity.java
org.ciasaboark.tacere.activity.ShowUpdatesActivity.java
org.ciasaboark.tacere.activity.TutorialActivity.java
org.ciasaboark.tacere.activity.fragment.AdvancedSettingsFragment.java
org.ciasaboark.tacere.activity.fragment.BetaSettingsFragment.java
org.ciasaboark.tacere.activity.fragment.EventDetailsFragment.java
org.ciasaboark.tacere.activity.fragment.MainSettingsFragment.java
org.ciasaboark.tacere.activity.fragment.SelectCalendarsFragment.java
org.ciasaboark.tacere.activity.fragment.TutorialCrashReporterFragment.java
org.ciasaboark.tacere.activity.fragment.TutorialEndFragment.java
org.ciasaboark.tacere.activity.fragment.TutorialEventListFragment.java
org.ciasaboark.tacere.activity.fragment.TutorialProVersionFragment.java
org.ciasaboark.tacere.activity.fragment.TutorialRingerPriorityFragment.java
org.ciasaboark.tacere.activity.fragment.TutorialWelcomeFragment.java
org.ciasaboark.tacere.adapter.EventCursorAdapter.java
org.ciasaboark.tacere.billing.Authenticator.java
org.ciasaboark.tacere.billing.google.Base64DecoderException.java
org.ciasaboark.tacere.billing.google.Base64.java
org.ciasaboark.tacere.billing.google.IabException.java
org.ciasaboark.tacere.billing.google.IabHelper.java
org.ciasaboark.tacere.billing.google.IabResult.java
org.ciasaboark.tacere.billing.google.Inventory.java
org.ciasaboark.tacere.billing.google.Purchase.java
org.ciasaboark.tacere.billing.google.Security.java
org.ciasaboark.tacere.billing.google.SkuDetails.java
org.ciasaboark.tacere.bug.CrashReportManager.java
org.ciasaboark.tacere.converter.DateConverterTest.java
org.ciasaboark.tacere.converter.DateConverter.java
org.ciasaboark.tacere.converter.TimeConverter.java
org.ciasaboark.tacere.database.Columns.java
org.ciasaboark.tacere.database.DataSetManager.java
org.ciasaboark.tacere.database.DatabaseInterface.java
org.ciasaboark.tacere.database.EventDatabaseOpenHelper.java
org.ciasaboark.tacere.database.NoSuchEventInstanceException.java
org.ciasaboark.tacere.database.TooltipManager.java
org.ciasaboark.tacere.event.Calendar.java
org.ciasaboark.tacere.event.EventInstance.java
org.ciasaboark.tacere.event.EventManager.java
org.ciasaboark.tacere.event.ringer.Intervals.java
org.ciasaboark.tacere.event.ringer.RingerSource.java
org.ciasaboark.tacere.event.ringer.RingerType.java
org.ciasaboark.tacere.key.ApplicationTest.java
org.ciasaboark.tacere.key.MainActivity.java
org.ciasaboark.tacere.manager.AlarmManagerWrapper.java
org.ciasaboark.tacere.manager.NotificationManagerWrapper.java
org.ciasaboark.tacere.manager.RingerStateManager.java
org.ciasaboark.tacere.manager.ServiceStateManager.java
org.ciasaboark.tacere.manager.VolumesManager.java
org.ciasaboark.tacere.notifier.WidgetNotifier.java
org.ciasaboark.tacere.prefs.BetaPrefs.java
org.ciasaboark.tacere.prefs.DefaultPrefs.java
org.ciasaboark.tacere.prefs.PrefsTest.java
org.ciasaboark.tacere.prefs.Prefs.java
org.ciasaboark.tacere.prefs.Updates.java
org.ciasaboark.tacere.receiver.BootCompletedReceiver.java
org.ciasaboark.tacere.receiver.ProviderChangedReceiver.java
org.ciasaboark.tacere.service.EventSilencerService.java
org.ciasaboark.tacere.service.ExtendEventService.java
org.ciasaboark.tacere.service.ExtendQuicksilenceService.java
org.ciasaboark.tacere.service.RequestTypes.java
org.ciasaboark.tacere.service.ResetEventServiceTest.java
org.ciasaboark.tacere.service.ResetEventService.java
org.ciasaboark.tacere.service.SkipEventService.java
org.ciasaboark.tacere.versioning.Versioning.java
org.ciasaboark.tacere.view.EventListItem.java
org.ciasaboark.tacere.widget.ActiveEventWidgetProvider.java
org.ciasaboark.tacere.widget.EventListWidgetProvider.java
org.ciasaboark.tacere.widget.QuickSilenceTinyWidgetProvider.java
org.ciasaboark.tacere.widget.QuickSilenceWidgetProvider.java
org.ciasaboark.tacere.widget.activity.WidgetPopupRinger.java
org.ciasaboark.tacere.widget.adapter.WidgetEventListAdapter.java
org.ciasaboark.tacere.widget.service.WidgetService.java