Commit 0cd18dd8 authored by kenneth@webkit.org's avatar kenneth@webkit.org

Rubberstamped by Oliver Hunt.

[Qt] QtLauncher cleanup.

Refactor option handling out in utility functions and make the
arguments more Qt compatible.

* QtLauncher/main.cpp:
(requiresGraphicsView):
(LauncherApplication::handleUserOptions):
* QtLauncher/utils.cpp:
(takeOptionValue):
(formatKeys):
(enumToKeys):
(appQuit):
* QtLauncher/utils.h:

git-svn-id: svn://svn.chromium.org/blink/trunk@54357 bbb929c8-8fbe-4397-9dbb-9b2b20218538
parent 3a7f5754
2010-02-04 Kenneth Rohde Christiansen <kenneth@webkit.org>
Rubberstamped by Oliver Hunt.
[Qt] QtLauncher cleanup.
Refactor option handling out in utility functions and make the
arguments more Qt compatible.
* QtLauncher/main.cpp:
(requiresGraphicsView):
(LauncherApplication::handleUserOptions):
* QtLauncher/utils.cpp:
(takeOptionValue):
(formatKeys):
(enumToKeys):
(appQuit):
* QtLauncher/utils.h:
2010-02-04 Andras Becsi <abecsi@inf.u-szeged.hu> 2010-02-04 Andras Becsi <abecsi@inf.u-szeged.hu>
Reviewed by Tor Arne Vestbø. Reviewed by Tor Arne Vestbø.
......
...@@ -549,9 +549,6 @@ private: ...@@ -549,9 +549,6 @@ private:
void handleUserOptions(); void handleUserOptions();
void applyDefaultSettings(); void applyDefaultSettings();
QList<QString> enumToKeys(const QMetaObject o, const QString& name, const QString& strip);
QString formatKeys(QList<QString> keys);
private: private:
bool m_isRobotized; bool m_isRobotized;
QStringList m_urls; QStringList m_urls;
...@@ -582,36 +579,12 @@ LauncherApplication::LauncherApplication(int& argc, char** argv) ...@@ -582,36 +579,12 @@ LauncherApplication::LauncherApplication(int& argc, char** argv)
handleUserOptions(); handleUserOptions();
} }
QString LauncherApplication::formatKeys(QList<QString> keys) static bool useGraphicsView = false;
{ static void requiresGraphicsView(const QString& option)
QString result;
for (int i = 0; i < keys.count() - 1; i++)
result.append(keys.at(i) + "|");
result.append(keys.last());
return result;
}
QList<QString> LauncherApplication::enumToKeys(const QMetaObject o, const QString& name, const QString& strip)
{
QList<QString> list;
int enumIndex = o.indexOfEnumerator(name.toLatin1().data());
QMetaEnum enumerator = o.enumerator(enumIndex);
if (enumerator.isValid()) {
for (int i = 0; i < enumerator.keyCount(); i++) {
QString key(enumerator.valueToKey(i));
list.append(key.remove(strip));
}
}
return list;
}
static void fail(const QString& errorMsg)
{ {
qDebug() << "ERROR:" << errorMsg.toLatin1().data(); if (useGraphicsView)
exit(1); return;
appQuit(1, QString("%1 only works in combination with the -graphicsbased option").arg(option));
} }
void LauncherApplication::handleUserOptions() void LauncherApplication::handleUserOptions()
...@@ -625,56 +598,56 @@ void LauncherApplication::handleUserOptions() ...@@ -625,56 +598,56 @@ void LauncherApplication::handleUserOptions()
QList<QString> updateModes(enumToKeys(QGraphicsView::staticMetaObject, QList<QString> updateModes(enumToKeys(QGraphicsView::staticMetaObject,
"ViewportUpdateMode", "ViewportUpdate")); "ViewportUpdateMode", "ViewportUpdate"));
if (args.contains("--help")) { if (args.contains("-help")) {
qDebug() << "Usage:" << programName.toLatin1().data() qDebug() << "Usage:" << programName.toLatin1().data()
<< "[--graphicsbased]" << "[-graphicsbased]"
<< "[--compositing]" << "[-compositing]"
<< QString("[--viewport-update-mode %1]").arg(formatKeys(updateModes)).toLatin1().data() << QString("[-viewport-update-mode %1]").arg(formatKeys(updateModes)).toLatin1().data()
<< "[--cache-webview]" << "[-cache-webview]"
<< "[-r list]" << "[-r list]"
<< "URLs"; << "URLs";
exit(0); appQuit(0);
} }
bool useGraphicsView = false; if (args.contains("-graphicsbased"))
if (args.contains("--graphicsbased"))
useGraphicsView = true; useGraphicsView = true;
if (args.contains("--compositing") && useGraphicsView) if (args.contains("-compositing")) {
requiresGraphicsView("-compositing");
QWebSettings::globalSettings()->setAttribute(QWebSettings::AcceleratedCompositingEnabled, true); QWebSettings::globalSettings()->setAttribute(QWebSettings::AcceleratedCompositingEnabled, true);
}
if (args.contains("--cache-webview") && useGraphicsView) if (args.contains("-cache-webview")) {
; // view->setCacheMode(QGraphicsItem::DeviceCoordinateCache); requiresGraphicsView("-cache-webview");
// view->setCacheMode(QGraphicsItem::DeviceCoordinateCache);
int modeIndex = args.indexOf("--viewport-update-mode"); }
if (modeIndex != -1 && ++modeIndex < args.count() && !args.at(modeIndex).startsWith("-")) {
QString mode = args.takeAt(modeIndex); QString arg1("-viewport-update-mode");
if (useGraphicsView) { int modeIndex = args.indexOf(arg1);
int idx = updateModes.indexOf(mode); if (modeIndex != -1) {
if (idx != -1) { requiresGraphicsView(arg1);
; // view->setViewportUpdateMode(static_cast<QGraphicsView::ViewportUpdateMode>(idx));
} else { QString mode = takeOptionValue(&args, modeIndex);
fail(QString("--viewport-update-mode value has to be one of [%1]") if (mode.isEmpty())
.arg(formatKeys(updateModes)).toLatin1().data()); appQuit(1, QString("%1 needs a value of one of [%2]").arg(arg1).arg(formatKeys(updateModes)));
} int idx = updateModes.indexOf(mode);
} if (idx == -1)
appQuit(1, QString("%1 value has to be one of [%2]").arg(arg1).arg(formatKeys(updateModes)));
// view->setViewportUpdateMode(static_cast<QGraphicsView::ViewportUpdateMode>(idx));
} }
int robotIndex = args.indexOf("-r"); int robotIndex = args.indexOf("-r");
if (robotIndex != -1) { if (robotIndex != -1) {
if (++robotIndex < args.count() && !args.at(robotIndex).startsWith("-")) { QString listFile = takeOptionValue(&args, robotIndex);
QString listFile = args.takeAt(robotIndex); if (listFile.isEmpty())
if (!QFile::exists(listFile)) appQuit(1, "-r needs a list file to start in robotized mode");
fail(QString("The list file supplied to -r does not exist.")); if (!QFile::exists(listFile))
else { appQuit(1, "The list file supplied to -r does not exist.");
m_isRobotized = true;
m_urls = QStringList(listFile); m_isRobotized = true;
return; m_urls = QStringList(listFile);
} return;
}
else
fail(QString("-r needs a list file to start in robotized mode"));
} }
int lastArg = args.lastIndexOf(QRegExp("^-.*")); int lastArg = args.lastIndexOf(QRegExp("^-.*"));
......
...@@ -27,6 +27,54 @@ ...@@ -27,6 +27,54 @@
#include "utils.h" #include "utils.h"
QString takeOptionValue(QStringList* arguments, int index)
{
QString result;
if (++index < arguments->count() && !arguments->at(index).startsWith("-"))
result = arguments->takeAt(index);
return result;
}
QString formatKeys(QList<QString> keys)
{
QString result;
for (int i = 0; i < keys.count() - 1; i++)
result.append(keys.at(i) + "|");
result.append(keys.last());
return result;
}
QList<QString> enumToKeys(const QMetaObject o, const QString& name, const QString& strip)
{
QList<QString> list;
int enumIndex = o.indexOfEnumerator(name.toLatin1().data());
QMetaEnum enumerator = o.enumerator(enumIndex);
if (enumerator.isValid()) {
for (int i = 0; i < enumerator.keyCount(); i++) {
QString key(enumerator.valueToKey(i));
list.append(key.remove(strip));
}
}
return list;
}
void appQuit(int exitCode, const QString& msg)
{
if (!msg.isEmpty()) {
if (exitCode > 0)
qDebug("ERROR: %s", msg.toLatin1().data());
else
qDebug() << msg;
}
exit(exitCode);
}
QUrl urlFromUserInput(const QString& string) QUrl urlFromUserInput(const QString& string)
{ {
QString input(string); QString input(string);
...@@ -40,3 +88,5 @@ QUrl urlFromUserInput(const QString& string) ...@@ -40,3 +88,5 @@ QUrl urlFromUserInput(const QString& string)
return QUrl(input); return QUrl(input);
#endif #endif
} }
...@@ -30,6 +30,13 @@ ...@@ -30,6 +30,13 @@
#include <QtCore> #include <QtCore>
// options handling
QString takeOptionValue(QStringList* arguments, int index);
QString formatKeys(QList<QString> keys);
QList<QString> enumToKeys(const QMetaObject o, const QString& name, const QString& strip);
void appQuit(int status, const QString& msg = QString()) __attribute__((noreturn));
QUrl urlFromUserInput(const QString& input); QUrl urlFromUserInput(const QString& input);
#endif #endif
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment