diff options
Diffstat (limited to 'src/distractionless/ui/apps.cljd')
-rw-r--r-- | src/distractionless/ui/apps.cljd | 43 |
1 files changed, 31 insertions, 12 deletions
diff --git a/src/distractionless/ui/apps.cljd b/src/distractionless/ui/apps.cljd index 8e06f07..6ca05dd 100644 --- a/src/distractionless/ui/apps.cljd +++ b/src/distractionless/ui/apps.cljd @@ -1,35 +1,54 @@ (ns distractionless.ui.apps - (:require ["package:flutter/material.dart" :as m] + (:require [cljd.flutter :as f] + ["package:flutter/material.dart" :as m] ["package:flutter/widgets.dart" :as widgets] ["package:installed_apps/installed_apps.dart" :as apps] + [distractionless.config :as dconfig] + [distractionless.arithmetic-tasks :as darithmetic-tasks] [distractionless.ui.constants :as duconstants] [distractionless.ui.apps.settings :as duasettings] ["dart:async" :as async])) -(defn start-app [app config-file *app-in-queue] - (async/Future.delayed (Duration. - .seconds (duasettings/countdown-setting-value app config-file)) - (fn [] - (reset! *app-in-queue nil) - (await (apps/InstalledApps.startApp (.-packageName app)))))) +(defn start-app [app config-file ctx] + (if (.contains (get (dconfig/read-from-file config-file) "arithmetic-tasks") + (.-packageName app)) + (let [task (darithmetic-tasks/gen-task)] + (m/showDialog + .context ctx + .builder (f/build (m/Dialog + .backgroundColor duconstants/background-color + .child (m/Column + .mainAxisSize m/MainAxisSize.min + .children [(m/Text (str "Was ergibt " + (first (:numbers task)) " " + (darithmetic-tasks/type->str (:type task)) " " + (second (:numbers task)) "?")) + (m/TextField + .keyboardType m/TextInputType.number + .onSubmitted (fn [new-val] + (when (darithmetic-tasks/test-result? task + (int/tryParse new-val)) + (m/Navigator.pop ctx) + (await (apps/InstalledApps.startApp (.-packageName app)))) + nil))]))))) + (await (apps/InstalledApps.startApp (.-packageName app))))) (defn load-installed-apps! [a] (reset! a (await (apps/InstalledApps.getInstalledApps false true)))) -(defn- render-app [app config-file ctx reloader *app-in-queue] +(defn- render-app [app config-file ctx reloader] (m/ListTile .title (m/Text (.-name app) .style duconstants/text-style) .leading (widgets/Image.memory (.-icon app) .height 30.0) .onTap (fn [] - (reset! *app-in-queue app) - (start-app app config-file *app-in-queue) + (start-app app config-file ctx) nil) .onLongPress #(duasettings/open app config-file ctx reloader))) -(defn apps-list [apps config-file ctx reloader *app-in-queue] +(defn apps-list [apps config-file ctx reloader] (m/ListView .padding m/EdgeInsets.zero .children (for [app apps] - (render-app app config-file ctx reloader *app-in-queue)))) + (render-app app config-file ctx reloader)))) |