<?xml version="1.0" encoding="UTF-8"?>
<!--

 Licensed to the Apache Software Foundation (ASF) under one
 or more contributor license agreements.  See the NOTICE file
 distributed with this work for additional information
 regarding copyright ownership.  The ASF licenses this file
 to you under the Apache License, Version 2.0 (the
 "License"); you may not use this file except in compliance
 with the License.  You may obtain a copy of the License at

   http://www.apache.org/licenses/LICENSE-2.0

 Unless required by applicable law or agreed to in writing,
 software distributed under the License is distributed on an
 "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
 KIND, either express or implied.  See the License for the
 specific language governing permissions and limitations
 under the License.

-->

<!--
/**************************************************************************
**
** This file is part of Qt Creator
**
** Copyright (c) 2011 Nokia Corporation and/or its subsidiary(-ies).
**
** Contact: Nokia Corporation (qt-info@nokia.com)
**
**
** GNU Lesser General Public License Usage
**
** This file may be used under the terms of the GNU Lesser General Public
** License version 2.1 as published by the Free Software Foundation and
** appearing in the file LICENSE.LGPL included in the packaging of this file.
** Please review the following information to ensure the GNU Lesser General
** Public License version 2.1 requirements will be met:
** http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
**
** In addition, as a special exception, Nokia gives you certain additional
** rights. These rights are described in the Nokia Qt LGPL Exception
** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
**
** Other Usage
**
** Alternatively, this file may be used in accordance with the terms and
** conditions contained in a signed written agreement between you and Nokia.
**
** If you have questions regarding the use of this file, please contact
** Nokia at qt-info@nokia.com.
**
**************************************************************************/

Custom project wizard configuration example file. Note that by convention,
the project file goes last.
The "class" and "firstpage" attributes specify that it is a Qt 4 wizard and
leave room for the Qt 4 target page.
-->
<wizard version="1" kind="project"
        class="qt4project" firstpage="10"
        id="A.HelloWorld" category="B.CustomProjects">
    <icon>cordovaqt64.png</icon>
    <description>Creates a cordova-qt project</description>
    <displayname>Cordova Qt example</displayname>;
    <displaycategory>Cordova Qt</displaycategory>
    <files>
        <file source="main.cpp" openeditor="true"/>
        <file source="deployment.pri"/>  
    <file source="src/cordova.cpp"/>
    <file source="src/cplugin.cpp"/>
    <file source="src/pluginregistry.cpp"/>  
    <file source="src/plugins/notification.cpp"/>
    <file source="src/plugins/geolocation.cpp"/>
    <file source="src/plugins/fileapi.cpp"/>
    <file source="src/plugins/device.cpp"/>
    <file source="src/plugins/console.cpp"/>
    <file source="src/plugins/connection.cpp"/>
    <file source="src/plugins/compass.cpp"/>
    <file source="src/plugins/accelerometer.cpp"/>
    <file source="src/plugins/events.cpp"/>
    <file source="src/plugins/contacts.cpp"/>
    <file source="src/plugins/camera.cpp"/>
    <file source="src/cordova.h"/>
    <file source="src/cplugin.h"/>
    <file source="src/pluginregistry.h"/>  
    <file source="src/plugins/notification.h"/>
    <file source="src/plugins/geolocation.h"/>
    <file source="src/plugins/fileapi.h"/>
    <file source="src/plugins/device.h"/>
    <file source="src/plugins/console.h"/>
    <file source="src/plugins/connection.h"/>
    <file source="src/plugins/compass.h"/>
    <file source="src/plugins/accelerometer.h"/>
    <file source="src/plugins/events.h"/>
    <file source="src/plugins/contacts.h"/>
    <file source="src/plugins/camera.h"/>
    <file source="src/plugins/cameraresolution.h"/>
    <file source="qml/main_qt4.qml"/>
    <file source="qml/main.qml"/>
    <file source="qml/main_harmattan_qt5.qml"/>
    <file source="qml/main_qt5.qml"/>
    <file source="qml/cordova_wrapper.js"/>
    <file source="xml/plugins.xml"/>
    <file source="xml/plugins.xml"/>
    <file source="www/basic.js"/>
    <file source="www/index.html"/>
    <file source="www/index_qt5.html"/>
    <file source="www/js/accelerometer.js"/>
<file source="www/js/accelerometer.js"/>
<file source="www/js/camera.js"/>
<file source="www/js/compass.js"/>
<file source="www/js/connection.js"/>
<file source="www/js/console.js"/>
<file source="www/js/contacts.js"/>
<file source="www/js/cordova.js"/>
<file source="www/js/cordova.qt5.js"/>
<file source="www/js/cordova.qt.js"/>
<file source="www/js/device.js"/>
<file source="www/js/file.js"/>
<file source="www/js/geolocation.js"/>
<file source="www/js/notification.js"/>
<file source="cordovaqt.pro" target="%ProjectName%.pro" openproject="true"/>
</files>
</wizard>
