diff options
Diffstat (limited to 'src/distractionless/ui/apps/settings.cljd')
-rw-r--r-- | src/distractionless/ui/apps/settings.cljd | 42 |
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))))))) |