X-Git-Url: https://git.quassel-irc.org/?p=quassel.git;a=blobdiff_plain;f=src%2Fqtui%2Fmainwin.cpp;h=88968936b9c55749e00b1448c43dd6db2463878e;hp=d302ee148272043de388aef166b363be9f2a8df1;hb=f091c08e33f4cc2ed63afebab0ae90f2dad55139;hpb=4df7862b00b2113dabdf52342b2c15560313f476 diff --git a/src/qtui/mainwin.cpp b/src/qtui/mainwin.cpp index d302ee14..88968936 100644 --- a/src/qtui/mainwin.cpp +++ b/src/qtui/mainwin.cpp @@ -20,6 +20,8 @@ #include "mainwin.h" #include "aboutdlg.h" +#include "action.h" +#include "actioncollection.h" #include "bufferview.h" #include "bufferviewconfig.h" #include "bufferviewfilter.h" @@ -29,12 +31,14 @@ #include "chatmonitorfilter.h" #include "chatmonitorview.h" #include "chatview.h" +#include "chatviewsearchbar.h" #include "client.h" #include "clientbacklogmanager.h" #include "coreinfodlg.h" #include "coreconnectdlg.h" #include "msgprocessorstatuswidget.h" #include "qtuimessageprocessor.h" +#include "qtuiapplication.h" #include "networkmodel.h" #include "buffermodel.h" #include "nicklistwidget.h" @@ -48,6 +52,7 @@ #include "uisettings.h" #include "qtuisettings.h" #include "jumpkeyhandler.h" +#include "sessionsettings.h" #include "selectionmodelsynchronizer.h" #include "mappedselectionmodel.h" @@ -63,7 +68,6 @@ #include "settingspages/networkssettingspage.h" #include "settingspages/notificationssettingspage.h" -#include "global.h" #include "qtuistyle.h" MainWin::MainWin(QWidget *parent) @@ -80,7 +84,8 @@ MainWin::MainWin(QWidget *parent) offlineTrayIcon(":/icons/quassel-icon-offline.png"), trayIconActive(false), - timer(new QTimer(this)) + timer(new QTimer(this)), + _actionCollection(new ActionCollection(this)) { UiSettings uiSettings; QString style = uiSettings.value("Style", QString("")).toString(); @@ -95,6 +100,8 @@ MainWin::MainWin(QWidget *parent) systray->setIcon(offlineTrayIcon); setWindowIconText("Quassel IRC"); + QtUi::actionCollection()->addAssociatedWidget(this); + statusBar()->showMessage(tr("Waiting for core...")); installEventFilter(new JumpKeyHandler(this)); @@ -108,6 +115,9 @@ MainWin::MainWin(QWidget *parent) connect(desktopNotifications, SIGNAL(NotificationClosed(uint, uint)), this, SLOT(desktopNotificationClosed(uint, uint))); connect(desktopNotifications, SIGNAL(ActionInvoked(uint, const QString&)), this, SLOT(desktopNotificationInvoked(uint, const QString&))); #endif + QtUiApplication* app = qobject_cast qApp; + connect(app, SIGNAL(saveStateToSession(const QString&)), this, SLOT(saveStateToSession(const QString&))); + connect(app, SIGNAL(saveStateToSessionSettings(SessionSettings&)), this, SLOT(saveStateToSessionSettings(SessionSettings&))); } void MainWin::init() { @@ -117,8 +127,6 @@ void MainWin::init() { else resize(QSize(800, 500)); - Client::signalProxy()->attachSignal(this, SIGNAL(requestBacklog(BufferInfo, QVariant, QVariant))); - connect(QApplication::instance(), SIGNAL(aboutToQuit()), this, SLOT(saveLayout())); connect(Client::instance(), SIGNAL(networkCreated(NetworkId)), this, SLOT(clientNetworkCreated(NetworkId))); @@ -137,6 +145,7 @@ void MainWin::init() { setCorner(Qt::BottomRightCorner, Qt::RightDockWidgetArea); // setup stuff... + setupActions(); setupMenus(); setupViews(); setupNickWidget(); @@ -158,6 +167,7 @@ void MainWin::init() { // attach the BufferWidget to the BufferModel and the default selection ui.bufferWidget->setModel(Client::bufferModel()); ui.bufferWidget->setSelectionModel(Client::bufferModel()->standardSelectionModel()); + ui.menuViews->addAction(QtUi::actionCollection()->action("toggleSearchBar")); _titleSetter.setModel(Client::bufferModel()); _titleSetter.setSelectionModel(Client::bufferModel()->standardSelectionModel()); @@ -170,6 +180,11 @@ MainWin::~MainWin() { s.setValue("MainWinState", saveState()); } +void MainWin::setupActions() { + + +} + void MainWin::setupMenus() { connect(ui.actionConnectCore, SIGNAL(triggered()), this, SLOT(showCoreConnectionDlg())); connect(ui.actionDisconnectCore, SIGNAL(triggered()), Client::instance(), SLOT(disconnectFromCore())); @@ -391,9 +406,7 @@ void MainWin::connectedToCore() { connect(Client::bufferViewManager(), SIGNAL(bufferViewConfigDeleted(int)), this, SLOT(removeBufferView(int))); connect(Client::bufferViewManager(), SIGNAL(initDone()), this, SLOT(loadLayout())); - foreach(BufferInfo id, Client::allBufferInfos()) { - Client::backlogManager()->requestBacklog(id.bufferId(), 500, -1); - } + Client::backlogManager()->requestInitialBacklog(); setConnectedState(); } @@ -560,12 +573,10 @@ void MainWin::toggleVisibility() { void MainWin::messagesInserted(const QModelIndex &parent, int start, int end) { Q_UNUSED(parent); + if(QApplication::activeWindow() != 0) return; - // FIXME - return; - for(int i = start; i <= end; i++) { QModelIndex idx = Client::messageModel()->index(i, ChatLineModel::ContentsColumn); if(!idx.isValid()) { @@ -573,6 +584,10 @@ void MainWin::messagesInserted(const QModelIndex &parent, int start, int end) { continue; } Message::Flags flags = (Message::Flags)idx.data(ChatLineModel::FlagsRole).toInt(); + if(flags.testFlag(Message::Backlog)) continue; + flags |= Message::Backlog; // we only want to trigger a highlight once! + Client::messageModel()->setData(idx, (int)flags, ChatLineModel::FlagsRole); + BufferId bufId = idx.data(ChatLineModel::BufferIdRole).value(); BufferInfo::Type bufType = Client::networkModel()->bufferType(bufId); @@ -761,3 +776,19 @@ void MainWin::on_actionDebugNetworkModel_triggered(bool) { view->resize(610, 300); view->show(); } + +void MainWin::saveStateToSession(const QString &sessionId) { + return; + SessionSettings s(sessionId); + + s.setValue("MainWinSize", size()); + s.setValue("MainWinPos", pos()); + s.setValue("MainWinState", saveState()); +} + +void MainWin::saveStateToSessionSettings(SessionSettings & s) +{ + s.setValue("MainWinSize", size()); + s.setValue("MainWinPos", pos()); + s.setValue("MainWinState", saveState()); +}