removing debug output
[quassel.git] / src / qtui / settingspages / bufferviewsettingspage.cpp
index 6c05924..0f45b2c 100644 (file)
@@ -33,7 +33,9 @@
 
 BufferViewSettingsPage::BufferViewSettingsPage(QWidget *parent)
   : SettingsPage(tr("General"), tr("Buffer Views"), parent),
-    _ignoreWidgetChanges(false)
+    _ignoreWidgetChanges(false),
+    _useBufferViewHint(false),
+    _bufferViewHint(0)
 {
   ui.setupUi(this);
   ui.renameBufferView->setIcon(SmallIcon("edit-rename"));
@@ -87,10 +89,15 @@ void BufferViewSettingsPage::reset() {
 
   _deleteBufferViews.clear();
 
+  bool _useBufferViewHint;
+  int _bufferViewHint;
+
   setChangedState(false);
 }
 
 void BufferViewSettingsPage::load() {
+  bool useBufferViewHint = _useBufferViewHint;
+  int bufferViewHint = _bufferViewHint;
   reset();
 
   if(!Client::bufferViewManager())
@@ -114,11 +121,20 @@ void BufferViewSettingsPage::load() {
   }
   _ignoreWidgetChanges = false;
 
-  ui.bufferViewList->setCurrentRow(0);
+  
+  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;
@@ -176,8 +192,10 @@ void BufferViewSettingsPage::addBufferView(BufferViewConfig *config) {
 }
 
 void BufferViewSettingsPage::addBufferView(int bufferViewId) {
+  // we are informed about a new bufferview from Client::bufferViewManager()
   Q_ASSERT(Client::bufferViewManager());
   addBufferView(Client::bufferViewManager()->bufferViewConfig(bufferViewId));
+  selectBufferViewById(bufferViewId);
 }
 
 void BufferViewSettingsPage::bufferViewDeleted() {
@@ -198,7 +216,7 @@ void BufferViewSettingsPage::newBufferView(const QString &bufferViewName) {
   int fakeId = -1 * (_newBufferViews.count() + 1);
   BufferViewConfig *config = new BufferViewConfig(fakeId);
   config->setBufferViewName(bufferViewName);
-
+  config->setInitialized();
   QList<BufferId> bufferIds;
   if(config->addNewBuffersAutomatically()) {
     bufferIds = Client::networkModel()->allBufferIds();
@@ -231,6 +249,18 @@ BufferViewConfig *BufferViewSettingsPage::bufferView(int listPos) {
   }
 }
 
+bool BufferViewSettingsPage::selectBufferViewById(int bufferViewId) {
+  BufferViewConfig *config;
+  for(int i = 0; i < ui.bufferViewList->count(); i++) {
+    config = qobject_cast<BufferViewConfig *>(ui.bufferViewList->item(i)->data(Qt::UserRole).value<QObject *>());
+    if(config && config->bufferViewId() == bufferViewId) {
+      ui.bufferViewList->setCurrentRow(i);
+      return true;
+    }
+  }
+  return false;
+}
+
 void BufferViewSettingsPage::updateBufferView() {
   BufferViewConfig *config = qobject_cast<BufferViewConfig *>(sender());
   if(!config)