AdvancedDisplay: Refactor

* Integrate with Settings
* Remove back button

Change-Id: Ie3bcd43ef7225bdc3b177446906335f59561b584
tirimbino
Luca Stefani 8 years ago committed by Luca Stefani
parent 5b0f1435a0
commit f6e983c722
  1. 22
      AdvancedDisplay/Android.mk
  2. 29
      AdvancedDisplay/AndroidManifest.xml
  3. 5
      AdvancedDisplay/proguard.flags
  4. 22
      AdvancedDisplay/res/values/colors.xml
  5. 17
      AdvancedDisplay/res/values/styles.xml
  6. 31
      AdvancedDisplay/src/com/cyanogenmod/settings/device/AdvancedDisplayActivity.java
  7. 45
      AdvancedDisplay/src/com/cyanogenmod/settings/device/AdvancedDisplayFragment.java
  8. 6
      AdvancedDisplay/src/com/cyanogenmod/settings/device/BootCompletedReceiver.java
  9. 22
      AdvancedDisplay/src/com/cyanogenmod/settings/device/Constants.java
  10. 69
      AdvancedDisplay/src/com/cyanogenmod/settings/device/DisplaySettings.java
  11. 76
      AdvancedDisplay/src/com/cyanogenmod/settings/device/ScreenFragmentActivity.java
  12. 21
      AdvancedDisplay/src/com/cyanogenmod/settings/device/mDNIeNegative.java
  13. 19
      AdvancedDisplay/src/com/cyanogenmod/settings/device/mDNIeScenario.java

@ -9,8 +9,30 @@ LOCAL_PACKAGE_NAME := AdvancedDisplay
LOCAL_CERTIFICATE := platform
LOCAL_STATIC_JAVA_LIBRARIES := \
android-support-v14-preference \
android-support-v7-appcompat \
android-support-v7-preference \
android-support-v7-recyclerview \
org.cyanogenmod.platform.internal
LOCAL_PROGUARD_FLAG_FILES := proguard.flags
LOCAL_RESOURCE_DIR := \
$(LOCAL_PATH)/res \
frameworks/support/v14/preference/res \
frameworks/support/v7/appcompat/res \
frameworks/support/v7/preference/res \
frameworks/support/v7/recyclerview/res
LOCAL_AAPT_FLAGS := \
--auto-add-overlay \
--extra-packages android.support.v14.preference \
--extra-packages android.support.v7.appcompat \
--extra-packages android.support.v7.preference \
--extra-packages android.support.v7.recyclerview
include frameworks/base/packages/SettingsLib/common.mk
include $(BUILD_PACKAGE)
include $(call all-makefiles-under,$(LOCAL_PATH))

@ -4,18 +4,20 @@
android:sharedUserId="android.uid.system">
<uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED" />
<uses-permission android:name="android.permission.WRITE_SECURE_SETTINGS" />
<application android:label="@string/app_name">
<application
android:label="@string/app_name">
<receiver android:name="com.cyanogenmod.settings.device.BootCompletedReceiver">
<intent-filter>
<action android:name="android.intent.action.BOOT_COMPLETED" />
<category android:name="android.intent.category.DEFAULT" />
</intent-filter>
</receiver>
<activity
android:name="com.cyanogenmod.settings.device.DisplaySettings"
android:launchMode="singleTop"
android:icon="@drawable/ic_settings_advanced_display"
android:hardwareAccelerated="true"
android:configChanges="orientation|keyboardHidden|screenSize"
android:name=".AdvancedDisplayActivity"
android:label="@string/app_name"
android:theme="@style/Theme.Main"
android:excludeFromRecents="true" >
android:theme="@style/AdvancedDisplay">
<intent-filter>
<action android:name="com.android.settings.action.EXTRA_SETTINGS" />
</intent-filter>
@ -26,14 +28,5 @@
android:name="com.android.settings.category"
android:value="com.android.settings.category.device" />
</activity>
<receiver android:name=".Startup">
<intent-filter android:priority="100">
<action android:name="android.intent.action.BOOT_COMPLETED" />
</intent-filter>
</receiver>
<activity android:name=".ScreenFragmentActivity" />
</application>
</manifest>

@ -0,0 +1,5 @@
-keepclasseswithmembers class * {
public <init>(android.content.Context, android.util.AttributeSet);
}
-keep class ** extends android.support.v14.preference.PreferenceFragment

@ -1,22 +0,0 @@
<?xml version="1.0" encoding="utf-8"?>
<!--
Copyright (C) 2016 The CyanogenMod Project
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.
-->
<resources>
<!-- Palette colors referenced by top-level themes. -->
<color name="theme_primary">#ff263238</color>
<color name="theme_primary_dark">#ff21272b</color>
<color name="theme_accent">#ff009688</color>
</resources>

@ -1,8 +1,9 @@
<?xml version="1.0" encoding="utf-8"?>
<!--
Copyright (C) 2016 The CyanogenMod Project
2017 The LineageOS Project
Licensed under the Apache License, Version 2.0 (the "License"
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
@ -14,16 +15,8 @@
See the License for the specific language governing permissions and
limitations under the License.
-->
<resources>
<style name="Theme.Main" parent="@android:style/Theme.Material.Light.DarkActionBar">
<item name="android:colorPrimary">@color/theme_primary</item>
<item name="android:colorPrimaryDark">@color/theme_primary_dark</item>
<item name="android:colorAccent">@color/theme_accent</item>
<!-- Redefine the ActionBar style for contentInsetStart -->
<item name="android:actionBarStyle">@style/Theme.ActionBar.SubSettings</item>
</style>
<style name="Theme.ActionBar.SubSettings" parent="@android:style/Widget.Material.Light.ActionBar.Solid">
<item name="android:contentInsetStart">@dimen/actionbar_subsettings_contentInsetStart</item>
<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
<style name="AdvancedDisplay" parent="@android:style/Theme.Material.Settings">
<item name="preferenceTheme">@android:style/Theme.Material.Settings</item>
</style>
</resources>

@ -0,0 +1,31 @@
/*
* Copyright (C) 2017 The LineageOS Project
*
* 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 com.cyanogenmod.settings.device;
import android.os.Bundle;
import com.android.settingslib.drawer.SettingsDrawerActivity;
public class AdvancedDisplayActivity extends SettingsDrawerActivity {
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
getFragmentManager().beginTransaction().replace(R.id.content_frame,
new AdvancedDisplayFragment()).commit();
}
}

@ -0,0 +1,45 @@
/*
* Copyright (C) 2017 The LineageOS Project
*
* 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 com.cyanogenmod.settings.device;
import android.content.res.Resources;
import android.os.Bundle;
import android.support.v14.preference.PreferenceFragment;
import com.cyanogenmod.settings.device.R;
import org.cyanogenmod.internal.util.FileUtils;
public class AdvancedDisplayFragment extends PreferenceFragment {
private mDNIeScenario mmDNIeScenario;
private mDNIeNegative mmDNIeNegative;
@Override
public void onCreatePreferences(Bundle savedInstanceState, String rootKey) {
addPreferencesFromResource(R.xml.screen_preferences);
Resources res = getResources();
/* mDNIe */
mmDNIeScenario = (mDNIeScenario) findPreference(Constants.KEY_MDNIE_SCENARIO);
mmDNIeScenario.setEnabled(
FileUtils.isFileWritable(res.getString(R.string.mdnie_scenario_sysfs_file)));
mmDNIeNegative = (mDNIeNegative) findPreference(Constants.KEY_MDNIE_NEGATIVE);
mmDNIeNegative.setEnabled(
FileUtils.isFileWritable(res.getString(R.string.mdnie_negative_sysfs_file)));
}
}

@ -1,5 +1,6 @@
/*
* Copyright (C) 2012 The CyanogenMod Project
* 2017 The LineageOS Project
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
@ -20,12 +21,11 @@ import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.Intent;
public class Startup extends BroadcastReceiver {
public class BootCompletedReceiver extends BroadcastReceiver {
@Override
public void onReceive(final Context context, final Intent bootintent) {
public void onReceive(Context context, Intent intent) {
mDNIeScenario.restore(context);
mDNIeNegative.restore(context);
ScreenFragmentActivity.restore(context);
}
}

@ -0,0 +1,22 @@
/*
* Copyright (C) 2017 The LineageOS Project
*
* 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 com.cyanogenmod.settings.device;
public class Constants {
static final String KEY_MDNIE_SCENARIO = "mdnie_scenario";
static final String KEY_MDNIE_NEGATIVE = "mdnie_negative";
}

@ -1,69 +0,0 @@
/*
* Copyright (C) 2012 The CyanogenMod Project
*
* 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 com.cyanogenmod.settings.device;
import android.app.Activity;
import android.app.ActionBar;
import android.app.Activity;
import android.app.Fragment;
import android.app.FragmentTransaction;
import android.content.Context;
import android.os.Bundle;
import android.view.MenuItem;
import android.widget.FrameLayout;
import com.cyanogenmod.settings.device.R;
import java.util.ArrayList;
public class DisplaySettings extends Activity {
public static final String SHARED_PREFERENCES_BASENAME = "com.cyanogenmod.settings.device";
public static final String ACTION_UPDATE_PREFERENCES = "com.cyanogenmod.settings.device.UPDATE";
public static final String KEY_MDNIE_SCENARIO = "mdnie_scenario";
public static final String KEY_MDNIE_NEGATIVE = "mdnie_negative";
ScreenFragmentActivity mFragment;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
mFragment = new ScreenFragmentActivity();
setContentView(R.layout.framelayout);
getFragmentManager().beginTransaction().add(R.id.frameLayout, mFragment).commit();
final ActionBar bar = getActionBar();
bar.setTitle(R.string.app_name);
bar.setDisplayHomeAsUpEnabled(true);
}
@Override
protected void onSaveInstanceState(Bundle outState) {
super.onSaveInstanceState(outState);
}
@Override
public boolean onOptionsItemSelected(MenuItem item) {
switch (item.getItemId()) {
case android.R.id.home:
DisplaySettings.this.onBackPressed();
default:
return super.onOptionsItemSelected(item);
}
}
}

@ -1,76 +0,0 @@
/*
* Copyright (C) 2012 The CyanogenMod Project
*
* 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 com.cyanogenmod.settings.device;
import android.content.Context;
import android.content.res.Resources;
import android.content.SharedPreferences;
import android.os.Bundle;
import android.preference.CheckBoxPreference;
import android.preference.ListPreference;
import android.preference.Preference;
import android.preference.PreferenceActivity;
import android.preference.PreferenceCategory;
import android.preference.PreferenceFragment;
import android.preference.PreferenceManager;
import android.preference.PreferenceScreen;
import android.util.Log;
import com.cyanogenmod.settings.device.R;
import org.cyanogenmod.internal.util.FileUtils;
public class ScreenFragmentActivity extends PreferenceFragment {
private static final String PREF_ENABLED = "1";
private static final String TAG = "DisplaySettings_Screen";
private mDNIeScenario mmDNIeScenario;
private mDNIeNegative mmDNIeNegative;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
addPreferencesFromResource(R.xml.screen_preferences);
PreferenceScreen preferenceScreen = getPreferenceScreen();
Resources res = getResources();
/* mDNIe */
mmDNIeScenario = (mDNIeScenario) findPreference(DisplaySettings.KEY_MDNIE_SCENARIO);
mmDNIeScenario.setEnabled(mDNIeScenario.isSupported(res.getString(R.string.mdnie_scenario_sysfs_file)));
mmDNIeNegative = (mDNIeNegative) findPreference(DisplaySettings.KEY_MDNIE_NEGATIVE);
mmDNIeNegative.setEnabled(mDNIeNegative.isSupported(res.getString(R.string.mdnie_negative_sysfs_file)));
}
@Override
public boolean onPreferenceTreeClick(PreferenceScreen preferenceScreen, Preference preference) {
String key = preference.getKey();
Log.w(TAG, "key: " + key);
return true;
}
public static boolean isSupported(String filePath) {
return FileUtils.isFileWritable(filePath);
}
public static void restore(Context context) {
SharedPreferences sharedPrefs = PreferenceManager.getDefaultSharedPreferences(context);
}
}

@ -1,5 +1,6 @@
/*
* Copyright (C) 2012 The CyanogenMod Project
* 2017 The LineageOS Project
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
@ -16,14 +17,13 @@
package com.cyanogenmod.settings.device;
import java.io.IOException;
import android.content.Context;
import android.util.AttributeSet;
import android.content.SharedPreferences;
import android.preference.Preference;
import android.preference.ListPreference;
import android.preference.Preference.OnPreferenceChangeListener;
import android.preference.PreferenceManager;
import android.support.v7.preference.ListPreference;
import android.support.v7.preference.Preference;
import android.support.v7.preference.Preference.OnPreferenceChangeListener;
import android.support.v7.preference.PreferenceManager;
import android.util.AttributeSet;
import org.cyanogenmod.internal.util.FileUtils;
@ -37,27 +37,22 @@ public class mDNIeNegative extends ListPreference implements OnPreferenceChangeL
FILE = context.getResources().getString(R.string.mdnie_negative_sysfs_file);
}
public static boolean isSupported(String filePath) {
return FileUtils.isFileWritable(filePath);
}
/**
* Restore mdnie user mode setting from SharedPreferences. (Write to kernel.)
* @param context The context to read the SharedPreferences from
*/
public static void restore(Context context) {
FILE = context.getResources().getString(R.string.mdnie_negative_sysfs_file);
if (!isSupported(FILE)) {
if (!FileUtils.isFileWritable(FILE)) {
return;
}
SharedPreferences sharedPrefs = PreferenceManager.getDefaultSharedPreferences(context);
FileUtils.writeLine(FILE, sharedPrefs.getString(DisplaySettings.KEY_MDNIE_NEGATIVE, "0"));
FileUtils.writeLine(FILE, sharedPrefs.getString(Constants.KEY_MDNIE_NEGATIVE, "0"));
}
public boolean onPreferenceChange(Preference preference, Object newValue) {
FileUtils.writeLine(FILE, (String) newValue);
return true;
}
}

@ -1,5 +1,6 @@
/*
* Copyright (C) 2012 The CyanogenMod Project
* 2017 The LineageOS Project
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
@ -17,13 +18,12 @@
package com.cyanogenmod.settings.device;
import android.content.Context;
import android.content.SharedPreferences;
import android.support.v7.preference.ListPreference;
import android.support.v7.preference.Preference;
import android.support.v7.preference.Preference.OnPreferenceChangeListener;
import android.support.v7.preference.PreferenceManager;
import android.util.AttributeSet;
import android.preference.Preference;
import android.preference.ListPreference;
import android.preference.Preference.OnPreferenceChangeListener;
import android.preference.PreferenceManager;
import org.cyanogenmod.internal.util.FileUtils;
@ -37,27 +37,22 @@ public class mDNIeScenario extends ListPreference implements OnPreferenceChangeL
FILE = context.getResources().getString(R.string.mdnie_scenario_sysfs_file);
}
public static boolean isSupported(String filePath) {
return FileUtils.isFileWritable(filePath);
}
/**
* Restore mdnie "camera" setting from SharedPreferences. (Write to kernel.)
* @param context The context to read the SharedPreferences from
*/
public static void restore(Context context) {
FILE = context.getResources().getString(R.string.mdnie_scenario_sysfs_file);
if (!isSupported(FILE)) {
if (!FileUtils.isFileWritable(FILE)) {
return;
}
SharedPreferences sharedPrefs = PreferenceManager.getDefaultSharedPreferences(context);
FileUtils.writeLine(FILE, sharedPrefs.getString(DisplaySettings.KEY_MDNIE_SCENARIO, "0"));
FileUtils.writeLine(FILE, sharedPrefs.getString(Constants.KEY_MDNIE_SCENARIO, "0"));
}
public boolean onPreferenceChange(Preference preference, Object newValue) {
FileUtils.writeLine(FILE, (String) newValue);
return true;
}
}

Loading…
Cancel
Save