aboutsummaryrefslogtreecommitdiff
path: root/src/distractionless/ui/apps.cljd
diff options
context:
space:
mode:
Diffstat (limited to 'src/distractionless/ui/apps.cljd')
-rw-r--r--src/distractionless/ui/apps.cljd43
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))))