From: Marcus Eggenberger Date: Mon, 5 Jan 2009 01:29:01 +0000 (+0100) Subject: All Buffers is dead! Long live All buffers! X-Git-Tag: 0.4.0~267 X-Git-Url: https://git.quassel-irc.org/?p=quassel.git;a=commitdiff_plain;h=75d7f7d582826603236394a37f43feb4cd725bb0 All Buffers is dead! Long live All buffers! --- diff --git a/src/client/client.cpp b/src/client/client.cpp index ffecf7fa..b89b83b1 100644 --- a/src/client/client.cpp +++ b/src/client/client.cpp @@ -25,6 +25,7 @@ #include "buffermodel.h" #include "buffersettings.h" #include "buffersyncer.h" +#include "bufferviewconfig.h" #include "bufferviewmanager.h" #include "clientbacklogmanager.h" #include "clientirclisthelper.h" @@ -298,7 +299,7 @@ void Client::setSyncedToCore() { Q_ASSERT(!_bufferViewManager); _bufferViewManager = new BufferViewManager(signalProxy(), this); connect(bufferViewManager(), SIGNAL(initDone()), this, SLOT(requestInitialBacklog())); - + connect(bufferViewManager(), SIGNAL(initDone()), this, SLOT(createDefautBufferView())); _syncedToCore = true; emit connected(); emit coreConnectionStateChanged(true); @@ -309,6 +310,14 @@ void Client::requestInitialBacklog() { Client::backlogManager()->requestInitialBacklog(); } +void Client::createDefautBufferView() { + if(bufferViewManager()->bufferViewConfigs().isEmpty()) { + BufferViewConfig config(-1); + config.setBufferViewName(tr("All Buffers")); + bufferViewManager()->requestCreateBufferView(config.toVariantMap()); + } +} + void Client::setSecuredConnection() { emit securedConnection(); } diff --git a/src/client/client.h b/src/client/client.h index 050f3e9a..2c65e1ee 100644 --- a/src/client/client.h +++ b/src/client/client.h @@ -185,6 +185,7 @@ private slots: void setConnectedToCore(AccountId id, QIODevice *socket = 0); void setSyncedToCore(); void requestInitialBacklog(); + void createDefautBufferView(); void setSecuredConnection(); diff --git a/src/qtui/mainwin.cpp b/src/qtui/mainwin.cpp index 4957c90c..01fb3b75 100644 --- a/src/qtui/mainwin.cpp +++ b/src/qtui/mainwin.cpp @@ -158,7 +158,6 @@ void MainWin::init() { setupActions(); setupBufferWidget(); setupMenus(); - setupViews(); setupTopicWidget(); setupChatMonitor(); setupNickWidget(); @@ -303,20 +302,15 @@ void MainWin::setupBufferWidget() { setCentralWidget(_bufferWidget); } -void MainWin::setupViews() { - addBufferView(); -} - void MainWin::addBufferView(int bufferViewConfigId) { addBufferView(Client::bufferViewManager()->bufferViewConfig(bufferViewConfigId)); } void MainWin::addBufferView(BufferViewConfig *config) { - BufferViewDock *dock; - if(config) - dock = new BufferViewDock(config, this); - else - dock = new BufferViewDock(this); + if(!config) + return; + + BufferViewDock *dock = new BufferViewDock(config, this); //create the view and initialize it's filter BufferView *view = new BufferView(dock); diff --git a/src/qtui/mainwin.h b/src/qtui/mainwin.h index bfac91de..0d29393a 100644 --- a/src/qtui/mainwin.h +++ b/src/qtui/mainwin.h @@ -62,7 +62,7 @@ class MainWin void init(); - void addBufferView(BufferViewConfig *config = 0); + void addBufferView(BufferViewConfig *config); BufferView *allBuffersView() const; inline QSystemTrayIcon *systemTrayIcon() const; @@ -140,7 +140,6 @@ class MainWin void setupActions(); void setupBufferWidget(); void setupMenus(); - void setupViews(); void setupNickWidget(); void setupChatMonitor(); void setupInputWidget(); diff --git a/src/qtui/settingspages/bufferviewsettingspage.cpp b/src/qtui/settingspages/bufferviewsettingspage.cpp index 65d32291..f8133de7 100644 --- a/src/qtui/settingspages/bufferviewsettingspage.cpp +++ b/src/qtui/settingspages/bufferviewsettingspage.cpp @@ -69,6 +69,7 @@ BufferViewSettingsPage::~BufferViewSettingsPage() { void BufferViewSettingsPage::reset() { ui.bufferViewList->clear(); + ui.deleteBufferView->setEnabled(false); QHash::iterator changedConfigIter = _changedBufferViews.begin(); QHash::iterator changedConfigIterEnd = _changedBufferViews.end(); @@ -188,6 +189,7 @@ void BufferViewSettingsPage::addBufferView(BufferViewConfig *config) { item->setData(Qt::UserRole, qVariantFromValue(qobject_cast(config))); connect(config, SIGNAL(updatedRemotely()), this, SLOT(updateBufferView())); connect(config, SIGNAL(destroyed()), this, SLOT(bufferViewDeleted())); + ui.deleteBufferView->setEnabled(ui.bufferViewList->count() > 1); } void BufferViewSettingsPage::addBufferView(int bufferViewId) { @@ -205,9 +207,10 @@ void BufferViewSettingsPage::bufferViewDeleted() { if(config == static_cast(obj)) { QListWidgetItem *item = ui.bufferViewList->takeItem(i); delete item; - return; + break; } } + ui.deleteBufferView->setEnabled(ui.bufferViewList->count() > 1); } void BufferViewSettingsPage::newBufferView(const QString &bufferViewName) { @@ -329,10 +332,24 @@ void BufferViewSettingsPage::on_deleteBufferView_clicked() { if(ret == QMessageBox::Yes) { ui.bufferViewList->removeItemWidget(currentItem); + BufferViewConfig *config = qobject_cast(currentItem->data(Qt::UserRole).value()); delete currentItem; - if(viewId >= 0) + if(viewId >= 0) { _deleteBufferViews << viewId; - changed(); + changed(); + } else if(config) { + QList::iterator iter = _newBufferViews.begin(); + while(iter != _newBufferViews.end()) { + if(*iter == config) { + _newBufferViews.erase(iter); + break; + } + iter++; + } + delete config; + if(_deleteBufferViews.isEmpty() && _changedBufferViews.isEmpty() && _newBufferViews.isEmpty()) + setChangedState(false); + } } } diff --git a/src/uisupport/bufferview.cpp b/src/uisupport/bufferview.cpp index dcd1c503..a1435a6d 100644 --- a/src/uisupport/bufferview.cpp +++ b/src/uisupport/bufferview.cpp @@ -499,14 +499,6 @@ BufferViewDock::BufferViewDock(BufferViewConfig *config, QWidget *parent) connect(config, SIGNAL(bufferViewNameSet(const QString &)), this, SLOT(bufferViewRenamed(const QString &))); } -BufferViewDock::BufferViewDock(QWidget *parent) - : QDockWidget(tr("All Buffers"), parent) -{ - setObjectName("BufferViewDock--1"); - toggleViewAction()->setData((int)-1); - setAllowedAreas(Qt::RightDockWidgetArea|Qt::LeftDockWidgetArea); -} - void BufferViewDock::bufferViewRenamed(const QString &newName) { setWindowTitle(newName); toggleViewAction()->setText(newName); diff --git a/src/uisupport/bufferview.h b/src/uisupport/bufferview.h index 6bbca4ef..4e83369e 100644 --- a/src/uisupport/bufferview.h +++ b/src/uisupport/bufferview.h @@ -109,7 +109,6 @@ class BufferViewDock : public QDockWidget { public: BufferViewDock(BufferViewConfig *config, QWidget *parent); - BufferViewDock(QWidget *parent); inline BufferView *bufferView() const { return qobject_cast(widget()); }