X-Git-Url: https://git.quassel-irc.org/?a=blobdiff_plain;f=src%2Fqtui%2Fmainwin.cpp;h=a7c99ff9474e5e0d4afbdfd7ee7f7d76786daeb7;hb=dbe74e993bcad57c15feb30d9bed30b6d43a3332;hp=d302ee148272043de388aef166b363be9f2a8df1;hpb=4df7862b00b2113dabdf52342b2c15560313f476;p=quassel.git diff --git a/src/qtui/mainwin.cpp b/src/qtui/mainwin.cpp index d302ee14..a7c99ff9 100644 --- a/src/qtui/mainwin.cpp +++ b/src/qtui/mainwin.cpp @@ -29,12 +29,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 +50,7 @@ #include "uisettings.h" #include "qtuisettings.h" #include "jumpkeyhandler.h" +#include "sessionsettings.h" #include "selectionmodelsynchronizer.h" #include "mappedselectionmodel.h" @@ -108,6 +111,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 = dynamic_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() { @@ -158,6 +164,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(ui.bufferWidget->searchBar()->toggleViewAction()); _titleSetter.setModel(Client::bufferModel()); _titleSetter.setSelectionModel(Client::bufferModel()->standardSelectionModel()); @@ -560,12 +567,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 +578,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 +770,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()); +}