summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
Diffstat (limited to 'Swift/QtUI')
-rw-r--r--Swift/QtUI/QtXMLConsoleWidget.cpp46
-rw-r--r--Swift/QtUI/QtXMLConsoleWidget.h22
2 files changed, 63 insertions, 5 deletions
diff --git a/Swift/QtUI/QtXMLConsoleWidget.cpp b/Swift/QtUI/QtXMLConsoleWidget.cpp
index 7553d06..662f070 100644
--- a/Swift/QtUI/QtXMLConsoleWidget.cpp
+++ b/Swift/QtUI/QtXMLConsoleWidget.cpp
@@ -1,10 +1,37 @@
#include "QtXMLConsoleWidget.h"
#include <QCloseEvent>
+#include <QTextEdit>
+#include <QVBoxLayout>
+#include <QPushButton>
+#include <QScrollBar>
+
+#include "QtSwiftUtil.h"
+#include "Swiften/Base/String.h"
namespace Swift {
+
QtXMLConsoleWidget::QtXMLConsoleWidget() {
+ setWindowTitle("Console");
+
+ QVBoxLayout* layout = new QVBoxLayout(this);
+ layout->setSpacing(0);
+ layout->setContentsMargins(0,0,0,0);
+ textEdit = new QTextEdit(this);
+ textEdit->setReadOnly(true);
+ layout->addWidget(textEdit);
+
+ QWidget* bottom = new QWidget(this);
+ layout->addWidget(bottom);
+
+ QHBoxLayout* buttonLayout = new QHBoxLayout(bottom);
+ buttonLayout->setContentsMargins(0,0,20,0);
+ buttonLayout->setSpacing(0);
+ buttonLayout->addStretch();
+ QPushButton* clearButton = new QPushButton("Clear", bottom);
+ connect(clearButton, SIGNAL(clicked()), textEdit, SLOT(clear()));
+ buttonLayout->addWidget(clearButton);
}
void QtXMLConsoleWidget::showEvent(QShowEvent* event) {
@@ -26,4 +53,23 @@ void QtXMLConsoleWidget::closeEvent(QCloseEvent* event) {
event->accept();
}
+void QtXMLConsoleWidget::handleDataRead(const String& data) {
+ textEdit->setTextColor(QColor(33,98,33));
+ appendText(data);
+}
+
+void QtXMLConsoleWidget::handleDataWritten(const String& data) {
+ textEdit->setTextColor(QColor(155,1,0));
+ appendText(data);
+}
+
+void QtXMLConsoleWidget::appendText(const String& data) {
+ QScrollBar* scrollBar = textEdit->verticalScrollBar();
+ bool scrollToBottom = (!scrollBar || scrollBar->value() == scrollBar->maximum());
+ textEdit->append(P2QSTRING(data));
+ if (scrollToBottom) {
+ textEdit->ensureCursorVisible();
+ }
+}
+
}
diff --git a/Swift/QtUI/QtXMLConsoleWidget.h b/Swift/QtUI/QtXMLConsoleWidget.h
index 50b53f2..0d5a10d 100644
--- a/Swift/QtUI/QtXMLConsoleWidget.h
+++ b/Swift/QtUI/QtXMLConsoleWidget.h
@@ -3,16 +3,28 @@
#include "Swift/Controllers/UIInterfaces/XMLConsoleWidget.h"
#include "QtTabbable.h"
+class QTextEdit;
+
namespace Swift {
class QtXMLConsoleWidget : public QtTabbable, public XMLConsoleWidget {
- Q_OBJECT
+ Q_OBJECT
+
public:
QtXMLConsoleWidget();
+
void show();
void activate();
- protected slots:
- void closeEvent(QCloseEvent* event);
- protected:
- void showEvent(QShowEvent* event);
+
+ virtual void handleDataRead(const String& data);
+ virtual void handleDataWritten(const String& data);
+
+ private:
+ virtual void closeEvent(QCloseEvent* event);
+ virtual void showEvent(QShowEvent* event);
+
+ void appendText(const String& data);
+
+ private:
+ QTextEdit* textEdit;
};
}