[3/3] OmniControl: add setting to get old navbar instead of taskbar on tablets

Change-Id: Ieff900e0cb2c64de692fdc3f8859768ef0a036a7
diff --git a/app/src/main/java/org/omnirom/control/BarsSettingsFragment.kt b/app/src/main/java/org/omnirom/control/BarsSettingsFragment.kt
index cd069b5..05ee9ba 100644
--- a/app/src/main/java/org/omnirom/control/BarsSettingsFragment.kt
+++ b/app/src/main/java/org/omnirom/control/BarsSettingsFragment.kt
@@ -17,15 +17,19 @@
  */
 package org.omnirom.control
 
+import android.graphics.Rect
 import android.os.Bundle
-import android.provider.Settings
-import androidx.appcompat.app.AppCompatActivity
+import android.util.DisplayMetrics
+import android.view.WindowManager
 import androidx.preference.Preference
-import androidx.preference.PreferenceFragmentCompat
+import androidx.preference.PreferenceCategory
+import kotlin.math.min
 
 
 class BarsSettingsFragment : AbstractSettingsFragment() {
 
+    private val TABLET_MIN_DPS = 600
+
     override fun getFragmentTitle(): String {
         return resources.getString(R.string.bars_settings_title)
     }
@@ -40,9 +44,31 @@
 
     override fun onCreatePreferences(savedInstanceState: Bundle?, rootKey: String?) {
         setPreferencesFromResource(R.xml.bars_settings_preferences, rootKey)
+
+        val taskbarCategory:PreferenceCategory? = findPreference("category_taskbar")
+        if (taskbarCategory != null){
+            if (!isTablet()) {
+                preferenceScreen.removePreference(taskbarCategory)
+            }
+        }
     }
 
     override fun onPreferenceTreeClick(preference: Preference?): Boolean {
         return super.onPreferenceTreeClick(preference)
     }
+
+    private fun dpiFromPx(size: Int, densityDpi: Int): Float {
+        val densityRatio = densityDpi.toFloat() / DisplayMetrics.DENSITY_DEFAULT
+        return size / densityRatio
+    }
+
+    private fun isTablet(): Boolean {
+        val windowManager: WindowManager = requireContext().getSystemService(WindowManager::class.java)
+        val bounds: Rect = windowManager.currentWindowMetrics.bounds
+        val smallestWidth: Float = dpiFromPx(
+            min(bounds.width(), bounds.height()),
+            resources.configuration.densityDpi
+        )
+        return smallestWidth >= TABLET_MIN_DPS
+    }
 }
\ 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 8be464f..b27786f 100644
--- a/app/src/main/res/values/strings.xml
+++ b/app/src/main/res/values/strings.xml
@@ -102,6 +102,9 @@
 
     <string name="status_bar_bt_battery_title">Show Bluetooth battery level</string>
     <string name="status_bar_bt_battery_summary">For supported devices show battery level also in status bar</string>
+    <string name="taskbar_title">Taskbar</string>
+    <string name="taskbar_disable_title">Disable taskbar</string>
+    <string name="taskbar_disable_summary">Show legacy navigation bar instead of taskbar. Needs reboot.</string>
 
     <string name="qs_settings_title">Quick settings</string>
     <string name="qs_settings_summary">Layout options</string>
diff --git a/app/src/main/res/xml/bars_settings_preferences.xml b/app/src/main/res/xml/bars_settings_preferences.xml
index e646ab2..f15ab9d 100644
--- a/app/src/main/res/xml/bars_settings_preferences.xml
+++ b/app/src/main/res/xml/bars_settings_preferences.xml
@@ -36,6 +36,18 @@
             android:defaultValue="false"/>
 
     </PreferenceCategory>
+
+    <PreferenceCategory
+        android:key="category_taskbar"
+        android:title="@string/taskbar_title">
+
+        <org.omnirom.omnilib.preference.SystemSettingSwitchPreference
+            android:key="taskbar_disable"
+            android:title="@string/taskbar_disable_title"
+            android:summary="@string/taskbar_disable_summary"
+            android:defaultValue="false"/>
+
+    </PreferenceCategory>
 </PreferenceScreen>
 
 
diff --git a/build.gradle b/build.gradle
index 2b14126..70fc287 100644
--- a/build.gradle
+++ b/build.gradle
@@ -5,7 +5,7 @@
         mavenCentral()
     }
     dependencies {
-        classpath 'com.android.tools.build:gradle:7.0.4'
+        classpath 'com.android.tools.build:gradle:7.1.2'
         classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:1.6.0-RC"
 
         // NOTE: Do not place your application dependencies here; they belong
diff --git a/gradle/wrapper/gradle-wrapper.properties b/gradle/wrapper/gradle-wrapper.properties
index 35a7a8c..92e79a1 100644
--- a/gradle/wrapper/gradle-wrapper.properties
+++ b/gradle/wrapper/gradle-wrapper.properties
@@ -1,6 +1,6 @@
 #Wed Oct 20 14:49:44 CEST 2021
 distributionBase=GRADLE_USER_HOME
-distributionUrl=https\://services.gradle.org/distributions/gradle-7.0.2-bin.zip
+distributionUrl=https\://services.gradle.org/distributions/gradle-7.2-bin.zip
 distributionPath=wrapper/dists
 zipStorePath=wrapper/dists
 zipStoreBase=GRADLE_USER_HOME