Fix alias and more compact account detail dialog.

This commit is contained in:
Black Hat
2019-07-05 10:24:07 +08:00
parent c16892fa25
commit b41973be28
6 changed files with 89 additions and 73 deletions

View File

@@ -20,55 +20,26 @@ Dialog {
spacing: 0
Repeater {
ListView {
width: parent.width
height: 48
clip: true
orientation: ListView.Horizontal
spacing: 16
model: AccountListModel{
controller: spectralController
}
delegate: Item {
width: detailColumn.width
height: 72
delegate: Avatar {
width: 48
height: 48
RowLayout {
anchors.fill: parent
anchors.margins: 12
spacing: 12
Avatar {
Layout.preferredWidth: height
Layout.fillHeight: true
source: user.avatarMediaId
hint: user.displayName || "No Name"
}
ColumnLayout {
Layout.fillWidth: true
Layout.alignment: Qt.AlignHCenter
Label {
Layout.fillWidth: true
text: user.displayName || "No Name"
color: MPalette.foreground
font.pixelSize: 16
font.bold: true
elide: Text.ElideRight
wrapMode: Text.NoWrap
}
Label {
Layout.fillWidth: true
text: connection === spectralController.connection ? "Active" : "Online"
color: MPalette.lighter
font.pixelSize: 13
elide: Text.ElideRight
wrapMode: Text.NoWrap
}
}
}
source: user.avatarMediaId
hint: user.displayName || "No Name"
Menu {
id: contextMenu
@@ -83,6 +54,8 @@ Dialog {
RippleEffect {
anchors.fill: parent
circular: true
onPrimaryClicked: spectralController.connection = connection
onSecondaryClicked: contextMenu.popup()
}

View File

@@ -176,6 +176,23 @@ Dialog {
}
}
Button {
Layout.alignment: Qt.AlignRight
text: "Save"
highlighted: true
onClicked: {
if (room.name != roomNameField.text) {
room.setName(roomNameField.text)
}
if (room.topic != roomTopicField.text) {
room.setTopic(roomTopicField.text)
}
}
}
MenuSeparator {
Layout.fillWidth: true
}
@@ -202,6 +219,11 @@ Dialog {
model: room.remoteAliases
currentIndex: room.remoteAliases.indexOf(room.canonicalAlias)
onCurrentIndexChanged: {
if (room.canonicalAlias != room.remoteAliases[currentIndex]) {
room.setCanonicalAlias(room.remoteAliases[currentIndex])
}
}
}
}
@@ -225,13 +247,30 @@ Dialog {
Repeater {
model: room.localAliases
delegate: Label {
Layout.fillWidth: true
delegate: RowLayout {
Layout.maximumWidth: parent.width
text: modelData
Label {
text: modelData
font.pixelSize: 12
color: MPalette.lighter
font.pixelSize: 12
color: MPalette.lighter
}
MaterialIcon {
icon: "\ue5cd"
color: MPalette.lighter
font.pixelSize: 12
RippleEffect {
anchors.fill: parent
circular: true
onClicked: room.removeLocalAlias(modelData)
}
}
}
}
}
@@ -273,14 +312,6 @@ Dialog {
onClicked: room.clearBackground()
}
}
Button {
Layout.alignment: Qt.AlignRight
text: "Save"
onClicked: saveSettings()
}
}
Component {
@@ -290,19 +321,5 @@ Dialog {
}
onClosed: destroy()
function saveSettings() {
if (room.name != roomNameField.text) {
room.setName(roomNameField.text)
}
if (room.topic != roomTopicField.text) {
room.setTopic(roomTopicField.text)
}
if (room.canonicalAlias != room.remoteAliases[canonicalAliasComboBox.currentIndex]) {
room.setCanonicalAlias(room.remoteAliases[canonicalAliasComboBox.currentIndex])
}
}
}

View File

@@ -68,8 +68,12 @@ void Controller::loginWithCredentials(QString serverAddr,
QSysInfo::productVersion() + " " +
QSysInfo::currentCpuArchitecture();
QUrl serverUrl(serverAddr);
Connection* conn = new Connection(this);
conn->setHomeserver(QUrl(serverAddr));
if (serverUrl.isValid()) {
conn->setHomeserver(serverUrl);
}
conn->connectToServer(user, pass, deviceName, "");
connect(conn, &Connection::connected, [=] {
AccountSettings account(conn->userId());

View File

@@ -316,3 +316,23 @@ void SpectralRoom::changeAvatar(QUrl localFile) {
});
}
}
void SpectralRoom::addLocalAlias(const QString& alias) {
auto aliases = localAliases();
if (aliases.contains(alias))
return;
aliases.append(alias);
setLocalAliases(aliases);
}
void SpectralRoom::removeLocalAlias(const QString& alias) {
auto aliases = localAliases();
if (!aliases.contains(alias))
return;
aliases.removeAll(alias);
setLocalAliases(aliases);
}

View File

@@ -306,6 +306,8 @@ class SpectralRoom : public Room {
QString replyContent,
QString sendContent);
void changeAvatar(QUrl localFile);
void addLocalAlias(const QString& alias);
void removeLocalAlias(const QString& alias);
};
#endif // SpectralRoom_H