Porting to WebKit - xslt, css, icons working
authorBartosz Szatkowski <bulislaw@linux.com>
Tue, 31 Aug 2010 07:43:48 +0000 (09:43 +0200)
committerBartosz Szatkowski <bulislaw@linux.com>
Tue, 31 Aug 2010 07:43:48 +0000 (09:43 +0200)
trunk/src/base/base.pro
trunk/src/base/gui/TranslationTextEdit.cpp
trunk/src/base/gui/TranslationTextEdit.h
trunk/src/base/gui/TranslationWidget.cpp
trunk/src/base/gui/TranslationWidget.h
trunk/src/base/gui/TranslationWidgetAutoResizer.h
trunk/src/base/xsl.xsl
trunk/src/base/xslt2.qrc

index aec27f2..632cc8b 100644 (file)
@@ -5,7 +5,8 @@ QT += core \
     gui \
     sql \
     xml \
-    xmlpatterns
+    xmlpatterns \
+    webkit
 
 maemo5:QT += maemo5
 TARGET = mdictionary
@@ -67,13 +68,17 @@ unix {
     isEmpty(PREFIX):PREFIX = /usr
     BINDIR = $$PREFIX/bin
     DATADIR = $$PREFIX/share
+    LIBDIR = $$PREFIX/lib/mdictionary
     DEFINES += DATADIR=\\\"$$DATADIR\\\" \
-        PKGDATADIR=\\\"$$PKGDATADIR\\\"
+        PKGDATADIR=\\\"$$PKGDATADIR\\\" \
+        LIBDIR=\\\"$$LIBDIR\\\"
     
     # MAKE INSTALL
     INSTALLS += target \
         desktop \
-        icon64
+        icon64 \
+       bookmarks
+
     target.path = $$BINDIR
     maemo5 { 
         desktop.path = $$DATADIR/applications/hildon
@@ -85,5 +90,8 @@ unix {
     }
     desktop.files += ../../../data/other/$${TARGET}.desktop
     icon64.files += ../../../data/icons/64x64/$${TARGET}.png
+
+    bookmarks.path = $$LIBDIR
+    bookmarks.files += ../../../data/icons/16x16/staron.png
 }
 RESOURCES += xslt2.qrc
index 69d24d7..4f5766d 100644 (file)
@@ -25,7 +25,7 @@
 #include "TranslationTextEdit.h"
 
 TranslationTextEdit::TranslationTextEdit(QWidget *parent) :
-    QTextEdit(parent)
+    QWebView(parent)
 {
     searchSelectedAction = new QAction(tr("Search"), this);
 
@@ -34,17 +34,17 @@ TranslationTextEdit::TranslationTextEdit(QWidget *parent) :
 }
 
 void TranslationTextEdit::contextMenuEvent(QContextMenuEvent *e) {
-    QMenu *menu = createStandardContextMenu(e->pos());
-    if(textCursor().selectedText().isEmpty())
-        searchSelectedAction->setEnabled(false);
-    else
-        searchSelectedAction->setEnabled(true);
+    //QMenu *menu = createStandardContextMenu(e->pos());
+    //if(page()->selectedText().isEmpty())
+     //   searchSelectedAction->setEnabled(false);
+    //else
+     //   searchSelectedAction->setEnabled(true);
 
-    menu->addSeparator();
-    menu->addAction(searchSelectedAction);
+    //menu->addSeparator();
+    //menu->addAction(searchSelectedAction);
 
-    menu->exec(e->globalPos());
-    delete menu;
+    //menu->exec(e->globalPos());
+    //delete menu;
 
-    e->ignore();
+    //e->ignore();
 }
index 0747317..b6e48ae 100644 (file)
@@ -26,8 +26,9 @@
 
 #include <QTextEdit>
 #include <QAction>
+#include <QWebView>
 
-class TranslationTextEdit : public QTextEdit
+class TranslationTextEdit : public QWebView
 {
     Q_OBJECT
 public:
index 79f0402..379bdbe 100644 (file)
@@ -43,7 +43,7 @@ TranslationWidget::TranslationWidget(QWidget *parent):
 
     setWindowTitle("mDictionary");
 
-    connect(textEdit, SIGNAL(search()),
+    connect(webkit, SIGNAL(search()),
            this, SLOT(searchSelected()));
 
     QFile file(":/xsl/xsl.xsl");
@@ -60,41 +60,53 @@ void TranslationWidget::show() {
 
 
 void TranslationWidget::show(QStringList translations) {
-    textEdit->clear();
-
     showMaximized();
 
     #ifdef Q_WS_MAEMO_5
         if(!buttonsInitialized)
             initButtons();
     #endif
-    textEdit->repaint(this->rect());
+    webkit->repaint(this->rect());
     update(this->rect());
 
     QString trans;
     QString t;
+
     foreach(t, translations) {
         trans += t + "\n";
     }
 
+
     QImage image(":icons/16x16/staron.png");
-    QTextDocument *document = textEdit->document();
-    document->addResource(QTextDocument::ImageResource,
-            QUrl("mydata://image.png"), QVariant(image));
+//    QTextDocument *document = textEdit->document();
+//    document->addResource(QTextDocument::ImageResource,
+//            QUrl("mydata://image.png"), QVariant(image));
 
-    QFile cssFile(QDir::homePath() + "/.mdictionary/style.css");
-    cssFile.open(QFile::ReadOnly);
-    document->addResource(QTextDocument::StyleSheetResource,
-            QUrl("mydata://style.css"),
-            QVariant(cssFile.readAll()));
+ //   QFile cssFile(QDir::homePath() + "/.mdictionary/style.css");
+ //   cssFile.open(QFile::ReadOnly);
+ //   document->addResource(QTextDocument::StyleSheetResource,
+//            QUrl("mydata://style.css"),
+//            QVariant(cssFile.readAll()));
 
 
-    trans=tr("<?xml version=\"1.0\" encoding=\"UTF-8\"?>") + tr("\n <ar>") + trans + tr("\n </ar>");
+    trans=tr("<?xml version=\"1.0\" encoding=\"UTF-8\"?>") + tr("\n <ar>")
+            + trans + tr("\n </ar>");
     trans=XslConversion(trans);
 
-    textEdit->insertHtml(trans);
+    QString head = "<html><head><link rel=\"stylesheet\" type=\"text/css\" " ;
+    head += "href=\"" + QDir::homePath() + "/.mdictionary/style.css";
+    head += "\" /></head>";
+    trans = head + trans;
+
+    trans+= "</html>";
+    trans.replace("$STAR$", "/usr/lib/mdictionary/staron.png");
+
+
+    qDebug () << trans;
+    webkit->setHtml(trans, QUrl().fromLocalFile("/"));
+
 
-    textEdit->repaint(this->rect());
+    webkit->repaint(this->rect());
     update(this->rect());
 
     Q_EMIT updateSize();
@@ -201,19 +213,19 @@ void TranslationWidget::initButtons() {
 
 void TranslationWidget::initializeUI() {
 
-    textEdit = new TranslationTextEdit(this);
-    textEdit->setReadOnly(true);
+    webkit = new TranslationTextEdit(this);
+//    textEdit->setReadOnly(true);
 
-    resizer = new TranslationWidgetAutoResizer(textEdit);
-    connect(this, SIGNAL(updateSize()),
-            resizer, SLOT(textEditChanged()));
+    //resizer = new TranslationWidgetAutoResizer(textEdit);
+    //connect(this, SIGNAL(updateSize()),
+            //resizer, SLOT(textEditChanged()));
 
     QWidget*w = new QWidget(this);
     verticalLayout = new QVBoxLayout(w);
-    verticalLayout->addWidget(textEdit);
+    verticalLayout->addWidget(webkit);
 
-    textEdit->setHorizontalScrollBarPolicy(Qt::ScrollBarAlwaysOff);
-    textEdit->setVerticalScrollBarPolicy(Qt::ScrollBarAlwaysOff);
+//    textEdit->setHorizontalScrollBarPolicy(Qt::ScrollBarAlwaysOff);
+ //   textEdit->setVerticalScrollBarPolicy(Qt::ScrollBarAlwaysOff);
 
     this->setWidget(w);
     this->setWidgetResizable(true);
@@ -279,7 +291,7 @@ void TranslationWidget::searchSelected() {
     #ifdef Q_WS_MAEMO_5
         hide();
     #endif
-    Q_EMIT search(textEdit->textCursor().selectedText());
+    Q_EMIT search(webkit->page()->selectedText());
 }
 
 #ifdef Q_WS_MAEMO_5
index c172d04..8e380c9 100644 (file)
@@ -72,7 +72,7 @@ private:
     QString XslConversion(QString translation);
     QToolButton* zoomInToolButton;
     QToolButton* zoomOutToolButton;
-    TranslationTextEdit *textEdit;
+    TranslationTextEdit *webkit;
     QString xslt;
     #ifdef Q_WS_MAEMO_5
         QToolButton* zoomInButton;
index cc68304..038e1bf 100644 (file)
@@ -35,10 +35,10 @@ public:
     textEdit(qobject_cast<QTextEdit* >((parent))),
     edit(qobject_cast<QFrame* >((parent))) {
 
-     connect(parent, SIGNAL(textChanged()), this,
-             SLOT(textEditChanged()));
-     connect(parent, SIGNAL(cursorPositionChanged()),
-             this, SLOT(textEditChanged()));
+  //   connect(parent, SIGNAL(textChanged()), this,
+   //          SLOT(textEditChanged()));
+   //  connect(parent, SIGNAL(cursorPositionChanged()),
+    //         this, SLOT(textEditChanged()));
      }
 
 public Q_SLOTS:
index 0a9f174..c844b97 100644 (file)
@@ -2,10 +2,6 @@
 <xsl:stylesheet version="2.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
 
 <xsl:template match="/">
-       <html>
-           <head>
-               <link rel="stylesheet" type="text/css" href="mydata://style.css" />  
-           </head>
              <body>
                 <table border="1" width="100%">
                    <xsl:for-each select="ar/dict"> 
                    </xsl:for-each>
                 </table>
              </body>
-       </html>
 </xsl:template> 
 
 <xsl:template match="info">
        <tr>
                <th class="info">               
                <xsl:if test="@bookmark = 'true'">
-                       <img src="mydata://image.png"/>   
+                       <img src="$STAR$" width="16" height="16"/>   
                </xsl:if>
                <xsl:value-of select="."/> <!-- <img src="{$path}"/> -->
                </th>
index 243b9b6..4f1dbbb 100644 (file)
@@ -1,7 +1,7 @@
 <RCC>
     <qresource prefix="/xsl">
-        <file>xsl.xsl</file>
         <file>style.css</file>
+        <file>xsl.xsl</file>
     </qresource>
     <qresource prefix="/config">
         <file>mdictionary.config</file>