+ if(dlg.exec() == QDialog::Accepted) {
+ BufferViewConfig *changedConfig = cloneConfig(config);
+ changedConfig->setBufferViewName(dlg.bufferViewName());
+ ui.bufferViewList->item(listPos(config))->setText(dlg.bufferViewName());
+ changed();
+ }
+}
+
+void BufferViewSettingsPage::on_deleteBufferView_clicked() {
+ if(ui.bufferViewList->selectedItems().isEmpty())
+ return;
+
+ 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 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) {
+ ui.bufferViewList->removeItemWidget(currentItem);
+ BufferViewConfig *config = qobject_cast<BufferViewConfig *>(currentItem->data(Qt::UserRole).value<QObject *>());
+ delete currentItem;
+ if(viewId >= 0) {
+ _deleteBufferViews << viewId;
+ changed();
+ } else if(config) {
+ QList<BufferViewConfig *>::iterator iter = _newBufferViews.begin();
+ while(iter != _newBufferViews.end()) {
+ if(*iter == config) {
+ iter = _newBufferViews.erase(iter);
+ break;
+ } else {
+ iter++;
+ }
+ }
+ delete config;
+ if(_deleteBufferViews.isEmpty() && _changedBufferViews.isEmpty() && _newBufferViews.isEmpty())
+ setChangedState(false);
+ }
+ }
+}
+
+void BufferViewSettingsPage::bufferViewSelectionChanged(const QItemSelection ¤t, const QItemSelection &previous) {
+ Q_UNUSED(previous)
+
+ if(!current.isEmpty()) {
+ ui.settingsGroupBox->setEnabled(true);
+ ui.bufferViewPreview->setEnabled(true);
+
+ loadConfig(configForDisplay(bufferView(ui.bufferViewList->currentRow())));
+ } else {
+ ui.settingsGroupBox->setEnabled(false);
+ ui.bufferViewPreview->setEnabled(false);
+ }
+}
+
+void BufferViewSettingsPage::loadConfig(BufferViewConfig *config) {
+ if(!config)
+ return;
+
+ _ignoreWidgetChanges = true;
+ ui.onlyStatusBuffers->setChecked(BufferInfo::StatusBuffer & config->allowedBufferTypes());
+ ui.onlyChannelBuffers->setChecked(BufferInfo::ChannelBuffer & config->allowedBufferTypes());
+ ui.onlyQueryBuffers->setChecked(BufferInfo::QueryBuffer & config->allowedBufferTypes());
+ ui.addNewBuffersAutomatically->setChecked(config->addNewBuffersAutomatically());
+ ui.sortAlphabetically->setChecked(config->sortAlphabetically());
+ ui.hideInactiveBuffers->setChecked(config->hideInactiveBuffers());
+
+ int networkIndex = 0;
+ for(int i = 0; i < ui.networkSelector->count(); i++) {
+ if(ui.networkSelector->itemData(i).value<NetworkId>() == config->networkId()) {
+ networkIndex = i;
+ break;
+ }
+ }
+ ui.networkSelector->setCurrentIndex(networkIndex);
+
+ int activityIndex = 0;
+ int minimumActivity = config->minimumActivity();
+ while(minimumActivity) {
+ activityIndex++;
+ minimumActivity = minimumActivity >> 1;
+ }
+ ui.minimumActivitySelector->setCurrentIndex(activityIndex);
+
+ ui.bufferViewPreview->setFilteredModel(Client::bufferModel(), config);
+
+ _ignoreWidgetChanges = false;
+}
+
+void BufferViewSettingsPage::saveConfig(BufferViewConfig *config) {
+ if(!config)