diff --git a/imports/NeoChat/Page/AccountsPage.qml b/imports/NeoChat/Page/AccountsPage.qml index a152288d1..dd92e05f3 100644 --- a/imports/NeoChat/Page/AccountsPage.qml +++ b/imports/NeoChat/Page/AccountsPage.qml @@ -20,6 +20,9 @@ Kirigami.ScrollablePage { delegate: Kirigami.SwipeListItem { leftPadding: 0 rightPadding: 0 + action: Kirigami.Action { + onTriggered: Controller.activeConnection = model.connection + } Kirigami.BasicListItem { anchors.top: parent.top anchors.bottom: parent.bottom diff --git a/src/controller.cpp b/src/controller.cpp index 98a3538cc..895d0eeec 100644 --- a/src/controller.cpp +++ b/src/controller.cpp @@ -44,6 +44,7 @@ #include "events/roommessageevent.h" #include "neochatroom.h" #include "neochatuser.h" +#include "neochatconfig.h" #include "settings.h" #include "utils.h" #include @@ -277,9 +278,16 @@ void Controller::invokeLogin() } if (!m_connections.isEmpty()) { + const QString id = NeoChatConfig::self()->activeConnection(); + for (auto *connection : qAsConst(m_connections)) { + if (connection->userId() == id) { + setActiveConnection(connection); + Q_EMIT initiated(); + return; + } + } setActiveConnection(m_connections[0]); } - Q_EMIT initiated(); } @@ -542,6 +550,12 @@ void Controller::setActiveConnection(Connection *connection) return; } m_connection = connection; + if (connection != nullptr) { + NeoChatConfig::self()->setActiveConnection(connection->userId()); + } else { + NeoChatConfig::self()->setActiveConnection(QString()); + } + NeoChatConfig::self()->save(); Q_EMIT activeConnectionChanged(); } diff --git a/src/neochatconfig.kcfg b/src/neochatconfig.kcfg index c9ceca3a8..c427e4017 100644 --- a/src/neochatconfig.kcfg +++ b/src/neochatconfig.kcfg @@ -11,6 +11,9 @@ + + + true