diff --git a/universal7885-common/apps/SamsungParts/jni/FlashlightBridge.cpp b/universal7885-common/apps/SamsungParts/jni/FlashlightBridge.cpp index 0fb184b..3dfe65d 100644 --- a/universal7885-common/apps/SamsungParts/jni/FlashlightBridge.cpp +++ b/universal7885-common/apps/SamsungParts/jni/FlashlightBridge.cpp @@ -13,10 +13,18 @@ using vendor::eureka::hardware::parts::V1_0::Value; static android::sp service = IFlashBrightness::getService(); +extern "C" JNIEXPORT void JNICALL +Java_com_eurekateam_samsungextras_interfaces_Flashlight_setFlash(JNIEnv *env, __unused jobject obj, jboolean enabled) { + if (enabled) { + service->setFlashlightEnable(Number::ENABLE); + } else { + service->setFlashlightEnable(Number::DISABLE); + } +} + extern "C" JNIEXPORT void JNICALL Java_com_eurekateam_samsungextras_interfaces_Flashlight_setFlash( JNIEnv *env, __unused jobject obj, jint value) { - service->setFlashlightEnable(Number::ENABLE); service->setFlashlightWritable(static_cast(value)); } extern "C" JNIEXPORT jint JNICALL diff --git a/universal7885-common/apps/SamsungParts/res/xml/battery_settings.xml b/universal7885-common/apps/SamsungParts/res/xml/battery_settings.xml index 756636b..7f2e72b 100644 --- a/universal7885-common/apps/SamsungParts/res/xml/battery_settings.xml +++ b/universal7885-common/apps/SamsungParts/res/xml/battery_settings.xml @@ -3,7 +3,7 @@ xmlns:android="http://schemas.android.com/apk/res/android" android:title="@string/fastcharge_title"> - - - - + android:title="@string/dolby_profile_voice"/> + + diff --git a/universal7885-common/apps/SamsungParts/res/xml/flashlight_settings.xml b/universal7885-common/apps/SamsungParts/res/xml/flashlight_settings.xml index 121c3a9..3985a8c 100644 --- a/universal7885-common/apps/SamsungParts/res/xml/flashlight_settings.xml +++ b/universal7885-common/apps/SamsungParts/res/xml/flashlight_settings.xml @@ -3,7 +3,12 @@ xmlns:android="http://schemas.android.com/apk/res/android" android:title="@string/flashlight_title"> - + + 0) "+" else "") + v + mUnits - } - - private fun updateValueViews() { - if (mValueTextView != null) { - mValueTextView!!.text = context.getString( - com.eurekateam.samsungextras.R.string.custom_seekbar_value, - if (!mTrackingTouch || mContinuousUpdates) getTextValue(mValue) + - ( - if (mDefaultValueExists && mValue == mDefaultValue) " (" + - context.getString(com.eurekateam.samsungextras.R.string.custom_seekbar_default_value) + ")" else "" - ) else getTextValue( - mTrackingValue - ) - ) - } - if (mResetImageView != null) { - if (!mDefaultValueExists || mValue == mDefaultValue || mTrackingTouch) mResetImageView!!.visibility = - View.INVISIBLE else mResetImageView!!.visibility = View.VISIBLE - } - if (mMinusImageView != null) { - if (mValue == mMinValue || mTrackingTouch) { - mMinusImageView!!.isClickable = false - mMinusImageView!!.setColorFilter( - context.getColor(com.eurekateam.samsungextras.R.color.disabled_text_color), - PorterDuff.Mode.MULTIPLY - ) - } else { - mMinusImageView!!.isClickable = true - mMinusImageView!!.clearColorFilter() - } - } - if (mPlusImageView != null) { - if (mValue == mMaxValue || mTrackingTouch) { - mPlusImageView!!.isClickable = false - mPlusImageView!!.setColorFilter( - context.getColor(com.eurekateam.samsungextras.R.color.disabled_text_color), - PorterDuff.Mode.MULTIPLY - ) - } else { - mPlusImageView!!.isClickable = true - mPlusImageView!!.clearColorFilter() - } - } - } - - private fun changeValue() { - // for subclasses - } - - override fun onProgressChanged(seekBar: SeekBar, progress: Int, fromUser: Boolean) { - val newValue = getLimitedValue(mMinValue + progress * mInterval) - if (mTrackingTouch && !mContinuousUpdates) { - mTrackingValue = newValue - updateValueViews() - } else if (mValue != newValue) { - // change rejected, revert to the previous value - if (!callChangeListener(newValue)) { - mSeekBar.progress = getSeekValue(mValue) - return - } - // change accepted, store it - changeValue() - persistInt(newValue) - mValue = newValue - updateValueViews() - } - } - - override fun onStartTrackingTouch(seekBar: SeekBar) { - mTrackingValue = mValue - mTrackingTouch = true - } - - override fun onStopTrackingTouch(seekBar: SeekBar) { - mTrackingTouch = false - if (!mContinuousUpdates) onProgressChanged(mSeekBar, getSeekValue(mTrackingValue), false) - notifyChanged() - } - - override fun onClick(v: View) { - when (v.id) { - com.eurekateam.samsungextras.R.id.reset -> { - Toast.makeText( - context, - context.getString( - com.eurekateam.samsungextras.R.string.custom_seekbar_default_value_to_set, - getTextValue(mDefaultValue) - ), - Toast.LENGTH_LONG - ).show() - } - com.eurekateam.samsungextras.R.id.minus -> { - setValue(mValue - mInterval, true) - } - com.eurekateam.samsungextras.R.id.plus -> { - setValue(mValue + mInterval, true) - } - } - } - - override fun onLongClick(v: View): Boolean { - when (v.id) { - com.eurekateam.samsungextras.R.id.reset -> { - setValue(mDefaultValue, true) - } - com.eurekateam.samsungextras.R.id.minus -> { - setValue( - if (mMaxValue - mMinValue > mInterval * 2 && mMaxValue + mMinValue < mValue * 2) Math.floorDiv( - mMaxValue + mMinValue, - 2 - ) else mMinValue, - true - ) - } - com.eurekateam.samsungextras.R.id.plus -> { - setValue( - if (mMaxValue - mMinValue > mInterval * 2 && mMaxValue + mMinValue > mValue * 2) -1 * Math.floorDiv( - -1 * (mMaxValue + mMinValue), - 2 - ) else mMaxValue, - true - ) - } - } - return true - } - - // dont need too much shit about initial and default values - // its all done in constructor already - override fun onSetInitialValue(restoreValue: Boolean, defaultValue: Any?) { - if (restoreValue) mValue = getPersistedInt(mValue) - } - - override fun setDefaultValue(defaultValue: Any) { - if (defaultValue is Int) setDefaultValue( - defaultValue, - true - ) else setDefaultValue( - defaultValue.toString(), true - ) - } - - private fun setDefaultValue(newValue: Int, update: Boolean) { - var mNewValue = newValue - mNewValue = getLimitedValue(mNewValue) - if (!mDefaultValueExists || mDefaultValue != mNewValue) { - mDefaultValueExists = true - mDefaultValue = mNewValue - if (update) updateValueViews() - } - } - - private fun setDefaultValue(newValue: String?, update: Boolean) { - if (mDefaultValueExists && (newValue == null || newValue.isEmpty())) { - mDefaultValueExists = false - if (update) updateValueViews() - } else if (newValue != null && newValue.isNotEmpty()) { - setDefaultValue(newValue.toInt(), update) - } - } - - fun setMax(max: Int) { - mMaxValue = max - mSeekBar.max = mMaxValue - mMinValue - } - - fun setMin(min: Int) { - mMinValue = min - mSeekBar.max = mMaxValue - mMinValue - } - - fun setValue(newValue: Int, update: Boolean) { - var mNewValue = newValue - mNewValue = getLimitedValue(mNewValue) - if (mValue != mNewValue) { - if (update) mSeekBar.progress = getSeekValue(mNewValue) else mValue = mNewValue - } - } - - // need some methods here to set/get other attrs at runtime, - var value: Int - get() = mValue - set(newValue) { - mValue = getLimitedValue(newValue) - mSeekBar.progress = getSeekValue(mValue) - } - - // but who really need this ... - companion object { - private const val APP_NS = "http://schemas.android.com/apk/res-auto" - protected const val ANDROIDNS = "http://schemas.android.com/apk/res/android" - } - - init { - val a = context.obtainStyledAttributes( - attrs, - com.eurekateam.samsungextras.R.styleable.CustomSeekBarPreference - ) - try { - mShowSign = a.getBoolean( - com.eurekateam.samsungextras.R.styleable.CustomSeekBarPreference_showSign, - mShowSign - ) - val units = - a.getString(com.eurekateam.samsungextras.R.styleable.CustomSeekBarPreference_units) - if (units != null) mUnits = " $units" - mContinuousUpdates = a.getBoolean( - com.eurekateam.samsungextras.R.styleable.CustomSeekBarPreference_continuousUpdates, - mContinuousUpdates - ) - } finally { - a.recycle() - } - try { - val newInterval = attrs!!.getAttributeValue(APP_NS, "interval") - if (newInterval != null) mInterval = newInterval.toInt() - } catch (e: Exception) { - Log.e(TAG, "Invalid interval value", e) - } - mMinValue = attrs!!.getAttributeIntValue(APP_NS, "min", mMinValue) - mMaxValue = attrs.getAttributeIntValue(ANDROIDNS, "max", mMaxValue) - if (mMaxValue < mMinValue) mMaxValue = mMinValue - val defaultValue = attrs.getAttributeValue(ANDROIDNS, "defaultValue") - mDefaultValueExists = defaultValue != null && defaultValue.isNotEmpty() - if (mDefaultValueExists) { - mDefaultValue = getLimitedValue(defaultValue!!.toInt()) - mValue = mDefaultValue - } else { - mValue = mMinValue - } - mSeekBar = SeekBar(context, attrs) - layoutResource = com.eurekateam.samsungextras.R.layout.preference_custom_seekbar - } -} diff --git a/universal7885-common/apps/SamsungParts/src/com/eurekateam/samsungextras/speaker/ClearSpeakerActivity.kt b/universal7885-common/apps/SamsungParts/src/com/eurekateam/samsungextras/speaker/ClearSpeakerActivity.kt index e8e1dd7..53e6972 100644 --- a/universal7885-common/apps/SamsungParts/src/com/eurekateam/samsungextras/speaker/ClearSpeakerActivity.kt +++ b/universal7885-common/apps/SamsungParts/src/com/eurekateam/samsungextras/speaker/ClearSpeakerActivity.kt @@ -15,30 +15,15 @@ */ package com.eurekateam.samsungextras.speaker -import android.R.id.content -import android.R.id.home -import android.os.Bundle -import android.view.MenuItem -import androidx.fragment.app.FragmentActivity +import com.android.settingslib.collapsingtoolbar.CollapsingToolbarBaseActivity +import com.android.settingslib.collapsingtoolbar.R -class ClearSpeakerActivity : FragmentActivity() { - override fun onCreate(savedInstanceState: Bundle?) { +class ClearSpeakerActivity : CollapsingToolbarBaseActivity() { + public override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) - val fragment = supportFragmentManager.findFragmentById(content) - val clearSpeakerFragment: ClearSpeakerFragment - if (fragment == null) { - clearSpeakerFragment = ClearSpeakerFragment() - supportFragmentManager.beginTransaction() - .add(content, clearSpeakerFragment) - .commit() - } - } - - override fun onOptionsItemSelected(item: MenuItem): Boolean { - if (item.itemId == home) { - finish() - return true - } - return super.onOptionsItemSelected(item) + supportFragmentManager.beginTransaction().replace( + R.id.content_frame, + ClearSpeakerFragment() + ).commit() } } diff --git a/universal7885-common/apps/SamsungParts/src/com/eurekateam/samsungextras/speaker/ClearSpeakerFragment.kt b/universal7885-common/apps/SamsungParts/src/com/eurekateam/samsungextras/speaker/ClearSpeakerFragment.kt index 35e66cf..cd247f1 100644 --- a/universal7885-common/apps/SamsungParts/src/com/eurekateam/samsungextras/speaker/ClearSpeakerFragment.kt +++ b/universal7885-common/apps/SamsungParts/src/com/eurekateam/samsungextras/speaker/ClearSpeakerFragment.kt @@ -15,22 +15,21 @@ */ package com.eurekateam.samsungextras.speaker -import android.media.AudioManager import android.media.MediaPlayer import android.os.Bundle import android.os.Handler import android.os.Looper import android.util.Log -import androidx.preference.Preference import androidx.preference.PreferenceFragmentCompat -import androidx.preference.SwitchPreference import com.eurekateam.samsungextras.R import java.io.IOException +import com.android.settingslib.widget.MainSwitchPreference +import com.android.settingslib.widget.OnMainSwitchChangeListener -class ClearSpeakerFragment : PreferenceFragmentCompat(), Preference.OnPreferenceChangeListener { +class ClearSpeakerFragment : PreferenceFragmentCompat(), OnMainSwitchChangeListener { private lateinit var mHandler: Handler private lateinit var mMediaPlayer: MediaPlayer - private lateinit var mClearSpeakerPref: SwitchPreference + private lateinit var mClearSpeakerPref: MainSwitchPreference override fun onCreatePreferences(savedInstanceState: Bundle?, rootKey: String?) { addPreferencesFromResource(R.xml.clear_speaker_settings) mClearSpeakerPref = findPreference(PREF_CLEAR_SPEAKER)!! @@ -38,17 +37,13 @@ class ClearSpeakerFragment : PreferenceFragmentCompat(), Preference.OnPreference mHandler = Handler(Looper.getMainLooper()) } - override fun onPreferenceChange(preference: Preference, newValue: Any): Boolean { - if (preference === mClearSpeakerPref) { - val value = newValue as Boolean - if (value) { + override fun onSwitchChanged(switchView: Switch, isChecked: Boolean) { + if (isChecked) { if (startPlaying()) { mHandler.removeCallbacksAndMessages(null) mHandler.postDelayed({ stopPlaying() }, 30000) - return true } } - } return false }