summaryrefslogtreecommitdiffstats
path: root/include
diff options
context:
space:
mode:
authorKonstantinos Sideris <sideris.konstantin@gmail.com>2017-11-02 00:41:13 +0200
committerKonstantinos Sideris <sideris.konstantin@gmail.com>2017-11-02 00:41:13 +0200
commit886edd03fbc0181d3ba55a85927b0b82cf45ac93 (patch)
treeb6ca644980d0287a35ff1046b9fbafe6436c1238 /include
parent287b5aa4c0d52e1ac80a0785ab136aa0f98b3e9f (diff)
Add dummy settings menu
Diffstat (limited to 'include')
-rw-r--r--include/ChatPage.h1
-rw-r--r--include/MainWindow.h5
-rw-r--r--include/SideBarActions.h3
-rw-r--r--include/UserSettingsPage.h80
-rw-r--r--include/ui/ToggleButton.h110
5 files changed, 199 insertions, 0 deletions
diff --git a/include/ChatPage.h b/include/ChatPage.h
index 849d60e7..f7d2e1a5 100644
--- a/include/ChatPage.h
+++ b/include/ChatPage.h
@@ -68,6 +68,7 @@ signals:
void unreadMessages(int count);
void showNotification(const QString &msg);
void showLoginPage(const QString &msg);
+ void showUserSettingsPage();
private slots:
void showUnreadMessageNotification(int count);
diff --git a/include/MainWindow.h b/include/MainWindow.h
index f56592c2..21530d07 100644
--- a/include/MainWindow.h
+++ b/include/MainWindow.h
@@ -30,6 +30,8 @@ class OverlayModal;
class RegisterPage;
class SnackBar;
class TrayIcon;
+class UserSettingsPage;
+class UserSettings;
class WelcomePage;
class MainWindow : public QMainWindow
@@ -59,6 +61,7 @@ private slots:
// Show the register page in the main window.
void showRegisterPage();
+ void showUserSettingsPage();
// Show the chat page and start communicating with the given access token.
void showChatPage(QString user_id, QString home_server, QString token);
@@ -85,6 +88,8 @@ private:
// The main chat area.
ChatPage *chat_page_;
+ UserSettingsPage *userSettingsPage_;
+ QSharedPointer<UserSettings> userSettings_;
// Used to hide undefined states between page transitions.
QSharedPointer<OverlayModal> progressModal_;
diff --git a/include/SideBarActions.h b/include/SideBarActions.h
index 7b550578..bf48c4da 100644
--- a/include/SideBarActions.h
+++ b/include/SideBarActions.h
@@ -14,6 +14,9 @@ public:
SideBarActions(QWidget *parent = nullptr);
~SideBarActions();
+signals:
+ void showSettings();
+
protected:
void resizeEvent(QResizeEvent *event) override;
diff --git a/include/UserSettingsPage.h b/include/UserSettingsPage.h
new file mode 100644
index 00000000..9a4c01dd
--- /dev/null
+++ b/include/UserSettingsPage.h
@@ -0,0 +1,80 @@
+/*
+ * nheko Copyright (C) 2017 Konstantinos Sideris <siderisk@auth.gr>
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+#pragma once
+
+#include <QComboBox>
+#include <QFrame>
+#include <QLayout>
+#include <QSharedPointer>
+#include <QWidget>
+
+class Toggle;
+
+constexpr int OptionMargin = 6;
+constexpr int LayoutSideMargin = 300;
+
+class UserSettings
+{
+public:
+ UserSettings();
+
+ void save();
+ void load();
+ void setTheme(QString theme) { theme_ = theme; }
+ void setTray(bool state) { isTrayEnabled_ = state; }
+
+ QString theme() const { return !theme_.isEmpty() ? theme_ : "default"; }
+ bool isTrayEnabled() const { return isTrayEnabled_; }
+
+private:
+ QString theme_;
+ bool isTrayEnabled_;
+};
+
+class HorizontalLine : public QFrame
+{
+ Q_OBJECT
+
+public:
+ HorizontalLine(QWidget *parent = nullptr);
+};
+
+class UserSettingsPage : public QWidget
+{
+ Q_OBJECT
+
+public:
+ UserSettingsPage(QSharedPointer<UserSettings> settings, QWidget *parent = 0);
+
+protected:
+ void showEvent(QShowEvent *event) override;
+
+signals:
+ void moveBack();
+
+private:
+ // Layouts
+ QVBoxLayout *topLayout_;
+ QHBoxLayout *topBarLayout_;
+
+ // Shared settings object.
+ QSharedPointer<UserSettings> settings_;
+
+ Toggle *trayToggle_;
+ QComboBox *themeCombo_;
+};
diff --git a/include/ui/ToggleButton.h b/include/ui/ToggleButton.h
new file mode 100644
index 00000000..14c3450b
--- /dev/null
+++ b/include/ui/ToggleButton.h
@@ -0,0 +1,110 @@
+#pragma once
+
+#include <QAbstractButton>
+#include <QColor>
+
+class ToggleTrack;
+class ToggleThumb;
+
+enum class Position
+{
+ Left,
+ Right
+};
+
+class Toggle : public QAbstractButton
+{
+ Q_OBJECT
+
+ Q_PROPERTY(QColor activeColor WRITE setActiveColor READ activeColor)
+ Q_PROPERTY(QColor disabledColor WRITE setDisabledColor READ disabledColor)
+ Q_PROPERTY(QColor inactiveColor WRITE setInactiveColor READ inactiveColor)
+ Q_PROPERTY(QColor trackColor WRITE setTrackColor READ trackColor)
+
+public:
+ Toggle(QWidget *parent = nullptr);
+
+ void setState(bool isEnabled);
+
+ void setActiveColor(const QColor &color);
+ void setDisabledColor(const QColor &color);
+ void setInactiveColor(const QColor &color);
+ void setTrackColor(const QColor &color);
+
+ QColor activeColor() const { return activeColor_; };
+ QColor disabledColor() const { return disabledColor_; };
+ QColor inactiveColor() const { return inactiveColor_; };
+ QColor trackColor() const { return trackColor_.isValid() ? trackColor_ : QColor("#eee"); };
+
+ QSize sizeHint() const override { return QSize(64, 48); };
+
+protected:
+ void paintEvent(QPaintEvent *event) override;
+
+private:
+ void init();
+ void setupProperties();
+
+ ToggleTrack *track_;
+ ToggleThumb *thumb_;
+
+ QColor disabledColor_;
+ QColor activeColor_;
+ QColor inactiveColor_;
+ QColor trackColor_;
+};
+
+class ToggleThumb : public QWidget
+{
+ Q_OBJECT
+
+ Q_PROPERTY(QColor thumbColor WRITE setThumbColor READ thumbColor)
+
+public:
+ ToggleThumb(Toggle *parent);
+
+ Position shift() const { return position_; };
+ qreal offset() const { return offset_; };
+ QColor thumbColor() const { return thumbColor_; };
+
+ void setShift(Position position);
+ void setThumbColor(const QColor &color)
+ {
+ thumbColor_ = color;
+ update();
+ };
+
+protected:
+ bool eventFilter(QObject *obj, QEvent *event) override;
+ void paintEvent(QPaintEvent *event) override;
+
+private:
+ void updateOffset();
+
+ Toggle *const toggle_;
+ QColor thumbColor_;
+
+ Position position_;
+ qreal offset_;
+};
+
+class ToggleTrack : public QWidget
+{
+ Q_OBJECT
+
+ Q_PROPERTY(QColor trackColor WRITE setTrackColor READ trackColor)
+
+public:
+ ToggleTrack(Toggle *parent);
+
+ void setTrackColor(const QColor &color);
+ QColor trackColor() const { return trackColor_; };
+
+protected:
+ bool eventFilter(QObject *obj, QEvent *event) override;
+ void paintEvent(QPaintEvent *event) override;
+
+private:
+ Toggle *const toggle_;
+ QColor trackColor_;
+};