}
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);
}
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;
}
SessionThread::~SessionThread() {
- if(_session) {
- _session->setParent(0);
- _session->moveToThread(thread());
- _session->deleteLater();
- _session = 0;
- }
+ // shut down thread gracefully
+ quit();
+ wait();
}
CoreSession *SessionThread::session() {
emit initialized();
exec();
delete _session;
- _session = 0;
}
-void SessionThread::stopSession() {
- if(_session) {
- connect(_session, SIGNAL(destroyed()), this, SLOT(quit()));
- _session->deleteLater();
- _session = 0;
- }
-}
public slots:
void addClient(QObject *peer);
- void stopSession();
private slots:
void setSessionInitialized();
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;
+}
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
AwayLogView::AwayLogView(AwayLogFilter *filter, QWidget *parent)
: ChatMonitorView(filter, parent)
{
+ setWindowTitle(tr("Away Log"));
}
void AwayLogView::addActionsToMenu(QMenu *menu, const QPointF &pos) {
_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"));