summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--demos/irc/chat.ui2
-rw-r--r--src/eventhandler.js8
-rw-r--r--src/eventqueue.cpp4
-rw-r--r--src/sessionhandler.js4
-rw-r--r--src/widgeteventhandler.cpp70
-rw-r--r--src/widgeteventhandler.h1
6 files changed, 66 insertions, 23 deletions
diff --git a/demos/irc/chat.ui b/demos/irc/chat.ui
index 34ee162..72c450c 100644
--- a/demos/irc/chat.ui
+++ b/demos/irc/chat.ui
@@ -46,7 +46,7 @@
<item>
<widget class="QLabel" name="label_3">
<property name="text">
- <string>QWebClient releay chat (&lt;b&gt;QRC&lt;/b&gt;)</string>
+ <string>QWebClient relay chat (&lt;b&gt;QRC&lt;/b&gt;)</string>
</property>
</widget>
</item>
diff --git a/src/eventhandler.js b/src/eventhandler.js
index 6acdace..4d3db3d 100644
--- a/src/eventhandler.js
+++ b/src/eventhandler.js
@@ -76,11 +76,15 @@ function createStructureElement()
function createElement(widgetType, id)
{
-// console.log("createElement src: " + this.baseUrl);
+
+
+ console.log("x createElement src: " + this.baseUrl + " " + widgetType + " id" + id);
var element;
if (widgetType == "lineedit") {
element = this.createInputElement(id);
+ } else if (widgetType == "textedit") {
+ element = this.createInputElement(id);
} else if (widgetType == "label") {
element = this.createLabelElement(id);
} else if (widgetType == "midisubwindow") {
@@ -207,7 +211,7 @@ function eventHandler(text)
var id = this.elmentId(widget);
var element = document.getElementById(id);
- // console.log("event " + event.type);
+ console.log("event " + event.type);
if (!element)
element = this.createElement(widgetType, widget);
diff --git a/src/eventqueue.cpp b/src/eventqueue.cpp
index 22c098b..774f512 100644
--- a/src/eventqueue.cpp
+++ b/src/eventqueue.cpp
@@ -36,6 +36,8 @@ QString widgetGetText(QWidget *widget)
if (QLineEdit *lineEdit = qobject_cast<QLineEdit *>(widget)) {
text = lineEdit->text();
+ } else if (QTextEdit *textEdit = qobject_cast<QTextEdit *>(widget)) {
+ text = textEdit->toPlainText();
} else if (QLabel *label = qobject_cast<QLabel*>(widget)) {
text = label->text();
} else {
@@ -302,6 +304,8 @@ json_object *EventQueue::toJsonWidgetType(QWidget *widget) const
{
if (qobject_cast<QLineEdit *>(widget))
return json_object_new_string("lineedit");
+ if (qobject_cast<QTextEdit *>(widget))
+ return json_object_new_string("textedit");
if (qobject_cast<QLabel *>(widget))
return json_object_new_string("label");
if (qobject_cast<QMdiSubWindow *>(widget))
diff --git a/src/sessionhandler.js b/src/sessionhandler.js
index c8e9800..6e1e5d3 100644
--- a/src/sessionhandler.js
+++ b/src/sessionhandler.js
@@ -3,10 +3,14 @@ function request(theurl)
{
// console.log("send request: " + theurl);
var webclientObject = this;
+// var argumentsObject = new Object;
+// argumentsObject["foo"] = "bar space";
+// argumentsObject["foo2"] = "bar2";
dojo.xhrPost( {
// The following URL must match that used to test the server.
url: theurl,
timeout: 0, // Time in milliseconds
+// content : argumentsObject,
// The LOAD function will be called on a successful response.
load: function(response, ioArgs) {
diff --git a/src/widgeteventhandler.cpp b/src/widgeteventhandler.cpp
index 00ec819..947b09b 100644
--- a/src/widgeteventhandler.cpp
+++ b/src/widgeteventhandler.cpp
@@ -36,24 +36,38 @@ void WidgetEventHandler::setRootWidget(QWidget *root)
recursivelyInstallEventHandler(root);
}
+bool WidgetEventHandler::shouldProcessChildWidgets(QWidget *widget)
+{
+ if (qobject_cast<QTextEdit *>(widget))
+ return false;
+ return true;
+}
void WidgetEventHandler::recursivelyInstallEventHandler(QWidget *widget)
{
widget->installEventFilter(this);
-// qDebug() << "event filter on" << widget->metaObject()->className() << widget->objectName();
+ DEBUG << "event filter on" << widget->metaObject()->className() << widget->objectName() << int(widget);
if (QLineEdit *lineEdit = qobject_cast<QLineEdit *>(widget)) {
connect(lineEdit, SIGNAL(textChanged(const QString &)), this, SLOT(textChange()));
events.addEvent((int)widget, EventEntry::TextUpdate);
+ } else if (QTextEdit *textEdit = qobject_cast<QTextEdit *>(widget)) {
+ connect(textEdit, SIGNAL(textChanged()), this, SLOT(textChange()));
+ events.addEvent((int)widget, EventEntry::TextUpdate);
} else if (QLabel *label = qobject_cast<QLabel*>(widget)) {
events.addEvent((int)widget, EventEntry::TextUpdate);
} else if (QAbstractScrollArea *scrollArea = qobject_cast<QAbstractScrollArea *>(widget)) {
recursivelyInstallEventHandler(scrollArea->viewport());
}
- foreach (QWidget *child, widget->findChildren<QWidget *>()) {
- recursivelyInstallEventHandler(child);
+ if (shouldProcessChildWidgets(widget) == false)
+ return;
+
+ foreach (QObject *child, widget->children()) {
+ // DEBUG() << "descend" << widget << child;
+ if (QWidget *childWidget = qobject_cast<QWidget *>(child))
+ recursivelyInstallEventHandler(childWidget);
}
}
@@ -82,8 +96,10 @@ bool WidgetEventHandler::eventFilter(QObject *object, QEvent *event)
if (event->type() == QEvent::Paint) {
if (QLabel *label = qobject_cast<QLabel *>(widget)) {
events.addEvent((int)widget, EventEntry::TextUpdate);
+ } else if (QTextEdit *textEdit = qobject_cast<QTextEdit *>(widget)) {
+ events.addEvent((int)widget, EventEntry::TextUpdate);
}
- if (!grabbing) {
+ else if (!grabbing) {
DEBUG << " add paint update" << object;
addPendingUpdate(widget, static_cast<QPaintEvent*>(event)->rect());
}
@@ -278,7 +294,7 @@ void WidgetEventHandler::handlePositionUpdate(json_object *request)
disableUpdates.insert(widget);
widget->move(x, y);
disableUpdates.remove(widget);
- // qDebug() << "position update" << id << x << y;
+ // DEBUG() << "position update" << id << x << y;
}
void WidgetEventHandler::widgetPaint(QWidget *widget, const QRect &updateRect)
@@ -317,24 +333,34 @@ QRect WidgetEventHandler::globalGeometry(QWidget *widget)
}
-void WidgetEventHandler::recursivelyAddHide(QWidget *root)
+void WidgetEventHandler::recursivelyAddHide(QWidget *widget)
{
- foreach (QWidget *child, root->findChildren<QWidget *>()) {
- events.addEvent((int)child, EventEntry::Hide);
+ events.addEvent((int)widget, EventEntry::Hide);
+
+ if (shouldProcessChildWidgets(widget) == false)
+ return;
+
+ foreach (QObject *child, widget->children()) {
+ if (QWidget *childWidget = qobject_cast<QWidget *>(child))
+ recursivelyAddHide(childWidget);
}
}
void WidgetEventHandler::recursivelyAddShow(QWidget *root)
{
- foreach (QWidget *child, root->findChildren<QWidget *>()) {
- if (child->isVisible() == false)
- continue;
- if (events.images.contains((int)child)) {
- addShowEvent(child);
- }
+ if (shouldProcessChildWidgets(root) == false)
+ return;
- // Add pending paint update
- addPendingUpdate(child, child->rect());
+ foreach (QObject *child, root->children()) {
+ if (QWidget *childWidget = qobject_cast<QWidget *>(child)) {
+ if (childWidget->isVisible() == false)
+ continue;
+ if (events.images.contains((int)childWidget)) {
+ addShowEvent(childWidget);
+ }
+ // Add pending paint update
+ addPendingUpdate(childWidget, childWidget->rect());
+ }
}
}
@@ -350,18 +376,22 @@ void WidgetEventHandler::recursivelyAddUpdate(QWidget *widget)
if (QLineEdit *lineEdit = qobject_cast<QLineEdit *>(widget)) {
events.addEvent((int)widget, EventEntry::TextUpdate);
}
+ if (QTextEdit *textEdit = qobject_cast<QTextEdit *>(widget)) {
+ events.addEvent((int)widget, EventEntry::TextUpdate);
+ }
else if (QLabel *label = qobject_cast<QLabel *>(widget)) {
events.addEvent((int)widget, EventEntry::TextUpdate);
}
-
// Add pending paint update
addPendingUpdate(widget, widget->rect());
+ if (shouldProcessChildWidgets(widget) == false)
+ return;
-
- foreach (QWidget *child, widget->findChildren<QWidget *>()) {
- recursivelyAddUpdate(child);
+ foreach (QObject *child, widget->children()) {
+ if (QWidget *childWidget = qobject_cast<QWidget *>(child))
+ recursivelyAddUpdate(childWidget);
}
}
diff --git a/src/widgeteventhandler.h b/src/widgeteventhandler.h
index fc0f950..0583736 100644
--- a/src/widgeteventhandler.h
+++ b/src/widgeteventhandler.h
@@ -10,6 +10,7 @@ Q_OBJECT
public:
WidgetEventHandler(QObject *parent = 0);
void setRootWidget(QWidget *root);
+ bool shouldProcessChildWidgets(QWidget *widget);
void recursivelyInstallEventHandler(QWidget *widget);
void setSession(Session *session);
Session *session();