blob: 8e06f07b9d4a01a42df136618f527b4d579b33e7 (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
|
(ns distractionless.ui.apps
(:require ["package:flutter/material.dart" :as m]
["package:flutter/widgets.dart" :as widgets]
["package:installed_apps/installed_apps.dart" :as apps]
[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 load-installed-apps! [a]
(reset! a (await (apps/InstalledApps.getInstalledApps false true))))
(defn- render-app [app config-file ctx reloader *app-in-queue]
(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)
nil)
.onLongPress #(duasettings/open app config-file ctx reloader)))
(defn apps-list [apps config-file ctx reloader *app-in-queue]
(m/ListView
.padding m/EdgeInsets.zero
.children (for [app apps]
(render-app app config-file ctx reloader *app-in-queue))))
|