Yearly copyright bump :)
[quassel.git] / src / qtui / settingspages / bufferviewsettingspage.cpp
index f8133de..5447735 100644 (file)
@@ -1,5 +1,5 @@
 /***************************************************************************
- *   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  *
@@ -61,6 +61,8 @@ BufferViewSettingsPage::BufferViewSettingsPage(QWidget *parent)
   connect(ui.hideInactiveBuffers, SIGNAL(clicked(bool)), this, SLOT(widgetHasChanged()));
   connect(ui.networkSelector, SIGNAL(currentIndexChanged(int)), this, SLOT(widgetHasChanged()));
   connect(ui.minimumActivitySelector, SIGNAL(currentIndexChanged(int)), this, SLOT(widgetHasChanged()));
+
+  connect(ui.networkSelector, SIGNAL(currentIndexChanged(int)), this, SLOT(enableStatusBuffers(int)));
 }
 
 BufferViewSettingsPage::~BufferViewSettingsPage() {
@@ -221,9 +223,10 @@ void BufferViewSettingsPage::newBufferView(const QString &bufferViewName) {
   config->setInitialized();
   QList<BufferId> bufferIds;
   if(config->addNewBuffersAutomatically()) {
-    bufferIds = Client::networkModel()->allBufferIds();
     if(config->sortAlphabetically())
-      qSort(bufferIds.begin(), bufferIds.end(), bufferIdLessThan);
+      bufferIds = Client::networkModel()->allBufferIdsSorted();
+    else
+      bufferIds = Client::networkModel()->allBufferIds();
   }
   config->initSetBufferList(bufferIds);
 
@@ -278,6 +281,12 @@ void BufferViewSettingsPage::updateBufferView() {
     loadConfig(config);
 }
 
+void BufferViewSettingsPage::enableStatusBuffers(int networkIdx) {
+  // we don't show a status buffer if we show multiple networks as selecting
+  // the network is the same as selecting the status buffer.
+  ui.onlyStatusBuffers->setEnabled(networkIdx != 0);
+}
+
 void BufferViewSettingsPage::on_addBufferView_clicked() {
   if(!Client::bufferViewManager())
     return;
@@ -341,10 +350,11 @@ void BufferViewSettingsPage::on_deleteBufferView_clicked() {
       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())
@@ -427,9 +437,10 @@ void BufferViewSettingsPage::saveConfig(BufferViewConfig *config) {
   if(_newBufferViews.contains(config)) {
     QList<BufferId> bufferIds;
     if(config->addNewBuffersAutomatically()) {
-      bufferIds = Client::networkModel()->allBufferIds();
       if(config->sortAlphabetically())
-       qSort(bufferIds.begin(), bufferIds.end(), bufferIdLessThan);
+       bufferIds = Client::networkModel()->allBufferIdsSorted();
+      else
+       bufferIds = Client::networkModel()->allBufferIds();
     }
     config->initSetBufferList(bufferIds);
   }
@@ -453,7 +464,7 @@ bool BufferViewSettingsPage::testHasChanged() {
   while(iter != iterEnd) {
     if(&(iter.key()) == &(iter.value())) {
       iter.value()->deleteLater();
-      _changedBufferViews.erase(iter);
+      iter = _changedBufferViews.erase(iter);
     } else {
       changed = true;
       iter++;