From 66e6d26b38fb6e4528654e6525d205e9e9ca3243 Mon Sep 17 00:00:00 2001 From: Hannah von Reth Date: Tue, 3 Nov 2015 15:07:13 +0100 Subject: [PATCH] Simplify MainPage and add Connect to core button in clients Instead of overriding the paint function simply use a layout and a QLabel in MainPage, this also enables us to add a button to open the connect to core dialog. This commit also hides the Nick list in a disconnected state, to make sure the Quassel logo is centred and to keep it in line with the All Chats view. --- src/qtui/mainpage.cpp | 40 +++++++++++++++++++++---------------- src/qtui/mainpage.h | 2 -- src/qtui/mainwin.cpp | 5 ++++- src/qtui/nicklistwidget.cpp | 13 ++++++++++++ src/qtui/nicklistwidget.h | 1 + 5 files changed, 41 insertions(+), 20 deletions(-) diff --git a/src/qtui/mainpage.cpp b/src/qtui/mainpage.cpp index 82387ab6..a0e5f117 100644 --- a/src/qtui/mainpage.cpp +++ b/src/qtui/mainpage.cpp @@ -18,28 +18,34 @@ * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. * ***************************************************************************/ +#include #include +#include +#include #include #include "mainpage.h" +#include "coreconnectdlg.h" +#include "client.h" MainPage::MainPage(QWidget *parent) : QWidget(parent) { -} - - -void MainPage::paintEvent(QPaintEvent *event) -{ - Q_UNUSED(event); - - QPainter painter(this); - QImage img(":/pics/quassel-logo.png"); // FIXME load externally - - if (img.height() > height() || img.width() > width()) - img = img.scaled(width(), height(), Qt::KeepAspectRatio, Qt::SmoothTransformation); - - int xmargin = (width() - img.width()) / 2; - int ymargin = (height() - img.height()) / 2; - - painter.drawImage(xmargin, ymargin, img); + QVBoxLayout *layout = new QVBoxLayout(this); + layout->setAlignment(Qt::AlignCenter); + QLabel *label = new QLabel(this); + label->setPixmap(QPixmap(":/pics/quassel-logo.png")); + layout->addWidget(label); + + if (Quassel::runMode() != Quassel::Monolithic) { + QPushButton *connectButton = new QPushButton(QIcon::fromTheme("network-connect"), tr("Connect to Core...")); + connect(connectButton, &QPushButton::clicked, [this](){ + CoreConnectDlg dlg(this); + if (dlg.exec() == QDialog::Accepted) { + AccountId accId = dlg.selectedAccount(); + if (accId.isValid()) + Client::coreConnection()->connectToCore(accId); + } + }); + layout->addWidget(connectButton); + } } diff --git a/src/qtui/mainpage.h b/src/qtui/mainpage.h index 0557f8e3..0c48b9fa 100644 --- a/src/qtui/mainpage.h +++ b/src/qtui/mainpage.h @@ -30,8 +30,6 @@ class MainPage : public QWidget public: MainPage(QWidget *parent = 0); -protected: - void paintEvent(QPaintEvent *event); }; diff --git a/src/qtui/mainwin.cpp b/src/qtui/mainwin.cpp index bd8727ac..95d2e6f6 100644 --- a/src/qtui/mainwin.cpp +++ b/src/qtui/mainwin.cpp @@ -879,6 +879,8 @@ void MainWin::setupNickWidget() // attach the NickListWidget to the BufferModel and the default selection _nickListWidget->setModel(Client::bufferModel()); _nickListWidget->setSelectionModel(Client::bufferModel()->standardSelectionModel()); + + _nickListWidget->setVisible(false); } @@ -1131,7 +1133,7 @@ void MainWin::loadLayout() _layoutLoaded = true; return; } - + _nickListWidget->setVisible(true); restoreState(state, accountId); int bufferViewId = s.value(QString("ActiveBufferView-%1").arg(accountId), -1).toInt(); if (bufferViewId >= 0) @@ -1201,6 +1203,7 @@ void MainWin::setDisconnectedState() _msgProcessorStatusWidget->setProgress(0, 0); updateIcon(); systemTray()->setState(SystemTray::Passive); + _nickListWidget->setVisible(false); } diff --git a/src/qtui/nicklistwidget.cpp b/src/qtui/nicklistwidget.cpp index d5af971b..a47cc6e4 100644 --- a/src/qtui/nicklistwidget.cpp +++ b/src/qtui/nicklistwidget.cpp @@ -84,6 +84,19 @@ void NickListWidget::showWidget(bool visible) } } +void NickListWidget::setVisible(bool visible) +{ + QWidget::setVisible(visible); + QDockWidget *dock_ = dock(); + if (!dock_) + return; + + if (visible) + dock_->show(); + else + dock_->close(); +} + void NickListWidget::currentChanged(const QModelIndex ¤t, const QModelIndex &previous) { diff --git a/src/qtui/nicklistwidget.h b/src/qtui/nicklistwidget.h index 1b7253f7..84fc4325 100644 --- a/src/qtui/nicklistwidget.h +++ b/src/qtui/nicklistwidget.h @@ -43,6 +43,7 @@ public: public slots: void showWidget(bool visible); + void setVisible(bool visible) override; signals: void nickSelectionChanged(const QModelIndexList &); -- 2.20.1