don't draw using the higlight colors in the away log
authorMarcus Eggenberger <egs@quassel-irc.org>
Thu, 5 Feb 2009 14:56:22 +0000 (15:56 +0100)
committerMarcus Eggenberger <egs@quassel-irc.org>
Thu, 5 Feb 2009 14:56:22 +0000 (15:56 +0100)
src/core/core.cpp
src/core/corenetwork.cpp
src/core/sessionthread.cpp
src/core/sessionthread.h
src/qtui/awaylogfilter.cpp
src/qtui/awaylogfilter.h
src/qtui/awaylogview.cpp
src/qtui/mainwin.cpp

index 4e7632f..aa1b7d4 100644 (file)
@@ -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);
 }
 
index f056183..a40b546 100644 (file)
@@ -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;
index c29d1ff..35caf13 100644 (file)
@@ -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;
-  }
-}
index f9280f0..810e858 100644 (file)
@@ -44,7 +44,6 @@ public:
 
 public slots:
   void addClient(QObject *peer);
-  void stopSession();
 
 private slots:
   void setSessionInitialized();
index 09964a4..8e5366b 100644 (file)
@@ -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 bufferId = sourceModel()->data(source_index, MessageModel::BufferIdRole).value<BufferId>();
   if(!bufferId.isValid()) {
     return false;
   }
 
-  if(Client::networkModel()->lastSeenMsgId(bufferId) >= source_index.data(MessageModel::MsgIdRole).value<MsgId>())
+  if(Client::networkModel()->lastSeenMsgId(bufferId) >= sourceModel()->data(source_index, MessageModel::MsgIdRole).value<MsgId>())
     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;
+}
index bb80011..d188cab 100644 (file)
@@ -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
index cb26792..ed87085 100644 (file)
@@ -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) {
index 555ac5d..b6a21ea 100644 (file)
@@ -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"));