This is OK for a hack but there needs to be public methods similar to your selectedInput() and selectedNode() functions.
Regards, ismail On Tue, Apr 27, 2010 at 4:30 PM, Andrew Webster <[email protected]> wrote: > I did something similar for text inputs. I hacked a class called > QWebPageEx that extends QWebPage into webkit that is able to determine > if a text field is selected and get and set the text in it. In my > user app, I extended QWebPageEx and then every time there is a > MouseButtonRelease I check if a text field is selected and then open a > soft keyboard. > > It's not the cleanest method and it breaks every time there's a major > update to webkit, but it does work. You may be able to do something > similar for list/combo boxes. > > Here is the header: > #include "qwebpage.h" > > namespace WebCore > { > class Node; > class HTMLInputElement; > } > > class QWEBKIT_EXPORT QWebPageEx : public QWebPage > { > public: > QWebPageEx(QObject *parent = 0); > ~QWebPageEx(); > > bool isTextField() const; > bool isPasswordField() const; > > QString text() const; > void setText(const QString& text); > QString getAttribute(const QString& attrName); > > private: > WebCore::Node* selectedNode() const; > WebCore::HTMLInputElement* selectedInput() const; > }; > > And the source: > #include "qwebpageex.h" > #include "config.h" > #include "qwebpage_p.h" > > #include "Frame.h" > #include "Page.h" > #include "FocusController.h" > #include "HTMLInputElement.h" > #include "HTMLNames.h" > #include "ClientRect.h" > #include "JSDOMWindow.h" > > QWebPageEx::QWebPageEx(QObject *parent) : > QWebPage(parent) > { > } > > QWebPageEx::~QWebPageEx() > { > } > > bool QWebPageEx::isTextField() const > { > const WebCore::HTMLInputElement *input = selectedInput(); > > if (input) > { > return input->isTextField(); > } > > return false; > } > > bool QWebPageEx::isPasswordField() const > { > const WebCore::HTMLInputElement *input = selectedInput(); > > if (input) > { > return input->isPasswordField(); > } > > return false; > } > > QString QWebPageEx::text() const > { > const WebCore::HTMLInputElement *input = selectedInput(); > > if (input) > { > return input->value(); > } > > return QString(); > } > > void QWebPageEx::setText(const QString& text) > { > WebCore::HTMLInputElement *input = selectedInput(); > > if (input) > { > input->setValue(text); > input->dispatchFormControlChangeEvent(); > } > } > > QString QWebPageEx::getAttribute(const QString& attrName) > { > WebCore::Node *node = selectedNode(); > > if (node && node->hasAttributes()) > { > WebCore::NamedNodeMap *attrs = node->attributes(); > > if (attrs) > { > WTF::PassRefPtr<WebCore::Node> nd = attrs->getNamedItem(attrName); > > if (nd.get()) > { > return nd->nodeValue(); > } > } > } > > return QString(); > } > > WebCore::Node* QWebPageEx::selectedNode() const > { > WebCore::Frame *frame = > handle()->page->focusController()->focusedOrMainFrame(); > if (frame) > { > WebCore::Document *document = frame->document(); > > if (document) > { > WebCore::Node *node = document->focusedNode(); > > if (node) > { > return node; > } > } > } > > return NULL; > } > > WebCore::HTMLInputElement* QWebPageEx::selectedInput() const > { > WebCore::Node *node = selectedNode(); > > if (node && node->hasTagName(WebCore::HTMLNames::inputTag)) > { > return static_cast<WebCore::HTMLInputElement*>(node); > } > > return NULL; > } > > Andrew > > On Tue, Apr 27, 2010 at 3:07 AM, Ivan De Marino > <[email protected]> wrote: > > Input methods in Qt are defined by-platform, and that should not change > if > > you are in a QWebView. > > If you want to modify what do you get in terms of Keyboards, Combo-box > and > > so forth, you might want to take a look to the actual source code of > > QtWebKit and see where you can "plug yourself" in. It's not going to be > an > > easy task, I think. > > It might be that you are raising an interesting point: allowing > developers > > to implement/extend the input methods for QWebKit, so that personalized > > Input Methods can be easily added. that's an interesting idea. > > Good luck. > > > > On 27 April 2010 07:39, sunny shah <[email protected]> wrote: > >> > >> Hi , > >> But I want to make it for Qt for embedded linux ( My windowing server > is > >> QWS ( Qt Windowing System) ), I want to mentioned functionality ( Want > to > >> make mobile browser similar to iPhone | Android ). Isn't it possible > that > >> textbox OR listbox OR combobox which QtWebkit uses will be derived by > me ? > >> Or is there any other way? I am ready to do hacking in code, Just help > me > >> for quick start. > >> Many Thanks, > >> Sunny. > >> On Tue, Apr 27, 2010 at 1:41 AM, Kenneth Christiansen > >> <[email protected]> wrote: > >>> > >>> We would all like that :-) but it is a lot of work to get done right. > >>> > >>> With QtWebKit 2.0 which will soon be released, and if your embedded > >>> linux is based on Maemo5, you will get a dialog for selection (what > >>> you call combobox/listbox), event for the multiple selection case. On > >>> other platforms you are out of luck. Virtual keyboard will also work > >>> on that platform. > >>> > >>> Kenneth > >>> > >>> On Mon, Apr 26, 2010 at 2:59 PM, sunny shah <[email protected]> > wrote: > >>> > Hi, > >>> > > >>> > I am making mobile browser for Qt for embedded linux. I want to > have > >>> > virtual keyboard, separate window for listbox and combo box and > custom > >>> > message box styles in QtWebkit. Please help me with this. > >>> > > >>> > Regards, > >>> > Sunny. > >>> > _______________________________________________ > >>> > webkit-qt mailing list > >>> > [email protected] > >>> > http://lists.webkit.org/mailman/listinfo.cgi/webkit-qt > >>> > > >>> > > >>> > >>> > >>> > >>> -- > >>> Kenneth Rohde Christiansen > >>> Technical Lead / Senior Software Engineer > >>> Qt Labs Americas, Nokia Technology Institute, INdT > >>> Phone +55 81 8895 6002 / E-mail kenneth.christiansen at openbossa.org > >> > >> > >> _______________________________________________ > >> webkit-qt mailing list > >> [email protected] > >> http://lists.webkit.org/mailman/listinfo.cgi/webkit-qt > >> > > > > > > > > -- > > Ivan De Marino | Software Engineer | France Telecom R&D UK - Orange Labs > > w. +44 20 8849 5806 | m. +44 7515 955 861 | m. +44 7974 156 216 > > ivan[dot]demarino[at]orange-ftgroup.com | > > ivan[dot]de[dot]marino[at]gmail[dot]com > > www.detronizator.org | www.linkedin.com/in/ivandemarino > > > > _______________________________________________ > > webkit-qt mailing list > > [email protected] > > http://lists.webkit.org/mailman/listinfo.cgi/webkit-qt > > > > > _______________________________________________ > webkit-qt mailing list > [email protected] > http://lists.webkit.org/mailman/listinfo.cgi/webkit-qt >
_______________________________________________ webkit-qt mailing list [email protected] http://lists.webkit.org/mailman/listinfo.cgi/webkit-qt
