diff options
Diffstat (limited to 'src')
-rw-r--r-- | src/distractionless/core.cljd | 67 | ||||
-rw-r--r-- | src/distractionless/ui/apps.cljd | 11 | ||||
-rw-r--r-- | src/distractionless/ui/apps/settings.cljd | 30 | ||||
-rw-r--r-- | src/distractionless/ui/constants.cljd | 5 |
4 files changed, 58 insertions, 55 deletions
diff --git a/src/distractionless/core.cljd b/src/distractionless/core.cljd index e3a39b9..d12e10f 100644 --- a/src/distractionless/core.cljd +++ b/src/distractionless/core.cljd @@ -4,6 +4,7 @@ ["package:path_provider/path_provider.dart" :as path-provider] [distractionless.config :as dconfig] ["dart:io" :as io] + [clojure.string :as cstr] [distractionless.ui.constants :as duconstants] [distractionless.ui.apps :as duapps])) @@ -19,37 +20,45 @@ :watch [apps (atom '()) :as *apps query (atom "") :as *query data-dir (await (path-provider/getApplicationDocumentsDirectory)) - _ (atom 0) :as reloader] + _ (atom 0) :as reloader + show-all-apps? (atom false) :as *show-all-apps?] :managed [_ (duapps/load-installed-apps! *apps) ; loads apps on app startup config-file (io/File. (str (.-path data-dir) "/config.edn")) _ (dconfig/init-config! config-file nil) ; Init config on app startup + search-bar-controller (m/TextEditingController.) _ (m/AppLifecycleListener .onShow #(do (dconfig/init-config! config-file nil) (duapps/load-installed-apps! *apps) - (reset! *query ""))) - page-controller (m/PageController.)] - :let [root-container-padding (m/EdgeInsets.only - .top 50)] - (m/PageView. - .controller page-controller - .onPageChanged (fn [_] (reset! *query "")) - .children [(let [favourites (get (dconfig/read-from-file config-file) "favourites")] - (m/Container - .padding root-container-padding - .child (m/Column - .children [(m/Expanded - .child (duapps/apps-list (filter #(.contains favourites (.-packageName %)) apps) nil config-file ctx reloader)) - (m/Text "Wische nach links, um alle Apps anzuzeigen" - .style duconstants/text-style)]))) - (m/Container - .padding root-container-padding - .child (m/Column - .children [(m/Text "Alle Apps" - .style duconstants/title-style) - (m/SearchBar - .onChanged (fn [new-val] - (reset! *query new-val) - nil) - .hintText "Suche" - .backgroundColor (#/(.resolveWith m/Color?) m/MaterialStateProperty (fn [^Set _states] duconstants/search-bar-color))) - (m/Expanded - .child (duapps/apps-list apps query config-file ctx reloader))]))]))) + (reset! *query "") + (.clear search-bar-controller)))] + :let [favourites (get (dconfig/read-from-file config-file) "favourites")] + (m/Container + .padding (m/EdgeInsets.only + .top 50) + .child (m/Column + .children [(m/SearchBar + .onChanged (fn [new-val] + (reset! *query new-val) + nil) + .hintText "Suche" + .controller search-bar-controller + .backgroundColor (#/(.resolveWith m/Color?) m/MaterialStateProperty (fn [^Set _states] duconstants/background-color)) + .trailing (when-not (cstr/blank? query) + [(m/IconButton .icon (m/Icon m/Icons.clear_rounded) + .color duconstants/text-color + .onPressed #(do (reset! *query "") + (.clear search-bar-controller)) + .iconSize 30.0)])) + (m/CheckboxListTile + .title (m/Text "Alle Apps anzeigen" + .style duconstants/text-style) + .value show-all-apps? + .onChanged #(reset! *show-all-apps? %) + .activeColor duconstants/checkbox-active-color) + (m/Expanded + .child (duapps/apps-list (filter (cond + (not (cstr/blank? query)) #(cstr/includes? + (cstr/lower-case (.-name %)) + (cstr/lower-case query)) + show-all-apps? (fn [_] true) + :else #(.contains favourites (.-packageName %))) apps) + config-file ctx reloader))])))) diff --git a/src/distractionless/ui/apps.cljd b/src/distractionless/ui/apps.cljd index 7fd620c..02679ac 100644 --- a/src/distractionless/ui/apps.cljd +++ b/src/distractionless/ui/apps.cljd @@ -6,7 +6,7 @@ [distractionless.ui.apps.settings :as duasettings])) (defn load-installed-apps! [a] - (reset! a (await (apps/InstalledApps.getInstalledApps)))) + (reset! a (await (apps/InstalledApps.getInstalledApps false)))) (defn- render-app [app config-file ctx reloader] (m/ListTile @@ -15,12 +15,7 @@ .onTap #(do (await (apps/InstalledApps.startApp (.-packageName app))) nil) .onLongPress #(duasettings/open app config-file ctx reloader))) -(defn apps-list [apps query config-file ctx reloader] +(defn apps-list [apps config-file ctx reloader] (m/ListView - .children (for [app (if (cstr/blank? query) - apps - (filter #(cstr/includes? - (cstr/lower-case (.-name %)) - (cstr/lower-case query)) - apps))] + .children (for [app apps] (render-app app config-file ctx reloader)))) diff --git a/src/distractionless/ui/apps/settings.cljd b/src/distractionless/ui/apps/settings.cljd index 1b4de0a..c6d1c67 100644 --- a/src/distractionless/ui/apps/settings.cljd +++ b/src/distractionless/ui/apps/settings.cljd @@ -15,21 +15,21 @@ .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")])) + (m/CheckboxListTile + .title (m/Text "Favorit" + .style duconstants/text-style) + .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)) (defn open [app config-file ctx reloader] (m/showDialog diff --git a/src/distractionless/ui/constants.cljd b/src/distractionless/ui/constants.cljd index 505778f..f08b24b 100644 --- a/src/distractionless/ui/constants.cljd +++ b/src/distractionless/ui/constants.cljd @@ -1,9 +1,8 @@ (ns distractionless.ui.constants (:require ["package:flutter/material.dart" :as m])) -(def background-color (m/Color.fromARGB 255 157 166 159)) -(def search-bar-color (m/Color.fromARGB 255 138 150 141)) -(def text-color (m/Color.fromARGB 255 0 0 0)) +(def background-color (m/Color.fromARGB 255 208 255 254)) +(def text-color (m/Color.fromARGB 255 55 55 55)) (def checkbox-active-color (m/Color.fromARGB 255 86 93 86)) (def checkbox-fill-color (m/Color.fromARGB 255 197 205 199)) |