/* * Copyright (C) 2011-2012 sakuramilk <c.sakuramilk@gmail.com> * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package net.sakuramilk.TweakGS2.Notification; import android.content.Context; import net.sakuramilk.util.Convert; import net.sakuramilk.util.Misc; import net.sakuramilk.util.RootProcess; import net.sakuramilk.util.SettingManager; import net.sakuramilk.util.SysFs; public class NotificationSetting extends SettingManager { public static final String KEY_NOTIFY_LED_TIMEOUT = "notification_led_timeout"; public static final String KEY_NOTIFY_LED_FADEOUT = "notification_led_fadeout"; public static final String KEY_NOTIFY_BLN_ENABLED = "notification_bln_enabled"; public static final String KEY_NOTIFY_BLN_TIMEOUT = "notification_bln_timeout"; public static final String KEY_NOTIFY_BLN_EFFECT = "notification_bln_effect"; public static final String KEY_NOTIFY_BLN_BLINK_ON_INTERVAL = "notification_bln_blink_on_interval"; public static final String KEY_NOTIFY_BLN_BLINK_OFF_INTERVAL = "notification_bln_blink_off_interval"; public static final String KEY_NOTIFY_BLN_ON_INCOMING = "notification_bln_on_incoming"; public static final String KEY_NOTIFY_BLN_TEST = "notification_bln_test"; public static final String BLN_EFFECT_NONE = "0"; public static final String BLN_EFFECT_BLINKING = "1"; public static final String BLN_EFFECT_BREATHING = "2"; private final SysFs mSysFsLedTimeout = new SysFs("/sys/devices/virtual/misc/notification/led_timeout"); private final SysFs mSysFsLedFadeout = new SysFs("/sys/devices/virtual/misc/notification/led_fadeout"); private final SysFs mSysFsBlnEnabled = new SysFs("/sys/devices/virtual/misc/notification/notification_enabled"); private final SysFs mSysFsBlnTimeout = new SysFs("/sys/devices/virtual/misc/notification/notification_timeout"); private final SysFs mSysFsBlnBreathingEnable = new SysFs("/sys/devices/virtual/misc/notification/breathing_enabled"); //private final SysFs mSysFsBlnBreathingMaxVolt = new SysFs("/sys/devices/virtual/misc/notification/breathing_max_volt"); //private final SysFs mSysFsBlnBreathingMinVolt = new SysFs("/sys/devices/virtual/misc/notification/breathing_min_volt"); //private final SysFs mSysFsBlnBreathingStepIncrement = new SysFs("/sys/devices/virtual/misc/notification/breathing_step_increment"); //private final SysFs mSysFsBlnBreathingStepInterval = new SysFs("/sys/devices/virtual/misc/notification/breathing_step_interval"); //private final SysFs mSysFsBlnBreathingPause = new SysFs("/sys/devices/virtual/misc/notification/breathing_pause"); private final SysFs mSysFsBlnBlinkingEnabled = new SysFs("/sys/devices/virtual/misc/notification/blinking_enabled"); private final SysFs mSysFsBlnBlinkingOnInterval = new SysFs("/sys/devices/virtual/misc/notification/blinking_int_on"); private final SysFs mSysFsBlnBlinkingOffInterval = new SysFs("/sys/devices/virtual/misc/notification/blinking_int_off"); private final SysFs mSysFsBlnControl = new SysFs("/sys/devices/virtual/misc/melfas_touchkey/touchkey_bln_control", "0222"); private final SysFs mSysFsTouchkeyBrightness = new SysFs("/sys/class/sec/sec_touchkey/brightness"); public NotificationSetting(Context context, RootProcess rootProcess) { super(context, rootProcess); } public NotificationSetting(Context context) { this(context, null); } public boolean isEnableLedTimeout() { return mSysFsLedTimeout.exists(); } public String getLedTimeout() { return mSysFsLedTimeout.read(mRootProcess); } public void setLedTimeout(String value) { mSysFsLedTimeout.write(value, mRootProcess); if ("-2".equals(value)) { mSysFsTouchkeyBrightness.write("2", mRootProcess); } else { mSysFsTouchkeyBrightness.write("1", mRootProcess); } } public String loadLedTimeout() { return getStringValue(KEY_NOTIFY_LED_TIMEOUT); } public void saveLedTimeout(String value) { setValue(KEY_NOTIFY_LED_TIMEOUT, value); } public boolean isEnableLedFadeout() { return mSysFsLedFadeout.exists(); } public boolean getLedFadeout() { return Convert.toBoolean(mSysFsLedFadeout.read(mRootProcess)); } public void setLedFadeout(boolean value) { mSysFsLedFadeout.write(Convert.toString(value), mRootProcess); } public boolean loadLedFadeout() { return getBooleanValue(KEY_NOTIFY_LED_FADEOUT); } public void saveLedFadeout(boolean value) { setValue(KEY_NOTIFY_LED_FADEOUT, value); } public boolean isEnableBlnEnabled() { return mSysFsBlnEnabled.exists(); } public boolean getBlnEnabled() { return Convert.toBoolean(mSysFsBlnEnabled.read(mRootProcess)); } public void setBlnEnabled(boolean value) { mSysFsBlnEnabled.write(Convert.toString(value), mRootProcess); } public boolean loadBlnEnabled() { return getBooleanValue(KEY_NOTIFY_BLN_ENABLED); } public void saveBlnEnabled(boolean value) { setValue(KEY_NOTIFY_BLN_ENABLED, value); } public boolean isEnableBlnTimeout() { return mSysFsBlnTimeout.exists(); } public String getBlnTimeout() { return mSysFsBlnTimeout.read(mRootProcess); } public void setBlnTimeout(String value) { mSysFsBlnTimeout.write(value, mRootProcess); } public String loadBlnTimeout() { return getStringValue(KEY_NOTIFY_BLN_TIMEOUT); } public void saveBlnTimeout(String value) { setValue(KEY_NOTIFY_BLN_TIMEOUT, value); } public boolean isEnableBlnEffect() { return mSysFsBlnBreathingEnable.exists() && mSysFsBlnBlinkingEnabled.exists(); } public String getBlnEffect() { boolean breathing = Convert.toBoolean(mSysFsBlnBreathingEnable.read(mRootProcess)); boolean blinking = Convert.toBoolean(mSysFsBlnBlinkingEnabled.read(mRootProcess)); if (breathing) { return BLN_EFFECT_BREATHING; } else if (blinking) { return BLN_EFFECT_BLINKING; } return BLN_EFFECT_NONE; } public void setBlnEffect(String value) { if (BLN_EFFECT_BREATHING.equals(value)) { mSysFsBlnBreathingEnable.write("1", mRootProcess); } else if (BLN_EFFECT_BLINKING.equals(value)) { mSysFsBlnBlinkingEnabled.write("1", mRootProcess); } else { mSysFsBlnBreathingEnable.write("0", mRootProcess); mSysFsBlnBlinkingEnabled.write("0", mRootProcess); } } public String loadBlnEffect() { return getStringValue(KEY_NOTIFY_BLN_EFFECT); } public void saveBlnEffect(String value) { setValue(KEY_NOTIFY_BLN_EFFECT, value); } public String getBlnBlinkingOnInterval() { return mSysFsBlnBlinkingOnInterval.read(mRootProcess); } public void setBlnBlinkingOnInterval(String value) { mSysFsBlnBlinkingOnInterval.write(value, mRootProcess); } public String loadBlnBlinkingOnInterval() { return getStringValue(KEY_NOTIFY_BLN_BLINK_ON_INTERVAL); } public void saveBlnBlinkingOnInterval(String value) { setValue(KEY_NOTIFY_BLN_BLINK_ON_INTERVAL, value); } public String getBlnBlinkingOffInterval() { return mSysFsBlnBlinkingOffInterval.read(mRootProcess); } public void setBlnBlinkingOffInterval(String value) { mSysFsBlnBlinkingOffInterval.write(value, mRootProcess); } public String loadBlnBlinkingOffInterval() { return getStringValue(KEY_NOTIFY_BLN_BLINK_OFF_INTERVAL); } public void saveBlnBlinkingOffInterval(String value) { setValue(KEY_NOTIFY_BLN_BLINK_OFF_INTERVAL, value); } public boolean isEnableBlnControl() { return mSysFsBlnControl.exists(); } public String getBlnControl() { return mSysFsBlnControl.read(mRootProcess); } public void setBlnControl(String value) { mSysFsBlnControl.write(value, mRootProcess); } public boolean loadBlnOnIncoming() { return getBooleanValue(KEY_NOTIFY_BLN_ON_INCOMING); } public void saveBlnOnIncoming(boolean value) { setValue(KEY_NOTIFY_BLN_ON_INCOMING, value); } @Override public void setOnBoot() { if (isEnableLedTimeout()) { String value = loadLedTimeout(); if (!Misc.isNullOfEmpty(value)) { setLedTimeout(value); } } if (isEnableLedFadeout()) { boolean value = loadLedFadeout(); setLedFadeout(value); } if (isEnableBlnEnabled()) { setBlnEnabled(loadBlnEnabled()); } if (isEnableBlnTimeout()) { String value = loadBlnTimeout(); if (!Misc.isNullOfEmpty(value)) { setBlnTimeout(value); } } if (isEnableBlnEffect()) { String value = loadBlnEffect(); if (!Misc.isNullOfEmpty(value)) { setBlnEffect(value); } value = loadBlnBlinkingOnInterval(); if (!Misc.isNullOfEmpty(value)) { setBlnBlinkingOnInterval(value); } value = loadBlnBlinkingOffInterval(); if (!Misc.isNullOfEmpty(value)) { setBlnBlinkingOffInterval(value); } } } @Override public void setRecommend() { // noop } @Override public void reset() { clearValue(KEY_NOTIFY_LED_TIMEOUT); clearValue(KEY_NOTIFY_LED_FADEOUT); clearValue(KEY_NOTIFY_BLN_ENABLED); clearValue(KEY_NOTIFY_BLN_TIMEOUT); clearValue(KEY_NOTIFY_BLN_EFFECT); clearValue(KEY_NOTIFY_BLN_BLINK_ON_INTERVAL); clearValue(KEY_NOTIFY_BLN_BLINK_OFF_INTERVAL); clearValue(KEY_NOTIFY_BLN_ON_INCOMING); } }