[webbrowser] modifying qtwebkit.
authorkos <kos@dev3>
Wed, 28 Sep 2011 01:20:08 +0000 (10:20 +0900)
committerkos <kos@dev3>
Wed, 28 Sep 2011 01:20:08 +0000 (10:20 +0900)
conf/distro/vuplus.conf
recipes/mysql/mysql5_5.1.40.bb
recipes/qt4/qt-4.7.4.inc
recipes/qt4/qt-4.7.4/qt4_vuplus.patch [new file with mode: 0644]
recipes/qt4/qt4-embedded.inc
recipes/qt4/qt4-embedded_4.7.4.bb
recipes/qt4/qt4.inc
recipes/webkit/files/arora [new file with mode: 0755]
recipes/webkit/files/qtwebkit_vuplus.patch [new file with mode: 0644]
recipes/webkit/qtwebkit-e_2.2.bb
recipes/webkit/vuplus-webbrowser-utils.bb [new file with mode: 0755]

index 7b48dc3..62d7bc5 100644 (file)
@@ -19,6 +19,14 @@ TARGET_VENDOR = "-vuplus"
 
 #OLDEST_KERNEL = "2.6.16"
 
+PREFERRED_VERSION_qt4-native ?= "4.7.4"
+PREFERRED_VERSION_qt4-tools-sdk ?= "4.7.4"
+PREFERRED_VERSION_qt4-embedded ?= "4.7.4"
+PREFERRED_VERSION_qt4-embedded-gles ?= "4.7.4"
+PREFERRED_VERSION_qt4-x11-free = "4.7.4"
+PREFERRED_VERSION_qt4-x11-free-gles ?= "4.7.4"
+PREFERRED_PROVIDER_qt4-tools-native = "qt4-native"
+
 #
 ## Basic configuration
 #
index ded2f0f..4745801 100644 (file)
@@ -1,3 +1,3 @@
 require ${PN}_${PV}.inc
 
-DEPENDS += mysql5-native
+#DEPENDS += mysql5-native
index 3d549d3..2704a77 100644 (file)
@@ -12,6 +12,7 @@ SRC_URI = "\
        file://0010-phonon-gstreamer-rgb-endianess.patch;patch=1 \
        file://fix-translations.patch;patch=1 \
        file://0001-wsegl2-support.patch;patch=1 \
+        file://qt4_vuplus.patch;patch=1 \
        file://g++.conf \
        file://linux.conf \
        file://blacklist-diginotar-certs.diff;patch=1 \
diff --git a/recipes/qt4/qt-4.7.4/qt4_vuplus.patch b/recipes/qt4/qt-4.7.4/qt4_vuplus.patch
new file mode 100644 (file)
index 0000000..12d9715
--- /dev/null
@@ -0,0 +1,528 @@
+diff --git a/src/3rdparty/webkit/WebCore/page/ContextMenuController.cpp b/src/3rdparty/webkit/WebCore/page/ContextMenuController.cpp
+index d384b02..40cac5c 100644
+--- a/src/3rdparty/webkit/WebCore/page/ContextMenuController.cpp
++++ b/src/3rdparty/webkit/WebCore/page/ContextMenuController.cpp
+@@ -177,6 +177,8 @@ void ContextMenuController::contextMenuItemSelected(ContextMenuItem* item)
+     case ContextMenuItemTagOpenImageInNewWindow:
+         openNewWindow(result.absoluteImageURL(), frame);
+         break;
++    case ContextMenuItemTagGotoYoutubeLink:
++        break;
+     case ContextMenuItemTagDownloadImageToDisk:
+         // FIXME: Some day we should be able to do this from within WebCore.
+         m_client->downloadURL(result.absoluteImageURL());
+diff --git a/src/3rdparty/webkit/WebCore/platform/ContextMenu.cpp b/src/3rdparty/webkit/WebCore/platform/ContextMenu.cpp
+index 0022a47..5971306 100644
+--- a/src/3rdparty/webkit/WebCore/platform/ContextMenu.cpp
++++ b/src/3rdparty/webkit/WebCore/platform/ContextMenu.cpp
+@@ -263,6 +263,8 @@ void ContextMenu::populate()
+         contextMenuItemTagDownloadLinkToDisk());
+     ContextMenuItem CopyLinkItem(ActionType, ContextMenuItemTagCopyLinkToClipboard, 
+         contextMenuItemTagCopyLinkToClipboard());
++    ContextMenuItem GotoYoutube(ActionType, ContextMenuItemTagGotoYoutubeLink, 
++        contextMenuItemTagGotoYoutubeLink());
+     ContextMenuItem OpenImageInNewWindowItem(ActionType, ContextMenuItemTagOpenImageInNewWindow, 
+         contextMenuItemTagOpenImageInNewWindow());
+     ContextMenuItem DownloadImageItem(ActionType, ContextMenuItemTagDownloadImageToDisk, 
+@@ -766,6 +768,7 @@ void ContextMenu::checkOrEnableIfNeeded(ContextMenuItem& item) const
+         case ContextMenuItemTagOpenLinkInNewWindow:
+         case ContextMenuItemTagDownloadLinkToDisk:
+         case ContextMenuItemTagCopyLinkToClipboard:
++        case ContextMenuItemTagGotoYoutubeLink:
+         case ContextMenuItemTagOpenImageInNewWindow:
+         case ContextMenuItemTagDownloadImageToDisk:
+         case ContextMenuItemTagCopyImageToClipboard:
+diff --git a/src/3rdparty/webkit/WebCore/platform/ContextMenuItem.h b/src/3rdparty/webkit/WebCore/platform/ContextMenuItem.h
+index 88ff0ad..f110fc5 100644
+--- a/src/3rdparty/webkit/WebCore/platform/ContextMenuItem.h
++++ b/src/3rdparty/webkit/WebCore/platform/ContextMenuItem.h
+@@ -144,7 +144,8 @@ namespace WebCore {
+         ContextMenuItemTagChangeBack,
+ #endif
+         ContextMenuItemBaseCustomTag = 5000,
+-        ContextMenuItemBaseApplicationTag = 10000
++        ContextMenuItemBaseApplicationTag = 10000,
++        ContextMenuItemTagGotoYoutubeLink
+     };
+     enum ContextMenuItemType {
+diff --git a/src/3rdparty/webkit/WebCore/platform/LocalizedStrings.h b/src/3rdparty/webkit/WebCore/platform/LocalizedStrings.h
+index 924ca22..ee62d0d 100644
+--- a/src/3rdparty/webkit/WebCore/platform/LocalizedStrings.h
++++ b/src/3rdparty/webkit/WebCore/platform/LocalizedStrings.h
+@@ -42,6 +42,7 @@ namespace WebCore {
+     String contextMenuItemTagOpenLinkInNewWindow();
+     String contextMenuItemTagDownloadLinkToDisk();
+     String contextMenuItemTagCopyLinkToClipboard();
++    String contextMenuItemTagGotoYoutubeLink();
+     String contextMenuItemTagOpenImageInNewWindow();
+     String contextMenuItemTagDownloadImageToDisk();
+     String contextMenuItemTagCopyImageToClipboard();
+diff --git a/src/3rdparty/webkit/WebCore/platform/qt/Localizations.cpp b/src/3rdparty/webkit/WebCore/platform/qt/Localizations.cpp
+index db6c9d4..25648a9 100644
+--- a/src/3rdparty/webkit/WebCore/platform/qt/Localizations.cpp
++++ b/src/3rdparty/webkit/WebCore/platform/qt/Localizations.cpp
+@@ -90,6 +90,11 @@ String contextMenuItemTagCopyLinkToClipboard()
+     return QCoreApplication::translate("QWebPage", "Copy Link", "Copy Link context menu item");
+ }
++String contextMenuItemTagGotoYoutubeLink()
++{
++    return QCoreApplication::translate("QWebPage", "Open Youtube", "Open Youtube context menu item");
++}
++
+ String contextMenuItemTagOpenImageInNewWindow()
+ {
+     return QCoreApplication::translate("QWebPage", "Open Image", "Open Image in New Window context menu item");
+diff --git a/src/3rdparty/webkit/WebKit/qt/Api/qwebpage.cpp b/src/3rdparty/webkit/WebKit/qt/Api/qwebpage.cpp
+index 5bb3c57..9c9981e 100644
+--- a/src/3rdparty/webkit/WebKit/qt/Api/qwebpage.cpp
++++ b/src/3rdparty/webkit/WebKit/qt/Api/qwebpage.cpp
+@@ -396,7 +396,8 @@ static const char* editorCommandWebActions[] =
+     "AlignLeft", // AlignLeft,
+     "AlignRight", // AlignRight,
+-    0 // WebActionCount
++    0, // WebActionCount
++    "GotoYoutubeLink"
+ };
+ // Lookup the appropriate editor command to use for WebAction \a action
+@@ -535,6 +536,7 @@ static QWebPage::WebAction webActionForContextMenuAction(WebCore::ContextMenuAct
+         case WebCore::ContextMenuItemTagOpenLinkInNewWindow: return QWebPage::OpenLinkInNewWindow;
+         case WebCore::ContextMenuItemTagDownloadLinkToDisk: return QWebPage::DownloadLinkToDisk;
+         case WebCore::ContextMenuItemTagCopyLinkToClipboard: return QWebPage::CopyLinkToClipboard;
++        case WebCore::ContextMenuItemTagGotoYoutubeLink: return QWebPage::GotoYoutubeLink;
+         case WebCore::ContextMenuItemTagOpenImageInNewWindow: return QWebPage::OpenImageInNewWindow;
+         case WebCore::ContextMenuItemTagDownloadImageToDisk: return QWebPage::DownloadImageToDisk;
+         case WebCore::ContextMenuItemTagCopyImageToClipboard: return QWebPage::CopyImageToClipboard;
+@@ -2225,6 +2227,53 @@ static void collectChildFrames(QWebFrame* frame, QList<QWebFrame*>& list)
+     \sa action()
+ */
++#include <string.h>
++#include <unistd.h>
++#include <sys/un.h>
++#include <sys/types.h>
++#include <arpa/inet.h>
++#include "qscreen_qws.h"
++
++#define BUFF_SIZE     1024
++#define FILE_SERVER   "/tmp/vuplus.tmp"
++int uds_send_message(char* buffer)
++{
++    int message_len;
++    int client_socket;
++    struct sockaddr_un server_addr;
++
++    if(buffer == 0)
++    {
++        qDebug("[buffer is NULL]");
++        return 0;
++    }
++
++    if((client_socket  = socket( PF_FILE, SOCK_STREAM, 0)) < 0)
++    {
++        qDebug("[fail to open socket]");
++        return 0;
++    }
++    memset(&server_addr, 0, sizeof(server_addr));
++    strcpy(server_addr.sun_path, FILE_SERVER);
++    server_addr.sun_family = AF_UNIX;
++    if(connect(client_socket, (struct sockaddr*)&server_addr, sizeof(server_addr)) < 0)
++    {
++        qDebug("[fail to connect][%s]", FILE_SERVER);
++        return 0;
++    }
++
++    Singleton<CVu>::instance().lock();
++
++    write(client_socket, buffer, strlen(buffer));
++    int rc = read (client_socket, buffer, BUFF_SIZE);
++    buffer[rc] = 0;
++
++    Singleton<CVu>::instance().unlock();
++
++    close(client_socket);
++    return 1;
++}
++
+ void QWebPage::triggerAction(WebAction action, bool)
+ {
+     WebCore::Frame *frame = d->page->focusController()->focusedOrMainFrame();
+@@ -2263,6 +2312,19 @@ void QWebPage::triggerAction(WebAction action, bool)
+             editor->copyURL(d->hitTestResult.linkUrl(), d->hitTestResult.linkText());
+             break;
+         }
++        case GotoYoutubeLink: {
++            char tmp[BUFF_SIZE] = {0};
++            String url_string = KURL(d->hitTestResult.linkUrl()).string();
++            UChar* url_wide_string = url_string.characters();
++            for(int i=0 ; i<url_string.length() ; i++)
++                tmp[i] = (url_wide_string[i]&0x00FF);
++            int rc = uds_send_message(tmp);
++            if(rc) 
++                if(strncmp(tmp, "ok$", 3) != 0)
++                    if(strlen(tmp) > 4)
++                        qDebug("[%s]", &tmp[4]);
++            break;
++        }
+         case OpenImageInNewWindow:
+             openNewWindow(d->hitTestResult.imageUrl(), frame);
+             break;
+@@ -2493,7 +2555,9 @@ QAction *QWebPage::action(WebAction action) const
+         case CopyLinkToClipboard:
+             text = contextMenuItemTagCopyLinkToClipboard();
+             break;
+-
++        case GotoYoutubeLink:
++            text = contextMenuItemTagGotoYoutubeLink();
++            break;
+         case OpenImageInNewWindow:
+             text = contextMenuItemTagOpenImageInNewWindow();
+             break;
+diff --git a/src/3rdparty/webkit/WebKit/qt/Api/qwebpage.h b/src/3rdparty/webkit/WebKit/qt/Api/qwebpage.h
+index 34f675b..dfd8a06 100644
+--- a/src/3rdparty/webkit/WebKit/qt/Api/qwebpage.h
++++ b/src/3rdparty/webkit/WebKit/qt/Api/qwebpage.h
+@@ -171,7 +171,8 @@ public:
+         StopScheduledPageRefresh,
+-        WebActionCount
++        WebActionCount,
++        GotoYoutubeLink
+     };
+     enum FindFlag {
+diff --git a/src/gui/embedded/qmousepc_qws.cpp b/src/gui/embedded/qmousepc_qws.cpp
+index 5d3b182..0af16e7 100644
+--- a/src/gui/embedded/qmousepc_qws.cpp
++++ b/src/gui/embedded/qmousepc_qws.cpp
+@@ -484,6 +484,7 @@ public:
+     void suspend();
+     void resume();
++    static void readMouseDataE(void*, int);
+ private:
+     enum { max_dev=32 };
+@@ -494,6 +495,7 @@ private:
+ private slots:
+     void readMouseData(int);
++    void readMouseDataNone(int);
+ private:
+     void openDevices();
+@@ -733,18 +735,34 @@ void QWSPcMouseHandlerPrivate::resume()
+         notifiers.at(i)->setEnabled(true);
+ }
+-
++#include "qscreen_qws.h"
++void QWSPcMouseHandlerPrivate::readMouseDataE(void* d, int fd)
++{
++    QWSPcMouseHandlerPrivate* dd = (QWSPcMouseHandlerPrivate*)d;
++    dd->readMouseData(fd);
++}
++void QWSPcMouseHandlerPrivate::readMouseDataNone(int fd)
++{
++}
+ void QWSPcMouseHandlerPrivate::notify(int fd)
+ {
++    Singleton<CVu>::instance().setMouseHandler(fd, (void*)this, QWSPcMouseHandlerPrivate::readMouseDataE);
+     QSocketNotifier *mouseNotifier
+         = new QSocketNotifier(fd, QSocketNotifier::Read, this);
+-    connect(mouseNotifier, SIGNAL(activated(int)),this, SLOT(readMouseData(int)));
++    connect(mouseNotifier, SIGNAL(activated(int)),this, SLOT(readMouseDataNone(int)));
+     notifiers.append(mouseNotifier);
+ }
+ void QWSPcMouseHandlerPrivate::readMouseData(int fd)
+ {
++    if(Singleton<CVu>::instance().isLocked())
++    {
++        uchar buf[8];
++        while(read(fd, buf, 8) > 0);
++        return;
++    }
++
+     for (;;) {
+         uchar buf[8];
+         int n = read(fd, buf, 8);
+diff --git a/src/gui/embedded/qscreen_qws.cpp b/src/gui/embedded/qscreen_qws.cpp
+index d55fbed..5e7af34 100644
+--- a/src/gui/embedded/qscreen_qws.cpp
++++ b/src/gui/embedded/qscreen_qws.cpp
+@@ -2029,6 +2029,22 @@ QImage::Format QScreenPrivate::preferredImageFormat() const
+     server to connect to. The \a classId specifies the class
+     identifier.
+ */
++
++#include <stdio.h>
++#include <stdlib.h>
++#include <fcntl.h>
++#include <unistd.h>
++#include <sys/ioctl.h>
++#include <linux/fb.h>
++
++typedef unsigned char __u8;
++#ifndef FBIO_BLIT
++#define FBIO_SET_MANUAL_BLIT _IOW('F', 0x21, __u8)
++#define FBIO_BLIT 0x22
++#endif
++
++static int fd = -1;
++
+ QScreen::QScreen(int display_id, ClassId classId)
+     : screencols(0), data(0), entries(0), entryp(0), lowest(0),
+       w(0), lstep(0), h(0), d(1), pixeltype(NormalPixel), grayscale(false),
+@@ -2036,6 +2052,14 @@ QScreen::QScreen(int display_id, ClassId classId)
+       physWidth(0), physHeight(0), d_ptr(new QScreenPrivate(this, classId))
+ {
+     clearCacheFunc = 0;
++    if(fd < 0) 
++    {
++        unsigned char tmp = 1;
++        fd = open("/dev/fb0", O_RDWR);
++        if(fd<0) fprintf(stderr, "ERR : fail to opne <fb0>\n");
++        if(ioctl(fd, FBIO_SET_MANUAL_BLIT, &tmp) < 0)
++            fprintf(stderr, "ERR : fail to enable manual blit\n");
++    }
+ }
+ QScreen::QScreen(int display_id)
+@@ -2045,6 +2069,14 @@ QScreen::QScreen(int display_id)
+       physWidth(0), physHeight(0), d_ptr(new QScreenPrivate(this))
+ {
+     clearCacheFunc = 0;
++    if(fd < 0) 
++    {
++        unsigned char tmp = 1;
++        fd = open("/dev/fb0", O_RDWR);
++        if(fd<0) fprintf(stderr, "ERR : fail to opne <fb0>\n");
++        if(ioctl(fd, FBIO_SET_MANUAL_BLIT, &tmp) < 0)
++            fprintf(stderr, "ERR : fail to enable manual blit\n");
++    }
+ }
+ /*!
+@@ -2053,6 +2085,13 @@ QScreen::QScreen(int display_id)
+ QScreen::~QScreen()
+ {
++    if(fd >= 0) 
++    {
++        unsigned char tmp = 0;
++        if(ioctl(fd, FBIO_SET_MANUAL_BLIT, &tmp) < 0)
++            fprintf(stderr, "ERR : fail to disable manual blit\n");
++        close(fd);
++    }
+     delete d_ptr;
+ }
+@@ -2498,6 +2537,11 @@ void QScreen::blit(const QImage &img, const QPoint &topLeft, const QRegion &reg)
+     d_ptr->blit(this, img, topLeft - offset(),
+             (reg & bound).translated(-topLeft));
+     QWSDisplay::ungrab();
++    if(fd >= 0) 
++    {
++        if (ioctl(fd, FBIO_BLIT) < 0)
++            fprintf(stderr, "ERR : FBIO_BLIT\n");
++    }
+ }
+ #ifdef QT_QWS_CLIENTBLIT
+@@ -2581,6 +2625,7 @@ struct fill_data {
+ void QScreen::solidFill(const QColor &color, const QRegion &region)
+ {
+     QWSDisplay::grab();
++    color.setAlpha(0);
+     d_ptr->solidFill(this, color,
+                      region.translated(-offset()) & QRect(0, 0, dw, dh));
+     QWSDisplay::ungrab();
+diff --git a/src/gui/embedded/qscreen_qws.h b/src/gui/embedded/qscreen_qws.h
+index c2f8010..5488536 100644
+--- a/src/gui/embedded/qscreen_qws.h
++++ b/src/gui/embedded/qscreen_qws.h
+@@ -82,6 +82,132 @@ static const int qt_red_rounding_shift = qt_red_shift + qt_rbits;
+ static const int qt_green_rounding_shift = qt_green_shift + qt_gbits;
+ static const int qt_blue_rounding_shift = qt_bbits - qt_neg_blue_shift;
++#include <stdio.h>
++#define KLOG(f,x...)
++//#define KLOG(f,x...) fprintf(stderr, "CVu :: [%s][%d]\t>> "f"\n", __FUNCTION__, __LINE__, x);
++template <class T>
++class Singleton : private T
++{
++private:
++    Singleton(){};
++    ~Singleton(){};
++    Singleton(const Singleton&);
++    Singleton& operator=(const Singleton&);
++
++public:
++    static T& instance()
++    {
++        // locking here!!
++        static Singleton<T> singleton;
++        return singleton;
++    }
++};
++
++#include <unistd.h>
++#include <stdlib.h>
++#include <string.h>
++#include <pthread.h>
++struct mouse_set_ {
++    int   fd;
++    void* h;
++    void  (*cb)(void*, int);
++};
++
++struct keyboard_set_ {
++    int   fd;
++    void* h;
++    void  (*cb)(void*);
++};
++
++#include <sys/poll.h> 
++#include <sys/types.h> 
++#include <sys/stat.h> 
++
++class CVu
++{
++private:
++    int key;
++
++    struct mouse_set_ mouse;
++    struct keyboard_set_ keyboard;
++      
++    int thread_status;
++    pthread_t h_thread;
++
++    struct pollfd device_fds[2];
++protected:
++    CVu()
++    {
++        key = 0;
++        thread_status = 0;
++        memset((void*)&mouse, 0, sizeof(struct mouse_set_));
++        memset((void*)&keyboard, 0, sizeof(struct keyboard_set_));
++
++        device_fds[0].fd = device_fds[1].fd = -1;
++        device_fds[0].events = device_fds[1].events = POLLIN;
++    };
++
++    static void* thread_main(void* args)
++    {
++        CVu* thiz = (CVu*) args;
++        struct pollfd* fds = thiz->getDevices();
++
++        qDebug("input control thread start");
++        KLOG("[%ld]", thiz->getTid());
++        while(thiz->isRunable())
++        {
++            if((fds[0].fd==-1) && (fds[1].fd==-1))
++            {
++                qDebug("pease, setting handler before start thread.", 0);
++                break;
++            }
++            thiz->runHandler(fds);
++        }
++        qDebug("input control thread stop");
++        KLOG("[%ld]", thiz->getTid());
++        return 0;
++    }
++
++    void runHandler(struct pollfd* fds) 
++    {
++        poll(fds, 2, 2000);
++        if((fds[0].revents & POLLIN) && mouse.cb)
++            mouse.cb(mouse.h, mouse.fd);
++        if((fds[1].revents & POLLIN) && keyboard.cb)
++            keyboard.cb(keyboard.h);
++    }
++
++public:
++    void lock()    { KLOG("%d", key); key = 1; }
++    void unlock()  { KLOG("%d", key); key = 0; }
++    int isLocked() { KLOG("%d", key); return key; }
++
++    void setMouseHandler(int fd, void* h, void (*func)(void*, int)) 
++    {
++        mouse.h = h;
++        mouse.cb = func;
++        mouse.fd = device_fds[0].fd = fd;
++    }
++    void setKeyboardHandler(int fd, void* h, void (*func)(void*)) 
++    {
++        keyboard.h = h;
++        keyboard.cb = func;
++        keyboard.fd = device_fds[1].fd = fd;
++    }
++
++    void stop() { thread_status = 0; }
++    void start() 
++    { 
++        thread_status = 1; 
++        if(pthread_create(&h_thread, NULL, CVu::thread_main, (void*)this) != 0)
++            qDebug("fail to start input control thread!!", 0);
++    }
++    int isRunable()    { return thread_status; }
++    pthread_t getTid() { return h_thread; }
++
++    struct pollfd* getDevices() { return device_fds; }
++};
++
+ inline ushort qt_convRgbTo16(const int r, const int g, const int b)
+ {
+diff --git a/src/gui/embedded/qwindowsystem_qws.cpp b/src/gui/embedded/qwindowsystem_qws.cpp
+index 0e4e27c..dffb4f5 100644
+--- a/src/gui/embedded/qwindowsystem_qws.cpp
++++ b/src/gui/embedded/qwindowsystem_qws.cpp
+@@ -1360,6 +1360,7 @@ bool QWSServerPrivate::screensaverblockevent( int index, int *screensaverinterva
+     return ignoreEvents[index];
+ }
++#include "qscreen_qws.h"
+ void QWSServerPrivate::initServer(int flags)
+ {
+     Q_Q(QWSServer);
+@@ -1444,6 +1445,7 @@ void QWSServerPrivate::initServer(int flags)
+         q->openKeyboard();
+     }
+ #endif
++    Singleton<CVu>::instance().start();
+ #if !defined(QT_NO_SOUND) && !defined(QT_EXTERNAL_SOUND_SERVER) && !defined(Q_OS_DARWIN)
+     soundserver = new QWSSoundServer(q);
+@@ -4073,6 +4075,7 @@ void QWSServer::startup(int flags)
+ void QWSServer::closedown()
+ {
++    qDebug("--done--");
+     QScopedPointer<QWSServer> server(qwsServer);
+     qwsServer = 0;
+     QT_TRY {
+diff --git a/src/gui/kernel/qdesktopwidget_qws.cpp b/src/gui/kernel/qdesktopwidget_qws.cpp
+index 50ccb9f..da0dafa 100644
+--- a/src/gui/kernel/qdesktopwidget_qws.cpp
++++ b/src/gui/kernel/qdesktopwidget_qws.cpp
+@@ -102,7 +102,12 @@ const QRect QDesktopWidget::availableGeometry(int screenNo) const
+     if (!r.isEmpty())
+         return r;
+-    return screen->region().boundingRect();
++    QRect r2 = screen->region().boundingRect();
++    r2.setLeft(r2.left()+50);
++    r2.setTop(r2.top()+30);
++    r2.setRight(r2.right()-50);
++    r2.setBottom(r2.bottom()-30);
++    return r2;
+ }
+ const QRect QDesktopWidget::screenGeometry(int screenNo) const
index 3388035..d6e12bc 100644 (file)
@@ -32,8 +32,7 @@ S = "${WORKDIR}/qt-embedded-linux-opensource-src-${PV}"
 
 QT_CONFIG_FLAGS += " \
     -qtlibinfix ${QT_LIBINFIX} \
-    -plugin-gfx-transformed -plugin-gfx-qvfb -plugin-gfx-vnc -plugin-gfx-directfb \
-    -plugin-mouse-tslib -qt-mouse-pc -qt-mouse-qvfb -qt-mouse-linuxinput \
+    -qt-mouse-pc -qt-mouse-linuxinput \
     -qt-kbd-tty -qt-kbd-linuxinput \
     -DQT_KEYPAD_NAVIGATION \
     "
index 047ac97..8a3c337 100644 (file)
@@ -16,6 +16,6 @@ QT_CONFIG_FLAGS += " \
  -exceptions \
 "
 
-PR .= "-dream2"
+PR .= "-vuplus"
 
 QT_CONFIG_FLAGS := "${@oe_filter_out('^(-webkit)$', '${QT_CONFIG_FLAGS}', d)} -no-webkit"
index b37e7ff..e0ac974 100644 (file)
@@ -9,8 +9,8 @@ QT_ENDIAN = "${@qt_endian(d)}"
 QT_CONFIG_FLAGS += "-release -no-cups -no-accessibility -reduce-relocations \
                     -shared -no-nas-sound -no-sm -no-nis \
                     -qt-gif -system-libjpeg -system-libpng -system-zlib \
-                    -no-sql-ibase -plugin-sql-mysql -no-sql-odbc -plugin-sql-psql -plugin-sql-sqlite -plugin-sql-sqlite2 \
-                    -no-pch -qdbus -stl -glib -phonon -webkit"
+                    -no-sql-ibase -no-sql-mysql -no-sql-odbc -no-sql-psql -no-sql-sqlite -no-sql-sqlite2 \
+                    -no-pch -qdbus -stl -glib -no-phonon -webkit"
 
 EXTRA_OEMAKE = "-e"
 
diff --git a/recipes/webkit/files/arora b/recipes/webkit/files/arora
new file mode 100755 (executable)
index 0000000..e5d9b39
Binary files /dev/null and b/recipes/webkit/files/arora differ
diff --git a/recipes/webkit/files/qtwebkit_vuplus.patch b/recipes/webkit/files/qtwebkit_vuplus.patch
new file mode 100644 (file)
index 0000000..bd1d451
--- /dev/null
@@ -0,0 +1,270 @@
+diff --git a/Source/WebCore/page/ContextMenuController.cpp b/Source/WebCore/page/ContextMenuController.cpp
+index 923d2ce..556c8cd 100644
+--- a/Source/WebCore/page/ContextMenuController.cpp
++++ b/Source/WebCore/page/ContextMenuController.cpp
+@@ -195,6 +195,8 @@ void ContextMenuController::contextMenuItemSelected(ContextMenuItem* item)
+     case ContextMenuItemTagCopyLinkToClipboard:
+         frame->editor()->copyURL(m_hitTestResult.absoluteLinkURL(), m_hitTestResult.textContent());
+         break;
++    case ContextMenuItemTagGotoYoutubeLink:
++        break;
+     case ContextMenuItemTagOpenImageInNewWindow:
+         openNewWindow(m_hitTestResult.absoluteImageURL(), frame);
+         break;
+@@ -625,6 +627,8 @@ void ContextMenuController::populate()
+         contextMenuItemTagDownloadLinkToDisk());
+     ContextMenuItem CopyLinkItem(ActionType, ContextMenuItemTagCopyLinkToClipboard, 
+         contextMenuItemTagCopyLinkToClipboard());
++    ContextMenuItem GotoYoutube(ActionType, ContextMenuItemTagGotoYoutubeLink, 
++        contextMenuItemTagGotoYoutubeLink());
+     ContextMenuItem OpenImageInNewWindowItem(ActionType, ContextMenuItemTagOpenImageInNewWindow, 
+         contextMenuItemTagOpenImageInNewWindow());
+     ContextMenuItem DownloadImageItem(ActionType, ContextMenuItemTagDownloadImageToDisk, 
+@@ -1172,6 +1176,7 @@ void ContextMenuController::checkOrEnableIfNeeded(ContextMenuItem& item) const
+         case ContextMenuItemTagOpenLinkInNewWindow:
+         case ContextMenuItemTagDownloadLinkToDisk:
+         case ContextMenuItemTagCopyLinkToClipboard:
++              case ContextMenuItemTagGotoYoutubeLink:
+         case ContextMenuItemTagOpenImageInNewWindow:
+         case ContextMenuItemTagDownloadImageToDisk:
+         case ContextMenuItemTagCopyImageToClipboard:
+diff --git a/Source/WebCore/platform/ContextMenuItem.h b/Source/WebCore/platform/ContextMenuItem.h
+index 46a6987..bcab2c4 100644
+--- a/Source/WebCore/platform/ContextMenuItem.h
++++ b/Source/WebCore/platform/ContextMenuItem.h
+@@ -158,6 +158,7 @@ namespace WebCore {
+         ContextMenuItemTagEnterVideoFullscreen,
+         ContextMenuItemTagMediaPlayPause,
+         ContextMenuItemTagMediaMute,
++        ContextMenuItemTagGotoYoutubeLink,
+         ContextMenuItemBaseCustomTag = 5000,
+         ContextMenuItemCustomTagNoAction = 5998,
+         ContextMenuItemLastCustomTag = 5999,
+diff --git a/Source/WebCore/platform/DefaultLocalizationStrategy.cpp b/Source/WebCore/platform/DefaultLocalizationStrategy.cpp
+index 4c11f29..1dab43d 100644
+--- a/Source/WebCore/platform/DefaultLocalizationStrategy.cpp
++++ b/Source/WebCore/platform/DefaultLocalizationStrategy.cpp
+@@ -150,6 +150,11 @@ String DefaultLocalizationStrategy::contextMenuItemTagCopyLinkToClipboard()
+     return WEB_UI_STRING("Copy Link", "Copy Link context menu item");
+ }
++String DefaultLocalizationStrategy::contextMenuItemTagGotoYoutubeLink()
++{
++    return WEB_UI_STRING("Open Youtube", "Open Youtube context menu item");
++}
++
+ String DefaultLocalizationStrategy::contextMenuItemTagOpenImageInNewWindow()
+ {
+     return WEB_UI_STRING("Open Image in New Window", "Open Image in New Window context menu item");
+diff --git a/Source/WebCore/platform/DefaultLocalizationStrategy.h b/Source/WebCore/platform/DefaultLocalizationStrategy.h
+index 56120e0..3d65344 100644
+--- a/Source/WebCore/platform/DefaultLocalizationStrategy.h
++++ b/Source/WebCore/platform/DefaultLocalizationStrategy.h
+@@ -52,6 +52,7 @@ private:
+     virtual String contextMenuItemTagOpenLinkInNewWindow();
+     virtual String contextMenuItemTagDownloadLinkToDisk();
+     virtual String contextMenuItemTagCopyLinkToClipboard();
++      virtual String contextMenuItemTagGotoYoutubeLink();
+     virtual String contextMenuItemTagOpenImageInNewWindow();
+     virtual String contextMenuItemTagDownloadImageToDisk();
+     virtual String contextMenuItemTagCopyImageToClipboard();
+diff --git a/Source/WebCore/platform/LocalizationStrategy.h b/Source/WebCore/platform/LocalizationStrategy.h
+index f883893..14b322e 100644
+--- a/Source/WebCore/platform/LocalizationStrategy.h
++++ b/Source/WebCore/platform/LocalizationStrategy.h
+@@ -53,6 +53,7 @@ public:
+     virtual String contextMenuItemTagOpenLinkInNewWindow() = 0;
+     virtual String contextMenuItemTagDownloadLinkToDisk() = 0;
+     virtual String contextMenuItemTagCopyLinkToClipboard() = 0;
++      virtual String contextMenuItemTagGotoYoutubeLink() = 0;
+     virtual String contextMenuItemTagOpenImageInNewWindow() = 0;
+     virtual String contextMenuItemTagDownloadImageToDisk() = 0;
+     virtual String contextMenuItemTagCopyImageToClipboard() = 0;
+diff --git a/Source/WebCore/platform/LocalizedStrings.cpp b/Source/WebCore/platform/LocalizedStrings.cpp
+index f5ad0b7..861be70 100644
+--- a/Source/WebCore/platform/LocalizedStrings.cpp
++++ b/Source/WebCore/platform/LocalizedStrings.cpp
+@@ -94,6 +94,11 @@ String contextMenuItemTagCopyLinkToClipboard()
+     return platformStrategies()->localizationStrategy()->contextMenuItemTagCopyLinkToClipboard();
+ }
++String contextMenuItemTagGotoYoutubeLink()
++{
++    return platformStrategies()->localizationStrategy()->contextMenuItemTagGotoYoutubeLink();
++}
++
+ String contextMenuItemTagOpenImageInNewWindow()
+ {
+     return platformStrategies()->localizationStrategy()->contextMenuItemTagOpenImageInNewWindow();
+diff --git a/Source/WebCore/platform/LocalizedStrings.h b/Source/WebCore/platform/LocalizedStrings.h
+index 777fcec..3080831 100644
+--- a/Source/WebCore/platform/LocalizedStrings.h
++++ b/Source/WebCore/platform/LocalizedStrings.h
+@@ -49,6 +49,7 @@ namespace WebCore {
+     String contextMenuItemTagOpenLinkInNewWindow();
+     String contextMenuItemTagDownloadLinkToDisk();
+     String contextMenuItemTagCopyLinkToClipboard();
++      String contextMenuItemTagGotoYoutubeLink();
+     String contextMenuItemTagOpenImageInNewWindow();
+     String contextMenuItemTagDownloadImageToDisk();
+     String contextMenuItemTagCopyImageToClipboard();
+diff --git a/Source/WebKit/chromium/src/LocalizedStrings.cpp b/Source/WebKit/chromium/src/LocalizedStrings.cpp
+index 35e03c4..6dbbfa4 100644
+--- a/Source/WebKit/chromium/src/LocalizedStrings.cpp
++++ b/Source/WebKit/chromium/src/LocalizedStrings.cpp
+@@ -242,6 +242,7 @@ String imageTitle(const String& filename, const IntSize& size)
+ String contextMenuItemTagOpenLinkInNewWindow() { return String(); }
+ String contextMenuItemTagDownloadLinkToDisk() { return String(); }
+ String contextMenuItemTagCopyLinkToClipboard() { return String(); }
++String contextMenuItemTagGotoYoutubeLink() { return String(); }
+ String contextMenuItemTagOpenImageInNewWindow() { return String(); }
+ String contextMenuItemTagDownloadImageToDisk() { return String(); }
+ String contextMenuItemTagCopyImageToClipboard() { return String(); }
+diff --git a/Source/WebKit/qt/Api/qwebpage.cpp b/Source/WebKit/qt/Api/qwebpage.cpp
+index b3efe0f..8860ba8 100644
+--- a/Source/WebKit/qt/Api/qwebpage.cpp
++++ b/Source/WebKit/qt/Api/qwebpage.cpp
+@@ -247,7 +247,8 @@ static const char* editorCommandWebActions[] =
+     0, // CopyImageUrlToClipboard,
+-    0 // WebActionCount
++    0, // WebActionCount
++    0  // GotoYoutubeLink
+ };
+ // Lookup the appropriate editor command to use for WebAction \a action
+@@ -436,6 +437,7 @@ static QWebPage::WebAction webActionForContextMenuAction(WebCore::ContextMenuAct
+         case WebCore::ContextMenuItemTagOpenLinkInNewWindow: return QWebPage::OpenLinkInNewWindow;
+         case WebCore::ContextMenuItemTagDownloadLinkToDisk: return QWebPage::DownloadLinkToDisk;
+         case WebCore::ContextMenuItemTagCopyLinkToClipboard: return QWebPage::CopyLinkToClipboard;
++              case WebCore::ContextMenuItemTagGotoYoutubeLink: return QWebPage::GotoYoutubeLink;
+         case WebCore::ContextMenuItemTagOpenImageInNewWindow: return QWebPage::OpenImageInNewWindow;
+         case WebCore::ContextMenuItemTagDownloadImageToDisk: return QWebPage::DownloadImageToDisk;
+         case WebCore::ContextMenuItemTagCopyImageToClipboard: return QWebPage::CopyImageToClipboard;
+@@ -2335,6 +2337,53 @@ static void collectChildFrames(QWebFrame* frame, QList<QWebFrame*>& list)
+     \sa action()
+ */
++#include <string.h>
++#include <unistd.h>
++#include <sys/un.h>
++#include <sys/types.h>
++#include <arpa/inet.h>
++#include "qscreen_qws.h"
++
++#define BUFF_SIZE     1024
++#define FILE_SERVER   "/tmp/vuplus.tmp"
++int uds_send_message(char* buffer)
++{
++    int message_len;
++    int client_socket;
++    struct sockaddr_un server_addr;
++
++    if(buffer == 0)
++    {
++        qDebug("[buffer is NULL]");
++        return 0;
++    }
++
++    if((client_socket  = socket( PF_FILE, SOCK_STREAM, 0)) < 0)
++    {
++        qDebug("[fail to open socket]");
++        return 0;
++    }
++    memset(&server_addr, 0, sizeof(server_addr));
++    strcpy(server_addr.sun_path, FILE_SERVER);
++    server_addr.sun_family = AF_UNIX;
++    if(connect(client_socket, (struct sockaddr*)&server_addr, sizeof(server_addr)) < 0)
++    {
++        qDebug("[fail to connect][%s]", FILE_SERVER);
++        return 0;
++    }
++
++    Singleton<CVu>::instance().lock();
++
++    write(client_socket, buffer, strlen(buffer));
++    int rc = read (client_socket, buffer, BUFF_SIZE);
++    buffer[rc] = 0;
++
++    Singleton<CVu>::instance().unlock();
++
++    close(client_socket);
++    return 1;
++}
++
+ void QWebPage::triggerAction(WebAction action, bool)
+ {
+     WebCore::Frame *frame = d->page->focusController()->focusedOrMainFrame();
+@@ -2373,6 +2422,19 @@ void QWebPage::triggerAction(WebAction action, bool)
+             editor->copyURL(d->hitTestResult.linkUrl(), d->hitTestResult.linkText());
+             break;
+         }
++        case GotoYoutubeLink: {
++            char tmp[BUFF_SIZE] = {0};
++            String url_string = KURL(d->hitTestResult.linkUrl()).string();
++            UChar* url_wide_string = url_string.characters();
++            for(int i=0 ; i<url_string.length() ; i++)
++                tmp[i] = (url_wide_string[i]&0x00FF);
++            int rc = uds_send_message(tmp);
++            if(rc) 
++                if(strncmp(tmp, "ok$", 3) != 0)
++                    if(strlen(tmp) > 4)
++                        qDebug("[%s]", &tmp[4]);
++            break;
++        }
+         case OpenImageInNewWindow:
+             openNewWindow(d->hitTestResult.imageUrl(), frame);
+             break;
+@@ -2767,6 +2829,9 @@ QAction *QWebPage::action(WebAction action) const
+         case CopyLinkToClipboard:
+             text = contextMenuItemTagCopyLinkToClipboard();
+             break;
++        case GotoYoutubeLink:
++            text = contextMenuItemTagGotoYoutubeLink();
++            break;
+         case OpenImageInNewWindow:
+             text = contextMenuItemTagOpenImageInNewWindow();
+diff --git a/Source/WebKit/qt/Api/qwebpage.h b/Source/WebKit/qt/Api/qwebpage.h
+index f1f481b..502edc1 100644
+--- a/Source/WebKit/qt/Api/qwebpage.h
++++ b/Source/WebKit/qt/Api/qwebpage.h
+@@ -180,7 +180,8 @@ public:
+         CopyImageUrlToClipboard,
+-        WebActionCount
++        WebActionCount,
++        GotoYoutubeLink
+     };
+     enum FindFlag {
+diff --git a/Source/WebKit/qt/WebCoreSupport/WebPlatformStrategies.cpp b/Source/WebKit/qt/WebCoreSupport/WebPlatformStrategies.cpp
+index 182fe38..c1d8a4e 100644
+--- a/Source/WebKit/qt/WebCoreSupport/WebPlatformStrategies.cpp
++++ b/Source/WebKit/qt/WebCoreSupport/WebPlatformStrategies.cpp
+@@ -197,6 +197,11 @@ String WebPlatformStrategies::contextMenuItemTagCopyLinkToClipboard()
+     return QCoreApplication::translate("QWebPage", "Copy Link", "Copy Link context menu item");
+ }
++String WebPlatformStrategies::contextMenuItemTagGotoYoutubeLink()
++{
++    return QCoreApplication::translate("QWebPage", "Open Youtube", "Open Youtube context menu item");
++}
++
+ String WebPlatformStrategies::contextMenuItemTagOpenImageInNewWindow()
+ {
+     return QCoreApplication::translate("QWebPage", "Open Image", "Open Image in New Window context menu item");
+diff --git a/Source/WebKit/qt/WebCoreSupport/WebPlatformStrategies.h b/Source/WebKit/qt/WebCoreSupport/WebPlatformStrategies.h
+index b74af39..125406a 100644
+--- a/Source/WebKit/qt/WebCoreSupport/WebPlatformStrategies.h
++++ b/Source/WebKit/qt/WebCoreSupport/WebPlatformStrategies.h
+@@ -69,6 +69,7 @@ private:
+     virtual WTF::String contextMenuItemTagOpenLinkInNewWindow();
+     virtual WTF::String contextMenuItemTagDownloadLinkToDisk();
+     virtual WTF::String contextMenuItemTagCopyLinkToClipboard();
++    virtual WTF::String contextMenuItemTagGotoYoutubeLink();
+     virtual WTF::String contextMenuItemTagOpenImageInNewWindow();
+     virtual WTF::String contextMenuItemTagDownloadImageToDisk();
+     virtual WTF::String contextMenuItemTagCopyImageToClipboard();
index 02aa860..9557a18 100644 (file)
@@ -6,6 +6,7 @@ PR = "${INC_PR}.0"
 SRC_URI = " \
         http://pkgs.fedoraproject.org/repo/pkgs/qtwebkit/qtwebkit-2.2.0-rc1.tar.xz/5c1581052ad5bb7aed07a1798a340061/qtwebkit-2.2.0-rc1.tar.xz \
         file://0001-Qt-Fix-build-with-QT_LIBINFIX.patch;patch=1 \
+        file://qtwebkit_vuplus.patch;patch=1 \
 "
 
 S = "${WORKDIR}/webkit-qtwebkit"
diff --git a/recipes/webkit/vuplus-webbrowser-utils.bb b/recipes/webkit/vuplus-webbrowser-utils.bb
new file mode 100755 (executable)
index 0000000..38ca61e
--- /dev/null
@@ -0,0 +1,18 @@
+DESCRIPTION = "arora webbrowser binary"
+PV = "0.10.1"
+PR = "r0"
+
+DEPENDS = "qtwebkit-e"
+
+SRC_URI = "file://arora"
+
+S = "${WORKDIR}/vuplus-webbrowser-utils"
+
+do_configure() {
+       mv ${WORKDIR}/arora ${S}
+}
+
+do_install() {
+       install -d ${D}/${bindir};
+       install -m 0755 arora ${D}/${bindir};
+}