X-Git-Url: https://git.quassel-irc.org/?a=blobdiff_plain;f=src%2Fqtui%2Fmainwin.cpp;h=ed467cd46d0b66979b30a401326235db125edf7d;hb=e472996a053e11d21ffef4a30f7d37461239cdab;hp=9030bfdd5b9924e8575eaf448dbc7776afb8a7e9;hpb=27df6b0c7c887318e1c79030886d582246bd8912;p=quassel.git diff --git a/src/qtui/mainwin.cpp b/src/qtui/mainwin.cpp index 9030bfdd..ed467cd4 100644 --- a/src/qtui/mainwin.cpp +++ b/src/qtui/mainwin.cpp @@ -51,13 +51,14 @@ #include "chatmonitorview.h" #include "chatview.h" #include "client.h" -#include "clientsyncer.h" #include "clientbacklogmanager.h" #include "clientbufferviewconfig.h" #include "clientbufferviewmanager.h" #include "clientignorelistmanager.h" -#include "coreinfodlg.h" #include "coreconnectdlg.h" +#include "coreconnection.h" +#include "coreconnectionstatuswidget.h" +#include "coreinfodlg.h" #include "contextmenuactionprovider.h" #include "debugbufferviewoverlay.h" #include "debuglogwidget.h" @@ -105,6 +106,7 @@ #include "settingspages/chatmonitorsettingspage.h" #include "settingspages/chatviewsettingspage.h" #include "settingspages/connectionsettingspage.h" +#include "settingspages/coreaccountsettingspage.h" #include "settingspages/generalsettingspage.h" #include "settingspages/highlightsettingspage.h" #include "settingspages/identitiessettingspage.h" @@ -124,7 +126,8 @@ MainWin::MainWin(QWidget *parent) #endif coreLagLabel(new QLabel()), sslLabel(new QLabel()), - msgProcessorStatusWidget(new MsgProcessorStatusWidget()), + _msgProcessorStatusWidget(new MsgProcessorStatusWidget(this)), + _coreConnectionStatusWidget(new CoreConnectionStatusWidget(Client::coreConnection(), this)), _titleSetter(this), _awayLog(0), _layoutLoaded(false) @@ -155,6 +158,7 @@ void MainWin::init() { SLOT(messagesInserted(const QModelIndex &, int, int))); connect(GraphicalUi::contextMenuActionProvider(), SIGNAL(showChannelList(NetworkId)), SLOT(showChannelList(NetworkId))); connect(GraphicalUi::contextMenuActionProvider(), SIGNAL(showIgnoreList(QString)), SLOT(showIgnoreList(QString))); + connect(Client::coreConnection(), SIGNAL(userAuthenticationRequired(CoreAccount *, bool *, QString)), SLOT(userAuthenticationRequired(CoreAccount *, bool *, QString))); // Setup Dock Areas setDockNestingEnabled(true); @@ -210,10 +214,10 @@ void MainWin::init() { // restore locked state of docks QtUi::actionCollection("General")->action("LockLayout")->setChecked(s.value("LockLayout", false).toBool()); - if(Quassel::runMode() != Quassel::Monolithic) { - showCoreConnectionDlg(true); // autoconnect if appropriate - } else { - startInternalCore(); + CoreConnection *conn = Client::coreConnection(); + if(!conn->connectToCore()) { + // No autoconnect selected (or no accounts) + showCoreConnectionDlg(); } } @@ -311,9 +315,9 @@ void MainWin::setupActions() { connect(lockAct, SIGNAL(toggled(bool)), SLOT(on_actionLockLayout_toggled(bool))); coll->addAction("ToggleSearchBar", new Action(SmallIcon("edit-find"), tr("Show &Search Bar"), coll, - 0, 0, QKeySequence::Find))->setCheckable(true); + 0, 0, QKeySequence::Find))->setCheckable(true); coll->addAction("ShowAwayLog", new Action(tr("Show Away Log"), coll, - this, SLOT(showAwayLog()))); + this, SLOT(showAwayLog()))); coll->addAction("ToggleMenuBar", new Action(SmallIcon("show-menu"), tr("Show &Menubar"), coll, 0, 0, tr("Ctrl+M")))->setCheckable(true); @@ -623,7 +627,11 @@ void MainWin::setupTitleSetter() { void MainWin::setupStatusBar() { // MessageProcessor progress - statusBar()->addPermanentWidget(msgProcessorStatusWidget); + statusBar()->addPermanentWidget(_msgProcessorStatusWidget); + + // Connection state + _coreConnectionStatusWidget->update(); + statusBar()->addPermanentWidget(_coreConnectionStatusWidget); // Core Lag: updateLagIndicator(); @@ -646,6 +654,8 @@ void MainWin::setupStatusBar() { connect(showStatusbar, SIGNAL(toggled(bool)), statusBar(), SLOT(setVisible(bool))); connect(showStatusbar, SIGNAL(toggled(bool)), this, SLOT(saveStatusBarStatus(bool))); + + connect(Client::coreConnection(), SIGNAL(connectionMsg(QString)), statusBar(), SLOT(showMessage(QString))); } void MainWin::setupHotList() { @@ -712,11 +722,11 @@ void MainWin::setConnectedState() { action->setVisible(!Client::internalCore()); } - disconnect(Client::backlogManager(), SIGNAL(updateProgress(int, int)), msgProcessorStatusWidget, SLOT(setProgress(int, int))); + disconnect(Client::backlogManager(), SIGNAL(updateProgress(int, int)), _msgProcessorStatusWidget, SLOT(setProgress(int, int))); disconnect(Client::backlogManager(), SIGNAL(messagesRequested(const QString &)), this, SLOT(showStatusBarMessage(const QString &))); disconnect(Client::backlogManager(), SIGNAL(messagesProcessed(const QString &)), this, SLOT(showStatusBarMessage(const QString &))); if(!Client::internalCore()) { - connect(Client::backlogManager(), SIGNAL(updateProgress(int, int)), msgProcessorStatusWidget, SLOT(setProgress(int, int))); + connect(Client::backlogManager(), SIGNAL(updateProgress(int, int)), _msgProcessorStatusWidget, SLOT(setProgress(int, int))); connect(Client::backlogManager(), SIGNAL(messagesRequested(const QString &)), this, SLOT(showStatusBarMessage(const QString &))); connect(Client::backlogManager(), SIGNAL(messagesProcessed(const QString &)), this, SLOT(showStatusBarMessage(const QString &))); } @@ -746,14 +756,22 @@ void MainWin::setConnectedState() { void MainWin::loadLayout() { QtUiSettings s; - int accountId = Client::currentCoreAccount().toInt(); - restoreState(s.value(QString("MainWinState-%1").arg(accountId)).toByteArray(), accountId); + int accountId = Client::currentCoreAccount().accountId().toInt(); + QByteArray state = s.value(QString("MainWinState-%1").arg(accountId)).toByteArray(); + if(state.isEmpty()) { + // Make sure that the default bufferview is shown + if(_bufferViews.count()) + _bufferViews.at(0)->show(); + return; + } + + restoreState(state, accountId); _layoutLoaded = true; } void MainWin::saveLayout() { QtUiSettings s; - int accountId = Client::currentCoreAccount().toInt(); + int accountId = Client::currentCoreAccount().accountId().toInt(); if(accountId > 0) s.setValue(QString("MainWinState-%1").arg(accountId) , saveState(accountId)); } @@ -804,21 +822,29 @@ void MainWin::setDisconnectedState() { sslLabel->hide(); updateLagIndicator(); coreLagLabel->hide(); - if(msgProcessorStatusWidget) - msgProcessorStatusWidget->setProgress(0, 0); + if(_msgProcessorStatusWidget) + _msgProcessorStatusWidget->setProgress(0, 0); updateIcon(); systemTray()->setState(SystemTray::Inactive); } void MainWin::startInternalCore() { - ClientSyncer *syncer = new ClientSyncer(); - Client::registerClientSyncer(syncer); - connect(syncer, SIGNAL(syncFinished()), syncer, SLOT(deleteLater()), Qt::QueuedConnection); - syncer->useInternalCore(); + +} + +void MainWin::showCoreConnectionDlg() { + CoreConnectDlg dlg(this); + if(dlg.exec() == QDialog::Accepted) { + AccountId accId = dlg.selectedAccount(); + if(accId.isValid()) + Client::coreConnection()->connectToCore(accId); + } } -void MainWin::showCoreConnectionDlg(bool autoConnect) { - CoreConnectDlg(autoConnect, this).exec(); +void MainWin::userAuthenticationRequired(CoreAccount *account, bool *valid, const QString &errorMessage) { + Q_UNUSED(errorMessage) + CoreConnectAuthDlg dlg(account, this); + *valid = (dlg.exec() == QDialog::Accepted); } void MainWin::showChannelList(NetworkId netId) { @@ -885,6 +911,10 @@ void MainWin::showSettingsDlg() { dlg->registerSettingsPage(new AliasesSettingsPage(dlg)); dlg->registerSettingsPage(new IgnoreListSettingsPage(dlg)); + if(Quassel::runMode() != Quassel::Monolithic) { + dlg->registerSettingsPage(new CoreAccountSettingsPage(dlg)); + } + dlg->show(); }