summaryrefslogtreecommitdiff
path: root/accounts/gkleen@sif/shell/quickshell-plugins/FileSelector.hpp
diff options
context:
space:
mode:
authorGregor Kleen <gkleen@yggdrasil.li>2025-09-02 20:56:37 +0200
committerGregor Kleen <gkleen@yggdrasil.li>2025-09-02 20:56:37 +0200
commitcc84ab2289381038f483f06963374aa0247f6724 (patch)
treef60dda5bf4efb447a47a5065081ccd9169ccef48 /accounts/gkleen@sif/shell/quickshell-plugins/FileSelector.hpp
parentaff71d6f9f3cc5c9217ee0cb4fa6c66f978e2b36 (diff)
downloadnixos-cc84ab2289381038f483f06963374aa0247f6724.tar
nixos-cc84ab2289381038f483f06963374aa0247f6724.tar.gz
nixos-cc84ab2289381038f483f06963374aa0247f6724.tar.bz2
nixos-cc84ab2289381038f483f06963374aa0247f6724.tar.xz
nixos-cc84ab2289381038f483f06963374aa0247f6724.zip
Diffstat (limited to 'accounts/gkleen@sif/shell/quickshell-plugins/FileSelector.hpp')
-rw-r--r--accounts/gkleen@sif/shell/quickshell-plugins/FileSelector.hpp52
1 files changed, 52 insertions, 0 deletions
diff --git a/accounts/gkleen@sif/shell/quickshell-plugins/FileSelector.hpp b/accounts/gkleen@sif/shell/quickshell-plugins/FileSelector.hpp
new file mode 100644
index 00000000..72c4f2a7
--- /dev/null
+++ b/accounts/gkleen@sif/shell/quickshell-plugins/FileSelector.hpp
@@ -0,0 +1,52 @@
1#pragma once
2
3#include <filesystem>
4#include <chrono>
5#include <set>
6#include <optional>
7
8#include <QObject>
9#include <QTimer>
10
11#include <qqmlintegration.h>
12
13class FileSelector : public QObject {
14 Q_OBJECT;
15 Q_PROPERTY(QString directory READ directory WRITE setDirectory NOTIFY directoryChanged REQUIRED);
16 Q_PROPERTY(unsigned int epoch READ epoch WRITE setEpoch NOTIFY epochChanged REQUIRED);
17 Q_PROPERTY(QString seed READ seed WRITE setSeed NOTIFY seedChanged);
18 Q_PROPERTY(QString selected READ selected NOTIFY selectedChanged);
19 QML_ELEMENT;
20
21public:
22 explicit FileSelector(QObject* parent = nullptr);
23
24 QString directory() const;
25 void setDirectory(QString directory);
26
27 unsigned int epoch() const;
28 void setEpoch(unsigned int epoch);
29
30 QString seed() const;
31 void setSeed(QString seed);
32
33 QString selected() const;
34
35signals:
36 void directoryChanged();
37 void epochChanged();
38 void seedChanged();
39 void selectedChanged();
40
41private slots:
42 void onTimeout();
43
44private:
45 std::optional<std::filesystem::path> mDirectory;
46 std::optional<std::chrono::milliseconds> mEpoch;
47 std::set<std::filesystem::path> mFiles;
48 QString mSeed;
49 QTimer timer;
50
51 void update();
52};