Use palette for qml code for theming

Can't do it for QtWidgets code. We need to fully transition, before we
can fully switch over probably.
This commit is contained in:
Nicolas Werner 2020-03-28 19:12:00 +01:00
parent 384ef13c76
commit d35cc3dda4
10 changed files with 43 additions and 39 deletions

View file

@ -1,4 +1,5 @@
import QtQuick 2.6 import QtQuick 2.6
import QtQuick.Controls 2.3
import QtGraphicalEffects 1.0 import QtGraphicalEffects 1.0
Rectangle { Rectangle {
@ -10,15 +11,15 @@ Rectangle {
property alias url: img.source property alias url: img.source
property string displayName property string displayName
Text { Label {
anchors.fill: parent anchors.fill: parent
text: chat.model.escapeEmoji(String.fromCodePoint(displayName.codePointAt(0))) text: chat.model.escapeEmoji(String.fromCodePoint(displayName.codePointAt(0)))
textFormat: Text.RichText textFormat: Text.RichText
color: colors.text
font.pixelSize: avatar.height/2 font.pixelSize: avatar.height/2
verticalAlignment: Text.AlignVCenter verticalAlignment: Text.AlignVCenter
horizontalAlignment: Text.AlignHCenter horizontalAlignment: Text.AlignHCenter
visible: img.status != Image.Ready visible: img.status != Image.Ready
color: colors.brightText
} }
Image { Image {
@ -42,5 +43,5 @@ Rectangle {
} }
} }
} }
color: colors.base color: colors.dark
} }

View file

@ -54,6 +54,20 @@ MouseArea {
} }
} }
StatusIndicator {
state: model.state
Layout.alignment: Qt.AlignRight | Qt.AlignTop
Layout.preferredHeight: 16
width: 16
}
EncryptionIndicator {
visible: model.isEncrypted
Layout.alignment: Qt.AlignRight | Qt.AlignTop
Layout.preferredHeight: 16
width: 16
}
ImageButton { ImageButton {
visible: timelineSettings.buttons visible: timelineSettings.buttons
Layout.alignment: Qt.AlignRight | Qt.AlignTop Layout.alignment: Qt.AlignRight | Qt.AlignTop
@ -87,21 +101,7 @@ MouseArea {
} }
StatusIndicator { Label {
state: model.state
Layout.alignment: Qt.AlignRight | Qt.AlignTop
Layout.preferredHeight: 16
width: 16
}
EncryptionIndicator {
visible: model.isEncrypted
Layout.alignment: Qt.AlignRight | Qt.AlignTop
Layout.preferredHeight: 16
width: 16
}
Text {
Layout.alignment: Qt.AlignRight | Qt.AlignTop Layout.alignment: Qt.AlignRight | Qt.AlignTop
text: model.timestamp.toLocaleTimeString("HH:mm") text: model.timestamp.toLocaleTimeString("HH:mm")
color: inactiveColors.text color: inactiveColors.text

View file

@ -9,12 +9,14 @@ import im.nheko 1.0
import "./delegates" import "./delegates"
Item { Page {
property var colors: currentActivePalette property var colors: currentActivePalette
property var systemInactive: SystemPalette { colorGroup: SystemPalette.Disabled } property var systemInactive: SystemPalette { colorGroup: SystemPalette.Disabled }
property var inactiveColors: currentInactivePalette ? currentInactivePalette : systemInactive property var inactiveColors: currentInactivePalette ? currentInactivePalette : systemInactive
property int avatarSize: 40 property int avatarSize: 40
palette: colors
Settings { Settings {
id: settings id: settings
category: "user" category: "user"
@ -29,7 +31,6 @@ Item {
Menu { Menu {
id: messageContextMenu id: messageContextMenu
palette: colors
modal: true modal: true
function show(eventId_, eventType_, showAt) { function show(eventId_, eventType_, showAt) {
@ -73,12 +74,11 @@ Item {
anchors.fill: parent anchors.fill: parent
color: colors.window color: colors.window
Text { Label {
visible: !timelineManager.timeline && !timelineManager.isInitialSync visible: !timelineManager.timeline && !timelineManager.isInitialSync
anchors.centerIn: parent anchors.centerIn: parent
text: qsTr("No room open") text: qsTr("No room open")
font.pointSize: 24 font.pointSize: 24
color: colors.windowText
} }
BusyIndicator { BusyIndicator {
@ -206,14 +206,14 @@ Item {
anchors.horizontalCenter: parent ? parent.horizontalCenter : undefined anchors.horizontalCenter: parent ? parent.horizontalCenter : undefined
visible: section.includes(" ") visible: section.includes(" ")
text: chat.model.formatDateSeparator(modelData.timestamp) text: chat.model.formatDateSeparator(modelData.timestamp)
color: colors.windowText color: colors.brightText
height: contentHeight * 1.2 height: contentHeight * 1.2
width: contentWidth * 1.2 width: contentWidth * 1.2
horizontalAlignment: Text.AlignHCenter horizontalAlignment: Text.AlignHCenter
background: Rectangle { background: Rectangle {
radius: parent.height / 2 radius: parent.height / 2
color: colors.base color: colors.dark
} }
} }
Row { Row {
@ -233,7 +233,7 @@ Item {
} }
} }
Text { Label {
id: userName id: userName
text: chat.model.escapeEmoji(modelData.userName) text: chat.model.escapeEmoji(modelData.userName)
color: timelineManager.userColor(modelData.userId, colors.window) color: timelineManager.userColor(modelData.userId, colors.window)
@ -268,7 +268,7 @@ Item {
anchors.left: parent.left anchors.left: parent.left
anchors.right: parent.right anchors.right: parent.right
Text { Label {
id: typingDisplay id: typingDisplay
anchors.left: parent.left anchors.left: parent.left
anchors.right: parent.right anchors.right: parent.right
@ -277,7 +277,6 @@ Item {
text: chat.model ? chat.model.formatTypingUsers(chat.model.typingUsers, colors.window) : "" text: chat.model ? chat.model.formatTypingUsers(chat.model.typingUsers, colors.window) : ""
textFormat: Text.RichText textFormat: Text.RichText
color: colors.windowText
} }
Rectangle { Rectangle {

View file

@ -1,4 +1,4 @@
TextMessage { TextMessage {
font.italic: true font.italic: true
color: inactiveColors.text color: colors.buttonText
} }

View file

@ -2,13 +2,13 @@ import QtQuick 2.5
import QtQuick.Controls 2.1 import QtQuick.Controls 2.1
Label { Label {
color: inactiveColors.text color: colors.brightText
horizontalAlignment: Text.AlignHCenter horizontalAlignment: Text.AlignHCenter
height: contentHeight * 1.2 height: contentHeight * 1.2
width: contentWidth * 1.2 width: contentWidth * 1.2
background: Rectangle { background: Rectangle {
radius: parent.height / 2 radius: parent.height / 2
color: colors.base color: colors.dark
} }
} }

View file

@ -32,6 +32,7 @@ UserMentionsWidget > * {
QLineEdit, QLineEdit,
QListWidget, QListWidget,
QToolTip,
WelcomePage, WelcomePage,
LoginPage, LoginPage,
RegisterPage, RegisterPage,

View file

@ -183,6 +183,7 @@ TopSection {
WelcomePage, WelcomePage,
LoginPage, LoginPage,
QToolTip,
RegisterPage { RegisterPage {
background-color: white; background-color: white;
color: #333; color: #333;

View file

@ -70,7 +70,7 @@ FileItem {
} }
RaisedButton { RaisedButton {
qproperty-foregroundColor: palette(buttonText); qproperty-foregroundColor: palette(button-text);
} }
TextField { TextField {
@ -95,18 +95,18 @@ UserMentionsWidget {
qproperty-titleColor: palette(text); qproperty-titleColor: palette(text);
qproperty-subtitleColor: palette(text); qproperty-subtitleColor: palette(text);
qproperty-highlightedTitleColor: palette(highlightedtext); qproperty-highlightedTitleColor: palette(highlighted-text);
qproperty-highlightedSubtitleColor: palette(highlightedtext); qproperty-highlightedSubtitleColor: palette(highlighted-text);
qproperty-hoverTitleColor: palette(highlightedtext); qproperty-hoverTitleColor: palette(highlightedtext);
qproperty-hoverSubtitleColor: palette(highlightedtext); qproperty-hoverSubtitleColor: palette(highlightedtext);
qproperty-btnColor: palette(button); qproperty-btnColor: palette(dark);
qproperty-btnTextColor: palette(buttonText); qproperty-btnTextColor: palette(bright-text);
qproperty-timestampColor: palette(text); qproperty-timestampColor: palette(text);
qproperty-highlightedTimestampColor: palette(highlightedtext); qproperty-highlightedTimestampColor: palette(highlighted-text);
qproperty-hoverTimestampColor: palette(highlightedtext); qproperty-hoverTimestampColor: palette(highlighted-text);
qproperty-bubbleBgColor: palette(base); qproperty-bubbleBgColor: palette(base);
qproperty-bubbleFgColor: palette(text); qproperty-bubbleFgColor: palette(text);

View file

@ -29,7 +29,7 @@ qmlMessageHandler(QtMsgType type, const QMessageLogContext &context, const QStri
if (msg.endsWith( if (msg.endsWith(
"QML Binding: Not restoring previous value because restoreMode has not been set.This " "QML Binding: Not restoring previous value because restoreMode has not been set.This "
"behavior is deprecated.In Qt < 6.0 the default is Binding.RestoreBinding.In Qt >= " "behavior is deprecated.In Qt < 6.0 the default is Binding.RestoreBinding.In Qt >= "
"6.0 the default is Binding.RestoreBindingOrValue.")) "6.0 the default is Binding.RestoreBindingOrValue.") || msg.endsWith("Both point size and pixel size set. Using pixel size."))
return; return;
switch (type) { switch (type) {

View file

@ -34,6 +34,7 @@ TimelineViewManager::updateColorPalette()
lightActive.setColor(QPalette::ToolTipBase, lightActive.base().color()); lightActive.setColor(QPalette::ToolTipBase, lightActive.base().color());
lightActive.setColor(QPalette::ToolTipText, lightActive.text().color()); lightActive.setColor(QPalette::ToolTipText, lightActive.text().color());
lightActive.setColor(QPalette::Link, QColor("#0077b5")); lightActive.setColor(QPalette::Link, QColor("#0077b5"));
lightActive.setColor(QPalette::ButtonText, QColor("gray"));
view->rootContext()->setContextProperty("currentActivePalette", lightActive); view->rootContext()->setContextProperty("currentActivePalette", lightActive);
view->rootContext()->setContextProperty("currentInactivePalette", lightActive); view->rootContext()->setContextProperty("currentInactivePalette", lightActive);
} else if (settings->theme() == "dark") { } else if (settings->theme() == "dark") {
@ -43,13 +44,14 @@ TimelineViewManager::updateColorPalette()
/*dark*/ QColor("#2d3139"), /*dark*/ QColor("#2d3139"),
/*mid*/ QColor(), /*mid*/ QColor(),
/*text*/ QColor("#caccd1"), /*text*/ QColor("#caccd1"),
/*bright_text*/ QColor(), /*bright_text*/ QColor(0xff, 0xff, 0xff),
/*base*/ QColor("#2d3139"), /*base*/ QColor("#2d3139"),
/*window*/ QColor("#202228")); /*window*/ QColor("#202228"));
darkActive.setColor(QPalette::Highlight, QColor("#e7e7e9")); darkActive.setColor(QPalette::Highlight, QColor("#e7e7e9"));
darkActive.setColor(QPalette::ToolTipBase, darkActive.base().color()); darkActive.setColor(QPalette::ToolTipBase, darkActive.base().color());
darkActive.setColor(QPalette::ToolTipText, darkActive.text().color()); darkActive.setColor(QPalette::ToolTipText, darkActive.text().color());
darkActive.setColor(QPalette::Link, QColor("#38a3d8")); darkActive.setColor(QPalette::Link, QColor("#38a3d8"));
darkActive.setColor(QPalette::ButtonText, QColor("gray"));
view->rootContext()->setContextProperty("currentActivePalette", darkActive); view->rootContext()->setContextProperty("currentActivePalette", darkActive);
view->rootContext()->setContextProperty("currentInactivePalette", darkActive); view->rootContext()->setContextProperty("currentInactivePalette", darkActive);
} else { } else {