diff options
author | The Android Open Source Project <initial-contribution@android.com> | 2009-03-03 18:28:41 -0800 |
---|---|---|
committer | The Android Open Source Project <initial-contribution@android.com> | 2009-03-03 18:28:41 -0800 |
commit | 648161bb0edfc3d43db63caed5cc5213bc6cb78f (patch) | |
tree | 4b825dc642cb6eb9a060e54bf8d69288fbee4904 /WebKit/qt/QtLauncher | |
parent | a65af38181ac7d34544586bdb5cd004de93897ad (diff) | |
download | external_webkit-648161bb0edfc3d43db63caed5cc5213bc6cb78f.zip external_webkit-648161bb0edfc3d43db63caed5cc5213bc6cb78f.tar.gz external_webkit-648161bb0edfc3d43db63caed5cc5213bc6cb78f.tar.bz2 |
auto import from //depot/cupcake/@135843
Diffstat (limited to 'WebKit/qt/QtLauncher')
-rw-r--r-- | WebKit/qt/QtLauncher/QtLauncher.pro | 10 | ||||
-rw-r--r-- | WebKit/qt/QtLauncher/main.cpp | 353 |
2 files changed, 0 insertions, 363 deletions
diff --git a/WebKit/qt/QtLauncher/QtLauncher.pro b/WebKit/qt/QtLauncher/QtLauncher.pro deleted file mode 100644 index d8c9d51..0000000 --- a/WebKit/qt/QtLauncher/QtLauncher.pro +++ /dev/null @@ -1,10 +0,0 @@ -TEMPLATE = app -SOURCES += main.cpp -CONFIG -= app_bundle -CONFIG += uitools -DESTDIR = ../../../bin - -include(../../../WebKit.pri) - -macx:QT+=xml network -QMAKE_RPATHDIR = $$OUTPUT_DIR/lib $$QMAKE_RPATHDIR diff --git a/WebKit/qt/QtLauncher/main.cpp b/WebKit/qt/QtLauncher/main.cpp deleted file mode 100644 index 4d57e56..0000000 --- a/WebKit/qt/QtLauncher/main.cpp +++ /dev/null @@ -1,353 +0,0 @@ -/* - * Copyright (C) 2008 Nokia Corporation and/or its subsidiary(-ies) - * Copyright (C) 2006 George Staikos <staikos@kde.org> - * Copyright (C) 2006 Dirk Mueller <mueller@kde.org> - * Copyright (C) 2006 Zack Rusin <zack@kde.org> - * Copyright (C) 2006 Simon Hausmann <hausmann@kde.org> - * - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * - * THIS SOFTWARE IS PROVIDED BY APPLE COMPUTER, INC. ``AS IS'' AND ANY - * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE - * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR - * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL APPLE COMPUTER, INC. OR - * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, - * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, - * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR - * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY - * OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE - * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - */ - -#include <qwebpage.h> -#include <qwebview.h> -#include <qwebframe.h> -#include <qwebsettings.h> - -#include <QtGui> -#include <QDebug> -#if QT_VERSION >= 0x040400 && !defined(QT_NO_PRINTER) -#include <QPrintPreviewDialog> -#endif - -#include <QtUiTools/QUiLoader> - -class WebPage : public QWebPage -{ -public: - WebPage(QWidget *parent) : QWebPage(parent) {} - - virtual QWebPage *createWindow(QWebPage::WebWindowType); - virtual QObject* createPlugin(const QString&, const QUrl&, const QStringList&, const QStringList&); -}; - -class MainWindow : public QMainWindow -{ - Q_OBJECT -public: - MainWindow(const QString& url = QString()): currentZoom(100) { - view = new QWebView(this); - setCentralWidget(view); - - view->setPage(new WebPage(view)); - - connect(view, SIGNAL(loadFinished(bool)), - this, SLOT(loadFinished())); - connect(view, SIGNAL(titleChanged(const QString&)), - this, SLOT(setWindowTitle(const QString&))); - connect(view->page(), SIGNAL(linkHovered(const QString&, const QString&, const QString &)), - this, SLOT(showLinkHover(const QString&, const QString&))); - connect(view->page(), SIGNAL(windowCloseRequested()), this, SLOT(deleteLater())); - - setupUI(); - - QUrl qurl = guessUrlFromString(url); - if (qurl.isValid()) { - urlEdit->setText(qurl.toString()); - view->load(qurl); - - // the zoom values are chosen to be like in Mozilla Firefox 3 - zoomLevels << 30 << 50 << 67 << 80 << 90; - zoomLevels << 100; - zoomLevels << 110 << 120 << 133 << 150 << 170 << 200 << 240 << 300; - } - } - - QWebPage *webPage() const { - return view->page(); - } - -protected slots: - - void changeLocation() { - QUrl url = guessUrlFromString(urlEdit->text()); - urlEdit->setText(url.toString()); - view->load(url); - view->setFocus(Qt::OtherFocusReason); - } - - void loadFinished() { - urlEdit->setText(view->url().toString()); - - QUrl::FormattingOptions opts; - opts |= QUrl::RemoveScheme; - opts |= QUrl::RemoveUserInfo; - opts |= QUrl::StripTrailingSlash; - QString s = view->url().toString(opts); - s = s.mid(2); - if (s.isEmpty()) - return; - - if (!urlList.contains(s)) - urlList += s; - urlModel.setStringList(urlList); - } - - void showLinkHover(const QString &link, const QString &toolTip) { - statusBar()->showMessage(link); -#ifndef QT_NO_TOOLTIP - if (!toolTip.isEmpty()) - QToolTip::showText(QCursor::pos(), toolTip); -#endif - } - - void newWindow() { - MainWindow *mw = new MainWindow; - mw->show(); - } - - void zoomIn() { - int i = zoomLevels.indexOf(currentZoom); - Q_ASSERT(i >= 0); - if (i < zoomLevels.count() - 1) - currentZoom = zoomLevels[i + 1]; - - view->setZoomFactor(qreal(currentZoom)/100.0); - } - - void zoomOut() { - int i = zoomLevels.indexOf(currentZoom); - Q_ASSERT(i >= 0); - if (i > 0) - currentZoom = zoomLevels[i - 1]; - - view->setZoomFactor(qreal(currentZoom)/100.0); - } - - void resetZoom() - { - currentZoom = 100; - view->setZoomFactor(1.0); - } - - void toggleZoomTextOnly(bool b) - { - view->page()->settings()->setAttribute(QWebSettings::ZoomTextOnly, b); - } - - void print() { -#if QT_VERSION >= 0x040400 && !defined(QT_NO_PRINTER) - QPrintPreviewDialog dlg(this); - connect(&dlg, SIGNAL(paintRequested(QPrinter *)), - view, SLOT(print(QPrinter *))); - dlg.exec(); -#endif - } - - void setEditable(bool on) { - view->page()->setEditable(on); - formatMenuAction->setVisible(on); - } - - void dumpHtml() { - qDebug() << "HTML: " << view->page()->mainFrame()->toHtml(); - } -private: - - QVector<int> zoomLevels; - int currentZoom; - - // create the status bar, tool bar & menu - void setupUI() { - progress = new QProgressBar(this); - progress->setRange(0, 100); - progress->setMinimumSize(100, 20); - progress->setSizePolicy(QSizePolicy::Minimum, QSizePolicy::Minimum); - progress->hide(); - statusBar()->addPermanentWidget(progress); - - connect(view, SIGNAL(loadProgress(int)), progress, SLOT(show())); - connect(view, SIGNAL(loadProgress(int)), progress, SLOT(setValue(int))); - connect(view, SIGNAL(loadFinished(bool)), progress, SLOT(hide())); - - urlEdit = new QLineEdit(this); - urlEdit->setSizePolicy(QSizePolicy::Expanding, urlEdit->sizePolicy().verticalPolicy()); - connect(urlEdit, SIGNAL(returnPressed()), - SLOT(changeLocation())); - QCompleter *completer = new QCompleter(this); - urlEdit->setCompleter(completer); - completer->setModel(&urlModel); - - QToolBar *bar = addToolBar("Navigation"); - bar->addAction(view->pageAction(QWebPage::Back)); - bar->addAction(view->pageAction(QWebPage::Forward)); - bar->addAction(view->pageAction(QWebPage::Reload)); - bar->addAction(view->pageAction(QWebPage::Stop)); - bar->addWidget(urlEdit); - - QMenu *fileMenu = menuBar()->addMenu("&File"); - QAction *newWindow = fileMenu->addAction("New Window", this, SLOT(newWindow())); -#if QT_VERSION >= 0x040400 - fileMenu->addAction(tr("Print"), this, SLOT(print())); -#endif - fileMenu->addAction("Close", this, SLOT(close())); - - QMenu *editMenu = menuBar()->addMenu("&Edit"); - editMenu->addAction(view->pageAction(QWebPage::Undo)); - editMenu->addAction(view->pageAction(QWebPage::Redo)); - editMenu->addSeparator(); - editMenu->addAction(view->pageAction(QWebPage::Cut)); - editMenu->addAction(view->pageAction(QWebPage::Copy)); - editMenu->addAction(view->pageAction(QWebPage::Paste)); - editMenu->addSeparator(); - QAction *setEditable = editMenu->addAction("Set Editable", this, SLOT(setEditable(bool))); - setEditable->setCheckable(true); - - QMenu *viewMenu = menuBar()->addMenu("&View"); - viewMenu->addAction(view->pageAction(QWebPage::Stop)); - viewMenu->addAction(view->pageAction(QWebPage::Reload)); - viewMenu->addSeparator(); - QAction *zoomIn = viewMenu->addAction("Zoom &In", this, SLOT(zoomIn())); - QAction *zoomOut = viewMenu->addAction("Zoom &Out", this, SLOT(zoomOut())); - QAction *resetZoom = viewMenu->addAction("Reset Zoom", this, SLOT(resetZoom())); - QAction *zoomTextOnly = viewMenu->addAction("Zoom Text Only", this, SLOT(toggleZoomTextOnly(bool))); - zoomTextOnly->setCheckable(true); - zoomTextOnly->setChecked(false); - viewMenu->addSeparator(); - viewMenu->addAction("Dump HTML", this, SLOT(dumpHtml())); - - QMenu *formatMenu = new QMenu("F&ormat"); - formatMenuAction = menuBar()->addMenu(formatMenu); - formatMenuAction->setVisible(false); - formatMenu->addAction(view->pageAction(QWebPage::ToggleBold)); - formatMenu->addAction(view->pageAction(QWebPage::ToggleItalic)); - formatMenu->addAction(view->pageAction(QWebPage::ToggleUnderline)); - QMenu *writingMenu = formatMenu->addMenu(tr("Writing Direction")); - writingMenu->addAction(view->pageAction(QWebPage::SetTextDirectionDefault)); - writingMenu->addAction(view->pageAction(QWebPage::SetTextDirectionLeftToRight)); - writingMenu->addAction(view->pageAction(QWebPage::SetTextDirectionRightToLeft)); - - newWindow->setShortcut(QKeySequence(Qt::CTRL | Qt::Key_N)); - view->pageAction(QWebPage::Back)->setShortcut(QKeySequence::Back); - view->pageAction(QWebPage::Stop)->setShortcut(Qt::Key_Escape); - view->pageAction(QWebPage::Forward)->setShortcut(QKeySequence::Forward); - view->pageAction(QWebPage::Reload)->setShortcut(QKeySequence::Refresh); - view->pageAction(QWebPage::Undo)->setShortcut(QKeySequence::Undo); - view->pageAction(QWebPage::Redo)->setShortcut(QKeySequence::Redo); - view->pageAction(QWebPage::Cut)->setShortcut(QKeySequence::Cut); - view->pageAction(QWebPage::Copy)->setShortcut(QKeySequence::Copy); - view->pageAction(QWebPage::Paste)->setShortcut(QKeySequence::Paste); - zoomIn->setShortcut(QKeySequence(Qt::CTRL | Qt::Key_Plus)); - zoomOut->setShortcut(QKeySequence(Qt::CTRL | Qt::Key_Minus)); - resetZoom->setShortcut(QKeySequence(Qt::CTRL | Qt::Key_0)); - view->pageAction(QWebPage::ToggleBold)->setShortcut(QKeySequence(Qt::CTRL | Qt::Key_B)); - view->pageAction(QWebPage::ToggleItalic)->setShortcut(QKeySequence(Qt::CTRL | Qt::Key_I)); - view->pageAction(QWebPage::ToggleUnderline)->setShortcut(QKeySequence(Qt::CTRL | Qt::Key_U)); - } - - QUrl guessUrlFromString(const QString &string) { - QString urlStr = string.trimmed(); - QRegExp test(QLatin1String("^[a-zA-Z]+\\:.*")); - - // Check if it looks like a qualified URL. Try parsing it and see. - bool hasSchema = test.exactMatch(urlStr); - if (hasSchema) { - QUrl url(urlStr, QUrl::TolerantMode); - if (url.isValid()) - return url; - } - - // Might be a file. - if (QFile::exists(urlStr)) - return QUrl::fromLocalFile(urlStr); - - // Might be a shorturl - try to detect the schema. - if (!hasSchema) { - int dotIndex = urlStr.indexOf(QLatin1Char('.')); - if (dotIndex != -1) { - QString prefix = urlStr.left(dotIndex).toLower(); - QString schema = (prefix == QLatin1String("ftp")) ? prefix : QLatin1String("http"); - QUrl url(schema + QLatin1String("://") + urlStr, QUrl::TolerantMode); - if (url.isValid()) - return url; - } - } - - // Fall back to QUrl's own tolerant parser. - return QUrl(string, QUrl::TolerantMode); - } - - QWebView *view; - QLineEdit *urlEdit; - QProgressBar *progress; - - QAction *formatMenuAction; - - QStringList urlList; - QStringListModel urlModel; -}; - -QWebPage *WebPage::createWindow(QWebPage::WebWindowType) -{ - MainWindow *mw = new MainWindow; - return mw->webPage(); -} - -QObject *WebPage::createPlugin(const QString &classId, const QUrl &url, const QStringList ¶mNames, const QStringList ¶mValues) -{ - Q_UNUSED(url); - Q_UNUSED(paramNames); - Q_UNUSED(paramValues); - QUiLoader loader; - return loader.createWidget(classId, view()); -} - -#include "main.moc" - -int main(int argc, char **argv) -{ - QApplication app(argc, argv); - QString url = QString("%1/%2").arg(QDir::homePath()).arg(QLatin1String("index.html")); - - QWebSettings::setMaximumPagesInCache(4); - - app.setApplicationName("QtLauncher"); -#if QT_VERSION >= 0x040400 - app.setApplicationVersion("0.1"); -#endif - - QWebSettings::setObjectCacheCapacities((16*1024*1024) / 8, (16*1024*1024) / 8, 16*1024*1024); - - QWebSettings::globalSettings()->setAttribute(QWebSettings::PluginsEnabled, true); - QWebSettings::globalSettings()->setAttribute(QWebSettings::DeveloperExtrasEnabled, true); - - const QStringList args = app.arguments(); - if (args.count() > 1) - url = args.at(1); - - MainWindow window(url); - window.show(); - - return app.exec(); -} - |