aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/distractionless/core.cljd67
-rw-r--r--src/distractionless/ui/apps.cljd11
-rw-r--r--src/distractionless/ui/apps/settings.cljd30
-rw-r--r--src/distractionless/ui/constants.cljd5
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))