#include "buffermodel.h"
#include "buffersettings.h"
#include "buffersyncer.h"
+#include "bufferviewconfig.h"
#include "bufferviewmanager.h"
#include "clientbacklogmanager.h"
#include "clientirclisthelper.h"
Q_ASSERT(!_bufferViewManager);
_bufferViewManager = new BufferViewManager(signalProxy(), this);
connect(bufferViewManager(), SIGNAL(initDone()), this, SLOT(requestInitialBacklog()));
-
+ connect(bufferViewManager(), SIGNAL(initDone()), this, SLOT(createDefautBufferView()));
_syncedToCore = true;
emit connected();
emit coreConnectionStateChanged(true);
Client::backlogManager()->requestInitialBacklog();
}
+void Client::createDefautBufferView() {
+ if(bufferViewManager()->bufferViewConfigs().isEmpty()) {
+ BufferViewConfig config(-1);
+ config.setBufferViewName(tr("All Buffers"));
+ bufferViewManager()->requestCreateBufferView(config.toVariantMap());
+ }
+}
+
void Client::setSecuredConnection() {
emit securedConnection();
}
void setConnectedToCore(AccountId id, QIODevice *socket = 0);
void setSyncedToCore();
void requestInitialBacklog();
+ void createDefautBufferView();
void setSecuredConnection();
setupActions();
setupBufferWidget();
setupMenus();
- setupViews();
setupTopicWidget();
setupChatMonitor();
setupNickWidget();
setCentralWidget(_bufferWidget);
}
-void MainWin::setupViews() {
- addBufferView();
-}
-
void MainWin::addBufferView(int bufferViewConfigId) {
addBufferView(Client::bufferViewManager()->bufferViewConfig(bufferViewConfigId));
}
void MainWin::addBufferView(BufferViewConfig *config) {
- BufferViewDock *dock;
- if(config)
- dock = new BufferViewDock(config, this);
- else
- dock = new BufferViewDock(this);
+ if(!config)
+ return;
+
+ BufferViewDock *dock = new BufferViewDock(config, this);
//create the view and initialize it's filter
BufferView *view = new BufferView(dock);
void init();
- void addBufferView(BufferViewConfig *config = 0);
+ void addBufferView(BufferViewConfig *config);
BufferView *allBuffersView() const;
inline QSystemTrayIcon *systemTrayIcon() const;
void setupActions();
void setupBufferWidget();
void setupMenus();
- void setupViews();
void setupNickWidget();
void setupChatMonitor();
void setupInputWidget();
void BufferViewSettingsPage::reset() {
ui.bufferViewList->clear();
+ ui.deleteBufferView->setEnabled(false);
QHash<BufferViewConfig *, BufferViewConfig *>::iterator changedConfigIter = _changedBufferViews.begin();
QHash<BufferViewConfig *, BufferViewConfig *>::iterator changedConfigIterEnd = _changedBufferViews.end();
item->setData(Qt::UserRole, qVariantFromValue<QObject *>(qobject_cast<QObject *>(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) {
if(config == static_cast<BufferViewConfig *>(obj)) {
QListWidgetItem *item = ui.bufferViewList->takeItem(i);
delete item;
- return;
+ break;
}
}
+ ui.deleteBufferView->setEnabled(ui.bufferViewList->count() > 1);
}
void BufferViewSettingsPage::newBufferView(const QString &bufferViewName) {
if(ret == QMessageBox::Yes) {
ui.bufferViewList->removeItemWidget(currentItem);
+ BufferViewConfig *config = qobject_cast<BufferViewConfig *>(currentItem->data(Qt::UserRole).value<QObject *>());
delete currentItem;
- if(viewId >= 0)
+ if(viewId >= 0) {
_deleteBufferViews << viewId;
- changed();
+ changed();
+ } else if(config) {
+ QList<BufferViewConfig *>::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);
+ }
}
}
connect(config, SIGNAL(bufferViewNameSet(const QString &)), this, SLOT(bufferViewRenamed(const QString &)));
}
-BufferViewDock::BufferViewDock(QWidget *parent)
- : QDockWidget(tr("All Buffers"), parent)
-{
- setObjectName("BufferViewDock--1");
- toggleViewAction()->setData((int)-1);
- setAllowedAreas(Qt::RightDockWidgetArea|Qt::LeftDockWidgetArea);
-}
-
void BufferViewDock::bufferViewRenamed(const QString &newName) {
setWindowTitle(newName);
toggleViewAction()->setText(newName);
public:
BufferViewDock(BufferViewConfig *config, QWidget *parent);
- BufferViewDock(QWidget *parent);
inline BufferView *bufferView() const { return qobject_cast<BufferView *>(widget()); }