backup
diff --git a/app/build.gradle b/app/build.gradle
index d069598..42243f7 100644
--- a/app/build.gradle
+++ b/app/build.gradle
@@ -32,7 +32,7 @@
}
dependencies {
-
+ implementation fileTree(dir: 'libs', include: ['*.jar'])
implementation 'androidx.core:core-ktx:1.6.0'
implementation 'androidx.appcompat:appcompat:1.3.1'
implementation 'com.google.android.material:material:1.4.0'
diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml
index c882ef9..e46aed6 100644
--- a/app/src/main/AndroidManifest.xml
+++ b/app/src/main/AndroidManifest.xml
@@ -5,6 +5,10 @@
<uses-permission android:name="android.permission.QUERY_ALL_PACKAGES"
tools:ignore="QueryAllPackagesPermission" />
+ <uses-permission android:name="android.permission.WRITE_SETTINGS"
+ tools:ignore="ProtectedPermissions" />
+ <uses-permission android:name="android.permission.WRITE_SECURE_SETTINGS"
+ tools:ignore="ProtectedPermissions" />
<application
android:allowBackup="true"
diff --git a/app/src/main/java/org/omnirom/control/AppListFragment.kt b/app/src/main/java/org/omnirom/control/AppListFragment.kt
new file mode 100644
index 0000000..5c37ff4
--- /dev/null
+++ b/app/src/main/java/org/omnirom/control/AppListFragment.kt
@@ -0,0 +1,142 @@
+package org.omnirom.control
+
+import android.content.Intent
+import android.content.pm.PackageManager
+import android.os.Bundle
+import android.provider.Settings
+import androidx.appcompat.app.AppCompatActivity
+import androidx.preference.Preference
+import androidx.preference.PreferenceCategory
+import androidx.preference.PreferenceFragmentCompat
+
+class AppListFragment : PreferenceFragmentCompat() {
+ val KEY_APPS_LIST = "apps_list"
+ val OMNISTORE_APP_PKG = "org.omnirom.omnistore"
+ val OMNISTORE_INSTALL_PKG = "org.omnirom.omnistoreinstaller"
+ lateinit var appManager: ApplicationManager
+
+ fun isAvailableApp(packageName: String): Boolean {
+ val pm: PackageManager = requireContext().getPackageManager()
+ return try {
+ val enabled = pm.getApplicationEnabledSetting(packageName)
+ enabled != PackageManager.COMPONENT_ENABLED_STATE_DISABLED &&
+ enabled != PackageManager.COMPONENT_ENABLED_STATE_DISABLED_USER
+ } catch (e: Exception) {
+ false
+ }
+ }
+
+ override fun onResume() {
+ super.onResume()
+ (activity as? AppCompatActivity)?.supportActionBar?.setDisplayHomeAsUpEnabled(true)
+ (activity as? SettingsActivity)?.updateFragmentTitle(resources.getString(R.string.applist_settings_title))
+ }
+
+ override fun onCreatePreferences(savedInstanceState: Bundle?, rootKey: String?) {
+ setPreferencesFromResource(R.xml.applist_preferences, rootKey)
+
+ appManager = ApplicationManager(requireContext())
+
+ appManager.addApp(
+ "org.omnirom.omniswitch",
+ "org.omnirom.omniswitch.SettingsActivity",
+ resources.getString(R.string.omniswitch_title),
+ resources.getString(R.string.omniswitch_summary)
+ )
+
+ appManager.addApp(
+ "org.omnirom.omnichange",
+ "org.omnirom.omnichange.OmniMain",
+ resources.getString(R.string.changelog_title),
+ resources.getString(R.string.changelog_summary)
+ )
+
+ appManager.addApp(
+ "org.omnirom.omnijaws",
+ "org.omnirom.omnijaws.SettingsActivity",
+ resources.getString(R.string.weather_config_title),
+ resources.getString(R.string.weather_config_summary)
+ )
+
+ appManager.addApp(
+ "org.omnirom.logcat",
+ "com.pluscubed.logcat.ui.LogcatActivity",
+ resources.getString(R.string.matlog_title),
+ resources.getString(R.string.matlog_summary)
+ )
+
+ appManager.addApp(
+ "org.omnirom.omniremote",
+ "org.omnirom.omniremote.MainActivity",
+ resources.getString(R.string.omni_remote_title),
+ resources.getString(R.string.omni_remote_summary)
+ )
+
+ appManager.addApp(
+ "org.omnirom.omnistore",
+ "org.omnirom.omnistore.MainActivity",
+ resources.getString(R.string.omnistore_title),
+ resources.getString(R.string.omnistore_summary)
+ )
+
+ appManager.addApp(
+ "org.omnirom.omnistoreinstaller",
+ "org.omnirom.omnistoreinstaller.MainActivity",
+ resources.getString(R.string.omnistore_title),
+ resources.getString(R.string.omnistore_summary)
+ )
+
+ appManager.addApp(
+ "org.omnirom.omnistyle",
+ "org.omnirom.omnistyle.WallpaperActivity",
+ getString(R.string.wallpaper_title),
+ getString(R.string.wallpaper_summary)
+ )
+
+ appManager.addApp(
+ "org.omnirom.device",
+ "org.omnirom.device.DeviceSettings",
+ getString(R.string.device_settings_title),
+ getString(R.string.device_settings_summary)
+ )
+ createAppList()
+ }
+
+ fun createAppList() {
+ var appCategory: PreferenceCategory? = findPreference(KEY_APPS_LIST)
+ if (appCategory != null) {
+ appCategory.removeAll()
+ for (app in appManager.mAppList) {
+ if (!isAvailableApp(app.mPackage)) {
+ continue
+ }
+ if (app.mPackage.equals(OMNISTORE_INSTALL_PKG) && isAvailableApp(
+ OMNISTORE_APP_PKG
+ )
+ ) {
+ continue
+ }
+ val preference = Preference(requireContext())
+ preference.key = app.mPackage
+ preference.title = app.mTitle
+ preference.summary = app.mSummary
+ val intent = Intent()
+ intent.component = app.getComponentName()
+ preference.intent = intent
+ preference.icon = appManager.getAppIcon(app)
+
+ appCategory.addPreference(preference)
+ }
+ }
+ }
+ override fun onPreferenceTreeClick(preference: Preference?): Boolean {
+ if (preference?.key != null) {
+ var app: Application? = appManager.getAppOfPackage(preference.key)
+ if (app != null) {
+ appManager.startApp(app)
+ return true
+ }
+ }
+ return super.onPreferenceTreeClick(preference)
+ }
+}
\ No newline at end of file
diff --git a/app/src/main/java/org/omnirom/control/Application.kt b/app/src/main/java/org/omnirom/control/Application.kt
new file mode 100644
index 0000000..16e246c
--- /dev/null
+++ b/app/src/main/java/org/omnirom/control/Application.kt
@@ -0,0 +1,20 @@
+package org.omnirom.control
+
+import android.content.ComponentName
+
+class Application {
+ val mPackage: String
+ val mActivity:String
+ val mTitle: String
+ val mSummary: String
+
+ constructor(packageName: String, activity: String, title: String, summary: String){
+ mActivity=activity
+ mPackage=packageName
+ mTitle=title
+ mSummary=summary
+ }
+ fun getComponentName() : ComponentName{
+ return ComponentName(mPackage, mActivity)
+ }
+}
\ No newline at end of file
diff --git a/app/src/main/java/org/omnirom/control/ApplicationManager.kt b/app/src/main/java/org/omnirom/control/ApplicationManager.kt
new file mode 100644
index 0000000..b281d8a
--- /dev/null
+++ b/app/src/main/java/org/omnirom/control/ApplicationManager.kt
@@ -0,0 +1,89 @@
+package org.omnirom.control
+
+import android.content.Context
+import android.content.Intent
+import android.content.pm.PackageManager
+import android.graphics.drawable.Drawable
+import android.graphics.drawable.BitmapDrawable
+
+import android.graphics.Bitmap
+import android.graphics.Canvas
+import android.graphics.Paint
+
+import android.graphics.PaintFlagsDrawFilter
+
+
+
+
+class ApplicationManager {
+
+ val mContext: Context
+ val mAppList: ArrayList<Application> = ArrayList()
+ val mIconSize: Int
+
+ constructor(context: Context) {
+ mContext = context
+ mIconSize = mContext.resources.getDimensionPixelSize(R.dimen.applist_icon_size)
+ }
+
+ fun getAppIcon(app: Application): Drawable {
+ val pm: PackageManager = mContext.getPackageManager()
+ return try {
+ resizeAppIcon(pm.getApplicationIcon(app.mPackage), mIconSize, 0)
+ } catch (e: PackageManager.NameNotFoundException) {
+ pm.defaultActivityIcon
+ }
+ }
+
+ fun startApp(app: Application) {
+ val intent = Intent()
+ intent.component = app.getComponentName()
+ try {
+ mContext.startActivity(intent)
+ } catch (e: Exception) {
+
+ }
+ }
+
+ fun addApp(packageName: String, activity: String, title: String, summary: String) {
+ mAppList.add(Application(packageName, activity, title, summary))
+ }
+
+ fun getAppOfPackage(packageName: String): Application? {
+ for (app in mAppList) {
+ if (app.mPackage.equals(packageName)) return app
+ }
+ return null
+ }
+
+ fun isAvailableApp(app: Application): Boolean {
+ val pm: PackageManager = mContext.getPackageManager()
+ return try {
+ val enabled = pm.getApplicationEnabledSetting(app.mPackage)
+ enabled != PackageManager.COMPONENT_ENABLED_STATE_DISABLED &&
+ enabled != PackageManager.COMPONENT_ENABLED_STATE_DISABLED_USER
+ } catch (e: PackageManager.NameNotFoundException) {
+ false
+ }
+ }
+
+ fun resizeAppIcon(image: Drawable,
+ size: Int, border: Int): Drawable {
+ val canvas = Canvas()
+ canvas.setDrawFilter(
+ PaintFlagsDrawFilter(
+ Paint.ANTI_ALIAS_FLAG,
+ Paint.FILTER_BITMAP_FLAG
+ )
+ )
+ val bmResult = Bitmap.createBitmap(
+ size + border, size + border,
+ Bitmap.Config.ARGB_8888
+ )
+ canvas.setBitmap(bmResult)
+ image.setBounds(border / 2, border / 2, size, size)
+ image.draw(canvas)
+ return BitmapDrawable(mContext.resources, bmResult)
+ }
+
+}
\ No newline at end of file
diff --git a/app/src/main/java/org/omnirom/control/BarsSettingsFragment.kt b/app/src/main/java/org/omnirom/control/BarsSettingsFragment.kt
new file mode 100644
index 0000000..c0b4c6f
--- /dev/null
+++ b/app/src/main/java/org/omnirom/control/BarsSettingsFragment.kt
@@ -0,0 +1,25 @@
+package org.omnirom.control
+
+import android.os.Bundle
+import android.provider.Settings
+import androidx.appcompat.app.AppCompatActivity
+import androidx.preference.Preference
+import androidx.preference.PreferenceFragmentCompat
+
+
+class BarsSettingsFragment : PreferenceFragmentCompat() {
+
+ override fun onResume() {
+ super.onResume()
+ (activity as? AppCompatActivity)?.supportActionBar?.setDisplayHomeAsUpEnabled(true)
+ (activity as? SettingsActivity)?.updateFragmentTitle(resources.getString(R.string.bars_settings_title))
+ }
+
+ override fun onCreatePreferences(savedInstanceState: Bundle?, rootKey: String?) {
+ setPreferencesFromResource(R.xml.bars_settings_preferences, rootKey)
+ }
+
+ override fun onPreferenceTreeClick(preference: Preference?): Boolean {
+ return super.onPreferenceTreeClick(preference)
+ }
+}
\ No newline at end of file
diff --git a/app/src/main/java/org/omnirom/control/GridViewFragment.kt b/app/src/main/java/org/omnirom/control/GridViewFragment.kt
new file mode 100644
index 0000000..e86c197
--- /dev/null
+++ b/app/src/main/java/org/omnirom/control/GridViewFragment.kt
@@ -0,0 +1,111 @@
+package org.omnirom.control
+
+import android.content.Context
+import android.os.Bundle
+import android.view.LayoutInflater
+import android.view.View
+import android.view.ViewGroup
+import android.widget.*
+import androidx.appcompat.app.AppCompatActivity
+import androidx.fragment.app.Fragment
+
+
+class GridViewFragment() : Fragment() {
+ lateinit var gridView: GridView
+ val gridItems: ArrayList<GridItem>
+
+ init {
+ this.gridItems = ArrayList<GridItem>()
+ gridItems.add(
+ GridItem(
+ R.string.applist_settings_title,
+ R.drawable.applist_icon,
+ AppListFragment()
+ )
+ )
+ gridItems.add(
+ GridItem(
+ R.string.bars_settings_title,
+ R.drawable.ic_bars_tile,
+ BarsSettingsFragment()
+ )
+ )
+ gridItems.add(
+ GridItem(
+ R.string.more_settings_title,
+ R.drawable.ic_settings_more,
+ MoreSettingsFragment()
+ )
+ )
+ }
+
+ class GridItem(text: Int, icon: Int, fragment: Fragment) {
+ val gridText: Int
+ val gridIcon: Int
+ val gridFragment: Fragment
+
+ init {
+ gridText = text
+ gridIcon = icon
+ gridFragment = fragment
+ }
+ }
+
+ class GridViewAdapter(context: Context, gridItems: List<GridItem>) :
+ ArrayAdapter<GridItem>(context, 0, gridItems) {
+
+ val vi: LayoutInflater
+
+ init {
+ this.vi = context.getSystemService(Context.LAYOUT_INFLATER_SERVICE) as LayoutInflater
+ }
+
+ override fun getView(position: Int, convertView: View?, parent: ViewGroup): View {
+ val viewItem: View = if (convertView == null) {
+ vi.inflate(R.layout.grid_item, null)
+ } else {
+ convertView
+ }
+
+ val gridItem: GridItem? = getItem(position)
+ viewItem.findViewById<TextView>(R.id.grid_item_text).setText(gridItem?.gridText!!)
+ viewItem.findViewById<ImageView>(R.id.grid_item_icon)
+ .setImageResource(gridItem?.gridIcon!!)
+
+ return viewItem
+ }
+ }
+
+ override fun onResume() {
+ super.onResume()
+ (activity as? AppCompatActivity)?.supportActionBar?.setDisplayHomeAsUpEnabled(false)
+ (activity as? SettingsActivity)?.updateFragmentTitle(resources.getString(R.string.app_name))
+ }
+
+ override fun onCreateView(
+ inflater: LayoutInflater,
+ container: ViewGroup?,
+ savedInstanceState: Bundle?
+ ): View? {
+ return inflater.inflate(R.layout.grid_fragment, container, false)
+ }
+
+ override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
+ super.onViewCreated(view, savedInstanceState)
+ gridView = view.findViewById(R.id.grid_view)
+
+ gridView.adapter = GridViewAdapter(requireContext(), gridItems)
+
+ gridView.onItemClickListener =
+ AdapterView.OnItemClickListener { parent, view, position, id ->
+ val gridItem: GridItem = gridItems.get(position)
+ requireActivity().supportFragmentManager
+ .beginTransaction()
+ .replace(R.id.settings, gridItem.gridFragment)
+ .addToBackStack(null)
+ .commit()
+ }
+ }
+
+
+}
\ No newline at end of file
diff --git a/app/src/main/java/org/omnirom/control/MoreSettingsFragment.kt b/app/src/main/java/org/omnirom/control/MoreSettingsFragment.kt
new file mode 100644
index 0000000..c7dea2f
--- /dev/null
+++ b/app/src/main/java/org/omnirom/control/MoreSettingsFragment.kt
@@ -0,0 +1,25 @@
+package org.omnirom.control
+
+import android.os.Bundle
+import android.provider.Settings
+import androidx.appcompat.app.AppCompatActivity
+import androidx.preference.Preference
+import androidx.preference.PreferenceFragmentCompat
+
+
+class MoreSettingsFragment : PreferenceFragmentCompat() {
+
+ override fun onResume() {
+ super.onResume()
+ (activity as? AppCompatActivity)?.supportActionBar?.setDisplayHomeAsUpEnabled(true)
+ (activity as? SettingsActivity)?.updateFragmentTitle(resources.getString(R.string.more_settings_title))
+ }
+
+ override fun onCreatePreferences(savedInstanceState: Bundle?, rootKey: String?) {
+ setPreferencesFromResource(R.xml.more_settings_preferences, rootKey)
+ }
+
+ override fun onPreferenceTreeClick(preference: Preference?): Boolean {
+ return super.onPreferenceTreeClick(preference)
+ }
+}
\ No newline at end of file
diff --git a/app/src/main/java/org/omnirom/control/SettingsActivity.kt b/app/src/main/java/org/omnirom/control/SettingsActivity.kt
index 6c67475..6fa9ada 100644
--- a/app/src/main/java/org/omnirom/control/SettingsActivity.kt
+++ b/app/src/main/java/org/omnirom/control/SettingsActivity.kt
@@ -1,111 +1,42 @@
package org.omnirom.control
-import android.content.ComponentName
-import android.content.Intent
-import android.content.pm.PackageManager
-import android.graphics.drawable.Drawable
import android.os.Bundle
+import android.view.MenuItem
+import android.widget.TextView
import androidx.appcompat.app.AppCompatActivity
import androidx.appcompat.widget.Toolbar
-import androidx.preference.Preference
-import androidx.preference.PreferenceCategory
-import androidx.preference.PreferenceFragmentCompat
+import com.google.android.material.bottomnavigation.BottomNavigationView
+import org.w3c.dom.Text
class SettingsActivity : AppCompatActivity() {
+ lateinit var titleView: TextView
+
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.settings_activity)
if (savedInstanceState == null) {
supportFragmentManager
- .beginTransaction()
- .replace(R.id.settings, SettingsFragment())
- .commit()
+ .beginTransaction()
+ .replace(R.id.settings, GridViewFragment())
+ .commit()
}
- val toolbar:Toolbar = findViewById(R.id.toolbar)
- toolbar.setTitle(R.string.app_name)
- toolbar.setTitleTextAppearance(this, R.style.Theme_OmniControl_ToolBar_TitleTextStyle)
+ val toolbar: Toolbar = findViewById(R.id.toolbar)
+ toolbar.setTitle("")
setSupportActionBar(toolbar)
+
+ titleView = findViewById<TextView>(R.id.fragment_title)
}
- class SettingsFragment : PreferenceFragmentCompat() {
- val KEY_OMNISTORE = "omnistore"
- val KEY_APPS_LIST = "apps_list"
- val OMNISTORE_APP_PKG = "org.omnirom.omnistore"
- val OMNISTORE_INSTALL_PKG = "org.omnirom.omnistoreinstaller"
- val OMNISTORE_ACTIVITY = ".MainActivity"
-
- fun isAvailableApp(packageName: String): Boolean {
- val pm: PackageManager = requireContext().getPackageManager()
- return try {
- val enabled = pm.getApplicationEnabledSetting(packageName)
- enabled != PackageManager.COMPONENT_ENABLED_STATE_DISABLED &&
- enabled != PackageManager.COMPONENT_ENABLED_STATE_DISABLED_USER
- } catch (e: PackageManager.NameNotFoundException) {
- false
- }
+ override fun onOptionsItemSelected(item: MenuItem): Boolean {
+ when (item.getItemId()) {
+ android.R.id.home -> onBackPressed()
}
+ return super.onOptionsItemSelected(item)
+ }
- fun getAppIcon(packageName: String): Drawable {
- val pm: PackageManager = requireContext().getPackageManager()
- return try {
- pm.getApplicationIcon(packageName)
- } catch (e: PackageManager.NameNotFoundException) {
- pm.defaultActivityIcon
- }
- }
-
- override fun onCreatePreferences(savedInstanceState: Bundle?, rootKey: String?) {
- setPreferencesFromResource(R.xml.root_preferences, rootKey)
-
- var omniStoreEntry: Preference? = findPreference(KEY_OMNISTORE)
- if (omniStoreEntry != null) {
- omniStoreEntry.isVisible =
- isAvailableApp(OMNISTORE_APP_PKG) || isAvailableApp(OMNISTORE_INSTALL_PKG)
- if (isAvailableApp(OMNISTORE_APP_PKG))
- omniStoreEntry.icon = getAppIcon(OMNISTORE_APP_PKG);
- if (isAvailableApp(OMNISTORE_INSTALL_PKG))
- omniStoreEntry.icon = getAppIcon(OMNISTORE_INSTALL_PKG);
- }
-
- var appCategory: PreferenceCategory? = findPreference(KEY_APPS_LIST)
- if (appCategory != null) {
- for(i in 0 until appCategory.preferenceCount) {
- val app = appCategory.getPreference(i)
- if (app.intent != null){
- val intent = app.intent
- if (intent != null && intent.component != null) {
- val pkg = intent.component!!.packageName
- if (pkg != null) {
- app.icon = getAppIcon(pkg)
- }
- }
- }
- }
- }
- }
-
- override fun onPreferenceTreeClick(preference: Preference?): Boolean {
- if (preference?.key.equals(KEY_OMNISTORE)) {
- if (isAvailableApp(OMNISTORE_APP_PKG)) {
- val name =
- ComponentName(OMNISTORE_APP_PKG, OMNISTORE_APP_PKG + OMNISTORE_ACTIVITY)
- val intent = Intent()
- intent.component = name
- requireActivity().startActivity(intent)
- } else if (isAvailableApp(OMNISTORE_INSTALL_PKG)) {
- val name = ComponentName(
- OMNISTORE_INSTALL_PKG,
- OMNISTORE_INSTALL_PKG + OMNISTORE_ACTIVITY
- )
- val intent = Intent()
- intent.component = name
- requireActivity().startActivity(intent)
- }
- return true
- }
- return super.onPreferenceTreeClick(preference)
- }
+ fun updateFragmentTitle(title: String) {
+ titleView.setText(title)
}
}
\ No newline at end of file
diff --git a/app/src/main/java/org/omnirom/control/preference/SecureCheckBoxPreference.java b/app/src/main/java/org/omnirom/control/preference/SecureCheckBoxPreference.java
new file mode 100644
index 0000000..508fc7b
--- /dev/null
+++ b/app/src/main/java/org/omnirom/control/preference/SecureCheckBoxPreference.java
@@ -0,0 +1,70 @@
+/*
+ * Copyright (C) 2013 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 org.omnirom.control.preference;
+
+import android.content.Context;
+import android.provider.Settings;
+import android.util.AttributeSet;
+
+import androidx.preference.CheckBoxPreference;
+
+public class SecureCheckBoxPreference extends CheckBoxPreference {
+ public SecureCheckBoxPreference(Context context, AttributeSet attrs, int defStyle) {
+ super(context, attrs, defStyle);
+ }
+
+ public SecureCheckBoxPreference(Context context, AttributeSet attrs) {
+ super(context, attrs);
+ }
+
+ public SecureCheckBoxPreference(Context context) {
+ super(context, null);
+ }
+
+ @Override
+ protected boolean persistBoolean(boolean value) {
+ if (shouldPersist()) {
+ if (value == getPersistedBoolean(!value)) {
+ // It's already there, so the same as persisting
+ return true;
+ }
+ try {
+ Settings.Secure.putInt(getContext().getContentResolver(), getKey(), value ? 1 : 0);
+ } catch (SecurityException e) {
+
+ }
+ return true;
+ }
+ return false;
+ }
+
+ @Override
+ protected boolean getPersistedBoolean(boolean defaultReturnValue) {
+ if (!shouldPersist()) {
+ return defaultReturnValue;
+ }
+
+ return Settings.Secure.getInt(getContext().getContentResolver(),
+ getKey(), defaultReturnValue ? 1 : 0) != 0;
+ }
+
+ @Override
+ protected void onSetInitialValue(boolean restoreValue, Object defaultValue) {
+ setChecked(Settings.Secure.getString(getContext().getContentResolver(), getKey()) != null ? getPersistedBoolean(isChecked())
+ : (Boolean) defaultValue);
+ }
+}
diff --git a/app/src/main/java/org/omnirom/control/preference/SecureSettingSwitchPreference.java b/app/src/main/java/org/omnirom/control/preference/SecureSettingSwitchPreference.java
new file mode 100644
index 0000000..e4fc15b
--- /dev/null
+++ b/app/src/main/java/org/omnirom/control/preference/SecureSettingSwitchPreference.java
@@ -0,0 +1,69 @@
+/*
+ * Copyright (C) 2015 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 org.omnirom.control.preference;
+
+import android.content.Context;
+import androidx.preference.SwitchPreference;
+import android.util.AttributeSet;
+
+import android.provider.Settings;
+
+public class SecureSettingSwitchPreference extends SwitchPreference {
+ public SecureSettingSwitchPreference(Context context, AttributeSet attrs, int defStyle) {
+ super(context, attrs, defStyle);
+ }
+
+ public SecureSettingSwitchPreference(Context context, AttributeSet attrs) {
+ super(context, attrs);
+ }
+
+ public SecureSettingSwitchPreference(Context context) {
+ super(context, null);
+ }
+
+ @Override
+ protected boolean persistBoolean(boolean value) {
+ if (shouldPersist()) {
+ if (value == getPersistedBoolean(!value)) {
+ // It's already there, so the same as persisting
+ return true;
+ }
+ try {
+ Settings.Secure.putInt(getContext().getContentResolver(), getKey(), value ? 1 : 0);
+ } catch (SecurityException e){
+
+ }
+ return true;
+ }
+ return false;
+ }
+
+ @Override
+ protected boolean getPersistedBoolean(boolean defaultReturnValue) {
+ if (!shouldPersist()) {
+ return defaultReturnValue;
+ }
+ return Settings.Secure.getInt(getContext().getContentResolver(),
+ getKey(), defaultReturnValue ? 1 : 0) != 0;
+ }
+
+ @Override
+ protected void onSetInitialValue(boolean restoreValue, Object defaultValue) {
+ setChecked(Settings.Secure.getString(getContext().getContentResolver(), getKey()) != null ? getPersistedBoolean(isChecked())
+ : (Boolean) defaultValue);
+ }
+}
diff --git a/app/src/main/java/org/omnirom/control/preference/SystemCheckBoxPreference.java b/app/src/main/java/org/omnirom/control/preference/SystemCheckBoxPreference.java
new file mode 100644
index 0000000..4044947
--- /dev/null
+++ b/app/src/main/java/org/omnirom/control/preference/SystemCheckBoxPreference.java
@@ -0,0 +1,67 @@
+/*
+ * Copyright (C) 2013 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 org.omnirom.control.preference;
+
+import android.content.Context;
+import androidx.preference.CheckBoxPreference;
+import android.provider.Settings;
+import android.util.AttributeSet;
+
+public class SystemCheckBoxPreference extends CheckBoxPreference {
+ public SystemCheckBoxPreference(Context context, AttributeSet attrs, int defStyle) {
+ super(context, attrs, defStyle);
+ }
+
+ public SystemCheckBoxPreference(Context context, AttributeSet attrs) {
+ super(context, attrs);
+ }
+
+ public SystemCheckBoxPreference(Context context) {
+ super(context, null);
+ }
+
+ @Override
+ protected boolean persistBoolean(boolean value) {
+ if (shouldPersist()) {
+ if (value == getPersistedBoolean(!value)) {
+ // It's already there, so the same as persisting
+ return true;
+ }
+ if (Settings.System.canWrite(getContext())) {
+ Settings.System.putInt(getContext().getContentResolver(), getKey(), value ? 1 : 0);
+ }
+ return true;
+ }
+ return false;
+ }
+
+ @Override
+ protected boolean getPersistedBoolean(boolean defaultReturnValue) {
+ if (!shouldPersist()) {
+ return defaultReturnValue;
+ }
+
+ return Settings.System.getInt(getContext().getContentResolver(),
+ getKey(), defaultReturnValue ? 1 : 0) != 0;
+ }
+
+ @Override
+ protected void onSetInitialValue(boolean restoreValue, Object defaultValue) {
+ setChecked(Settings.System.getString(getContext().getContentResolver(), getKey()) != null ? getPersistedBoolean(isChecked())
+ : (Boolean) defaultValue);
+ }
+}
diff --git a/app/src/main/java/org/omnirom/control/preference/SystemSettingSwitchPreference.java b/app/src/main/java/org/omnirom/control/preference/SystemSettingSwitchPreference.java
new file mode 100644
index 0000000..f1316b1
--- /dev/null
+++ b/app/src/main/java/org/omnirom/control/preference/SystemSettingSwitchPreference.java
@@ -0,0 +1,66 @@
+/*
+ * Copyright (C) 2013 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 org.omnirom.control.preference;
+
+import android.content.Context;
+import android.provider.Settings;
+import androidx.preference.SwitchPreference;
+import android.util.AttributeSet;
+
+public class SystemSettingSwitchPreference extends SwitchPreference {
+ public SystemSettingSwitchPreference(Context context, AttributeSet attrs, int defStyle) {
+ super(context, attrs, defStyle);
+ }
+
+ public SystemSettingSwitchPreference(Context context, AttributeSet attrs) {
+ super(context, attrs);
+ }
+
+ public SystemSettingSwitchPreference(Context context) {
+ super(context, null);
+ }
+
+ @Override
+ protected boolean persistBoolean(boolean value) {
+ if (shouldPersist()) {
+ if (value == getPersistedBoolean(!value)) {
+ // It's already there, so the same as persisting
+ return true;
+ }
+ if (Settings.System.canWrite(getContext())) {
+ Settings.System.putInt(getContext().getContentResolver(), getKey(), value ? 1 : 0);
+ }
+ return true;
+ }
+ return false;
+ }
+
+ @Override
+ protected boolean getPersistedBoolean(boolean defaultReturnValue) {
+ if (!shouldPersist()) {
+ return defaultReturnValue;
+ }
+ return Settings.System.getInt(getContext().getContentResolver(),
+ getKey(), defaultReturnValue ? 1 : 0) != 0;
+ }
+
+ @Override
+ protected void onSetInitialValue(boolean restoreValue, Object defaultValue) {
+ setChecked(Settings.System.getString(getContext().getContentResolver(), getKey()) != null ? getPersistedBoolean(isChecked())
+ : (Boolean) defaultValue);
+ }
+}
diff --git a/app/src/main/res/drawable/applist_icon.xml b/app/src/main/res/drawable/applist_icon.xml
new file mode 100644
index 0000000..313f48a
--- /dev/null
+++ b/app/src/main/res/drawable/applist_icon.xml
@@ -0,0 +1,10 @@
+<vector xmlns:android="http://schemas.android.com/apk/res/android"
+ android:width="24dp"
+ android:height="24dp"
+ android:tint="?android:textColorPrimary"
+ android:viewportWidth="24"
+ android:viewportHeight="24">
+ <path
+ android:fillColor="@android:color/white"
+ android:pathData="M4,8h4L8,4L4,4v4zM10,20h4v-4h-4v4zM4,20h4v-4L4,16v4zM4,14h4v-4L4,10v4zM10,14h4v-4h-4v4zM16,4v4h4L20,4h-4zM10,8h4L14,4h-4v4zM16,14h4v-4h-4v4zM16,20h4v-4h-4v4z" />
+</vector>
diff --git a/app/src/main/res/drawable/bottom_navigation_selector.xml b/app/src/main/res/drawable/bottom_navigation_selector.xml
new file mode 100644
index 0000000..28a1b4a
--- /dev/null
+++ b/app/src/main/res/drawable/bottom_navigation_selector.xml
@@ -0,0 +1,5 @@
+<?xml version="1.0" encoding="utf-8"?>
+<selector xmlns:android="http://schemas.android.com/apk/res/android">
+ <item android:color="?android:colorAccent" android:state_checked="true" />
+ <item android:color="?android:textColorPrimary"/>
+</selector>
\ No newline at end of file
diff --git a/app/src/main/res/drawable/grid_item_background.xml b/app/src/main/res/drawable/grid_item_background.xml
new file mode 100644
index 0000000..94a2381
--- /dev/null
+++ b/app/src/main/res/drawable/grid_item_background.xml
@@ -0,0 +1,23 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+ ~ Copyright (C) 2021 The Android Open Source 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.
+ -->
+<ripple xmlns:android="http://schemas.android.com/apk/res/android"
+ android:color="?android:attr/colorControlHighlight">
+ <item android:id="@android:id/mask"
+ android:drawable="@drawable/grid_item_background_shape" />
+ <item android:id="@+id/background"
+ android:drawable="@drawable/grid_item_background_shape"/>
+</ripple>
\ No newline at end of file
diff --git a/app/src/main/res/drawable/grid_item_background_shape.xml b/app/src/main/res/drawable/grid_item_background_shape.xml
new file mode 100644
index 0000000..15d518c
--- /dev/null
+++ b/app/src/main/res/drawable/grid_item_background_shape.xml
@@ -0,0 +1,21 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+ ~ Copyright (C) 2021 The Android Open Source 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.
+ -->
+
+<shape xmlns:android="http://schemas.android.com/apk/res/android">
+ <corners android:radius="@dimen/grid_item_corner_radius" />
+ <solid android:color="?android:colorAccent" />
+</shape>
\ No newline at end of file
diff --git a/app/src/main/res/drawable/ic_bars_tile.xml b/app/src/main/res/drawable/ic_bars_tile.xml
new file mode 100644
index 0000000..47948ee
--- /dev/null
+++ b/app/src/main/res/drawable/ic_bars_tile.xml
@@ -0,0 +1,27 @@
+<?xml version="1.0" encoding="utf-8"?><!--
+ Copyright (C) 2015 The Android Open Source 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.
+-->
+
+<vector xmlns:android="http://schemas.android.com/apk/res/android"
+ android:width="24dp"
+ android:height="24dp"
+ android:tint="?android:textColorPrimary"
+ android:viewportWidth="24"
+ android:viewportHeight="24">
+ >
+ <path
+ android:fillColor="@android:color/white"
+ android:pathData="M17.25,18H6.75V4H17.25M14,21H10V20H14M16,1H8A3,3 0 0,0 5,4V20A3,3 0 0,0 8,23H16A3,3 0 0,0 19,20V4A3,3 0 0,0 16,1Z" />
+</vector>
diff --git a/app/src/main/res/drawable/ic_settings_more.xml b/app/src/main/res/drawable/ic_settings_more.xml
new file mode 100644
index 0000000..0efcc0a
--- /dev/null
+++ b/app/src/main/res/drawable/ic_settings_more.xml
@@ -0,0 +1,26 @@
+<!--
+ Copyright (C) 2016 The Android Open Source 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.
+-->
+<vector xmlns:android="http://schemas.android.com/apk/res/android"
+ android:width="24.0dp"
+ android:height="24.0dp"
+ android:tint="?android:textColorPrimary"
+ android:viewportWidth="24.0"
+ android:viewportHeight="24.0">
+ >
+ <path
+ android:fillColor="@android:color/white"
+ android:pathData="M6,10c-1.1,0 -2,0.9 -2,2s0.9,2 2,2 2,-0.9 2,-2 -0.9,-2 -2,-2zM18,10c-1.1,0 -2,0.9 -2,2s0.9,2 2,2 2,-0.9 2,-2 -0.9,-2 -2,-2zM12,10c-1.1,0 -2,0.9 -2,2s0.9,2 2,2 2,-0.9 2,-2 -0.9,-2 -2,-2z" />
+</vector>
diff --git a/app/src/main/res/drawable/settings_icon.xml b/app/src/main/res/drawable/settings_icon.xml
new file mode 100644
index 0000000..41a82ed
--- /dev/null
+++ b/app/src/main/res/drawable/settings_icon.xml
@@ -0,0 +1,10 @@
+<vector xmlns:android="http://schemas.android.com/apk/res/android"
+ android:width="24dp"
+ android:height="24dp"
+ android:viewportWidth="24"
+ android:viewportHeight="24"
+ android:tint="?attr/colorControlNormal">
+ <path
+ android:fillColor="@android:color/white"
+ android:pathData="M19.14,12.94c0.04,-0.3 0.06,-0.61 0.06,-0.94c0,-0.32 -0.02,-0.64 -0.07,-0.94l2.03,-1.58c0.18,-0.14 0.23,-0.41 0.12,-0.61l-1.92,-3.32c-0.12,-0.22 -0.37,-0.29 -0.59,-0.22l-2.39,0.96c-0.5,-0.38 -1.03,-0.7 -1.62,-0.94L14.4,2.81c-0.04,-0.24 -0.24,-0.41 -0.48,-0.41h-3.84c-0.24,0 -0.43,0.17 -0.47,0.41L9.25,5.35C8.66,5.59 8.12,5.92 7.63,6.29L5.24,5.33c-0.22,-0.08 -0.47,0 -0.59,0.22L2.74,8.87C2.62,9.08 2.66,9.34 2.86,9.48l2.03,1.58C4.84,11.36 4.8,11.69 4.8,12s0.02,0.64 0.07,0.94l-2.03,1.58c-0.18,0.14 -0.23,0.41 -0.12,0.61l1.92,3.32c0.12,0.22 0.37,0.29 0.59,0.22l2.39,-0.96c0.5,0.38 1.03,0.7 1.62,0.94l0.36,2.54c0.05,0.24 0.24,0.41 0.48,0.41h3.84c0.24,0 0.44,-0.17 0.47,-0.41l0.36,-2.54c0.59,-0.24 1.13,-0.56 1.62,-0.94l2.39,0.96c0.22,0.08 0.47,0 0.59,-0.22l1.92,-3.32c0.12,-0.22 0.07,-0.47 -0.12,-0.61L19.14,12.94zM12,15.6c-1.98,0 -3.6,-1.62 -3.6,-3.6s1.62,-3.6 3.6,-3.6s3.6,1.62 3.6,3.6S13.98,15.6 12,15.6z"/>
+</vector>
diff --git a/app/src/main/res/layout/grid_fragment.xml b/app/src/main/res/layout/grid_fragment.xml
new file mode 100644
index 0000000..2555dde
--- /dev/null
+++ b/app/src/main/res/layout/grid_fragment.xml
@@ -0,0 +1,17 @@
+<?xml version="1.0" encoding="utf-8"?>
+<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
+ android:layout_width="match_parent"
+ android:layout_height="match_parent"
+ android:layout_marginStart="30dp">
+
+ <GridView
+ android:id="@+id/grid_view"
+ android:layout_width="match_parent"
+ android:layout_height="match_parent"
+ android:numColumns="auto_fit"
+ android:verticalSpacing="@dimen/grip_view_spacing"
+ android:horizontalSpacing="@dimen/grip_view_spacing"
+ android:stretchMode="columnWidth"
+ android:columnWidth="200dp"
+ android:gravity="center" />
+</androidx.constraintlayout.widget.ConstraintLayout>
\ No newline at end of file
diff --git a/app/src/main/res/layout/grid_item.xml b/app/src/main/res/layout/grid_item.xml
new file mode 100644
index 0000000..ae3852d
--- /dev/null
+++ b/app/src/main/res/layout/grid_item.xml
@@ -0,0 +1,26 @@
+<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
+ android:layout_width="match_parent"
+ android:layout_height="match_parent"
+ android:background="@drawable/grid_item_background">
+
+ <LinearLayout
+ android:layout_width="match_parent"
+ android:layout_height="match_parent"
+ android:layout_margin="20dp"
+ android:orientation="vertical">
+
+ <ImageView
+ android:id="@+id/grid_item_icon"
+ android:layout_width="48dp"
+ android:layout_height="48dp"
+ android:layout_gravity="center" />
+
+ <TextView
+ android:id="@+id/grid_item_text"
+ android:layout_width="match_parent"
+ android:layout_height="wrap_content"
+ android:textAlignment="center" />
+
+ </LinearLayout>
+
+</FrameLayout>
\ No newline at end of file
diff --git a/app/src/main/res/layout/settings_activity.xml b/app/src/main/res/layout/settings_activity.xml
index 247cb63..e403696 100644
--- a/app/src/main/res/layout/settings_activity.xml
+++ b/app/src/main/res/layout/settings_activity.xml
@@ -6,11 +6,20 @@
<androidx.appcompat.widget.Toolbar
android:id="@+id/toolbar"
android:layout_width="match_parent"
+ android:layout_height="wrap_content" />
+
+ <TextView
+ android:layout_width="match_parent"
android:layout_height="wrap_content"
- android:layout_marginTop="60dp"/>
+ android:id="@+id/fragment_title"
+ android:textAppearance="@style/Theme.OmniControl.TitleTextStyle"
+ android:layout_marginStart="30dp"/>
<FrameLayout
android:id="@+id/settings"
android:layout_width="match_parent"
- android:layout_height="match_parent" />
+ android:layout_height="0dp"
+ android:layout_weight="1"
+ android:layout_marginTop="20dp"/>
+
</LinearLayout>
\ No newline at end of file
diff --git a/app/src/main/res/menu/bottom_navigation.xml b/app/src/main/res/menu/bottom_navigation.xml
new file mode 100644
index 0000000..dd0c2ba
--- /dev/null
+++ b/app/src/main/res/menu/bottom_navigation.xml
@@ -0,0 +1,14 @@
+<?xml version="1.0" encoding="utf-8"?>
+<menu xmlns:android="http://schemas.android.com/apk/res/android"
+ xmlns:tools="http://schemas.android.com/tools"
+ tools:showIn="bottom_navigation">
+ <item
+ android:id="@+id/menu_applist"
+ android:icon="@drawable/applist_icon"
+ android:title="Apps"/>
+
+ <item
+ android:id="@+id/menu_settings"
+ android:icon="@drawable/settings_icon"
+ android:title="Settings"/>
+</menu>
\ No newline at end of file
diff --git a/app/src/main/res/values-night/themes.xml b/app/src/main/res/values-night/themes.xml
index 3114c22..38cd987 100644
--- a/app/src/main/res/values-night/themes.xml
+++ b/app/src/main/res/values-night/themes.xml
@@ -1,6 +1,5 @@
<resources xmlns:tools="http://schemas.android.com/tools">
<style name="Theme.OmniControl" parent="Theme.MaterialComponents.DayNight.NoActionBar">
- <item name="toolbarStyle">@style/Theme.OmniControl.ToolBar</item>
<item name="colorPrimary">@color/colorPrimary</item>
<item name="colorPrimaryDark">@color/colorPrimary</item>
<item name="android:windowBackground">@color/main_background_light</item>
diff --git a/app/src/main/res/values/dimens.xml b/app/src/main/res/values/dimens.xml
new file mode 100644
index 0000000..afbe64f
--- /dev/null
+++ b/app/src/main/res/values/dimens.xml
@@ -0,0 +1,6 @@
+<?xml version="1.0" encoding="utf-8"?>
+<resources>
+ <dimen name="applist_icon_size">108dp</dimen>
+ <dimen name="grip_view_spacing">8dp</dimen>
+ <dimen name="grid_item_corner_radius">16dp</dimen>
+</resources>
\ No newline at end of file
diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml
index d570b6d..8622e01 100644
--- a/app/src/main/res/values/strings.xml
+++ b/app/src/main/res/values/strings.xml
@@ -8,7 +8,6 @@
<string name="omni_remote_title">OmniRemote</string>
<string name="omni_remote_summary">VNC server to allow remote connection to device</string>
- <string name="apps_header">Applications</string>
<string name="matlog_title">MatLog</string>
<string name="matlog_summary">Show logcat</string>
<string name="changelog_title">Changelog</string>
@@ -17,4 +16,23 @@
<string name="omniswitch_summary">Universal recent application switcher</string>
<string name="omnistore_title">OmniStore</string>
<string name="omnistore_summary">Download applications</string>
+ <string name="wallpaper_title">Wallpapers</string>
+ <string name="wallpaper_summary">Browse OmniROM themed wallpapers</string>
+ <string name="applist_title">Applications</string>
+ <string name="settings_title">Settings</string>
+ <string name="device_settings_title">Device settings</string>
+ <string name="device_settings_summary">Advanced device specific settings</string>
+
+ <string name="bars_settings_title">Bars</string>
+ <string name="more_settings_title">More</string>
+ <string name="applist_settings_title">Applications</string>
+
+ <string name="navigationbar_title">Navigation bar</string>
+ <string name="navigation_bar_show_title">Show navigation bar</string>
+ <string name="navigation_bar_show_summary">Force enable navigation bar</string>
+
+ <string name="statusbar_settings_category">Status bar</string>
+ <string name="status_bar_clock_seconds_title">Show clock seconds</string>
+ <string name="status_bar_clock_seconds_summary">Show seconds on status bar clock</string>
+
</resources>
\ No newline at end of file
diff --git a/app/src/main/res/values/themes.xml b/app/src/main/res/values/themes.xml
index bc2bd55..10abf5a 100644
--- a/app/src/main/res/values/themes.xml
+++ b/app/src/main/res/values/themes.xml
@@ -7,14 +7,9 @@
<item name="android:windowLightStatusBar">true</item>
<item name="android:navigationBarColor">@android:color/transparent</item>
<item name="windowActionBar">false</item>
- <item name="toolbarStyle">@style/Theme.OmniControl.ToolBar</item>
</style>
- <style name="Theme.OmniControl.ToolBar" parent="ThemeOverlay.MaterialComponents.Toolbar.Primary">
- <item name="contentInsetStart">32dp</item>
- </style>
-
- <style name="Theme.OmniControl.ToolBar.TitleTextStyle" parent="TextAppearance.MaterialComponents.Body1">
+ <style name="Theme.OmniControl.TitleTextStyle" parent="TextAppearance.MaterialComponents.Body1">
<item name="android:textSize">32dp</item>
<item name="android:color">?android:textColorPrimary</item>
</style>
diff --git a/app/src/main/res/xml/applist_preferences.xml b/app/src/main/res/xml/applist_preferences.xml
new file mode 100644
index 0000000..4d01696
--- /dev/null
+++ b/app/src/main/res/xml/applist_preferences.xml
@@ -0,0 +1,7 @@
+<PreferenceScreen xmlns:android="http://schemas.android.com/apk/res/android">
+
+ <PreferenceCategory android:key="apps_list">
+ </PreferenceCategory>
+
+
+</PreferenceScreen>
\ No newline at end of file
diff --git a/app/src/main/res/xml/bars_settings_preferences.xml b/app/src/main/res/xml/bars_settings_preferences.xml
new file mode 100644
index 0000000..dcbb0ff
--- /dev/null
+++ b/app/src/main/res/xml/bars_settings_preferences.xml
@@ -0,0 +1,28 @@
+<PreferenceScreen xmlns:android="http://schemas.android.com/apk/res/android"
+ android:key="bars_settings">
+ <PreferenceCategory
+ android:key="statusbar_settings_category"
+ android:title="@string/statusbar_settings_category">
+
+ <org.omnirom.control.preference.SecureSettingSwitchPreference
+ android:key="clock_seconds"
+ android:title="@string/status_bar_clock_seconds_title"
+ android:summary="@string/status_bar_clock_seconds_summary"
+ android:defaultValue="false" />
+
+ </PreferenceCategory>
+
+
+ <PreferenceCategory
+ android:key="category_navigationbar"
+ android:title="@string/navigationbar_title">
+
+ <org.omnirom.control.preference.SystemSettingSwitchPreference
+ android:key="navbar_visibility"
+ android:title="@string/navigation_bar_show_title"
+ android:summary="@string/navigation_bar_show_summary" />
+
+ </PreferenceCategory>
+</PreferenceScreen>
+
+
diff --git a/app/src/main/res/xml/more_settings_preferences.xml b/app/src/main/res/xml/more_settings_preferences.xml
new file mode 100644
index 0000000..7123145
--- /dev/null
+++ b/app/src/main/res/xml/more_settings_preferences.xml
@@ -0,0 +1,7 @@
+<PreferenceScreen xmlns:android="http://schemas.android.com/apk/res/android"
+ android:key="more_settings"
+ android:title="More">
+ <Preference
+ android:key="bar"
+ android:title="bar" />
+</PreferenceScreen>
diff --git a/app/src/main/res/xml/root_preferences.xml b/app/src/main/res/xml/root_preferences.xml
deleted file mode 100644
index f0f28c9..0000000
--- a/app/src/main/res/xml/root_preferences.xml
+++ /dev/null
@@ -1,57 +0,0 @@
-<PreferenceScreen xmlns:android="http://schemas.android.com/apk/res/android"
- android:title="@string/app_name">
-
- <PreferenceCategory android:key="apps_list">
- <Preference
- android:summary="@string/omni_remote_summary"
- android:title="@string/omni_remote_title">
- <intent
- android:action="android.intent.action.MAIN"
- android:targetClass="org.omnirom.omniremote.MainActivity"
- android:targetPackage="org.omnirom.omniremote" />
- </Preference>
-
- <Preference
- android:summary="@string/weather_config_summary"
- android:title="@string/weather_config_title">
- <intent
- android:action="android.intent.action.MAIN"
- android:targetClass="org.omnirom.omnijaws.SettingsActivity"
- android:targetPackage="org.omnirom.omnijaws" />
- </Preference>
-
- <Preference
- android:summary="@string/matlog_summary"
- android:title="@string/matlog_title">
- <intent
- android:action="android.intent.action.MAIN"
- android:targetClass="com.pluscubed.logcat.ui.LogcatActivity"
- android:targetPackage="org.omnirom.logcat" />
- </Preference>
-
- <Preference
- android:summary="@string/changelog_summary"
- android:title="@string/changelog_title">
- <intent
- android:action="android.intent.action.MAIN"
- android:targetClass="org.omnirom.omnichange.OmniMain"
- android:targetPackage="org.omnirom.omnichange" />
- </Preference>
-
- <Preference
- android:summary="@string/omniswitch_summary"
- android:title="@string/omniswitch_title">
- <intent
- android:action="android.intent.action.MAIN"
- android:targetClass="org.omnirom.omniswitch.SettingsActivity"
- android:targetPackage="org.omnirom.omniswitch" />
- </Preference>
-
- <Preference
- android:key="omnistore"
- android:summary="@string/omnistore_summary"
- android:title="@string/omnistore_title"></Preference>
- </PreferenceCategory>
-
-
-</PreferenceScreen>
\ No newline at end of file
diff --git a/app/src/main/res/xml/settings_preferences.xml b/app/src/main/res/xml/settings_preferences.xml
new file mode 100644
index 0000000..5e6c1bc
--- /dev/null
+++ b/app/src/main/res/xml/settings_preferences.xml
@@ -0,0 +1,14 @@
+<PreferenceScreen xmlns:android="http://schemas.android.com/apk/res/android">
+
+ <Preference
+ android:icon="@drawable/ic_bars_tile"
+ android:key="bars_settings"
+ android:title="Bars">
+ </Preference>
+
+ <Preference
+ android:icon="@drawable/ic_settings_more"
+ android:key="more_settings"
+ android:title="More">
+ </Preference>
+</PreferenceScreen>
\ No newline at end of file