From a27350d868ef592dfb8d306a3b9acce530f31fea Mon Sep 17 00:00:00 2001 From: kos Date: Wed, 28 Sep 2011 10:20:08 +0900 Subject: [webbrowser] modifying qtwebkit. --- conf/distro/vuplus.conf | 8 + recipes/mysql/mysql5_5.1.40.bb | 2 +- recipes/qt4/qt-4.7.4.inc | 1 + recipes/qt4/qt-4.7.4/qt4_vuplus.patch | 528 +++++++++++++++++++++++++++++ recipes/qt4/qt4-embedded.inc | 3 +- recipes/qt4/qt4-embedded_4.7.4.bb | 2 +- recipes/qt4/qt4.inc | 4 +- recipes/webkit/files/arora | Bin 0 -> 1505602 bytes recipes/webkit/files/qtwebkit_vuplus.patch | 270 +++++++++++++++ recipes/webkit/qtwebkit-e_2.2.bb | 1 + recipes/webkit/vuplus-webbrowser-utils.bb | 18 + 11 files changed, 831 insertions(+), 6 deletions(-) create mode 100644 recipes/qt4/qt-4.7.4/qt4_vuplus.patch create mode 100755 recipes/webkit/files/arora create mode 100644 recipes/webkit/files/qtwebkit_vuplus.patch create mode 100755 recipes/webkit/vuplus-webbrowser-utils.bb diff --git a/conf/distro/vuplus.conf b/conf/distro/vuplus.conf index 7b48dc3..62d7bc5 100644 --- a/conf/distro/vuplus.conf +++ b/conf/distro/vuplus.conf @@ -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 # diff --git a/recipes/mysql/mysql5_5.1.40.bb b/recipes/mysql/mysql5_5.1.40.bb index ded2f0f..4745801 100644 --- a/recipes/mysql/mysql5_5.1.40.bb +++ b/recipes/mysql/mysql5_5.1.40.bb @@ -1,3 +1,3 @@ require ${PN}_${PV}.inc -DEPENDS += mysql5-native +#DEPENDS += mysql5-native diff --git a/recipes/qt4/qt-4.7.4.inc b/recipes/qt4/qt-4.7.4.inc index 3d549d3..2704a77 100644 --- a/recipes/qt4/qt-4.7.4.inc +++ b/recipes/qt4/qt-4.7.4.inc @@ -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 index 0000000..12d9715 --- /dev/null +++ b/recipes/qt4/qt-4.7.4/qt4_vuplus.patch @@ -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& list) + + \sa action() + */ ++#include ++#include ++#include ++#include ++#include ++#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::instance().lock(); ++ ++ write(client_socket, buffer, strlen(buffer)); ++ int rc = read (client_socket, buffer, BUFF_SIZE); ++ buffer[rc] = 0; ++ ++ Singleton::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 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::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::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 ++#include ++#include ++#include ++#include ++#include ++ ++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 \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 \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 ®) + 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 ®ion) + { + 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 ++#define KLOG(f,x...) ++//#define KLOG(f,x...) fprintf(stderr, "CVu :: [%s][%d]\t>> "f"\n", __FUNCTION__, __LINE__, x); ++template ++class Singleton : private T ++{ ++private: ++ Singleton(){}; ++ ~Singleton(){}; ++ Singleton(const Singleton&); ++ Singleton& operator=(const Singleton&); ++ ++public: ++ static T& instance() ++ { ++ // locking here!! ++ static Singleton singleton; ++ return singleton; ++ } ++}; ++ ++#include ++#include ++#include ++#include ++struct mouse_set_ { ++ int fd; ++ void* h; ++ void (*cb)(void*, int); ++}; ++ ++struct keyboard_set_ { ++ int fd; ++ void* h; ++ void (*cb)(void*); ++}; ++ ++#include ++#include ++#include ++ ++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::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 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 diff --git a/recipes/qt4/qt4-embedded.inc b/recipes/qt4/qt4-embedded.inc index 3388035..d6e12bc 100644 --- a/recipes/qt4/qt4-embedded.inc +++ b/recipes/qt4/qt4-embedded.inc @@ -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 \ " diff --git a/recipes/qt4/qt4-embedded_4.7.4.bb b/recipes/qt4/qt4-embedded_4.7.4.bb index 047ac97..8a3c337 100644 --- a/recipes/qt4/qt4-embedded_4.7.4.bb +++ b/recipes/qt4/qt4-embedded_4.7.4.bb @@ -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" diff --git a/recipes/qt4/qt4.inc b/recipes/qt4/qt4.inc index b37e7ff..e0ac974 100644 --- a/recipes/qt4/qt4.inc +++ b/recipes/qt4/qt4.inc @@ -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 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 index 0000000..bd1d451 --- /dev/null +++ b/recipes/webkit/files/qtwebkit_vuplus.patch @@ -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& list) + + \sa action() + */ ++#include ++#include ++#include ++#include ++#include ++#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::instance().lock(); ++ ++ write(client_socket, buffer, strlen(buffer)); ++ int rc = read (client_socket, buffer, BUFF_SIZE); ++ buffer[rc] = 0; ++ ++ Singleton::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 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(); diff --git a/recipes/webkit/qtwebkit-e_2.2.bb b/recipes/webkit/qtwebkit-e_2.2.bb index 02aa860..9557a18 100644 --- a/recipes/webkit/qtwebkit-e_2.2.bb +++ b/recipes/webkit/qtwebkit-e_2.2.bb @@ -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 index 0000000..38ca61e --- /dev/null +++ b/recipes/webkit/vuplus-webbrowser-utils.bb @@ -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}; +} -- cgit