aboutsummaryrefslogtreecommitdiff
path: root/qdeduper/mingui.hpp
diff options
context:
space:
mode:
authorGravatar Chris Xiong <chirs241097@gmail.com> 2022-09-18 11:08:01 -0400
committerGravatar Chris Xiong <chirs241097@gmail.com> 2022-09-18 11:08:01 -0400
commit4b8d314f575d9e893d8dda7431194f8b470fc888 (patch)
tree4d42ebc06d2522c9141c42ff91be214e521e5fcb /qdeduper/mingui.hpp
parent0570b0f172631ba8f3c6180d2c850635c3cd6037 (diff)
downloaddeduper-4b8d314f575d9e893d8dda7431194f8b470fc888.tar.xz
First step to adopt mingui as part of the project -- break it!
Diffstat (limited to 'qdeduper/mingui.hpp')
-rw-r--r--qdeduper/mingui.hpp65
1 files changed, 65 insertions, 0 deletions
diff --git a/qdeduper/mingui.hpp b/qdeduper/mingui.hpp
new file mode 100644
index 0000000..b8d13ef
--- /dev/null
+++ b/qdeduper/mingui.hpp
@@ -0,0 +1,65 @@
+#ifndef MINGUI_HPP
+#define MINGUI_HPP
+
+#include <filesystem>
+#include <vector>
+#include <string>
+#include <unordered_set>
+
+#include <QMainWindow>
+#include <QList>
+
+class QHBoxLayout;
+class QLabel;
+class QStatusBar;
+class QScrollArea;
+class QTextEdit;
+class QListView;
+class QSplitter;
+class QStandardItemModel;
+class ImageItemDelegate;
+
+namespace fs = std::filesystem;
+
+class DeduperMainWindow : public QMainWindow
+{
+ Q_OBJECT
+private:
+ QSplitter *l;
+ QTextEdit *infopanel;
+ QLabel *permamsg;
+ QStatusBar *sb;
+ QListView *lw;
+ QList<QAction*> selhk;
+ QStandardItemModel *im = nullptr;
+ ImageItemDelegate *id = nullptr;
+ std::size_t ngroups, curgroup;
+ bool nohotkeywarn;
+ void mark_toggle(std::size_t x);
+ void mark_all_but(std::size_t x);
+ void mark_all();
+ void mark_none();
+ void mark_view_update(bool update_msg = true);
+ fs::path::string_type common_prefix(const std::vector<fs::path> &fns);
+ std::vector<bool> marks;
+ std::unordered_set<fs::path> marked;
+ std::vector<fs::path> current_set;
+protected:
+ void resizeEvent(QResizeEvent *e) override;
+ void closeEvent(QCloseEvent *e) override;
+public:
+ DeduperMainWindow();
+
+ void setup_menu();
+ void show_images(const std::vector<std::filesystem::path> &fns);
+ void update_distances(const std::map<std::pair<std::size_t, std::size_t>, double> &d);
+ void update_viewstatus(std::size_t cur, std::size_t size);
+ void save_list();
+ void load_list();
+Q_SIGNALS:
+ void next();
+ void prev();
+ void switch_group(std::size_t group);
+};
+
+#endif