/***************************************************************************
- * Copyright (C) 2005-08 by the Quassel IRC Team *
+ * Copyright (C) 2005-09 by the Quassel Project *
* devel@quassel-irc.org *
* *
* This program is free software; you can redistribute it and/or modify *
#include "network.h"
#include "bufferviewconfig.h"
#include "bufferviewfilter.h"
-#include "bufferviewmanager.h"
#include "buffermodel.h"
+#include "clientbufferviewmanager.h"
#include "networkmodel.h"
+#include "util.h"
BufferViewSettingsPage::BufferViewSettingsPage(QWidget *parent)
- : SettingsPage(tr("General"), tr("Buffer Views"), parent),
+ : SettingsPage(tr("Misc"), tr("Custom Chat Lists"), parent),
_ignoreWidgetChanges(false),
_useBufferViewHint(false),
_bufferViewHint(0)
}
_ignoreWidgetChanges = false;
-
+
if(!useBufferViewHint || !selectBufferViewById(bufferViewHint))
ui.bufferViewList->setCurrentRow(0);
}
_useBufferViewHint = true;
_bufferViewHint = currentConfig->bufferViewId();
}
-
+
QVariantList newConfigs;
QVariantList deleteConfigs;
QVariantList changedConfigs;
config->setInitialized();
QList<BufferId> bufferIds;
if(config->addNewBuffersAutomatically()) {
- if(config->sortAlphabetically())
+ if(config->sortAlphabetically()) {
bufferIds = Client::networkModel()->allBufferIdsSorted();
- else
+ } else {
bufferIds = Client::networkModel()->allBufferIds();
+ qSort(bufferIds);
+ config->setProperty("OriginalBufferList", toVariantList<BufferId>(bufferIds));
+ }
}
config->initSetBufferList(bufferIds);
QListWidgetItem *currentItem = ui.bufferViewList->item(ui.bufferViewList->currentRow());
QString viewName = currentItem->text();
int viewId = bufferView(ui.bufferViewList->currentRow())->bufferViewId();
- int ret = QMessageBox::question(this, tr("Delete Buffer View?"),
- tr("Do you really want to delete the buffer view \"%1\"?").arg(viewName),
+ int ret = QMessageBox::question(this, tr("Delete Chat List?"),
+ tr("Do you really want to delete the chat list \"%1\"?").arg(viewName),
QMessageBox::Yes|QMessageBox::No, QMessageBox::No);
if(ret == QMessageBox::Yes) {
QList<BufferViewConfig *>::iterator iter = _newBufferViews.begin();
while(iter != _newBufferViews.end()) {
if(*iter == config) {
- _newBufferViews.erase(iter);
+ iter = _newBufferViews.erase(iter);
break;
+ } else {
+ iter++;
}
- iter++;
}
delete config;
if(_deleteBufferViews.isEmpty() && _changedBufferViews.isEmpty() && _newBufferViews.isEmpty())
minimumActivity = 1 << (ui.minimumActivitySelector->currentIndex() - 1);
config->setMinimumActivity(minimumActivity);
- if(_newBufferViews.contains(config)) {
- QList<BufferId> bufferIds;
- if(config->addNewBuffersAutomatically()) {
- if(config->sortAlphabetically())
- bufferIds = Client::networkModel()->allBufferIdsSorted();
- else
- bufferIds = Client::networkModel()->allBufferIds();
- }
+ QList<BufferId> bufferIds = fromVariantList<BufferId>(config->property("OriginalBufferList").toList());
+ if(config->sortAlphabetically())
+ Client::networkModel()->sortBufferIds(bufferIds);
+
+ if(!_newBufferViews.contains(config) || config->addNewBuffersAutomatically())
config->initSetBufferList(bufferIds);
- }
}
void BufferViewSettingsPage::widgetHasChanged() {
while(iter != iterEnd) {
if(&(iter.key()) == &(iter.value())) {
iter.value()->deleteLater();
- _changedBufferViews.erase(iter);
+ iter = _changedBufferViews.erase(iter);
} else {
changed = true;
iter++;
connect(config, SIGNAL(bufferAdded(const BufferId &, int)), changedConfig, SLOT(addBuffer(const BufferId &, int)));
connect(config, SIGNAL(bufferMoved(const BufferId &, int)), changedConfig, SLOT(moveBuffer(const BufferId &, int)));
connect(config, SIGNAL(bufferRemoved(const BufferId &)), changedConfig, SLOT(removeBuffer(const BufferId &)));
- connect(config, SIGNAL(addBufferRequested(const BufferId &, int)), changedConfig, SLOT(addBuffer(const BufferId &, int)));
- connect(config, SIGNAL(moveBufferRequested(const BufferId &, int)), changedConfig, SLOT(moveBuffer(const BufferId &, int)));
- connect(config, SIGNAL(removeBufferRequested(const BufferId &)), changedConfig, SLOT(removeBuffer(const BufferId &)));
+// connect(config, SIGNAL(addBufferRequested(const BufferId &, int)), changedConfig, SLOT(addBuffer(const BufferId &, int)));
+// connect(config, SIGNAL(moveBufferRequested(const BufferId &, int)), changedConfig, SLOT(moveBuffer(const BufferId &, int)));
+// connect(config, SIGNAL(removeBufferRequested(const BufferId &)), changedConfig, SLOT(removeBuffer(const BufferId &)));
+ changedConfig->setProperty("OriginalBufferList", toVariantList<BufferId>(config->bufferList()));
// if this is the currently displayed view we have to change the config of the preview filter
BufferViewFilter *filter = qobject_cast<BufferViewFilter *>(ui.bufferViewPreview->model());
if(filter && filter->config() == config)
if(old.isEmpty()) {
// new buffer
- setWindowTitle(tr("Add Buffer View"));
+ setWindowTitle(tr("Add Chat List"));
on_bufferViewEdit_textChanged(""); // disable ok button
} else {
ui.bufferViewEdit->setText(old);