diff --git a/src/core/ClientNetworkMessages.h b/src/core/ClientNetworkMessages.h --- a/src/core/ClientNetworkMessages.h +++ b/src/core/ClientNetworkMessages.h @@ -71,7 +71,7 @@ virtual ~ClientNetworkMessages(); Q_INVOKABLE void connectToServer(const QString& serverName); Q_INVOKABLE void disconnectFromServer(); - Q_INVOKABLE void sendLoginMessage(const QString &newLogin); + Q_INVOKABLE void sendLoginMessage(const QString &newLogin, const QString& password); QStringList serversAvailable; QString host() const{ diff --git a/src/core/ClientNetworkMessages.cpp b/src/core/ClientNetworkMessages.cpp --- a/src/core/ClientNetworkMessages.cpp +++ b/src/core/ClientNetworkMessages.cpp @@ -141,7 +141,7 @@ sendStoredData(); } -void ClientNetworkMessages::sendLoginMessage(const QString &newLogin) +void ClientNetworkMessages::sendLoginMessage(const QString &newLogin, const QString& password) { // store the username in config ApplicationSettings::getInstance()->setUserName(newLogin); @@ -149,7 +149,7 @@ // Send Login message QByteArray bytes; QDataStream out(&bytes, QIODevice::WriteOnly); - Login login { newLogin }; + Login login { newLogin, password }; out << MessageIdentifier::LOGIN << login; sendMessage(bytes); } diff --git a/src/core/DataStreamConverter.h b/src/core/DataStreamConverter.h --- a/src/core/DataStreamConverter.h +++ b/src/core/DataStreamConverter.h @@ -41,12 +41,14 @@ inline QDataStream& operator<<(QDataStream &dataStream, const Login &login) { dataStream << login._name; + dataStream << login._password; return dataStream; }; inline QDataStream& operator>>(QDataStream &dataStream, Login &login) { dataStream >> login._name; + dataStream >> login._password; return dataStream; }; diff --git a/src/core/Messages.h b/src/core/Messages.h --- a/src/core/Messages.h +++ b/src/core/Messages.h @@ -44,6 +44,7 @@ struct Login { QString _name; + QString _password; }; struct AvailableLogins { diff --git a/src/core/main.qml b/src/core/main.qml --- a/src/core/main.qml +++ b/src/core/main.qml @@ -358,6 +358,7 @@ onLoginListReceived: { chooseLogin.model = logins; + choosePassword.model = passwords; chooseLogin.visible = true chooseLogin.start() } @@ -374,12 +375,16 @@ button1Text: qsTr("OK") button2Text: qsTr("Cancel") - onButton1Hit: ClientNetworkMessages.sendLoginMessage(chosenLogin) + onButton1Hit: { + + choosePassword.visible = true + choosePassword.start() +// ClientNetworkMessages.sendLoginMessage(chosenLogin) + } focus: true property string chosenLogin property var model - content: ListView { id: view width: chooseLogin.width @@ -408,5 +413,54 @@ onCurrentChanged: { if(current) chooseLogin.chosenLogin = current.text; } } } + GCInputDialog { + id: choosePassword + visible: false + active: visible + anchors.fill: parent + + message: qsTr("Select your password") + onClose: choosePassword.visible = false; + + + button1Text: qsTr("OK") + button2Text: qsTr("Cancel") + onButton1Hit: { + console.debug("selected password: ", chosenPassword) + console.debug("selected user name: ", chooseLogin.chosenLogin) + ClientNetworkMessages.sendLoginMessage(chooseLogin.chosenLogin, chosenPassword) + } + focus: true + + property string chosenPassword + property var model + content: ListView { + id: view + width: choosePassword.width + height: 100 * ApplicationInfo.ratio + contentHeight: 60 * ApplicationInfo.ratio * model.count + interactive: true + clip: true + model: choosePassword.model + delegate: GCDialogCheckBox { + id: userBox + text: modelData + checked: false + exclusiveGroup: exclusiveGroupItem_2 + Component.onCompleted: { + if (exclusiveGroup) + exclusiveGroup.bindCheckable(userBox) + } + Component.onDestruction: { + if (exclusiveGroup) + exclusiveGroup.unbindCheckable(userBox) + } + } + } + ExclusiveGroup { + id: exclusiveGroupItem_2 + onCurrentChanged: { if(current) choosePassword.chosenPassword = current.text; } + } + } /// @endcond }