aboutsummaryrefslogtreecommitdiff
path: root/src/distractionless/ui/apps
diff options
context:
space:
mode:
Diffstat (limited to 'src/distractionless/ui/apps')
-rw-r--r--src/distractionless/ui/apps/settings.cljd42
1 files changed, 42 insertions, 0 deletions
diff --git a/src/distractionless/ui/apps/settings.cljd b/src/distractionless/ui/apps/settings.cljd
new file mode 100644
index 0000000..1b4de0a
--- /dev/null
+++ b/src/distractionless/ui/apps/settings.cljd
@@ -0,0 +1,42 @@
+(ns distractionless.ui.apps.settings
+ (:require ["package:flutter/material.dart" :as m]
+ [cljd.flutter :as f]
+ [distractionless.ui.constants :as duconstants]
+ [distractionless.config :as dconfig]))
+
+(defn- header [app ctx]
+ (m/Row
+ .mainAxisAlignment m/MainAxisAlignment.spaceBetween
+ .children [(m/Text (.-name app)
+ .style duconstants/title-style)
+ (m/IconButton .icon (m/Icon m/Icons.clear_rounded)
+ .color duconstants/text-color
+ .onPressed #(m/Navigator.pop ctx)
+ .iconSize 30.0)]))
+
+(defn- favourite-setting [app config-file reloader]
+ (m/Row
+ .children [(m/Checkbox
+ .value (contains? (get (dconfig/read-from-file config-file) "favourites")
+ (.-packageName app))
+ .onChanged (fn [new-val]
+ (if new-val
+ (dconfig/update-config! config-file
+ #(update % "favourites" conj (.-packageName app))
+ reloader)
+ (dconfig/update-config! config-file
+ (fn [config]
+ (update config "favourites" disj (.-packageName app)))
+ reloader)))
+ .activeColor duconstants/checkbox-active-color)
+ (m/Text "Favorit")]))
+
+(defn open [app config-file ctx reloader]
+ (m/showDialog
+ .context ctx
+ .builder (f/build :watch [_ reloader]
+ (m/Dialog.fullscreen
+ .backgroundColor duconstants/background-color
+ .child (m/Column
+ .children (list (header app ctx)
+ (favourite-setting app config-file reloader)))))))