cmake: avoid de-duplication of user's CXXFLAGS
[quassel.git] / src / qtui / mainpage.cpp
index eb59b2a..5e853d2 100644 (file)
@@ -1,5 +1,5 @@
 /***************************************************************************
- *   Copyright (C) 2005-2014 by the Quassel Project                        *
+ *   Copyright (C) 2005-2022 by the Quassel Project                        *
  *   devel@quassel-irc.org                                                 *
  *                                                                         *
  *   This program is free software; you can redistribute it and/or modify  *
  *   51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.         *
  ***************************************************************************/
 
-#include <QImage>
-#include <QPainter>
-
 #include "mainpage.h"
 
-MainPage::MainPage(QWidget *parent) : QWidget(parent)
-{
-}
+#include <QImage>
+#include <QLabel>
+#include <QLayout>
+#include <QPainter>
+#include <QPushButton>
 
+#include "client.h"
+#include "coreconnectdlg.h"
+#include "icon.h"
 
-void MainPage::paintEvent(QPaintEvent *event)
+MainPage::MainPage(QWidget* parent)
+    : QWidget(parent)
 {
-    Q_UNUSED(event);
+    auto* layout = new QVBoxLayout(this);
+    layout->setAlignment(Qt::AlignCenter);
+    QLabel* label = new QLabel(this);
+    label->setPixmap(QPixmap(":/pics/quassel-logo.png"));
+    layout->addWidget(label);
 
-    QPainter painter(this);
-    QImage img(":/pics/quassel-logo.png"); // FIXME load externally
+    if (Quassel::runMode() != Quassel::Monolithic) {
+        _connectButton = new QPushButton(icon::get("network-connect"), tr("Connect to Core..."));
+        _connectButton->setEnabled(Client::coreConnection()->state() == CoreConnection::Disconnected);
 
-    if (img.height() > height() || img.width() > width())
-        img = img.scaled(width(), height(), Qt::KeepAspectRatio, Qt::SmoothTransformation);
+        connect(Client::coreConnection(), &CoreConnection::stateChanged, this, &MainPage::coreConnectionStateChanged);
+        connect(_connectButton, &QAbstractButton::clicked, this, &MainPage::showCoreConnectionDlg);
+        layout->addWidget(_connectButton);
+    }
+}
 
-    int xmargin = (width() - img.width()) / 2;
-    int ymargin = (height() - img.height()) / 2;
+void MainPage::showCoreConnectionDlg()
+{
+    CoreConnectDlg dlg(this);
+    if (dlg.exec() == QDialog::Accepted) {
+        AccountId accId = dlg.selectedAccount();
+        if (accId.isValid())
+            Client::coreConnection()->connectToCore(accId);
+    }
+}
 
-    painter.drawImage(xmargin, ymargin, img);
+void MainPage::coreConnectionStateChanged()
+{
+    if (Client::coreConnection()->state() == CoreConnection::Disconnected) {
+        _connectButton->setEnabled(true);
+    }
+    else {
+        _connectButton->setDisabled(true);
+    }
 }