X-Git-Url: https://git.quassel-irc.org/?p=quassel.git;a=blobdiff_plain;f=src%2Fqtui%2Fmainwin.cpp;h=9bb37b4ff1587a85e38ed799f8529f4be7ad3523;hp=431dacd79de570775a617064b66f44d1798d2e9d;hb=5e0f2149927d3934c514c3dc7ca423b8784a5a90;hpb=9bb1e377323247ce65e70f2506f096098969d19e diff --git a/src/qtui/mainwin.cpp b/src/qtui/mainwin.cpp index 431dacd7..9bb37b4f 100644 --- a/src/qtui/mainwin.cpp +++ b/src/qtui/mainwin.cpp @@ -41,6 +41,7 @@ #include "chatmonitorview.h" #include "chatview.h" #include "client.h" +#include "clientsyncer.h" #include "clientbacklogmanager.h" #include "coreinfodlg.h" #include "coreconnectdlg.h" @@ -115,20 +116,6 @@ MainWin::MainWin(QWidget *parent) installEventFilter(new JumpKeyHandler(this)); -#ifndef HAVE_KDE - QtUi::registerNotificationBackend(new TaskbarNotificationBackend(this)); - QtUi::registerNotificationBackend(new SystrayNotificationBackend(this)); -# ifdef HAVE_PHONON - QtUi::registerNotificationBackend(new PhononNotificationBackend(this)); -# endif -# ifdef HAVE_DBUS - QtUi::registerNotificationBackend(new DesktopNotificationBackend(this)); -# endif - -#else /* HAVE_KDE */ - QtUi::registerNotificationBackend(new KNotificationBackend(this)); -#endif /* HAVE_KDE */ - QtUiApplication* app = qobject_cast qApp; connect(app, SIGNAL(saveStateToSession(const QString&)), SLOT(saveStateToSession(const QString&))); connect(app, SIGNAL(saveStateToSessionSettings(SessionSettings&)), SLOT(saveStateToSessionSettings(SessionSettings&))); @@ -157,7 +144,6 @@ void MainWin::init() { setupActions(); setupBufferWidget(); setupMenus(); - setupViews(); setupTopicWidget(); setupChatMonitor(); setupNickWidget(); @@ -166,6 +152,20 @@ void MainWin::init() { setupSystray(); setupTitleSetter(); +#ifndef HAVE_KDE + QtUi::registerNotificationBackend(new TaskbarNotificationBackend(this)); + QtUi::registerNotificationBackend(new SystrayNotificationBackend(this)); +# ifdef HAVE_PHONON + QtUi::registerNotificationBackend(new PhononNotificationBackend(this)); +# endif +# ifdef HAVE_DBUS + QtUi::registerNotificationBackend(new DesktopNotificationBackend(this)); +# endif + +#else /* HAVE_KDE */ + QtUi::registerNotificationBackend(new KNotificationBackend(this)); +#endif /* HAVE_KDE */ + // restore mainwin state restoreState(s.value("MainWinState").toByteArray()); @@ -175,7 +175,11 @@ void MainWin::init() { setDisconnectedState(); // Disable menus and stuff show(); - showCoreConnectionDlg(true); // autoconnect if appropriate + if(Quassel::runMode() != Quassel::Monolithic) { + showCoreConnectionDlg(true); // autoconnect if appropriate + } else { + startInternalCore(); + } } MainWin::~MainWin() { @@ -298,24 +302,20 @@ void MainWin::setupBufferWidget() { setCentralWidget(_bufferWidget); } -void MainWin::setupViews() { - addBufferView(); -} - void MainWin::addBufferView(int bufferViewConfigId) { addBufferView(Client::bufferViewManager()->bufferViewConfig(bufferViewConfigId)); } void MainWin::addBufferView(BufferViewConfig *config) { - BufferViewDock *dock; - if(config) - dock = new BufferViewDock(config, this); - else - dock = new BufferViewDock(this); + if(!config) + return; + + BufferViewDock *dock = new BufferViewDock(config, this); //create the view and initialize it's filter BufferView *view = new BufferView(dock); view->setFilteredModel(Client::bufferModel(), config); + view->installEventFilter(_inputWidget->inputLine()); // for key presses view->show(); Client::bufferModel()->synchronizeView(view); @@ -415,20 +415,20 @@ void MainWin::setupInputWidget() { VerticalDock *dock = new VerticalDock(tr("Inputline"), this); dock->setObjectName("InputDock"); - InputWidget *inputWidget = new InputWidget(dock); - dock->setWidget(inputWidget); + _inputWidget = new InputWidget(dock); + dock->setWidget(_inputWidget); addDockWidget(Qt::BottomDockWidgetArea, dock); _viewMenu->addAction(dock->toggleViewAction()); dock->toggleViewAction()->setText(tr("Show Input Line")); - inputWidget->setModel(Client::bufferModel()); - inputWidget->setSelectionModel(Client::bufferModel()->standardSelectionModel()); + _inputWidget->setModel(Client::bufferModel()); + _inputWidget->setSelectionModel(Client::bufferModel()->standardSelectionModel()); - _bufferWidget->setFocusProxy(inputWidget); + _bufferWidget->setFocusProxy(_inputWidget); - inputWidget->inputLine()->installEventFilter(_bufferWidget); + _inputWidget->inputLine()->installEventFilter(_bufferWidget); } void MainWin::setupTopicWidget() { @@ -458,7 +458,7 @@ void MainWin::setupStatusBar() { connect(Client::messageProcessor(), SIGNAL(progressUpdated(int, int)), msgProcessorStatusWidget, SLOT(setProgress(int, int))); // Core Lag: - updateLagIndicator(0); + updateLagIndicator(); statusBar()->addPermanentWidget(coreLagLabel); coreLagLabel->hide(); connect(Client::signalProxy(), SIGNAL(lagUpdated(int)), this, SLOT(updateLagIndicator(int))); @@ -574,7 +574,12 @@ void MainWin::saveLayout() { } void MainWin::updateLagIndicator(int lag) { - coreLagLabel->setText(QString(tr("Core Lag: %1 msec")).arg(lag)); + QString text = tr("Core Lag: %1"); + if(lag == -1) + text = text.arg('-'); + else + text = text.arg("%1 msec").arg(lag); + coreLagLabel->setText(text); } @@ -614,10 +619,18 @@ void MainWin::setDisconnectedState() { statusBar()->showMessage(tr("Not connected to core.")); sslLabel->setPixmap(QPixmap()); sslLabel->hide(); + updateLagIndicator(); coreLagLabel->hide(); updateIcon(); } +void MainWin::startInternalCore() { + ClientSyncer *syncer = new ClientSyncer(); + Client::registerClientSyncer(syncer); + connect(syncer, SIGNAL(syncFinished()), syncer, SLOT(deleteLater()), Qt::QueuedConnection); + syncer->useInternalCore(); +} + void MainWin::showCoreConnectionDlg(bool autoConnect) { CoreConnectDlg(autoConnect, this).exec(); }