summaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorMorten Sørvig <msorvig@trolltech.com>2009-06-12 10:58:53 +0200
committerMorten Sørvig <msorvig@trolltech.com>2009-06-12 10:58:53 +0200
commitf01248927746673860ab2ec767482ee89d050b5b (patch)
tree176609d904df0cc012062d8ddab1f8b39ff60232 /src
parentb4095c33436fb66af8db1d4ab11b2b7a4ddb5a1c (diff)
Implement text updates for labels and line edits.
Diffstat (limited to 'src')
-rw-r--r--[-rwxr-xr-x]src/eventhandler.js34
-rw-r--r--[-rwxr-xr-x]src/eventqueue.cpp27
-rw-r--r--[-rwxr-xr-x]src/eventqueue.h0
-rw-r--r--[-rwxr-xr-x]src/index.html0
-rw-r--r--[-rwxr-xr-x]src/json2.js0
-rw-r--r--[-rwxr-xr-x]src/sessionhandler.js0
-rw-r--r--[-rwxr-xr-x]src/sessionserver.cpp0
-rw-r--r--[-rwxr-xr-x]src/sessionserver.h0
-rw-r--r--[-rwxr-xr-x]src/src.qrc0
-rw-r--r--[-rwxr-xr-x]src/webclientserver.cpp1
-rw-r--r--[-rwxr-xr-x]src/webclientserver.h1
-rw-r--r--[-rwxr-xr-x]src/widgeteventhandler.cpp17
-rw-r--r--[-rwxr-xr-x]src/widgeteventhandler.h0
13 files changed, 71 insertions, 9 deletions
diff --git a/src/eventhandler.js b/src/eventhandler.js
index d197232..4b839b2 100755..100644
--- a/src/eventhandler.js
+++ b/src/eventhandler.js
@@ -44,11 +44,32 @@ function createInputElement(pointer)
return inputElement;
}
+function createLabelElement(pointer)
+{
+ var spanElement = document.createElement("span");
+ spanElement.id = elmentId(pointer);
+ spanElement.pointer = pointer;
+ spanElement.className = "nativeWidget";
+ spanElement.style.visibility = "visible";
+
+ // roughly position and size the text to match the
+ // default Qt label style.
+ spanElement.style.marginTop = 4;
+ spanElement.style.fontSize = 11;
+ spanElement.style.fontFamily = "sans-serif";
+
+ document.body.appendChild(spanElement);
+
+ return spanElement;
+}
+
function createElement(widgetType, id)
{
if (widgetType == "lineedit") {
return createInputElement(id);
- } if (widgetType == "midisubwindow") {
+ } else if (widgetType == "label") {
+ return createLabelElement(id);
+ } else if (widgetType == "midisubwindow") {
// console.log("midisubwindow")
var element = createWidgetElement(id);
DragHandler.attach(element);
@@ -58,6 +79,15 @@ function createElement(widgetType, id)
}
}
+function updateText(element, text)
+{
+ console.log("update text" + text + " " + element.nodeName);
+ if (element.nodeName == "SPAN")
+ element.innerHTML = text;
+ else
+ element.value = text;
+}
+
function updateTreeElementPositions(element, dx, dy)
{
if (!element.style.left)
@@ -231,7 +261,7 @@ function eventHandler(text)
addParent(parent, child);
udpateZIndexes(child);
} else if (type == "textUpdate") {
- element.value = event.text;
+ updateText(element, event.text);
}
}
}
diff --git a/src/eventqueue.cpp b/src/eventqueue.cpp
index 7b3b5f5..a801379 100755..100644
--- a/src/eventqueue.cpp
+++ b/src/eventqueue.cpp
@@ -21,15 +21,36 @@ public:
void emitTextEdited(const QString &text) { QLineEdit::textChanged(text); QLineEdit::textEdited(text); }
};
+void encodeText(QString &text)
+{
+ // encode "breakout" characters
+ text.replace("&", "&amp;");
+ text.replace("<", "&lt;");
+ text.replace(">", "&gt;");
+ text.replace("'", "&apos;");
+ text.replace('"', "&quot;");
+ text.replace("/", "&#47");
+
+ // white-list for safe tags
+ text.replace("&lt;b&gt;", "<b>");
+ text.replace("&lt;&#47b&gt;", "</b>");
+}
+
QString widgetGetText(QWidget *widget)
{
+ QString text;
+
if (QLineEdit *lineEdit = qobject_cast<QLineEdit *>(widget)) {
- return lineEdit->text();
+ text = lineEdit->text();
} else if (QLabel *label = qobject_cast<QLabel*>(widget)) {
- return label->text();
+ text = label->text();
} else {
- return QString(" ");
+ text = "unsupported text widget";;
}
+
+ encodeText(text);
+
+ return text;
}
EventQueue::EventQueue(Session *session)
diff --git a/src/eventqueue.h b/src/eventqueue.h
index d31330b..d31330b 100755..100644
--- a/src/eventqueue.h
+++ b/src/eventqueue.h
diff --git a/src/index.html b/src/index.html
index 7f9f4c5..7f9f4c5 100755..100644
--- a/src/index.html
+++ b/src/index.html
diff --git a/src/json2.js b/src/json2.js
index 241a271..241a271 100755..100644
--- a/src/json2.js
+++ b/src/json2.js
diff --git a/src/sessionhandler.js b/src/sessionhandler.js
index 9e33eb8..9e33eb8 100755..100644
--- a/src/sessionhandler.js
+++ b/src/sessionhandler.js
diff --git a/src/sessionserver.cpp b/src/sessionserver.cpp
index 9489aa6..9489aa6 100755..100644
--- a/src/sessionserver.cpp
+++ b/src/sessionserver.cpp
diff --git a/src/sessionserver.h b/src/sessionserver.h
index 9f844e7..9f844e7 100755..100644
--- a/src/sessionserver.h
+++ b/src/sessionserver.h
diff --git a/src/src.qrc b/src/src.qrc
index 7b7f6ca..7b7f6ca 100755..100644
--- a/src/src.qrc
+++ b/src/src.qrc
diff --git a/src/webclientserver.cpp b/src/webclientserver.cpp
index 6ae483b..6b7ebfa 100755..100644
--- a/src/webclientserver.cpp
+++ b/src/webclientserver.cpp
@@ -223,6 +223,7 @@ void Server::dataOnSocket()
response.setCookie("qtcookie", QByteArray::number(sessionId)); // set new.
session = new Session(this, sessionId);
+ session->address = socket->peerAddress();
activeSessions.insert(sessionId, session);
// DEBUG << "new session" << sessionId << session;
diff --git a/src/webclientserver.h b/src/webclientserver.h
index b8b126c..f121fa6 100755..100644
--- a/src/webclientserver.h
+++ b/src/webclientserver.h
@@ -59,6 +59,7 @@ public slots:
void idleSocketDisconnect();
public:
int m_sessionId;
+ QHostAddress address;
QTcpSocket *m_idleSocket;
HttpRequest m_idleRequest;
HttpResponse m_idleResponse;
diff --git a/src/widgeteventhandler.cpp b/src/widgeteventhandler.cpp
index 7c3614b..c170569 100755..100644
--- a/src/widgeteventhandler.cpp
+++ b/src/widgeteventhandler.cpp
@@ -2,6 +2,8 @@
#include "widgeteventhandler.h"
#include "webclient.h"
+bool takeEvents = true;
+
QWidget * findEventTarget(QWidget *root, QPoint pos)
{
QWidget *current = root;
@@ -37,9 +39,10 @@ void WidgetEventHandler::recursivelyInstallEventHandler(QWidget *widget)
if (QLineEdit *lineEdit = qobject_cast<QLineEdit *>(widget)) {
connect(lineEdit, SIGNAL(textChanged(const QString &)), this, SLOT(lineEditTextChange()));
- }
-
- if (QAbstractScrollArea *scrollArea = qobject_cast<QAbstractScrollArea *>(widget)) {
+ 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());
}
@@ -74,7 +77,6 @@ bool WidgetEventHandler::eventFilter(QObject *object, QEvent *event)
if (QLabel *label = qobject_cast<QLabel *>(widget)) {
events.addEvent((int)widget, EventEntry::TextUpdate);
}
-
if (!grabbing) {
DEBUG << " add paint update" << object;
addPendingUpdate(widget, static_cast<QPaintEvent*>(event)->rect());
@@ -266,6 +268,13 @@ void WidgetEventHandler::recursivelyAddUpdate(QWidget *widget)
events.addGeometryEvent((int)widget, globalGeometry(widget));
events.addParentChangeEvent((int) widget);
+ if (QLineEdit *lineEdit = qobject_cast<QLineEdit *>(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());
diff --git a/src/widgeteventhandler.h b/src/widgeteventhandler.h
index 8dab3d2..8dab3d2 100755..100644
--- a/src/widgeteventhandler.h
+++ b/src/widgeteventhandler.h