aboutsummaryrefslogtreecommitdiff
path: root/libs/installer_fomod_plus/installer/ui/UIHelper.h
diff options
context:
space:
mode:
Diffstat (limited to 'libs/installer_fomod_plus/installer/ui/UIHelper.h')
-rw-r--r--libs/installer_fomod_plus/installer/ui/UIHelper.h80
1 files changed, 80 insertions, 0 deletions
diff --git a/libs/installer_fomod_plus/installer/ui/UIHelper.h b/libs/installer_fomod_plus/installer/ui/UIHelper.h
new file mode 100644
index 0000000..1007e7c
--- /dev/null
+++ b/libs/installer_fomod_plus/installer/ui/UIHelper.h
@@ -0,0 +1,80 @@
+#pragma once
+
+#include <QPushButton>
+#include <QVBoxLayout>
+#include <QLabel>
+
+#include "FomodViewModel.h"
+
+class HoverEventFilter final : public QObject {
+ Q_OBJECT
+
+public:
+ explicit HoverEventFilter(const std::shared_ptr<PluginViewModel>& plugin, QObject* parent = nullptr);
+
+signals:
+ void hovered(const std::shared_ptr<PluginViewModel>& plugin);
+
+protected:
+ bool eventFilter(QObject* obj, QEvent* event) override;
+
+private:
+ std::shared_ptr<PluginViewModel> mPlugin;
+};
+
+class CtrlClickEventFilter final : public QObject {
+ Q_OBJECT
+
+public:
+ explicit CtrlClickEventFilter(const std::shared_ptr<PluginViewModel>& plugin,
+ const std::shared_ptr<GroupViewModel>& group, QObject* parent = nullptr);
+
+signals:
+ void ctrlClicked(bool selected, const std::shared_ptr<GroupViewModel>& group,
+ const std::shared_ptr<PluginViewModel>& plugin);
+
+protected:
+ bool eventFilter(QObject* obj, QEvent* event) override;
+
+private:
+ std::shared_ptr<PluginViewModel> mPlugin;
+ std::shared_ptr<GroupViewModel> mGroup;
+};
+
+
+namespace UiConstants {
+constexpr int WINDOW_MIN_WIDTH = 900;
+constexpr int WINDOW_MIN_HEIGHT = 600;
+}
+
+class UIHelper {
+public:
+ /*
+ --------------------------------------------------------------------------------
+ Widgets & Events
+ --------------------------------------------------------------------------------
+ */
+ static QPushButton* createButton(const QString& text, QWidget* parent);
+
+ static QLabel* createLabel(const QString& text, QWidget* parent);
+
+ static QLabel* createHyperlink(const QString& url, QWidget* parent);
+
+ /*
+ --------------------------------------------------------------------------------
+ Helpers
+ --------------------------------------------------------------------------------
+ */
+ static QString getFullImagePath(const QString& fomodPath, const QString& imagePath);
+
+ static void setGlobalAlignment(QBoxLayout* layout, Qt::Alignment alignment);
+
+ static void reduceLabelPadding(const QLayout* layout);
+
+ /*
+ --------------------------------------------------------------------------------
+ Development
+ --------------------------------------------------------------------------------
+ */
+ static void setDebugBorders(QWidget* widget);
+}; \ No newline at end of file