From c230f7bd892b78b09710cf5746c2bf12a73d6b9b Mon Sep 17 00:00:00 2001 From: Marcus Eggenberger Date: Sun, 12 Apr 2009 21:53:20 +0200 Subject: [PATCH] improved debugging facilities for the bufferview overlay --- src/client/clientbacklogmanager.cpp | 2 +- src/qtui/CMakeLists.txt | 3 + src/qtui/debugbufferviewoverlay.cpp | 109 ++++++++++++++++++++++++++ src/qtui/debugbufferviewoverlay.h | 54 +++++++++++++ src/qtui/mainwin.cpp | 15 +--- src/qtui/ui/debugbufferviewoverlay.ui | 48 ++++++++++++ 6 files changed, 219 insertions(+), 12 deletions(-) create mode 100644 src/qtui/debugbufferviewoverlay.cpp create mode 100644 src/qtui/debugbufferviewoverlay.h create mode 100644 src/qtui/ui/debugbufferviewoverlay.ui diff --git a/src/client/clientbacklogmanager.cpp b/src/client/clientbacklogmanager.cpp index 00d49d20..476fa103 100644 --- a/src/client/clientbacklogmanager.cpp +++ b/src/client/clientbacklogmanager.cpp @@ -77,7 +77,7 @@ void ClientBacklogManager::receiveBacklogAll(MsgId first, MsgId last, int limit, } void ClientBacklogManager::requestInitialBacklog() { - if(_requester) { + if(_requester && !_buffersRequested.isEmpty()) { qWarning() << "ClientBacklogManager::requestInitialBacklog() called twice in the same session! (Backlog has already been requested)"; return; } diff --git a/src/qtui/CMakeLists.txt b/src/qtui/CMakeLists.txt index 8ec3ad20..adef532d 100644 --- a/src/qtui/CMakeLists.txt +++ b/src/qtui/CMakeLists.txt @@ -26,6 +26,7 @@ set(SOURCES coreconfigwizard.cpp coreconnectdlg.cpp coreinfodlg.cpp + debugbufferviewoverlay.cpp debugconsole.cpp debuglogwidget.cpp debugmessagemodelfilter.cpp @@ -71,6 +72,7 @@ set(MOC_HDRS coreconfigwizard.h coreconnectdlg.h coreinfodlg.h + debugbufferviewoverlay.h debugconsole.h debuglogwidget.h debugmessagemodelfilter.h @@ -116,6 +118,7 @@ set(FORMS coreconfigwizardsyncpage.ui coreconnectdlg.ui coreinfodlg.ui + debugbufferviewoverlay.ui debugconsole.ui debuglogwidget.ui inputwidget.ui diff --git a/src/qtui/debugbufferviewoverlay.cpp b/src/qtui/debugbufferviewoverlay.cpp new file mode 100644 index 00000000..529a75ad --- /dev/null +++ b/src/qtui/debugbufferviewoverlay.cpp @@ -0,0 +1,109 @@ +/*************************************************************************** + * Copyright (C) 2005-08 by the Quassel Project * + * devel@quassel-irc.org * + * * + * This program is free software; you can redistribute it and/or modify * + * it under the terms of the GNU General Public License as published by * + * the Free Software Foundation; either version 2 of the License, or * + * (at your option) version 3. * + * * + * This program is distributed in the hope that it will be useful, * + * but WITHOUT ANY WARRANTY; without even the implied warranty of * + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * + * GNU General Public License for more details. * + * * + * You should have received a copy of the GNU General Public License * + * along with this program; if not, write to the * + * Free Software Foundation, Inc., * + * 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. * + ***************************************************************************/ + +#include "debugbufferviewoverlay.h" + +#include +#include +#include +#include + +#include "buffermodel.h" +#include "bufferviewoverlay.h" +#include "bufferviewoverlayfilter.h" +#include "client.h" + +DebugBufferViewOverlay::DebugBufferViewOverlay(QWidget *parent) + : QWidget(parent) +{ + ui.setupUi(this); + + BufferViewOverlayFilter *filter = new BufferViewOverlayFilter(Client::bufferModel(), Client::bufferViewOverlay()); + + filter->setParent(ui.bufferView); + + ui.bufferView->setModel(filter); + ui.bufferView->setColumnWidth(0, 250); + ui.bufferView->setColumnWidth(1, 250); + ui.bufferView->setColumnWidth(2, 80); + ui.bufferView->resize(610, 300); + ui.bufferView->show(); + + QFormLayout *layout = new QFormLayout(ui.overlayProperties); + layout->addRow(tr("BufferViews:"), _bufferViews = new QLineEdit(this)); + layout->addRow(tr("All Networks:"), _allNetworks = new QLabel(this)); + layout->addRow(tr("Networks:"), _networks = new QLineEdit(this)); + layout->addRow(tr("Buffers:"), _bufferIds = new QTextEdit(this)); + layout->addRow(tr("Removed buffers:"), _removedBufferIds = new QTextEdit(this)); + layout->addRow(tr("Temp. removed buffers:"), _tempRemovedBufferIds = new QTextEdit(this)); + + layout->addRow(tr("Add Bufers Automatically:"), _addBuffersAutomatically = new QLabel(this)); + layout->addRow(tr("Hide inactive buffers:"), _hideInactiveBuffers = new QLabel(this)); + layout->addRow(tr("Allowed buffer types:"), _allowedBufferTypes = new QLabel(this)); + layout->addRow(tr("Minimum activity:"), _minimumActivity = new QLabel(this)); + + layout->addRow(tr("Is initialized:"), _isInitialized = new QLabel(this)); + + update(); + connect(Client::bufferViewOverlay(), SIGNAL(hasChanged()), this, SLOT(update())); +} + +void DebugBufferViewOverlay::update() { + BufferViewOverlay *overlay = Client::bufferViewOverlay(); + + _allNetworks->setText(overlay->allNetworks() ? "yes" : "no"); + + QStringList ids; + foreach(int bufferViewId, overlay->bufferViewIds()) { + ids << QString::number(bufferViewId); + } + _bufferViews->setText(ids.join(", ")); + + ids.clear(); + foreach(NetworkId networkId, overlay->networkIds()) { + ids << QString::number(networkId.toInt()); + } + _networks->setText(ids.join(", ")); + + ids.clear(); + foreach(BufferId bufferId, overlay->bufferIds()) { + ids << QString::number(bufferId.toInt()); + } + _bufferIds->setText(ids.join(", ")); + + ids.clear(); + foreach(BufferId bufferId, overlay->removedBufferIds()) { + ids << QString::number(bufferId.toInt()); + } + _removedBufferIds->setText(ids.join(", ")); + + ids.clear(); + foreach(BufferId bufferId, overlay->tempRemovedBufferIds()) { + ids << QString::number(bufferId.toInt()); + } + _tempRemovedBufferIds->setText(ids.join(", ")); + + _addBuffersAutomatically->setText(overlay->addBuffersAutomatically() ? "yes" : "no"); + _hideInactiveBuffers->setText(overlay->hideInactiveBuffers() ? "yes" : "no"); + _allowedBufferTypes->setText(QString::number(overlay->allowedBufferTypes())); + _minimumActivity->setText(QString::number(overlay->minimumActivity())); + + _isInitialized->setText(overlay->isInitialized() ? "yes" : "no"); +} diff --git a/src/qtui/debugbufferviewoverlay.h b/src/qtui/debugbufferviewoverlay.h new file mode 100644 index 00000000..101ffa25 --- /dev/null +++ b/src/qtui/debugbufferviewoverlay.h @@ -0,0 +1,54 @@ +/*************************************************************************** + * Copyright (C) 2005-08 by the Quassel Project * + * devel@quassel-irc.org * + * * + * This program is free software; you can redistribute it and/or modify * + * it under the terms of the GNU General Public License as published by * + * the Free Software Foundation; either version 2 of the License, or * + * (at your option) version 3. * + * * + * This program is distributed in the hope that it will be useful, * + * but WITHOUT ANY WARRANTY; without even the implied warranty of * + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * + * GNU General Public License for more details. * + * * + * You should have received a copy of the GNU General Public License * + * along with this program; if not, write to the * + * Free Software Foundation, Inc., * + * 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. * + ***************************************************************************/ + +#ifndef DEBUGBUFFERVIEWOVERLAY_H +#define DEBUGBUFFERVIEWOVERLAY_H + +#include "ui_debugbufferviewoverlay.h" + +class QLabel; +class QLineEdit; +class QTextEdit; + +class DebugBufferViewOverlay : public QWidget { + Q_OBJECT + +public: + DebugBufferViewOverlay(QWidget *parent = 0); + +private slots: + void update(); + +private: + Ui::DebugBufferViewOverlay ui; + QLineEdit *_bufferViews; + QLabel *_allNetworks; + QLineEdit *_networks; + QTextEdit *_bufferIds; + QTextEdit *_removedBufferIds; + QTextEdit *_tempRemovedBufferIds; + QLabel *_addBuffersAutomatically; + QLabel *_hideInactiveBuffers; + QLabel *_allowedBufferTypes; + QLabel *_minimumActivity; + QLabel *_isInitialized; +}; + +#endif //DEBUGBUFFERVIEWOVERLAY_H diff --git a/src/qtui/mainwin.cpp b/src/qtui/mainwin.cpp index 122b4763..2c9e0f74 100644 --- a/src/qtui/mainwin.cpp +++ b/src/qtui/mainwin.cpp @@ -55,6 +55,7 @@ #include "coreinfodlg.h" #include "coreconnectdlg.h" #include "contextmenuactionprovider.h" +#include "debugbufferviewoverlay.h" #include "debuglogwidget.h" #include "debugmessagemodelfilter.h" #include "iconloader.h" @@ -1019,17 +1020,9 @@ void MainWin::on_actionDebugNetworkModel_triggered() { } void MainWin::on_actionDebugBufferViewOverlay_triggered() { - QTreeView *view = new QTreeView; - view->setAttribute(Qt::WA_DeleteOnClose); - view->setWindowTitle("Debug BufferViewOverlay View"); - BufferViewOverlayFilter *filter = new BufferViewOverlayFilter(Client::bufferModel(), Client::bufferViewOverlay()); - filter->setParent(view); - view->setModel(filter); - view->setColumnWidth(0, 250); - view->setColumnWidth(1, 250); - view->setColumnWidth(2, 80); - view->resize(610, 300); - view->show(); + DebugBufferViewOverlay *overlay = new DebugBufferViewOverlay(0); + overlay->setAttribute(Qt::WA_DeleteOnClose); + overlay->show(); } void MainWin::on_actionDebugMessageModel_triggered() { diff --git a/src/qtui/ui/debugbufferviewoverlay.ui b/src/qtui/ui/debugbufferviewoverlay.ui new file mode 100644 index 00000000..78190acf --- /dev/null +++ b/src/qtui/ui/debugbufferviewoverlay.ui @@ -0,0 +1,48 @@ + + DebugBufferViewOverlay + + + + 0 + 0 + 580 + 545 + + + + Debug BufferView Overlay + + + + 0 + + + + + 0 + + + + Overlay View + + + + 0 + + + + + + + + + Overlay Properties + + + + + + + + + -- 2.20.1