X-Git-Url: https://git.quassel-irc.org/?p=quassel.git;a=blobdiff_plain;f=src%2Fqtui%2Fsettingspages%2Fbufferviewsettingspage.cpp;h=f8133de77851bd9667513ff98675a45717251842;hp=65d32291937014ff4b5b66a348d9f594e90ec6b2;hb=75d7f7d582826603236394a37f43feb4cd725bb0;hpb=ae6ccecd44b12527894574b878ed32600bedd156 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); + } } }