1563af33bc48281d19dce701398dbb88cb54fd7ecCary Clark/*
2d0825bca7fe65beaee391d30da42e937db621564Steve Block * Copyright (C) 2010 Nokia Corporation and/or its subsidiary(-ies)
3d0825bca7fe65beaee391d30da42e937db621564Steve Block *
4d0825bca7fe65beaee391d30da42e937db621564Steve Block * All rights reserved.
5563af33bc48281d19dce701398dbb88cb54fd7ecCary Clark *
6563af33bc48281d19dce701398dbb88cb54fd7ecCary Clark * Redistribution and use in source and binary forms, with or without
7563af33bc48281d19dce701398dbb88cb54fd7ecCary Clark * modification, are permitted provided that the following conditions
8563af33bc48281d19dce701398dbb88cb54fd7ecCary Clark * are met:
9563af33bc48281d19dce701398dbb88cb54fd7ecCary Clark * 1. Redistributions of source code must retain the above copyright
10563af33bc48281d19dce701398dbb88cb54fd7ecCary Clark *    notice, this list of conditions and the following disclaimer.
11563af33bc48281d19dce701398dbb88cb54fd7ecCary Clark * 2. Redistributions in binary form must reproduce the above copyright
12563af33bc48281d19dce701398dbb88cb54fd7ecCary Clark *    notice, this list of conditions and the following disclaimer in the
13563af33bc48281d19dce701398dbb88cb54fd7ecCary Clark *    documentation and/or other materials provided with the distribution.
14563af33bc48281d19dce701398dbb88cb54fd7ecCary Clark *
15563af33bc48281d19dce701398dbb88cb54fd7ecCary Clark * THIS SOFTWARE IS PROVIDED BY APPLE COMPUTER, INC. ``AS IS'' AND ANY
16563af33bc48281d19dce701398dbb88cb54fd7ecCary Clark * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
17563af33bc48281d19dce701398dbb88cb54fd7ecCary Clark * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
18563af33bc48281d19dce701398dbb88cb54fd7ecCary Clark * PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL APPLE COMPUTER, INC. OR
19563af33bc48281d19dce701398dbb88cb54fd7ecCary Clark * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
20563af33bc48281d19dce701398dbb88cb54fd7ecCary Clark * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
21563af33bc48281d19dce701398dbb88cb54fd7ecCary Clark * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
22563af33bc48281d19dce701398dbb88cb54fd7ecCary Clark * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY
23563af33bc48281d19dce701398dbb88cb54fd7ecCary Clark * OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
24563af33bc48281d19dce701398dbb88cb54fd7ecCary Clark * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
25d0825bca7fe65beaee391d30da42e937db621564Steve Block * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
26563af33bc48281d19dce701398dbb88cb54fd7ecCary Clark */
27563af33bc48281d19dce701398dbb88cb54fd7ecCary Clark
28d0825bca7fe65beaee391d30da42e937db621564Steve Block#include "utils.h"
29d0825bca7fe65beaee391d30da42e937db621564Steve Block
308a0914b749bbe7da7768e07a7db5c6d4bb09472bSteve Block
318a0914b749bbe7da7768e07a7db5c6d4bb09472bSteve BlockQString takeOptionValue(QStringList* arguments, int index)
328a0914b749bbe7da7768e07a7db5c6d4bb09472bSteve Block{
338a0914b749bbe7da7768e07a7db5c6d4bb09472bSteve Block    QString result;
348a0914b749bbe7da7768e07a7db5c6d4bb09472bSteve Block
358a0914b749bbe7da7768e07a7db5c6d4bb09472bSteve Block    if (++index < arguments->count() && !arguments->at(index).startsWith("-"))
368a0914b749bbe7da7768e07a7db5c6d4bb09472bSteve Block        result = arguments->takeAt(index);
378a0914b749bbe7da7768e07a7db5c6d4bb09472bSteve Block
388a0914b749bbe7da7768e07a7db5c6d4bb09472bSteve Block    return result;
398a0914b749bbe7da7768e07a7db5c6d4bb09472bSteve Block}
408a0914b749bbe7da7768e07a7db5c6d4bb09472bSteve Block
418a0914b749bbe7da7768e07a7db5c6d4bb09472bSteve BlockQString formatKeys(QList<QString> keys)
428a0914b749bbe7da7768e07a7db5c6d4bb09472bSteve Block{
438a0914b749bbe7da7768e07a7db5c6d4bb09472bSteve Block    QString result;
448a0914b749bbe7da7768e07a7db5c6d4bb09472bSteve Block    for (int i = 0; i < keys.count() - 1; i++)
458a0914b749bbe7da7768e07a7db5c6d4bb09472bSteve Block        result.append(keys.at(i) + "|");
468a0914b749bbe7da7768e07a7db5c6d4bb09472bSteve Block    result.append(keys.last());
478a0914b749bbe7da7768e07a7db5c6d4bb09472bSteve Block    return result;
488a0914b749bbe7da7768e07a7db5c6d4bb09472bSteve Block}
498a0914b749bbe7da7768e07a7db5c6d4bb09472bSteve Block
508a0914b749bbe7da7768e07a7db5c6d4bb09472bSteve BlockQList<QString> enumToKeys(const QMetaObject o, const QString& name, const QString& strip)
518a0914b749bbe7da7768e07a7db5c6d4bb09472bSteve Block{
528a0914b749bbe7da7768e07a7db5c6d4bb09472bSteve Block    QList<QString> list;
538a0914b749bbe7da7768e07a7db5c6d4bb09472bSteve Block
548a0914b749bbe7da7768e07a7db5c6d4bb09472bSteve Block    int enumIndex = o.indexOfEnumerator(name.toLatin1().data());
558a0914b749bbe7da7768e07a7db5c6d4bb09472bSteve Block    QMetaEnum enumerator = o.enumerator(enumIndex);
568a0914b749bbe7da7768e07a7db5c6d4bb09472bSteve Block
578a0914b749bbe7da7768e07a7db5c6d4bb09472bSteve Block    if (enumerator.isValid()) {
588a0914b749bbe7da7768e07a7db5c6d4bb09472bSteve Block        for (int i = 0; i < enumerator.keyCount(); i++) {
598a0914b749bbe7da7768e07a7db5c6d4bb09472bSteve Block            QString key(enumerator.valueToKey(i));
608a0914b749bbe7da7768e07a7db5c6d4bb09472bSteve Block            list.append(key.remove(strip));
618a0914b749bbe7da7768e07a7db5c6d4bb09472bSteve Block        }
628a0914b749bbe7da7768e07a7db5c6d4bb09472bSteve Block    }
638a0914b749bbe7da7768e07a7db5c6d4bb09472bSteve Block
648a0914b749bbe7da7768e07a7db5c6d4bb09472bSteve Block    return list;
658a0914b749bbe7da7768e07a7db5c6d4bb09472bSteve Block}
668a0914b749bbe7da7768e07a7db5c6d4bb09472bSteve Block
678a0914b749bbe7da7768e07a7db5c6d4bb09472bSteve Blockvoid appQuit(int exitCode, const QString& msg)
688a0914b749bbe7da7768e07a7db5c6d4bb09472bSteve Block{
698a0914b749bbe7da7768e07a7db5c6d4bb09472bSteve Block    if (!msg.isEmpty()) {
708a0914b749bbe7da7768e07a7db5c6d4bb09472bSteve Block        if (exitCode > 0)
718a0914b749bbe7da7768e07a7db5c6d4bb09472bSteve Block            qDebug("ERROR: %s", msg.toLatin1().data());
728a0914b749bbe7da7768e07a7db5c6d4bb09472bSteve Block        else
738a0914b749bbe7da7768e07a7db5c6d4bb09472bSteve Block            qDebug() << msg;
748a0914b749bbe7da7768e07a7db5c6d4bb09472bSteve Block    }
758a0914b749bbe7da7768e07a7db5c6d4bb09472bSteve Block    exit(exitCode);
768a0914b749bbe7da7768e07a7db5c6d4bb09472bSteve Block}
778a0914b749bbe7da7768e07a7db5c6d4bb09472bSteve Block
78d0825bca7fe65beaee391d30da42e937db621564Steve BlockQUrl urlFromUserInput(const QString& string)
79d0825bca7fe65beaee391d30da42e937db621564Steve Block{
80d0825bca7fe65beaee391d30da42e937db621564Steve Block    QString input(string);
81d0825bca7fe65beaee391d30da42e937db621564Steve Block    QFileInfo fi(input);
82d0825bca7fe65beaee391d30da42e937db621564Steve Block    if (fi.exists() && fi.isRelative())
83d0825bca7fe65beaee391d30da42e937db621564Steve Block        input = fi.absoluteFilePath();
84d0825bca7fe65beaee391d30da42e937db621564Steve Block
85d0825bca7fe65beaee391d30da42e937db621564Steve Block    return QUrl::fromUserInput(input);
86563af33bc48281d19dce701398dbb88cb54fd7ecCary Clark}
878a0914b749bbe7da7768e07a7db5c6d4bb09472bSteve Block
888a0914b749bbe7da7768e07a7db5c6d4bb09472bSteve Block
89