Init theming support.

This commit is contained in:
Black Hat 2018-09-10 15:01:01 +08:00
parent 4b9c416b4a
commit f66e62d499
10 changed files with 46 additions and 13 deletions

View File

@ -1,6 +1,7 @@
import QtQuick 2.9
import QtQuick.Controls 2.2
import QtQuick.Layouts 1.3
import QtQuick.Controls.Material 2.2
import Matrique 0.1
import Matrique.Settings 0.1

View File

@ -29,6 +29,8 @@ Page {
id: accountSettingsListView
delegate: Column {
spacing: 16
SwipeDelegate {
width: accountSettingsListView.width
height: 64
@ -80,19 +82,35 @@ Page {
onClicked: accountSettingsListView.currentIndex == index ? accountSettingsListView.currentIndex = -1 : accountSettingsListView.currentIndex = index
}
Rectangle {
width: parent.width
height: 2
visible: accountSettingsListView.currentIndex == index
color: Material.accent
}
ColumnLayout {
visible: accountSettingsListView.currentIndex == index
width: parent.width - 32
anchors.horizontalCenter: parent.horizontalCenter
spacing: 0
ListView {
Layout.fillWidth: true
Layout.preferredHeight: 32
orientation: ListView.Horizontal
model: ["#498882", "#2196F3"]
delegate: Rectangle {
width: parent.height
height: parent.height
color: modelData
MouseArea {
anchors.fill: parent
onClicked: matriqueController.setColor(connection.localUserId, modelData)
}
}
}
RowLayout {
Layout.fillWidth: true

View File

@ -56,6 +56,7 @@ Drawer {
id: roomNameField
text: room && room.name ? room.name : ""
selectByMouse: true
}
ItemDelegate {
@ -77,6 +78,7 @@ Drawer {
id: roomTopicField
text: room && room.topic ? room.topic : ""
selectByMouse: true
}
ItemDelegate {

View File

@ -25,6 +25,8 @@ ApplicationWindow {
Material.theme: MSettings.darkTheme ? Material.Dark : Material.Light
Material.accent: matriqueController.color(currentConnection ? currentConnection.localUserId : "")
FontLoader { id: materialFont; source: "qrc:/asset/font/material.ttf" }
Controller {

View File

@ -222,3 +222,11 @@ QImage Controller::safeImage(QImage image) {
if (image.isNull()) return QImage();
return image;
}
QColor Controller::color(QString userId) {
return QColor(SettingsGroup("UI/Color").value(userId, "#498882").toString());
}
void Controller::setColor(QString userId, QColor newColor) {
SettingsGroup("UI/Color").setValue(userId, newColor.name());
}

View File

@ -40,12 +40,14 @@ class Controller : public QObject {
}
}
QVector<Connection*> m_connections;
Q_INVOKABLE QColor color(QString userId);
Q_INVOKABLE void setColor(QString userId, QColor newColor);
private:
QClipboard* m_clipboard = QApplication::clipboard();
QSystemTrayIcon* tray = new QSystemTrayIcon();
QMenu* trayMenu = new QMenu();
QVector<Connection*> m_connections;
bool m_busy = false;

View File

@ -19,7 +19,7 @@ class MatriqueRoom : public Room {
explicit MatriqueRoom(Connection* connection, QString roomId,
JoinState joinState = {});
QImage getAvatar() { return avatar(64); }
QImage getAvatar() { return avatar(128); }
const QString& cachedInput() const { return m_cachedInput; }
void setCachedInput(const QString& input) {

View File

@ -14,7 +14,7 @@ class MatriqueUser : public User {
public:
MatriqueUser(QString userId, Connection* connection);
QImage getAvatar() { return avatar(64); }
QImage getAvatar() { return avatar(128); }
signals:
void inheritedAvatarChanged(User* user, const Room* roomContext); // https://bugreports.qt.io/browse/QTBUG-7684

View File

@ -15,7 +15,7 @@ RoomListModel::~RoomListModel() {}
void RoomListModel::setConnection(Connection* connection) {
if (connection == m_connection) return;
m_connection->disconnect(this);
if (m_connection) m_connection->disconnect(this);
if (!connection) {
qDebug() << "Removing current connection...";
m_connection = nullptr;

View File

@ -69,7 +69,7 @@ QVariant UserListModel::data(const QModelIndex& index, int role) const {
}
if (role == AvatarRole) {
if (!user->avatarUrl(m_currentRoom).isEmpty())
return user->avatar(32, m_currentRoom);
return user->avatar(64, m_currentRoom);
return QImage();
}