OmniControl: save icon shape into theme overlay settings

make it persistent so wallpaper changes will use the correct
icon shape

Change-Id: Ibccdb31f442638593f0b6bd157e85d329fc5931b
diff --git a/app/src/main/java/org/omnirom/control/OverlaysFragment.kt b/app/src/main/java/org/omnirom/control/OverlaysFragment.kt
index 6d775df..b31934d 100644
--- a/app/src/main/java/org/omnirom/control/OverlaysFragment.kt
+++ b/app/src/main/java/org/omnirom/control/OverlaysFragment.kt
@@ -201,8 +201,10 @@
                 holder.itemView.setOnClickListener {
                     if (gridItem.isSystem) {
                         overlayProvider.disableAllInCategory(gridItem.category)
+                        overlayProvider.saveIconShapeOverlayToSettings("")
                     } else if (!gridItem.isEnabled) {
                         overlayProvider.enableOverlayExclusive(gridItem.packageName)
+                        overlayProvider.saveIconShapeOverlayToSettings(gridItem.packageName)
                     }
                     loadIconShapeOverlays()
                     notifyDataSetChanged()
diff --git a/app/src/main/java/org/omnirom/control/OverlaysProvider.kt b/app/src/main/java/org/omnirom/control/OverlaysProvider.kt
index 49191d4..e94aa53 100644
--- a/app/src/main/java/org/omnirom/control/OverlaysProvider.kt
+++ b/app/src/main/java/org/omnirom/control/OverlaysProvider.kt
@@ -27,7 +27,11 @@
 import android.content.res.Resources
 import android.os.ServiceManager
 import android.os.UserHandle
+import android.provider.Settings
 import android.util.TypedValue
+import org.json.JSONObject
+import org.json.JSONTokener
+
 
 class OverlaysProvider(context: Context) {
     private val overlaysMap = HashMap<String, OverlayInfo>()
@@ -110,7 +114,7 @@
         om!!.commit(transaction.build())
     }
 
-    fun isMonetOverlayEnabled() : Boolean {
+    fun isMonetOverlayEnabled(): Boolean {
         return isOverlayEnabled(monetNeutral)
     }
 
@@ -274,4 +278,24 @@
     fun getFabricatedOverlayIdentifier(overlayName: String): String {
         return OverlayIdentifier(context.packageName, overlayName).toString()
     }
+
+    fun saveIconShapeOverlayToSettings(iconShapePackage: String) {
+        val overlayPackageJson = Settings.Secure.getString(
+            context.contentResolver,
+            "theme_customization_overlay_packages"
+        )
+        var json = JSONObject()
+        if (overlayPackageJson.isNotEmpty()) {
+            json = JSONTokener(overlayPackageJson).nextValue() as JSONObject
+        }
+        if (iconShapePackage.isNotEmpty()) {
+            json.put(getIconShapeCategory(), iconShapePackage)
+        } else {
+            json.remove(getIconShapeCategory())
+        }
+        Settings.Secure.putString(
+            context.contentResolver, "theme_customization_overlay_packages",
+            json.toString()
+        )
+    }
 }
\ No newline at end of file