From c91b08f855152297a89ec3586792f6616acd0eb9 Mon Sep 17 00:00:00 2001 From: Marcus Eggenberger Date: Thu, 5 Feb 2009 15:56:22 +0100 Subject: [PATCH] don't draw using the higlight colors in the away log --- src/core/core.cpp | 13 +------------ src/core/corenetwork.cpp | 2 -- src/core/sessionthread.cpp | 17 +++-------------- src/core/sessionthread.h | 1 - src/qtui/awaylogfilter.cpp | 16 +++++++++++++--- src/qtui/awaylogfilter.h | 1 + src/qtui/awaylogview.cpp | 1 + src/qtui/mainwin.cpp | 6 +++++- 8 files changed, 24 insertions(+), 33 deletions(-) diff --git a/src/core/core.cpp b/src/core/core.cpp index 4e7632fc..aa1b7d48 100644 --- a/src/core/core.cpp +++ b/src/core/core.cpp @@ -158,21 +158,10 @@ void Core::init() { } Core::~Core() { - _server.close(); - _v6server.close(); foreach(QTcpSocket *socket, blocksizes.keys()) { socket->disconnectFromHost(); // disconnect non authed clients } - - - foreach(SessionThread *session, sessions) { - session->stopSession(); - session->wait(); - delete session; - qDebug() << "next"; - } - -// qDeleteAll(sessions); + qDeleteAll(sessions); qDeleteAll(_storageBackends); } diff --git a/src/core/corenetwork.cpp b/src/core/corenetwork.cpp index f0561838..a40b5464 100644 --- a/src/core/corenetwork.cpp +++ b/src/core/corenetwork.cpp @@ -82,8 +82,6 @@ CoreNetwork::CoreNetwork(const NetworkId &networkid, CoreSession *session) CoreNetwork::~CoreNetwork() { if(connectionState() != Disconnected && connectionState() != Network::Reconnecting) disconnectFromIrc(false); // clean up, but this does not count as requested disconnect! - else - socket.close(); disconnect(&socket, 0, this, 0); // this keeps the socket from triggering events during clean up delete _ircServerHandler; delete _userInputHandler; diff --git a/src/core/sessionthread.cpp b/src/core/sessionthread.cpp index c29d1ff7..35caf13b 100644 --- a/src/core/sessionthread.cpp +++ b/src/core/sessionthread.cpp @@ -36,12 +36,9 @@ SessionThread::SessionThread(UserId uid, bool restoreState, QObject *parent) } SessionThread::~SessionThread() { - if(_session) { - _session->setParent(0); - _session->moveToThread(thread()); - _session->deleteLater(); - _session = 0; - } + // shut down thread gracefully + quit(); + wait(); } CoreSession *SessionThread::session() { @@ -106,13 +103,5 @@ void SessionThread::run() { emit initialized(); exec(); delete _session; - _session = 0; } -void SessionThread::stopSession() { - if(_session) { - connect(_session, SIGNAL(destroyed()), this, SLOT(quit())); - _session->deleteLater(); - _session = 0; - } -} diff --git a/src/core/sessionthread.h b/src/core/sessionthread.h index f9280f05..810e8583 100644 --- a/src/core/sessionthread.h +++ b/src/core/sessionthread.h @@ -44,7 +44,6 @@ public: public slots: void addClient(QObject *peer); - void stopSession(); private slots: void setSessionInitialized(); diff --git a/src/qtui/awaylogfilter.cpp b/src/qtui/awaylogfilter.cpp index 09964a46..8e5366b0 100644 --- a/src/qtui/awaylogfilter.cpp +++ b/src/qtui/awaylogfilter.cpp @@ -30,17 +30,27 @@ bool AwayLogFilter::filterAcceptsRow(int sourceRow, const QModelIndex &sourcePar QModelIndex source_index = sourceModel()->index(sourceRow, 0); - Message::Flags flags = (Message::Flags)source_index.data(MessageModel::FlagsRole).toInt(); + Message::Flags flags = (Message::Flags)sourceModel()->data(source_index, MessageModel::FlagsRole).toInt(); if(!(flags & Message::Backlog && flags & Message::Highlight)) return false; - BufferId bufferId = source_index.data(MessageModel::BufferIdRole).value(); + BufferId bufferId = sourceModel()->data(source_index, MessageModel::BufferIdRole).value(); if(!bufferId.isValid()) { return false; } - if(Client::networkModel()->lastSeenMsgId(bufferId) >= source_index.data(MessageModel::MsgIdRole).value()) + if(Client::networkModel()->lastSeenMsgId(bufferId) >= sourceModel()->data(source_index, MessageModel::MsgIdRole).value()) return false; return true; } + +QVariant AwayLogFilter::data(const QModelIndex &index, int role) const { + if(role != MessageModel::FlagsRole) + return ChatMonitorFilter::data(index, role); + + QModelIndex source_index = mapToSource(index); + Message::Flags flags = (Message::Flags)sourceModel()->data(source_index, MessageModel::FlagsRole).toInt(); + flags &= ~Message::Highlight; + return (int)flags; +} diff --git a/src/qtui/awaylogfilter.h b/src/qtui/awaylogfilter.h index bb80011e..d188cab5 100644 --- a/src/qtui/awaylogfilter.h +++ b/src/qtui/awaylogfilter.h @@ -31,6 +31,7 @@ public: virtual bool filterAcceptsRow(int sourceRow, const QModelIndex &sourceParent) const; virtual QString idString() const { return "AwayLog"; } + virtual QVariant data(const QModelIndex &index, int role) const; }; #endif //AWAYLOGFILTER_H diff --git a/src/qtui/awaylogview.cpp b/src/qtui/awaylogview.cpp index cb26792a..ed87085c 100644 --- a/src/qtui/awaylogview.cpp +++ b/src/qtui/awaylogview.cpp @@ -30,6 +30,7 @@ AwayLogView::AwayLogView(AwayLogFilter *filter, QWidget *parent) : ChatMonitorView(filter, parent) { + setWindowTitle(tr("Away Log")); } void AwayLogView::addActionsToMenu(QMenu *menu, const QPointF &pos) { diff --git a/src/qtui/mainwin.cpp b/src/qtui/mainwin.cpp index 555ac5d4..b6a21ead 100644 --- a/src/qtui/mainwin.cpp +++ b/src/qtui/mainwin.cpp @@ -275,7 +275,11 @@ void MainWin::setupMenus() { _bufferViewsMenu->addAction(coll->action("ConfigureBufferViews")); _viewMenu->addSeparator(); _viewMenu->addAction(coll->action("ToggleSearchBar")); - _viewMenu->addAction(coll->action("ShowAwayLog")); + + coreAction = coll->action("ShowAwayLog"); + flagRemoteCoreOnly(coreAction); + _viewMenu->addAction(coreAction); + _viewMenu->addAction(coll->action("ToggleStatusBar")); _viewMenu->addSeparator(); _viewMenu->addAction(coll->action("LockDockPositions")); -- 2.20.1