Skip to content

Commit ad36fca

Browse files
committed
Merge remote-tracking branch 'remotes/fxrh/master' into save-window-state
2 parents d3c25bd + c39e1f6 commit ad36fca

7 files changed

+32
-18
lines changed

CMakeLists.txt

+5-5
Original file line numberDiff line numberDiff line change
@@ -27,11 +27,11 @@ if(NOT CMAKE_BUILD_TYPE AND NOT CMAKE_CONFIGURATION_TYPES)
2727
endif()
2828

2929
# Find the libraries
30-
find_package(Qt5Widgets 5.2.1)
31-
find_package(Qt5Network 5.2.1)
32-
find_package(Qt5Quick 5.2.1)
33-
find_package(Qt5Qml 5.2.1)
34-
find_package(Qt5Gui 5.2.1)
30+
find_package(Qt5Widgets 5.2.1 REQUIRED)
31+
find_package(Qt5Network 5.2.1 REQUIRED)
32+
find_package(Qt5Quick 5.2.1 REQUIRED)
33+
find_package(Qt5Qml 5.2.1 REQUIRED)
34+
find_package(Qt5Gui 5.2.1 REQUIRED)
3535

3636
message( STATUS )
3737
message( STATUS "================================================================================" )

client/logindialog.cpp

+9-4
Original file line numberDiff line numberDiff line change
@@ -40,7 +40,7 @@ LoginDialog::LoginDialog(QWidget* parent)
4040
passwordEdit = new QLineEdit();
4141
passwordEdit->setEchoMode( QLineEdit::Password );
4242
saveTokenCheck = new QCheckBox("Stay logged in");
43-
sessionLabel = new QLabel();
43+
statusLabel = new QLabel("Welcome to Quaternion");
4444
loginButton = new QPushButton("Login");
4545

4646
QFormLayout* formLayout = new QFormLayout();
@@ -52,7 +52,7 @@ LoginDialog::LoginDialog(QWidget* parent)
5252
QVBoxLayout* mainLayout = new QVBoxLayout();
5353
mainLayout->addLayout(formLayout);
5454
mainLayout->addWidget(loginButton);
55-
mainLayout->addWidget(sessionLabel);
55+
mainLayout->addWidget(statusLabel);
5656

5757
setLayout(mainLayout);
5858

@@ -94,6 +94,11 @@ LoginDialog::LoginDialog(QWidget* parent)
9494
connect( loginButton, &QPushButton::clicked, this, &LoginDialog::login );
9595
}
9696

97+
void LoginDialog::setStatusMessage(const QString& msg)
98+
{
99+
statusLabel->setText(msg);
100+
}
101+
97102
QuaternionConnection* LoginDialog::connection() const
98103
{
99104
return m_connection;
@@ -106,7 +111,7 @@ bool LoginDialog::keepLoggedIn() const
106111

107112
void LoginDialog::login()
108113
{
109-
sessionLabel->setText("Connecting and logging in, please wait");
114+
setStatusMessage("Connecting and logging in, please wait");
110115
setDisabled(true);
111116
QUrl url = QUrl::fromUserInput(serverEdit->text());
112117
QString user = userEdit->text();
@@ -121,7 +126,7 @@ void LoginDialog::login()
121126

122127
void LoginDialog::error(QString error)
123128
{
124-
sessionLabel->setText( error );
129+
setStatusMessage( error );
125130
setConnection(nullptr);
126131
setDisabled(false);
127132
}

client/logindialog.h

+2-1
Original file line numberDiff line numberDiff line change
@@ -34,6 +34,7 @@ class LoginDialog : public QDialog
3434
public:
3535
LoginDialog(QWidget* parent = nullptr);
3636

37+
void setStatusMessage(const QString& msg);
3738
QuaternionConnection* connection() const;
3839
bool keepLoggedIn() const;
3940

@@ -46,7 +47,7 @@ class LoginDialog : public QDialog
4647
QLineEdit* userEdit;
4748
QLineEdit* passwordEdit;
4849
QPushButton* loginButton;
49-
QLabel* sessionLabel;
50+
QLabel* statusLabel;
5051
QCheckBox* saveTokenCheck;
5152

5253
QuaternionConnection* m_connection;

client/main.cpp

+7
Original file line numberDiff line numberDiff line change
@@ -32,6 +32,13 @@ int main( int argc, char* argv[] )
3232
QApplication::setApplicationDisplayName("Quaternion");
3333
QApplication::setApplicationVersion("0.0");
3434

35+
QObject::connect(&app, &QApplication::lastWindowClosed, []{
36+
qDebug() << "Last window closed!";
37+
// We should not need to do the following, as quitOnLastWindowClosed is set to "true"
38+
// might be a bug, see https://forum.qt.io/topic/71112/application-does-not-quit
39+
QApplication::postEvent(qApp, new QEvent(QEvent::Quit));
40+
});
41+
3542
QCommandLineParser parser;
3643
parser.setApplicationDescription(QApplication::translate("main", "An IM client for the Matrix protocol"));
3744
parser.addHelpOption();

client/mainwindow.cpp

+6-5
Original file line numberDiff line numberDiff line change
@@ -144,14 +144,15 @@ void MainWindow::setConnection(QuaternionConnection* newConnection)
144144
connect( connection, &Connection::syncDone, this, &MainWindow::gotEvents );
145145
connect( connection, &Connection::connected, this, &MainWindow::getNewEvents );
146146
connect( connection, &Connection::reconnected, this, &MainWindow::getNewEvents );
147-
connect( connection, &Connection::loginError, this, &MainWindow::loggedOut);
148-
connect( connection, &Connection::loggedOut, this, &MainWindow::loggedOut);
147+
connect( connection, &Connection::loginError, this, &MainWindow::loggedOut );
148+
connect( connection, &Connection::loggedOut, [=]{ loggedOut(); } );
149149
}
150150
}
151151

152-
void MainWindow::showLoginWindow()
152+
void MainWindow::showLoginWindow(const QString& statusMessage)
153153
{
154154
LoginDialog dialog(this);
155+
dialog.setStatusMessage(statusMessage);
155156
if( dialog.exec() )
156157
{
157158
setConnection(dialog.connection());
@@ -202,12 +203,12 @@ void MainWindow::logout()
202203
connection->logout();
203204
}
204205

205-
void MainWindow::loggedOut()
206+
void MainWindow::loggedOut(const QString& message)
206207
{
207208
loginAction->setEnabled(true);
208209
logoutAction->setEnabled(false);
209210
setConnection(nullptr);
210-
loginAction->trigger();
211+
showLoginWindow(message);
211212
}
212213

213214
void MainWindow::getNewEvents()

client/mainwindow.h

+2-2
Original file line numberDiff line numberDiff line change
@@ -54,12 +54,12 @@ class MainWindow: public QMainWindow
5454
void initialize();
5555
void getNewEvents();
5656
void gotEvents();
57-
void loggedOut();
57+
void loggedOut(const QString& message = QString());
5858

5959
void connectionError(QString error);
6060

6161
void showJoinRoomDialog();
62-
void showLoginWindow();
62+
void showLoginWindow(const QString& statusMessage = QString());
6363
void logout();
6464

6565
private:

lib

Submodule lib updated from 573e0e4 to 763a7b3

0 commit comments

Comments
 (0)