+ if (!Client::bufferViewManager())
+ return;
+
+ const QList<BufferViewConfig*> bufferViewConfigs = Client::bufferViewManager()->bufferViewConfigs();
+ foreach (BufferViewConfig* bufferViewConfig, bufferViewConfigs) {
+ addBufferView(bufferViewConfig);
+ }
+
+ _ignoreWidgetChanges = true;
+ // load network selector
+ ui.networkSelector->clear();
+ ui.networkSelector->addItem(tr("All"));
+ ui.networkSelector->setItemData(0, qVariantFromValue<NetworkId>(NetworkId()));
+ const Network* net;
+ foreach (NetworkId netId, Client::networkIds()) {
+ net = Client::network(netId);
+ ui.networkSelector->addItem(net->networkName());
+ ui.networkSelector->setItemData(ui.networkSelector->count() - 1, qVariantFromValue<NetworkId>(net->networkId()));
+ }
+ _ignoreWidgetChanges = false;
+
+ if (!useBufferViewHint || !selectBufferViewById(bufferViewHint))
+ ui.bufferViewList->setCurrentRow(0);
+}
+
+void BufferViewSettingsPage::save()
+{
+ setEnabled(false);
+
+ BufferViewConfig* currentConfig = bufferView(ui.bufferViewList->currentRow());
+ if (currentConfig) {
+ _useBufferViewHint = true;
+ _bufferViewHint = currentConfig->bufferViewId();
+ }
+
+ QVariantList newConfigs;
+ QVariantList deleteConfigs;
+ QVariantList changedConfigs;
+
+ foreach (int bufferId, _deleteBufferViews) {
+ deleteConfigs << bufferId;
+ }
+ _deleteBufferViews.clear();
+ if (Client::bufferViewManager()) {
+ Client::bufferViewManager()->requestDeleteBufferViews(deleteConfigs);
+ }
+
+ QHash<BufferViewConfig*, BufferViewConfig*>::iterator changedConfigIter = _changedBufferViews.begin();
+ QHash<BufferViewConfig*, BufferViewConfig*>::iterator changedConfigIterEnd = _changedBufferViews.end();
+ BufferViewConfig *config, *changedConfig;
+ while (changedConfigIter != changedConfigIterEnd) {
+ config = changedConfigIter.key();
+ changedConfig = changedConfigIter.value();
+ changedConfigIter = _changedBufferViews.erase(changedConfigIter);
+ config->requestUpdate(changedConfig->toVariantMap());
+ changedConfig->deleteLater();
+ }
+
+ QList<BufferViewConfig*>::iterator newConfigIter = _newBufferViews.begin();
+ QList<BufferViewConfig*>::iterator newConfigIterEnd = _newBufferViews.end();
+ while (newConfigIter != newConfigIterEnd) {
+ config = *newConfigIter;
+ newConfigIter = _newBufferViews.erase(newConfigIter);
+ newConfigs << config->toVariantMap();
+ config->deleteLater();
+ }
+ if (Client::bufferViewManager()) {
+ Client::bufferViewManager()->requestCreateBufferViews(newConfigs);
+ }