X-Git-Url: https://git.quassel-irc.org/?a=blobdiff_plain;f=src%2Fqtui%2Fmainwin.cpp;h=747da66a9c68a485fd473ef9859f337d6cb9986c;hb=f84a3fd303cbea73a7c9b3839e417862fea43baa;hp=bd8727ac4e03328540259daaceeba7841e58b18b;hpb=df48c9a36377de3c9e9deeaf539e1446ef7bd49b;p=quassel.git diff --git a/src/qtui/mainwin.cpp b/src/qtui/mainwin.cpp index bd8727ac..747da66a 100644 --- a/src/qtui/mainwin.cpp +++ b/src/qtui/mainwin.cpp @@ -1,5 +1,5 @@ /*************************************************************************** - * Copyright (C) 2005-2015 by the Quassel Project * + * Copyright (C) 2005-2016 by the Quassel Project * * devel@quassel-irc.org * * * * This program is free software; you can redistribute it and/or modify * @@ -101,6 +101,9 @@ #include "verticaldock.h" #ifndef HAVE_KDE +# ifdef HAVE_QTMULTIMEDIA +# include "qtmultimedianotificationbackend.h" +# endif # ifdef HAVE_PHONON # include "phononnotificationbackend.h" # endif @@ -153,6 +156,11 @@ # include "settingspages/shortcutssettingspage.h" #endif +#ifdef HAVE_SONNET +# include "settingspages/sonnetsettingspage.h" +#endif + + MainWin::MainWin(QWidget *parent) #ifdef HAVE_KDE : KMainWindow(parent), _kHelpMenu(new KHelpMenu(this)), @@ -223,6 +231,9 @@ void MainWin::init() setupHotList(); #ifndef HAVE_KDE +# ifdef HAVE_QTMULTIMEDIA + QtUi::registerNotificationBackend(new QtMultimediaNotificationBackend(this)); +# endif # ifdef HAVE_PHONON QtUi::registerNotificationBackend(new PhononNotificationBackend(this)); # endif @@ -448,6 +459,9 @@ void MainWin::setupActions() coll->addAction("JumpHotBuffer", new Action(tr("Jump to hot chat"), coll, this, SLOT(on_jumpHotBuffer_triggered()), QKeySequence(Qt::META + Qt::Key_A))); + coll->addAction("ActivateBufferFilter", new Action(tr("Activate the buffer search"), coll, + this, SLOT(on_bufferSearch_triggered()), QKeySequence(Qt::CTRL + Qt::Key_S))); + // Jump keys #ifdef Q_OS_MAC const int bindModifier = Qt::ControlModifier | Qt::AltModifier; @@ -711,7 +725,7 @@ BufferView *MainWin::activeBufferView() const if (_activeBufferViewIndex < 0 || _activeBufferViewIndex >= _bufferViews.count()) return 0; BufferViewDock *dock = _bufferViews.at(_activeBufferViewIndex); - return dock->isActive() ? qobject_cast(dock->widget()) : 0; + return dock->isActive() ? dock->bufferView() : 0; } @@ -720,9 +734,8 @@ void MainWin::changeActiveBufferView(int bufferViewId) if (bufferViewId < 0) return; - BufferView *current = activeBufferView(); - if (current) { - qobject_cast(current->parent())->setActive(false); + if (_activeBufferViewIndex >= 0 && _activeBufferViewIndex < _bufferViews.count()) { + _bufferViews[_activeBufferViewIndex]->setActive(false); _activeBufferViewIndex = -1; } @@ -757,9 +770,9 @@ void MainWin::showPasswordChangeDlg() void MainWin::changeActiveBufferView(bool backwards) { - BufferView *current = activeBufferView(); - if (current) - qobject_cast(current->parent())->setActive(false); + if (_activeBufferViewIndex >= 0 && _activeBufferViewIndex < _bufferViews.count()) { + _bufferViews[_activeBufferViewIndex]->setActive(false); + } if (!_bufferViews.count()) return; @@ -879,6 +892,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); } @@ -1065,7 +1080,7 @@ void MainWin::connectedToCore() connect(Client::bufferViewManager(), SIGNAL(bufferViewConfigDeleted(int)), this, SLOT(removeBufferView(int))); connect(Client::bufferViewManager(), SIGNAL(initDone()), this, SLOT(loadLayout())); - connect(Client::transferManager(), SIGNAL(transferAdded(const ClientTransfer*)), SLOT(showNewTransferDlg(const ClientTransfer*))); + connect(Client::transferManager(), SIGNAL(transferAdded(QUuid)), SLOT(showNewTransferDlg(QUuid))); setConnectedState(); } @@ -1131,7 +1146,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 +1216,7 @@ void MainWin::setDisconnectedState() _msgProcessorStatusWidget->setProgress(0, 0); updateIcon(); systemTray()->setState(SystemTray::Passive); + _nickListWidget->setVisible(false); } @@ -1364,6 +1380,9 @@ void MainWin::showSettingsDlg() dlg->registerSettingsPage(new BufferViewSettingsPage(dlg)); dlg->registerSettingsPage(new InputWidgetSettingsPage(dlg)); dlg->registerSettingsPage(new TopicWidgetSettingsPage(dlg)); +#ifdef HAVE_SONNET + dlg->registerSettingsPage(new SonnetSettingsPage(dlg)); +#endif dlg->registerSettingsPage(new HighlightSettingsPage(dlg)); dlg->registerSettingsPage(new NotificationsSettingsPage(dlg)); dlg->registerSettingsPage(new BacklogSettingsPage(dlg)); @@ -1405,10 +1424,16 @@ void MainWin::showShortcutsDlg() } -void MainWin::showNewTransferDlg(const ClientTransfer *transfer) +void MainWin::showNewTransferDlg(const QUuid &transferId) { - ReceiveFileDlg *dlg = new ReceiveFileDlg(transfer, this); - dlg->show(); + auto transfer = Client::transferManager()->transfer(transferId); + if (transfer) { + ReceiveFileDlg *dlg = new ReceiveFileDlg(transfer, this); + dlg->show(); + } + else { + qWarning() << "Unknown transfer ID" << transferId; + } } @@ -1631,6 +1656,16 @@ void MainWin::on_jumpHotBuffer_triggered() Client::bufferModel()->switchToBuffer(_bufferHotList->hottestBuffer()); } +void MainWin::on_bufferSearch_triggered() +{ + if (_activeBufferViewIndex < 0 || _activeBufferViewIndex >= _bufferViews.count()) { + qWarning() << "Tried to activate filter on invalid bufferview:" << _activeBufferViewIndex; + return; + } + + _bufferViews[_activeBufferViewIndex]->activateFilter(); +} + void MainWin::onJumpKey() {