/***************************************************************************
- * Copyright (C) 2005-07 by The Quassel Team *
+ * Copyright (C) 2005-07 by the Quassel IRC Team *
* devel@quassel-irc.org *
* *
* This program is free software; you can redistribute it and/or modify *
* it under the terms of the GNU General Public License as published by *
* the Free Software Foundation; either version 2 of the License, or *
- * (at your option) any later version. *
+ * (at your option) version 3. *
* *
* This program is distributed in the hope that it will be useful, *
* but WITHOUT ANY WARRANTY; without even the implied warranty of *
#include "mainwin.h"
#include "bufferview.h"
-#include "chatline.h"
+#include "chatline-old.h"
#include "client.h"
#include "coreconnectdlg.h"
+#include "nicklistwidget.h"
#include "serverlist.h"
#include "settingsdlg.h"
//#include "settingspage.h"
#include "topicwidget.h"
+#include "selectionmodelsynchronizer.h"
+#include "mappedselectionmodel.h"
+
MainWin::MainWin(QtUi *_gui, QWidget *parent) : QMainWindow(parent), gui(_gui) {
ui.setupUi(this);
setWindowTitle("Quassel IRC");
statusBar()->showMessage(tr("Waiting for core..."));
serverListDlg = new ServerListDlg(this);
settingsDlg = new SettingsDlg(this);
+
}
void MainWin::init() {
setupMenus();
setupViews();
+ // create nick dock
+ nickDock = new QDockWidget("Nicks", this);
+ nickDock->setObjectName("NickDock");
+ nickDock->setAllowedAreas(Qt::LeftDockWidgetArea | Qt::RightDockWidgetArea);
+
+ nickListWidget = new NickListWidget(nickDock);
+ nickDock->setWidget(nickListWidget);
+
+ addDockWidget(Qt::RightDockWidgetArea, nickDock);
+ ui.menuViews->addAction(nickDock->toggleViewAction());
+
+ // restore mainwin state
QSettings s;
s.beginGroup("Geometry");
//resize(s.value("MainWinSize", QSize(500, 400)).toSize());
if(serverListDlg->showOnStartup()) {
showServerList();
}
-
+
+ setDockNestingEnabled(true);
+
+
// TESTING
-// setCorner(Qt::TopLeftCorner, Qt::LeftDockWidgetArea);
-// setCorner(Qt::BottomLeftCorner, Qt::LeftDockWidgetArea);
+ setCorner(Qt::TopLeftCorner, Qt::LeftDockWidgetArea);
+ setCorner(Qt::BottomLeftCorner, Qt::LeftDockWidgetArea);
-// setCorner(Qt::TopRightCorner, Qt::RightDockWidgetArea);
-// setCorner(Qt::BottomRightCorner, Qt::RightDockWidgetArea);
-
-// QDockWidget *dock = new QDockWidget("Topic Dock", this);
-// dock->setAllowedAreas(Qt::TopDockWidgetArea | Qt::BottomDockWidgetArea);
+ setCorner(Qt::TopRightCorner, Qt::RightDockWidgetArea);
+ setCorner(Qt::BottomRightCorner, Qt::RightDockWidgetArea);
-// TopicWidget *topicwidget = new TopicWidget(dock);
-// dock->setWidget(topicwidget);
-
-// addDockWidget(Qt::TopDockWidgetArea, dock);
-// ui.menuViews->addAction(dock->toggleViewAction());
+ QDockWidget *dock = new QDockWidget("Topic Dock", this);
+ dock->setObjectName("TopicDock");
+ dock->setAllowedAreas(Qt::TopDockWidgetArea | Qt::BottomDockWidgetArea);
+
+ TopicWidget *topicwidget = new TopicWidget(dock);
+ dock->setWidget(topicwidget);
+
+ Client::bufferModel()->mapProperty(0, Qt::DisplayRole, topicwidget, "topic");
+
+ addDockWidget(Qt::TopDockWidgetArea, dock);
+
+ ui.menuViews->addAction(dock->toggleViewAction());
}
connect(ui.actionSettingsDlg, SIGNAL(triggered()), this, SLOT(showSettingsDlg()));
ui.actionSettingsDlg->setEnabled(false);
connect(ui.actionAboutQt, SIGNAL(triggered()), QApplication::instance(), SLOT(aboutQt()));
- // for debugging
- connect(ui.actionImportBacklog, SIGNAL(triggered()), this, SLOT(importBacklog()));
- Client::signalProxy()->attachSignal(this, SIGNAL(importOldBacklog()));
}
void MainWin::setupViews() {
BufferTreeModel *model = Client::bufferModel();
connect(model, SIGNAL(bufferSelected(Buffer *)), this, SLOT(showBuffer(Buffer *)));
- addBufferView(tr("All Buffers"), model, BufferViewFilter::AllNets, QStringList());
- addBufferView(tr("All Channels"), model, BufferViewFilter::AllNets|BufferViewFilter::NoQueries|BufferViewFilter::NoServers, QStringList());
- addBufferView(tr("All Queries"), model, BufferViewFilter::AllNets|BufferViewFilter::NoChannels|BufferViewFilter::NoServers, QStringList());
- addBufferView(tr("All Networks"), model, BufferViewFilter::AllNets|BufferViewFilter::NoChannels|BufferViewFilter::NoQueries, QStringList());
- addBufferView(tr("Full Custom"), model, BufferViewFilter::FullCustom, QStringList());
+ addBufferView(tr("All Buffers"), model, BufferViewFilter::AllNets, QList<uint>());
+ addBufferView(tr("All Channels"), model, BufferViewFilter::AllNets|BufferViewFilter::NoQueries|BufferViewFilter::NoServers, QList<uint>());
+ addBufferView(tr("All Queries"), model, BufferViewFilter::AllNets|BufferViewFilter::NoChannels|BufferViewFilter::NoServers, QList<uint>());
+ addBufferView(tr("All Networks"), model, BufferViewFilter::AllNets|BufferViewFilter::NoChannels|BufferViewFilter::NoQueries, QList<uint>());
+ addBufferView(tr("Full Custom"), model, BufferViewFilter::FullCustom, QList<uint>());
ui.menuViews->addSeparator();
}
-void MainWin::addBufferView(const QString &viewname, QAbstractItemModel *model, const BufferViewFilter::Modes &mode, const QStringList &nets) {
+void MainWin::addBufferView(const QString &viewname, QAbstractItemModel *model, const BufferViewFilter::Modes &mode, const QList<uint> &nets) {
QDockWidget *dock = new QDockWidget(viewname, this);
dock->setObjectName(QString("ViewDock-" + viewname)); // should be unique for mainwindow state!
dock->setAllowedAreas(Qt::RightDockWidgetArea|Qt::LeftDockWidgetArea);
//create the view and initialize it's filter
BufferView *view = new BufferView(dock);
view->setFilteredModel(model, mode, nets);
+ Client::bufferModel()->synchronizeView(view);
dock->setWidget(view);
addDockWidget(Qt::LeftDockWidgetArea, dock);
ui.actionDisconnectCore->setEnabled(true);
ui.actionNetworkList->setEnabled(true);
ui.bufferWidget->show();
+ statusBar()->showMessage(tr("Connected to core."));
}
void MainWin::disconnectedFromCore() {
ui.actionNetworkList->setEnabled(false);
ui.bufferWidget->hide();
ui.actionConnectCore->setEnabled(true);
- //qDebug() << "mainwin disconnected";
+ nickListWidget->reset();
+ statusBar()->showMessage(tr("Not connected to core."));
}
AbstractUiMsg *MainWin::layoutMsg(const Message &msg) {
currentBuffer = b->bufferInfo().groupId();
//emit bufferSelected(b);
//qApp->processEvents();
-
ui.bufferWidget->setBuffer(b);
+ nickListWidget->setBuffer(b);
+ //if(b->bufferType() == Buffer::ChannelType) nickDock->show();
+ //else nickDock->hide();
//emit bufferSelected(b);
}
-
-void MainWin::importBacklog() {
- if(QMessageBox::warning(this, "Import old backlog?", "Do you want to import your old file-based backlog into new the backlog database?<br>"
- "<b>This will permanently delete the contents of your database!</b>",
- QMessageBox::Yes|QMessageBox::No) == QMessageBox::Yes) {
- emit importOldBacklog();
- }
-}