Skip to content

Commit

Permalink
Change state system
Browse files Browse the repository at this point in the history
See #29

The user can now toggle pause/resume with the floating action button and
toggle disable/enable with the switch in the app bar.

When Red Moon is disabled, there is no notification and all settings are
grayed out.

When Red Moon is enabled and the filter is paused, the settings are
accessible and there is a notification in the notification tray, but the
filter is not running.

When Red Moon is enabled and the filter is resumed, the settings are
accessible and there is a notification in the notificaton tray and the
filter is running.

The filter will still be turned automatically when Red Moon is enabled.
  • Loading branch information
raatmarien committed Apr 6, 2016
1 parent 4f98749 commit 35ba781
Show file tree
Hide file tree
Showing 3 changed files with 55 additions and 14 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -135,8 +135,7 @@ public boolean onCreateOptionsMenu(Menu menu) {

final MenuItem item = menu.findItem(R.id.screen_filter_switch);
mSwitch = (SwitchCompat) item.getActionView();
mSwitch.setChecked(mSettingsModel.getShadesPowerState() &&
!mSettingsModel.getShadesPauseState());
mSwitch.setChecked(mSettingsModel.getShadesPowerState());
mSwitch.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() {
@Override
public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
Expand All @@ -156,19 +155,15 @@ public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {

if (Settings.canDrawOverlays(context)) {
mPresenter.sendCommand(isChecked ?
ScreenFilterService.COMMAND_ON :
ScreenFilterService.COMMAND_PAUSE :
ScreenFilterService.COMMAND_OFF);
if (isChecked)
displayInstallWarningToast();
} else {
buttonView.setChecked(false);
}
} else {
mPresenter.sendCommand(isChecked ?
ScreenFilterService.COMMAND_ON :
ScreenFilterService.COMMAND_PAUSE :
ScreenFilterService.COMMAND_OFF);
if (isChecked)
displayInstallWarningToast();
}
}
});
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -62,13 +62,15 @@
import android.support.design.widget.FloatingActionButton;
import android.view.ViewTreeObserver;
import android.widget.ListView;
import android.preference.PreferenceScreen;

import com.jmstudios.redmoon.R;
import com.jmstudios.redmoon.presenter.ShadesPresenter;
import com.jmstudios.redmoon.activity.ShadesActivity;
import com.jmstudios.redmoon.preference.FilterTimePreference;
import com.jmstudios.redmoon.preference.LocationPreference;
import com.jmstudios.redmoon.model.SettingsModel;
import com.jmstudios.redmoon.service.ScreenFilterService;

public class ShadesFragment extends PreferenceFragment {
private static final String TAG = "ShadesFragment";
Expand Down Expand Up @@ -239,10 +241,17 @@ public View onCreateView(@NonNull LayoutInflater inflater, final ViewGroup conta
mToggleFab.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {

SettingsModel settingsModel = ((ShadesActivity) getActivity()).getSettingsModel();
boolean poweredOn = settingsModel.getShadesPowerState();
boolean paused = settingsModel.getShadesPauseState();

if (!poweredOn || paused) {
mPresenter.sendCommand(ScreenFilterService.COMMAND_ON);
} else {
mPresenter.sendCommand(ScreenFilterService.COMMAND_PAUSE);
}
}
});
updateFabIcon();

return v;
}
Expand All @@ -253,12 +262,25 @@ public void registerPresenter(@NonNull ShadesPresenter presenter) {
if (DEBUG) Log.i(TAG, "Registered Presenter");
}

public void setSwitchOn(boolean on, boolean paused) {
public void setSwitchOn(boolean powerState, boolean pauseState) {
ShadesActivity activity = (ShadesActivity) getActivity();
SwitchCompat filterSwitch = activity.getSwitch();
if (filterSwitch != null) {
activity.setIgnoreNextSwitchChange(paused);
filterSwitch.setChecked(!on);
activity.setIgnoreNextSwitchChange(powerState != filterSwitch.isChecked());
filterSwitch.setChecked(powerState);
}
updateFabIcon();

if (!powerState) {
disableAllPreferences();
} else {
setPreferencesEnabled();
}

Log.d(TAG, powerState + " " + pauseState);
if (powerState && !pauseState) {
Log.d(TAG, "warning toast");
activity.displayInstallWarningToast();
}
}

Expand All @@ -273,4 +295,28 @@ private void updateFabIcon() {
mToggleFab.setImageResource(R.drawable.fab_pause);
}
}

private void disableAllPreferences() {
PreferenceScreen root = getPreferenceScreen();
for (int i = 0; i < root.getPreferenceCount(); i++) {
root.getPreference(i).setEnabled(false);
}
}

private void setPreferencesEnabled() {
enableAllPreferences();

boolean custom = automaticFilterPref.getValue().toString().equals("custom");
automaticTurnOnPref.setEnabled(custom);
automaticTurnOffPref.setEnabled(custom);
boolean sun = automaticFilterPref.getValue().toString().equals("sun");
locationPref.setEnabled(sun);
}

private void enableAllPreferences() {
PreferenceScreen root = getPreferenceScreen();
for (int i = 0; i < root.getPreferenceCount(); i++) {
root.getPreference(i).setEnabled(true);
}
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -77,7 +77,7 @@ public void onStart() {
}

private void setShadesFabIcon(boolean poweredOn, boolean pauseState) {
mView.setSwitchOn(!poweredOn || pauseState, pauseState);
mView.setSwitchOn(poweredOn, pauseState);
}

public void onShadesFabClicked() {
Expand Down

0 comments on commit 35ba781

Please sign in to comment.