Navbar: Protect against SystemUI FC when toggling navbar too fast

i know this is the noobest hacky fix ever and you'd like
to come here and kill me with napalm but meh, it works well
till we find a more pro solution :P

Change-Id: I1856fec4a07f01d9bd960da645e3e8cc44392d48
Signed-off-by: SagarMakhar <sagarmakhar@gmail.com>
Signed-off-by: Hưng Phan <phandinhhungvp2001@gmail.com>
This commit is contained in:
Ezio Lacandia Bijelkic
2020-02-21 04:16:22 -05:00
committed by Hưng Phan
parent 491f3db7ca
commit 00648d9331

View File

@@ -28,6 +28,11 @@ import android.os.RemoteException;
import android.os.PowerManager;
import android.os.ServiceManager;
import androidx.preference.PreferenceCategory;
import android.os.SystemProperties;
import android.util.Log;
import android.widget.Toast;
import androidx.fragment.app.DialogFragment;
import androidx.preference.ListPreference;
import androidx.preference.Preference;
import androidx.preference.PreferenceScreen;
@@ -102,6 +107,10 @@ public class ButtonSettings extends ActionFragment implements OnPreferenceChange
private SwitchPreference mNavigationBar;
private SystemSettingSwitchPreference mNavigationArrows;
private boolean mIsNavSwitchingMode = false;
private Handler mHandler;
@Override
public void onCreate(Bundle icicle) {
super.onCreate(icicle);
@@ -214,6 +223,9 @@ public class ButtonSettings extends ActionFragment implements OnPreferenceChange
mLayoutSettings = (Preference) findPreference(KEY_LAYOUT_SETTINGS);
mNavigationArrows = (SystemSettingSwitchPreference) findPreference(KEY_NAVIGATION_BAR_ARROWS);
mHandler = new Handler();
}
public boolean onPreferenceChange(Preference preference, Object newValue) {
@@ -233,8 +245,18 @@ public class ButtonSettings extends ActionFragment implements OnPreferenceChange
Settings.System.CUSTOM_BUTTON_BRIGHTNESS, buttonBrightness);
} else if (preference == mNavigationBar) {
boolean value = (Boolean) newValue;
if (mIsNavSwitchingMode) {
return false;
}
mIsNavSwitchingMode = true;
Settings.System.putInt(getActivity().getContentResolver(),
Settings.System.FORCE_SHOW_NAVBAR, value ? 1 : 0);
mHandler.postDelayed(new Runnable() {
@Override
public void run() {
mIsNavSwitchingMode = false;
}
}, 1500);
return true;
}
return false;