Merge remote-tracking branch 'origin/2.3'
Conflicts: qtcreator.pri qtcreator.pro share/qtcreator/templates/qtquickapp/qmlapplicationviewer/qmlapplicationviewer.cpp src/plugins/qt4projectmanager/qt-s60/codaruncontrol.cpp src/plugins/qt4projectmanager/qt4buildconfiguration.cpp src/plugins/qt4projectmanager/wizards/abstractmobileappwizard.cpp src/plugins/remotelinux/remotelinuxruncontrol.cpp Change-Id: I9c89ba9fa2928e14e148041f9001856dce47a20b
@@ -5,6 +5,7 @@ OBJECTS_DIR =
|
||||
PRE_TARGETDEPS = $$PWD/qtcreator.sh
|
||||
|
||||
QMAKE_LINK = cp $$PWD/qtcreator.sh $@ && : IGNORE REST OF LINE:
|
||||
QMAKE_STRIP =
|
||||
|
||||
QMAKE_CLEAN = qtcreator.sh
|
||||
|
||||
|
||||
59
dist/changes-2.3.1
vendored
Normal file
@@ -0,0 +1,59 @@
|
||||
Qt Creator version 2.3.1 contains bug fixes on top of 2.3.
|
||||
|
||||
The most important changes are listed in this document. For a complete
|
||||
list of changes, see the Git log for the Qt Creator sources that
|
||||
you can check out from the public Git repository. For example:
|
||||
|
||||
git clone git://gitorious.org/qt-creator/qt-creator.git
|
||||
git log --cherry-pick --pretty=oneline v2.3.0..origin/2.3
|
||||
|
||||
General
|
||||
|
||||
Editing
|
||||
|
||||
Managing Projects
|
||||
* Respect qmake arguments for imported build
|
||||
|
||||
Debugging
|
||||
|
||||
Debugging QML/JS
|
||||
* Fix debugging of a Qt Quick UI project with C++ language (QTCREATORBUG-5957)
|
||||
|
||||
Analyzing Code
|
||||
|
||||
C++ Support
|
||||
|
||||
QML/JS Support
|
||||
|
||||
Qt Quick Designer
|
||||
* Fix problems on 64bit linux
|
||||
|
||||
Help
|
||||
|
||||
Platform Specific
|
||||
|
||||
Mac
|
||||
|
||||
Linux (GNOME and KDE)
|
||||
|
||||
Windows
|
||||
|
||||
Symbian Target
|
||||
* Warn if EPOCROOT is on different drive from the sources
|
||||
* Fix several debugging issues with CODA 4.0.23
|
||||
* Qt Quick Application wizard: Fix qmake dependency to Qt Quick Components for Symbian (QTCREATORBUG-6075)
|
||||
|
||||
Remote Linux Support
|
||||
* Harmattan: Include Aegis manifest file in list of files to add to project
|
||||
* Harmattan: Use Meego booster for Qt Quick Applications
|
||||
|
||||
Qt Designer
|
||||
|
||||
FakeVim
|
||||
|
||||
Version control plugins
|
||||
|
||||
Additional credits go to:
|
||||
* Axasia for updating the Japanese translations
|
||||
* Beaver Xu for updating the Chinese translations
|
||||
* Sergey Belyashov for updating the Russian translations
|
||||
@@ -13,8 +13,13 @@ include(macros.qdocconf)
|
||||
include(qt-cpp-ignore.qdocconf)
|
||||
include(qt-defines.qdocconf)
|
||||
|
||||
sources.fileextensions = "qtcreator.qdoc maemodev.qdoc symbiandev.qdoc addressbook-sdk.qdoc qtcreator-faq.qdoc linuxdev.qdoc"
|
||||
|
||||
sources.fileextensions = "qtcreator.qdoc \
|
||||
maemodev.qdoc \
|
||||
symbiandev.qdoc \
|
||||
addressbook-sdk.qdoc \
|
||||
qtcreator-faq.qdoc \
|
||||
linuxdev.qdoc \
|
||||
meegodev.qdoc"
|
||||
|
||||
qhp.projects = QtCreator
|
||||
qhp.QtCreator.file = qtcreator.qhp
|
||||
|
||||
@@ -83,5 +83,5 @@ OTHER_FILES = $$HELP_DEP_FILES $$DEV_HELP_DEP_FILES
|
||||
fixnavi.commands = \
|
||||
cd $$targetPath($$PWD) && \
|
||||
perl fixnavi.pl -Dqcmanual -Dqtquick \
|
||||
qtcreator.qdoc maemodev.qdoc symbiandev.qdoc qtcreator-faq.qdoc linuxdev.qdoc
|
||||
qtcreator.qdoc maemodev.qdoc symbiandev.qdoc qtcreator-faq.qdoc linuxdev.qdoc meegodev.qdoc
|
||||
QMAKE_EXTRA_TARGETS += fixnavi
|
||||
|
||||
BIN
doc/images/qtcreator-build-settings-maemo.png
Normal file
|
After Width: | Height: | Size: 60 KiB |
BIN
doc/images/qtcreator-dev-conf-maemo.png
Normal file
|
After Width: | Height: | Size: 11 KiB |
|
Before Width: | Height: | Size: 25 KiB After Width: | Height: | Size: 25 KiB |
|
Before Width: | Height: | Size: 12 KiB After Width: | Height: | Size: 12 KiB |
BIN
doc/images/qtcreator-meego-device-configurations.png
Normal file
|
After Width: | Height: | Size: 25 KiB |
BIN
doc/images/qtcreator-meego-emulator-connection.png
Normal file
|
After Width: | Height: | Size: 12 KiB |
BIN
doc/images/qtcreator-run-settings-maemo.png
Normal file
|
After Width: | Height: | Size: 95 KiB |
|
Before Width: | Height: | Size: 60 KiB After Width: | Height: | Size: 36 KiB |
|
Before Width: | Height: | Size: 56 KiB After Width: | Height: | Size: 44 KiB |
|
Before Width: | Height: | Size: 48 KiB After Width: | Height: | Size: 69 KiB |
25
doc/linuxdev-keys.qdocinc
Normal file
@@ -0,0 +1,25 @@
|
||||
\section2 Generating SSH Keys
|
||||
|
||||
If you do not have an SSH public and private key pair, you can generate it
|
||||
in Qt Creator. You can specify key length and the key algorithm, RSA or DSA.
|
||||
If you only use the keys to protect connections to the emulator or
|
||||
device, you can use the default values.
|
||||
|
||||
\list 1
|
||||
|
||||
\o Select \gui {Tools > Options... > Linux Devices > Device
|
||||
Configurations > Generate SSH Key...}.
|
||||
|
||||
\o Click \gui {Generate SSH Key}.
|
||||
|
||||
\image qtcreator-ssh-key-configuration.png "SSH Key Configuration dialog"
|
||||
|
||||
\o Click \gui {Save Public Key...} to select the location to save the
|
||||
public key.
|
||||
|
||||
\o Click \gui {Save Private Key...} to specify the location to save the
|
||||
private key.
|
||||
|
||||
\o Click \gui Close to close the dialog.
|
||||
|
||||
\endlist
|
||||
13
doc/linuxdev-processes.qdocinc
Normal file
@@ -0,0 +1,13 @@
|
||||
\section2 Managing Device Processes
|
||||
|
||||
You can view processes running on devices and kill them. Select
|
||||
\gui {Tools > Options... > Linux Devices > Device Configurations >
|
||||
Remote Processes...}.
|
||||
|
||||
You can filter the processes by name in the \gui {List of Remote Processes}
|
||||
dialog.
|
||||
|
||||
To update the process list, select \gui {Update List}.
|
||||
|
||||
To kill a process, select it in the list, and then select \gui {Kill
|
||||
Selected Process}.
|
||||
@@ -22,9 +22,9 @@
|
||||
/*!
|
||||
|
||||
\contentspage index.html
|
||||
\previouspage creator-developing-maemo.html
|
||||
\previouspage creator-developing-meego.html
|
||||
\page creator-developing-generic-linux.html
|
||||
\nextpage creator-developing-symbian.html
|
||||
\nextpage creator-developing-maemo.html
|
||||
|
||||
\title Connecting Generic Linux Devices
|
||||
|
||||
|
||||
@@ -23,35 +23,30 @@
|
||||
|
||||
\contentspage index.html
|
||||
\if defined(qcmanual)
|
||||
\previouspage creator-project-qmake-libraries.html
|
||||
\previouspage creator-developing-generic-linux.html
|
||||
\else
|
||||
\previouspage creator-developing-symbian.html
|
||||
\previouspage creator-developing-meego.html
|
||||
\endif
|
||||
\page creator-developing-maemo.html
|
||||
\if defined(qcmanual)
|
||||
\nextpage creator-developing-generic-linux.html
|
||||
\nextpage creator-developing-symbian.html
|
||||
\else
|
||||
\nextpage smartinstaller.html
|
||||
\endif
|
||||
|
||||
\title Connecting Maemo and MeeGo Harmattan Devices
|
||||
\title Connecting Maemo Devices
|
||||
|
||||
Maemo 5 (Fremantle) and MeeGo Harmattan are Linux-based software platforms
|
||||
developed by Nokia for mobile devices. They allow developers to create
|
||||
Maemo 5 (Fremantle) is a Linux-based software platform developed by Nokia
|
||||
for mobile devices. It allows developers to create
|
||||
applications using the Qt framework.
|
||||
The whole tool chain that you need to create, build, debug, run, and deploy
|
||||
Maemo 5 and Harmattan applications is installed and configured when you
|
||||
install the
|
||||
\QSDK.
|
||||
You can install the whole tool chain that you need to create, build, debug,
|
||||
run, and deploy Maemo 5 applications as a part of the custom installation
|
||||
in the \QSDK online installer.
|
||||
|
||||
\if defined(qcmanual)
|
||||
For more
|
||||
information about the Maemo 5 platform, see
|
||||
\l{http://maemo.org/intro/platform/}{Software Platform} on the Maemo web site.
|
||||
|
||||
For more information about the Harmattan platform, see
|
||||
\l{http://harmattan-dev.nokia.com/}{Harmattan Platform SDK}.
|
||||
|
||||
\endif
|
||||
|
||||
For more information about developing applications for the Maemo 5
|
||||
@@ -59,32 +54,13 @@
|
||||
or see
|
||||
\l{http://doc.qt.nokia.com/qt-maemo/platform-notes-maemo5.html}{Platform Notes - Maemo 5}.
|
||||
|
||||
For more information about developing applications for the Harmattan
|
||||
platform, select \gui {Help > Index} and look for \gui {Platform Notes}.
|
||||
\section1 Hardware and Software Requirements for Maemo Target
|
||||
|
||||
\note \QSDK does not contain the tool chains for building applications for
|
||||
other MeeGo devices than MeeGo Harmattan. You can try to run applications
|
||||
from Qt Creator on other MeeGo devices, but it has not been extensively
|
||||
tested, and the
|
||||
instructions might not always apply.
|
||||
|
||||
\section1 Hardware and Software Requirements
|
||||
|
||||
To build and run Qt applications for Maemo 5 or Harmattan, you need the
|
||||
following:
|
||||
To build and run Qt applications for Maemo 5, you need the following:
|
||||
\list
|
||||
|
||||
\o Test device:
|
||||
|
||||
\list
|
||||
|
||||
\o Maemo 5 device: Nokia N900 with software update release 1.3
|
||||
\o Maemo 5 device: Nokia N900 with software update release 1.3
|
||||
(V20.2010.36-2) or later installed.
|
||||
|
||||
\o Harmattan device: Nokia N950, Nokia N9
|
||||
|
||||
\endlist
|
||||
|
||||
\if defined(qcmanual)
|
||||
\o MADDE cross-platform Maemo development
|
||||
tool (installed as part of the \QSDK).
|
||||
@@ -102,16 +78,15 @@
|
||||
|
||||
\endlist
|
||||
|
||||
\note The only supported build system for Maemo 5 and Harmattan in Qt
|
||||
Creator is qmake.
|
||||
\note The only supported build system for Maemo 5 in Qt Creator is qmake.
|
||||
|
||||
\section1 Setting Up Connectivity in Devices
|
||||
\section1 Setting Up Connectivity in Maemo Devices
|
||||
|
||||
You can connect your device to your development PC using either a USB or
|
||||
WLAN connection.
|
||||
|
||||
For the device, you need to use a connectivity tool (Mad Developer on
|
||||
Maemo 5 and SDK Connectivity on Harmattan) to create the
|
||||
For the device, you need to use a connectivity tool (Mad Developer) to
|
||||
create the
|
||||
device-side end point for USB and WLAN connections. It provides no
|
||||
diagnostics functions but is essential for creating connections between the
|
||||
device and your development PC.
|
||||
@@ -127,34 +102,7 @@
|
||||
WLAN, you can
|
||||
ignore the USB-specific parts in the following sections.
|
||||
|
||||
\section2 Starting SDK Connectivity on Harmattan Devices
|
||||
|
||||
SDK Connectivity application is preinstalled in Harmattan devices and
|
||||
available in developer mode.
|
||||
|
||||
To start SDK Connectivity:
|
||||
|
||||
\list
|
||||
|
||||
\o On the device, select \gui {Settings > Security > Developer
|
||||
mode} to turn on developer mode.
|
||||
|
||||
\o Select \gui {Applications > SDK Connectivity} to start the SDK
|
||||
Connectivity application.
|
||||
|
||||
\o Select \gui {Select Connection} and then select the type of the
|
||||
connection to create: \gui WLAN or \gui USB.
|
||||
|
||||
\o For a USB connection, select the operating system of the
|
||||
development PC in \gui {Select Module}.
|
||||
|
||||
\endlist
|
||||
|
||||
\gui {Connectivity Details} displays the IP address and developer password.
|
||||
The address 192.168.2.15 is used by default. You must enter the password in
|
||||
Qt Creator.
|
||||
|
||||
\section2 Installing and Configuring Mad Developer on Nokia N900
|
||||
\section2 Installing and Configuring Mad Developer
|
||||
|
||||
Install Mad Developer on a Nokia N900 device and configure
|
||||
a connection between the development PC and a device.
|
||||
@@ -197,7 +145,7 @@
|
||||
\image qtcreator-mad-developer-screenshot.png
|
||||
\endlist
|
||||
|
||||
\section1 Installing Qt Mobility Libraries on Nokia N900
|
||||
\section1 Installing Qt Mobility Libraries
|
||||
|
||||
To develop applications for the Nokia N900 devices that use the Qt Mobility
|
||||
APIs, you must install the
|
||||
@@ -220,14 +168,11 @@
|
||||
|
||||
\endlist
|
||||
|
||||
\note the Qt Mobility Libraries are preinstalled on MeeGo Harmattan
|
||||
devices.
|
||||
\section1 Setting Up USB Connections to Maemo Devices
|
||||
|
||||
\section1 Setting Up Network Connectivity on Development PC
|
||||
|
||||
Use the network configuration tools on your platform to specify the
|
||||
connection to the device on the development PC. You need to do this
|
||||
only if you use a USB connection.
|
||||
Use the network configuration tools on your platform to specify the USB
|
||||
connection to the device on the development PC. You do not need to do this
|
||||
if you use a WLAN connection.
|
||||
|
||||
\section2 Linux
|
||||
|
||||
@@ -274,9 +219,9 @@
|
||||
your version of Microsoft Windows you may have to unplug and re-plug the
|
||||
device to reload the driver with its configuration accordingly.
|
||||
|
||||
\section1 Configuring Connections in Qt Creator
|
||||
\section1 Configuring Connections to Maemo Devices
|
||||
|
||||
To be able to run and debug applications on the Maemo or MeeGo Harmattan
|
||||
To be able to run and debug applications on the Maemo
|
||||
emulator and devices, you must set up connections to the emulator and
|
||||
devices in the Qt Creator build and run settings. If you install \QSDK, the
|
||||
connection to the emulator is configured automatically and you
|
||||
@@ -293,9 +238,10 @@
|
||||
to test them with real user data. To create a connection as a user, specify
|
||||
the \gui Username and \gui Password in Qt Creator. For more information, see
|
||||
\if defined(qcmanual)
|
||||
\l{Testing with User Data}.
|
||||
\l{Testing with User Data on Maemo Devices}.
|
||||
\else
|
||||
the Qt Creator Manual.
|
||||
\l{http://doc.qt.nokia.com/qtcreator/creator-developing-maemo.html#testing-with-user-data-on-maemo-devices}
|
||||
{Testing with User Data on Maemo Devices}.
|
||||
\endif
|
||||
|
||||
|
||||
@@ -310,7 +256,18 @@
|
||||
\if defined(qcmanual)
|
||||
\l{Generating SSH Keys}.
|
||||
\else
|
||||
the Qt Creator Manual.
|
||||
\l{http://doc.qt.nokia.com/qtcreator/creator-developing-meego.html#generating-ssh-keys}
|
||||
{Generating SSH Keys}.
|
||||
\endif
|
||||
|
||||
|
||||
You can view processes running on devices and kill them. For more
|
||||
information, see
|
||||
\if defined(qcmanual)
|
||||
\l{Managing Device Processes}.
|
||||
\else
|
||||
\l{http://doc.qt.nokia.com/qtcreator/creator-developing-meego.html#managing-device-processes}
|
||||
{Managing Device Processes}.
|
||||
\endif
|
||||
|
||||
|
||||
@@ -335,7 +292,7 @@
|
||||
Configurations > Add}, and add a new configuration for a
|
||||
hardware device.
|
||||
|
||||
\image qtcreator-screenshot-devconf.png
|
||||
\image qtcreator-dev-conf-maemo.png "Maemo device configuration"
|
||||
|
||||
\o In the \gui {The name to identify this configuration} field,
|
||||
enter a name for the connection.
|
||||
@@ -371,7 +328,7 @@
|
||||
Devices > Device Configurations > Add} to add a new
|
||||
configuration.
|
||||
|
||||
\image qtcreator-maemo-emulator-connection.png
|
||||
\image qtcreator-maemo-emulator-connection.png "Maemo emulator configuration"
|
||||
|
||||
\o In the \gui {The name to identify this configuration} field,
|
||||
enter a name for
|
||||
@@ -403,7 +360,7 @@
|
||||
\o In the \gui{Build Settings} section, choose the MADDE Qt version
|
||||
that was registered by the installation program.
|
||||
|
||||
\image qtcreator-screenshot-build-settings.png
|
||||
\image qtcreator-build-settings-maemo.png "Maemo build settings"
|
||||
|
||||
\o In the \gui{Run Settings} section, click \gui Add to add a new
|
||||
deploy configuration. The configuration is named automatically. To
|
||||
@@ -411,7 +368,7 @@
|
||||
|
||||
\o In the \gui {Device configuration} field, select the device
|
||||
connection or the emulator connection.
|
||||
\image qtcreator-screenshot-run-settings.png
|
||||
\image qtcreator-run-settings-maemo.png "Maemo run settings"
|
||||
|
||||
\o Click \gui {<no target path set>} in \gui {Remote Directory}
|
||||
to specify the folder where the file is installed on the device.
|
||||
@@ -421,73 +378,29 @@
|
||||
|
||||
\endlist
|
||||
|
||||
\if defined(qcmanual)
|
||||
\section2 Testing with User Data
|
||||
\section2 Testing with User Data on Maemo Devices
|
||||
|
||||
To run your application as the default user, you must first assign a password
|
||||
for the user account and then create the connection to the device as the
|
||||
user:
|
||||
To run your application as the default user, you must first assign a
|
||||
password for the user account and then create the connection to the device
|
||||
as the user:
|
||||
|
||||
\list 1
|
||||
|
||||
\o On the device, in \gui Programs, select \c {X Terminal} to open a
|
||||
terminal window.
|
||||
\o On the device, in \gui Programs, select \c {X Terminal} to open a
|
||||
terminal window.
|
||||
|
||||
\o To specify the password, enter the following command:
|
||||
\c{/usr/lib/mad-developer/devrootsh passwd user}
|
||||
\o To specify the password, enter the following command:
|
||||
\c{/usr/lib/mad-developer/devrootsh passwd user}
|
||||
|
||||
\o In Qt Creator, select \gui {Tools > Options... Linux Devices >
|
||||
Device Configurations}.
|
||||
\o In Qt Creator, select \gui {Tools > Options... Linux Devices >
|
||||
Device Configurations}.
|
||||
|
||||
\o Specify the username \c user and the password in the device configuration.
|
||||
\o Specify the username \c user and the password in the device
|
||||
configuration.
|
||||
|
||||
\endlist
|
||||
|
||||
\section2 Generating SSH Keys
|
||||
|
||||
If you do not have an SSH public and private key pair, you can generate it
|
||||
in Qt Creator. You can specify key length and the key algorithm, RSA or DSA.
|
||||
If you only use the keys to protect connections to the emulator or
|
||||
device, you can use the default values.
|
||||
|
||||
\list 1
|
||||
|
||||
\o Select \gui {Tools > Options... > Linux Devices > Device
|
||||
Configurations
|
||||
> Generate SSH Key...}.
|
||||
|
||||
\o Click \gui {Generate SSH Key}.
|
||||
|
||||
\image qtcreator-ssh-key-configuration.png "SSH Key Configuration dialog"
|
||||
|
||||
\o Click \gui {Save Public Key...} to select the location to save the
|
||||
public key.
|
||||
|
||||
\o Click \gui {Save Private Key...} to specify the location to save the
|
||||
private key.
|
||||
|
||||
\o Click \gui Close to close the dialog.
|
||||
|
||||
\endlist
|
||||
|
||||
\section2 Managing Device Processes
|
||||
|
||||
You can view processes running on the Maemo or MeeGo Harmattan device and
|
||||
kill them.
|
||||
Select \gui {Tools > Options... > Linux Devices > Device Configurations >
|
||||
Remote Processes...}.
|
||||
|
||||
You can filter the processes by name in the \gui {List of Remote Processes}
|
||||
dialog.
|
||||
|
||||
To update the process list, select \gui {Update List}.
|
||||
|
||||
To kill a process, select it in the list, and then select \gui {Kill
|
||||
Selected Process}.
|
||||
|
||||
\endif
|
||||
|
||||
\section1 Troubleshooting
|
||||
\section1 Troubleshooting Connections to Maemo Devices
|
||||
|
||||
The addresses used in this example might be reserved by some other application
|
||||
in your network. If you cannot establish a connection, try the following optional
|
||||
|
||||
462
doc/meegodev.qdoc
Normal file
@@ -0,0 +1,462 @@
|
||||
/****************************************************************************
|
||||
**
|
||||
** This file is part of Qt Creator
|
||||
**
|
||||
** Copyright (c) 2011 Nokia Corporation and/or its subsidiary(-ies).
|
||||
**
|
||||
** Contact: Nokia Corporation (info@qt.nokia.com)
|
||||
**
|
||||
**
|
||||
** GNU Free Documentation License
|
||||
**
|
||||
** Alternatively, this file may be used under the terms of the GNU Free
|
||||
** Documentation License version 1.3 as published by the Free Software
|
||||
** Foundation and appearing in the file included in the packaging of this
|
||||
** file.
|
||||
**
|
||||
** If you have questions regarding the use of this file, please contact
|
||||
** Nokia at info@qt.nokia.com.
|
||||
**
|
||||
****************************************************************************/
|
||||
|
||||
/*!
|
||||
|
||||
\contentspage index.html
|
||||
\if defined(qcmanual)
|
||||
\previouspage creator-project-qmake-libraries.html
|
||||
\else
|
||||
\previouspage creator-developing-symbian.html
|
||||
\endif
|
||||
\page creator-developing-meego.html
|
||||
\if defined(qcmanual)
|
||||
\nextpage creator-developing-generic-linux.html
|
||||
\else
|
||||
\nextpage creator-developing-maemo.html
|
||||
\endif
|
||||
|
||||
\title Connecting MeeGo Harmattan Devices
|
||||
|
||||
MeeGo Harmattan is a Linux-based software platform developed by Nokia for
|
||||
mobile devices. It allows developers to create applications using the Qt
|
||||
framework. You can install and configure the whole tool chain that you need
|
||||
to create, build, debug, run, and deploy Harmattan applications as part of
|
||||
the \QSDK.
|
||||
|
||||
\if defined(qcmanual)
|
||||
For more information about the Harmattan platform, see
|
||||
\l{http://library.developer.nokia.com/topic/MeeGo_1.2_Harmattan_API/html/guide/html/Developer_Library_Harmattan_overview_5dcf.html}
|
||||
{Harmattan Overview} in the MeeGo 1.2 Harmattan Developer Library.
|
||||
\endif
|
||||
|
||||
|
||||
\note \QSDK does not contain the tool chains for building applications for
|
||||
other MeeGo devices than MeeGo Harmattan. You can try to run applications
|
||||
from Qt Creator on other MeeGo devices, but it has not been extensively
|
||||
tested, and the instructions might not always apply.
|
||||
|
||||
\note The only supported build system for Harmattan in Qt Creator is qmake.
|
||||
|
||||
\section1 Setting Up Connectivity in Harmattan Devices
|
||||
|
||||
To build and run Qt applications for Harmattan, you need a Harmattan device:
|
||||
Nokia N950 or Nokia N9.
|
||||
|
||||
You can connect your device to your development PC using either a USB or
|
||||
WLAN connection.
|
||||
|
||||
For the device, you need to use the SDK Connectivity tool that is
|
||||
preinstalled on the device to create the device-side end point for USB and
|
||||
WLAN connections. It provides no diagnostics functions but is essential for
|
||||
creating connections between the device and your development PC.
|
||||
|
||||
To use a WLAN connection, you must activate WLAN on the device and connect
|
||||
it to the same WLAN as the development PC. The network address is displayed
|
||||
in the connectivity tool.
|
||||
|
||||
To use a USB connection, you might need to set up the device as a network
|
||||
device on the development PC. However, on Linux, Mac OS X, and Windows 7,
|
||||
the USB interface is usually automatically configured.
|
||||
|
||||
\note If you plan to connect your development PC to the device only over
|
||||
WLAN, you can ignore the USB-specific parts in the following sections.
|
||||
|
||||
\section2 Starting SDK Connectivity
|
||||
|
||||
SDK Connectivity application is preinstalled in Harmattan devices and
|
||||
available in developer mode.
|
||||
|
||||
To start SDK Connectivity:
|
||||
|
||||
\list
|
||||
|
||||
\o On the device, select \gui {Settings > Security > Developer
|
||||
mode} to turn on developer mode.
|
||||
|
||||
\o Select \gui {Applications > SDK Connectivity} to start the SDK
|
||||
Connectivity application.
|
||||
|
||||
\o Select \gui {Select Connection} and then select the type of the
|
||||
connection to create: \gui WLAN or \gui USB.
|
||||
|
||||
\o For a USB connection, select the operating system of the
|
||||
development PC in \gui {Select Module}.
|
||||
|
||||
\endlist
|
||||
|
||||
\gui {Connectivity Details} displays the IP address and developer password.
|
||||
The address 192.168.2.15 is used by default. You must enter the password in
|
||||
Qt Creator. For more information, see
|
||||
\l{Configuring Connections to Harmattan Devices}.
|
||||
|
||||
\section1 Setting Up Network Connectivity on Development PC
|
||||
|
||||
Use the network configuration tools on your platform to specify the
|
||||
connection to the device on the development PC. You need to do this
|
||||
only if you use a USB connection.
|
||||
|
||||
The device uses the IP address 192.168.2.15 with the subnet 255.255.255.0
|
||||
for its USB connection by default, so you can create the network interface
|
||||
with a different address inside the same subnet too.
|
||||
|
||||
\note If you have changed the IP address of the device in the connectivity
|
||||
tool, you need to reflect those changes in your development PC USB
|
||||
network settings.
|
||||
|
||||
\section2 Linux
|
||||
|
||||
The USB interface is automatically configured. If, for some reason, that is
|
||||
not the case, run the following command in a shell as root user to create a
|
||||
new network interface:
|
||||
|
||||
\c{ifconfig usb0 192.168.2.14 up}
|
||||
|
||||
\section2 Mac OS X
|
||||
|
||||
The USB interface is automatically configured. If, for some reason, that is
|
||||
not the case, create a new network interface manually:
|
||||
|
||||
\list
|
||||
|
||||
\o Open the network settings.
|
||||
|
||||
\o Click the + button on the network settings panel.
|
||||
|
||||
\o When the interface is available, select \gui {Configure IPv4 > Using
|
||||
DHCP with manual address}.
|
||||
|
||||
\o Enter the address 192.168.2.14 into the IP address field.
|
||||
|
||||
\o Click \gui Apply.
|
||||
|
||||
The network connection between your device and workstation is now
|
||||
configured.
|
||||
|
||||
\endlist
|
||||
|
||||
\section2 Windows 7
|
||||
|
||||
When you connect your device to your Windows 7 computer, Windows installs a
|
||||
driver for the Linux USB Ethernet connection automatically. If the
|
||||
installation does not start, unplug the USB cable and try another USB port
|
||||
on your computer.
|
||||
|
||||
\note Driver installation takes some time.
|
||||
|
||||
The USB interface is automatically configured. If, for some reason, that is
|
||||
not the case, create a new network interface manually:
|
||||
|
||||
\list 1
|
||||
|
||||
\o Open the \gui {Network and Sharing Center} and select \gui {Change
|
||||
adapter settings}.
|
||||
|
||||
The Linux USB Ethernet connection you just installed is displayed
|
||||
as a new \gui {Local Area Connection Linux USB Ethernet/RNDIS
|
||||
gadget}.
|
||||
|
||||
\note If you cannot see \gui {Linux USB Ethernet/RNDIS gadget}, try
|
||||
to unplug and replug the USB cable.
|
||||
|
||||
\o Right-click \gui {Linux USB Ethernet/RNDIS gadget} and select
|
||||
\gui Properties.
|
||||
|
||||
\o Edit the \gui {Internet Protocol Version 4 (TCP/IPv4)} properties
|
||||
to specify the IP address for the connection. In the \gui {Use the
|
||||
following IP address} field, enter the following values:
|
||||
|
||||
\list
|
||||
|
||||
\o \gui {IP Address}: \bold {192.168.2.14}
|
||||
\o \gui SubnetMask: \bold {255.255.255.0}
|
||||
\o \gui {Default gateway}: leave this field empty
|
||||
|
||||
\endlist
|
||||
|
||||
\endlist
|
||||
|
||||
\section2 Windows XP
|
||||
|
||||
If you develop on Windows XP and use a USB connection to run applications on
|
||||
the device, you need the Nokia USB drivers that are installed as part of the
|
||||
\QSDK.
|
||||
|
||||
When you connect the device to your Windows PC, Windows tries to install a
|
||||
driver for the Linux USB Ethernet connection. In the
|
||||
\gui{Found New Hardware Wizard}, select \gui{No, not this time} in the
|
||||
first dialog and \gui{Install the software automatically} in the second
|
||||
dialog.
|
||||
|
||||
To specify a network connection:
|
||||
|
||||
\list 1
|
||||
|
||||
\o Open the Network Connections window.
|
||||
|
||||
\o Select the Linux USB Ethernet connection that is displayed as a new
|
||||
Local Area Connection.
|
||||
|
||||
\o Edit the \gui {Internet Protocol Version 4 (TCP/IPv4)} properties
|
||||
to specify the IP address for the connection. In the \gui {Use the
|
||||
following IP address} field, enter the following values:
|
||||
|
||||
\list
|
||||
|
||||
\o \gui {IP Address}: \bold {192.168.2.14}
|
||||
\o \gui SubnetMask: \bold {255.255.255.0}
|
||||
\o \gui {Default gateway}: leave this field empty
|
||||
|
||||
\endlist
|
||||
|
||||
\endlist
|
||||
|
||||
Depending on your version of Microsoft Windows you may have to unplug and
|
||||
re-plug the device to reload the driver with its configuration accordingly.
|
||||
|
||||
\section1 Configuring Connections to Harmattan Devices
|
||||
|
||||
To be able to run and debug applications on the emulator and devices, you
|
||||
must set up connections to the emulator and devices in the Qt Creator build
|
||||
and run settings. If you install \QSDK, the connection to the emulator is
|
||||
configured automatically and you only need to configure a connection to the
|
||||
device.
|
||||
|
||||
You use a wizard to create the connections. You can edit the settings later
|
||||
in \gui {Tools > Options... > Linux Devices > Device Configurations}.
|
||||
|
||||
\image qtcreator-meego-device-configurations.png "MeeGo Device Configurations dialog"
|
||||
|
||||
By default, you create the connection as the \e developer user. This
|
||||
protects real user data on the device from getting corrupted during testing.
|
||||
If you write applications that use Qt Mobility APIs, you might want to test
|
||||
them with real user data. To create a connection as a user, specify the
|
||||
\gui Username and \gui Password in Qt Creator. For more information, see
|
||||
\if defined(qcmanual)
|
||||
\l{Testing with User Data on MeeGo Devices}.
|
||||
\else
|
||||
\l{http://doc.qt.nokia.com/qtcreator/creator-developing-meego.html#testing-with-user-data-on-meego-devices}
|
||||
{Testing with User Data on MeeGo Devices}.
|
||||
\endif
|
||||
|
||||
|
||||
You can protect the connections between Qt Creator and a device by using
|
||||
either a password or an SSH key. If you use a password, you must generate it
|
||||
in the connectivity tool and enter it in Qt Creator every time you start the
|
||||
connectivity tool.
|
||||
|
||||
If you do not have an SSH key, you can create it in Qt Creator. Encrypted
|
||||
keys are not supported. For more information, see
|
||||
\if defined(qcmanual)
|
||||
\l{Generating SSH Keys}.
|
||||
\else
|
||||
\l{http://doc.qt.nokia.com/qtcreator/creator-developing-meego.html#generating-ssh-keys}
|
||||
{Generating SSH Keys}.
|
||||
\endif
|
||||
|
||||
|
||||
You can view processes running on devices and kill them. For more
|
||||
information, see
|
||||
\if defined(qcmanual)
|
||||
\l{Managing Device Processes}.
|
||||
\else
|
||||
\l{http://doc.qt.nokia.com/qtcreator/creator-developing-meego.html#managing-device-processes}
|
||||
{Managing Device Processes}.
|
||||
\endif
|
||||
|
||||
|
||||
To configure connections between Qt Creator and a device:
|
||||
|
||||
\list 1
|
||||
|
||||
\o To deploy applications and run them remotely on devices,
|
||||
specify parameters for accessing devices:
|
||||
|
||||
\list a
|
||||
|
||||
\o Connect your device to the development PC via a USB cable or
|
||||
a WLAN. For a USB connection, you are prompted to select the
|
||||
mode to use. Choose \gui{PC suite mode}.
|
||||
|
||||
\note If you experience connection problems due to a USB
|
||||
port issue, switch to a different port or use WLAN to
|
||||
connect to the device.
|
||||
|
||||
\o Select \gui {Tools > Options... > Linux Devices > Device
|
||||
Configurations > Add}, and add a new configuration for a
|
||||
hardware device.
|
||||
|
||||
\image qtcreator-screenshot-devconf.png
|
||||
|
||||
\o In the \gui {The name to identify this configuration} field,
|
||||
enter a name for the connection.
|
||||
|
||||
\o In the \gui {The system running on the device} field, select
|
||||
the software platform of the device.
|
||||
|
||||
\o In the \gui {The kind of device} field, select
|
||||
\gui {Hardware device}.
|
||||
|
||||
\o In the \gui {The device's host name or IP address} field,
|
||||
enter the IP address from the connectivity tool on the
|
||||
device.
|
||||
|
||||
\o In the \gui {The SSH server port} field, enter the port
|
||||
number to use for SSH connections.
|
||||
|
||||
\o Click \gui Next.
|
||||
|
||||
\o Follow the instructions of the wizard to create the
|
||||
connection.
|
||||
|
||||
\endlist
|
||||
|
||||
\if defined(qcmanual)
|
||||
|
||||
\o To test applications on the emulator (QEMU), you must
|
||||
create a connection to it from the development PC. If you installed
|
||||
\QSDK, the connection is created automatically and you can omit this
|
||||
step.
|
||||
|
||||
\list a
|
||||
|
||||
\o In Qt Creator, select \gui {Tools > Options... > Linux
|
||||
Devices > Device Configurations > Add} to add a new
|
||||
configuration.
|
||||
|
||||
\image qtcreator-meego-emulator-connection.png
|
||||
|
||||
\o In the \gui {The name to identify this configuration} field,
|
||||
enter a name for the connection.
|
||||
|
||||
\o In the \gui {The system running on the device} field, select
|
||||
the software platform to emulate.
|
||||
|
||||
\o In the \gui {The kind of device} field, select
|
||||
\gui {Emulator (Qemu)}.
|
||||
|
||||
\o Click \gui Next.
|
||||
|
||||
\o Follow the instructions of the wizard to create the
|
||||
connection.
|
||||
|
||||
SDK Connectivity is not needed for emulator connections, and
|
||||
therefore, you do nt need to authenticate the emulator
|
||||
connection.
|
||||
|
||||
\endlist
|
||||
|
||||
\endif
|
||||
|
||||
\o To specify build and run settings:
|
||||
|
||||
\list a
|
||||
|
||||
\o Open a project for an application you want to develop
|
||||
for your device.
|
||||
|
||||
\o Click \gui Projects to open the projects mode.
|
||||
|
||||
\o In the \gui{Build Settings} section, choose the MADDE Qt
|
||||
version that was registered by the installation program.
|
||||
|
||||
\image qtcreator-screenshot-build-settings.png
|
||||
|
||||
\o In the \gui {Device configuration} field, select the
|
||||
device connection or the emulator connection.
|
||||
\image qtcreator-screenshot-run-settings.png
|
||||
|
||||
\endlist
|
||||
|
||||
\note The new application wizards automatically set the folder
|
||||
where the file is installed on the device in the \gui {Remote
|
||||
Directory} field. For example, \c {/opt/usr/bin}. If the text
|
||||
\gui {<no target path set>} is displayed, click it to specify a
|
||||
folder.
|
||||
|
||||
\endlist
|
||||
|
||||
\if defined(qcmanual)
|
||||
|
||||
\section2 Testing with User Data on MeeGo Devices
|
||||
|
||||
To run your application as the default user, you must first assign a
|
||||
password for the user account and then create the connection to the device
|
||||
as the user:
|
||||
|
||||
\list 1
|
||||
|
||||
\o On the device, select \gui Terminal to open a
|
||||
terminal window.
|
||||
|
||||
\o To specify the password, enter the following command:
|
||||
\c{/usr/lib/mad-developer/devrootsh passwd user}
|
||||
|
||||
\o In Qt Creator, select \gui {Tools > Options... Linux Devices >
|
||||
Device Configurations}.
|
||||
|
||||
\o Specify the username \c user and the password in the device
|
||||
configuration.
|
||||
|
||||
\endlist
|
||||
|
||||
\input linuxdev-keys.qdocinc
|
||||
\input linuxdev-processes.qdocinc
|
||||
|
||||
\endif
|
||||
|
||||
\section1 Troubleshooting Harmattan Connections
|
||||
|
||||
The addresses used in this example might be reserved by some other
|
||||
application in your network. If you cannot establish a connection, try the
|
||||
following optional configurations:
|
||||
|
||||
\table
|
||||
|
||||
\header
|
||||
\o IP Address and Network on Device
|
||||
\o USB Network on Development PC
|
||||
\o Host Name in Qt Creator Build Settings
|
||||
|
||||
\row
|
||||
\o 172.30.7.15 255.255.255.0
|
||||
\o 172.30.7.14 255.255.255.0
|
||||
\o 172.30.7.15
|
||||
|
||||
\row
|
||||
\o 10.133.133.15
|
||||
\o 10.133.133.14
|
||||
\o 10.133.133.15
|
||||
|
||||
\row
|
||||
\o 192.168.133.15
|
||||
\o 192.168.133.14
|
||||
\o 192.168.133.15
|
||||
|
||||
\note You cannot use the value localhost for connections to a
|
||||
device.
|
||||
|
||||
\endtable
|
||||
|
||||
\note VPN connections might block the device connection.
|
||||
|
||||
*/
|
||||
|
||||
@@ -67,8 +67,9 @@
|
||||
\o \l{Creating a Project}
|
||||
\o \l{Opening a Project}
|
||||
\o \l{Adding Libraries to Projects}
|
||||
\o \l{Connecting Maemo and MeeGo Harmattan Devices}
|
||||
\o \l{Connecting MeeGo Harmattan Devices}
|
||||
\o \l{Connecting Generic Linux Devices}
|
||||
\o \l{Connecting Maemo Devices}
|
||||
\o \l{Connecting Symbian Devices}
|
||||
\o \l{Managing Sessions}
|
||||
\endlist
|
||||
@@ -1749,7 +1750,6 @@
|
||||
\page creator-editor-using.html
|
||||
\nextpage creator-highlighting.html
|
||||
|
||||
|
||||
\title Using the Editor
|
||||
|
||||
Qt Creator's code editor is designed to aid you in creating, editing and
|
||||
@@ -3309,7 +3309,8 @@
|
||||
\o \l{Creating a Project}
|
||||
\o \l{Opening a Project}
|
||||
\o \l{Adding Libraries to Projects}
|
||||
\o \l{Connecting Maemo and MeeGo Harmattan Devices}
|
||||
\o \l{Connecting Maemo Devices}
|
||||
\o \l{Connecting MeeGo Harmattan Devices}
|
||||
\o \l{Connecting Generic Linux Devices}
|
||||
\o \l{Connecting Symbian Devices}
|
||||
\o \l{Managing Sessions}
|
||||
@@ -4204,7 +4205,8 @@
|
||||
The other settings to specify depend on the tool chain.
|
||||
|
||||
\o For RVCT, select the ARM version to use in the \gui {ARM version}
|
||||
field.
|
||||
field. RVCT 2.2 is supported on Symbian^3 and earlier. RVCT 4.0 b902
|
||||
or later is required for Symbian Belle.
|
||||
|
||||
\endlist
|
||||
|
||||
@@ -4251,7 +4253,7 @@
|
||||
\contentspage index.html
|
||||
\previouspage creator-project-opening.html
|
||||
\page creator-project-qmake-libraries.html
|
||||
\nextpage creator-developing-maemo.html
|
||||
\nextpage creator-developing-meego.html
|
||||
|
||||
\title Adding Libraries to Projects
|
||||
|
||||
@@ -4579,7 +4581,8 @@
|
||||
\list 1
|
||||
|
||||
\o Configure the device and specify a connection to it. For more
|
||||
information, see \l{Connecting Maemo and MeeGo Harmattan Devices}.
|
||||
information, see \l{Connecting Maemo Devices} and
|
||||
\l{Connecting MeeGo Harmattan Devices}.
|
||||
|
||||
\o Connect the device to the development PC.
|
||||
|
||||
@@ -4849,7 +4852,8 @@
|
||||
\note The build configuration for the \gui{Symbian Device} target
|
||||
uses the GCCE tool chain by default. If you want to build
|
||||
for the device using RVCT, install the RVCT tool chain, and then
|
||||
select it in the \gui {Tool chain} field.
|
||||
select it in the \gui {Tool chain} field. RVCT 2.2 is supported on Symbian^3
|
||||
and earlier. RVCT 4.0 b902 or later is required for Symbian Belle.
|
||||
|
||||
\section1 Starting External Processes
|
||||
|
||||
@@ -5055,7 +5059,8 @@
|
||||
create connections
|
||||
from the development PC to the devices. Click \gui {Manage device
|
||||
configurations} to create connections. For more information, see
|
||||
\l {Configuring Connections in Qt Creator}.
|
||||
\l{Configuring Connections to Maemo Devices} and
|
||||
\l{Configuring Connections to Harmattan Devices}.
|
||||
|
||||
When you run the application on the \gui{Maemo5} or \gui Harmattan target,
|
||||
Qt Creator generates
|
||||
@@ -5440,8 +5445,11 @@
|
||||
|
||||
\section1 Creating Smart Installer for Symbian Packages
|
||||
|
||||
To deploy Qt applications on Symbian devices, you must install the software that Qt applications
|
||||
require, typically Qt, QtWebkit, and Open C. Nokia Smart Installer for Symbian makes it easier
|
||||
You can run Qt applications on Symbian devices if the software that Qt
|
||||
applications require (typically Qt, Qt Mobility, QtWebkit, and Open C) is
|
||||
installed on the device. On Symbian^3 and later devices, some version of Qt
|
||||
is pre-installed. On earlier devices, you must install the modules that Qt
|
||||
applications require. Nokia Smart Installer for Symbian makes it easier
|
||||
for users to install Qt applications to Symbian phones by checking whether the device contains
|
||||
the necessary software and by installing the missing pieces.
|
||||
|
||||
@@ -5744,71 +5752,7 @@
|
||||
application access not granted.} For example, if you try to install a
|
||||
self-signed application that uses a system capability.
|
||||
|
||||
\section2 Supported Configurations
|
||||
|
||||
When you select the Qt version to build the application with, consider
|
||||
which version provides the application with the widest support on different
|
||||
Symbian platforms. The binary compatibility promise of Qt and Symbian means
|
||||
that applications that are built against Qt 4.6.3 also run on Qt 4.7.3.
|
||||
Similarly, applications that are supported on Symbian^1 are also supported
|
||||
on Symbian^3. However, dependencies, such as QML or Qt Mobility API
|
||||
versions might restrict the choice of Qt versions that you have.
|
||||
|
||||
In general, if you use only Qt widgets and APIs in the application, you
|
||||
can use \gui {Qt 4.6.3 for Symbian^1} to build it.
|
||||
The application is supported on both Symbian^1 and Symbian^3 devices.
|
||||
|
||||
If you use QML in the application, you can use \gui {Qt 4.7.3 for
|
||||
Symbian^1} to build it. The application is supported on both Symbian^1 and
|
||||
Symbian^3 devices.
|
||||
|
||||
If you use native Symbian APIs, you must check that they are available on
|
||||
the target devices. For more information about the API differences between
|
||||
Symbian^1 (S60 5th Edition) and Symbian^3, see the \bold {Symbian
|
||||
Reference Documentation for Qt}, which is delivered together with \QSDK
|
||||
and which you can view in the \gui Help mode.
|
||||
|
||||
The following table summarizes the supported configurations for each Qt
|
||||
version available in Qt Creator build settings:
|
||||
|
||||
\table
|
||||
\header
|
||||
\i Qt Version
|
||||
\i QML
|
||||
\i Qt Mobility Version
|
||||
\i Native Symbian C++ APIs
|
||||
\i Open GL
|
||||
\row
|
||||
\i Qt 4.6.3 for S60 3rd Edition
|
||||
\i No
|
||||
\i 1.0.2
|
||||
\i No
|
||||
\i No
|
||||
\row
|
||||
\i Qt 4.6.3 for Symbian^1 (S60 5th Edition)
|
||||
\i No
|
||||
\i 1.0.2
|
||||
\i No
|
||||
\i No
|
||||
\row
|
||||
\i Qt 4.6.3 for Symbian^3
|
||||
\i No
|
||||
\i 1.0.2
|
||||
\i Yes
|
||||
\i No
|
||||
\row
|
||||
\i Qt 4.7.3 for Symbian^1
|
||||
\i Yes
|
||||
\i 1.1.3
|
||||
\i No
|
||||
\i No
|
||||
\row
|
||||
\i Qt 4.7.3 for Symbian^3
|
||||
\i Yes
|
||||
\i 1.1.3
|
||||
\i Yes
|
||||
\i Yes
|
||||
\endtable
|
||||
|
||||
\section1 Publishing Qt Content for Maemo Devices
|
||||
|
||||
|
||||
@@ -22,7 +22,7 @@
|
||||
/*!
|
||||
\contentspage index.html
|
||||
\if defined(qcmanual)
|
||||
\previouspage creator-developing-generic-linux.html
|
||||
\previouspage creator-developing-maemo.html
|
||||
\else
|
||||
\previouspage sdk-gs.html
|
||||
\endif
|
||||
@@ -30,30 +30,47 @@
|
||||
\if defined(qcmanual)
|
||||
\nextpage creator-project-managing-sessions.html
|
||||
\else
|
||||
\nextpage creator-developing-maemo.html
|
||||
\nextpage creator-developing-meego.html
|
||||
\endif
|
||||
|
||||
\title Connecting Symbian Devices
|
||||
|
||||
When you install \QSDK, the build and run settings for Symbian devices
|
||||
are set up automatically. You only need to connect the devices to the
|
||||
development PC.
|
||||
are set up automatically in Qt Creator. You only need to install and launch
|
||||
the CODA on-device debugging agent on the devices and connect the devices
|
||||
to the development PC.
|
||||
|
||||
Make sure that PC Suite or Ovi Suite are installed on the development PC.
|
||||
Connect the device to the development PC with an USB cable in
|
||||
PC Suite Mode. If you have not previously used the device with Ovi Suite
|
||||
or PC Suite, all the necessary drivers are installed automatically.
|
||||
This takes approximately one minute.
|
||||
|
||||
To run Qt applications on Symbian devices, you must install the software
|
||||
that Qt applications require, typically Qt, Qt Mobility, QtWebkit, and Open C.
|
||||
The \QSDK installation program creates shortcuts for installing
|
||||
the required applications on Symbian devices. You can also use any of
|
||||
the standard methods for installing applications.
|
||||
As with every supported platform, Qt strives to maintain application
|
||||
behavior and binary compatibility throughout the lifetime of the Qt 4.x
|
||||
major version and on the Symbian devices that support Qt. Symbian
|
||||
support in \QSDK and Ovi Store were introduced with Qt 4.6. Each Qt release
|
||||
contains bug fixes that might change the API behavior and thereby affect
|
||||
application compatibility.
|
||||
|
||||
To debug applications on Symbian devices by using the Qt Creator \gui Debug
|
||||
mode, you must install the CODA on-device debugging agent on the device.
|
||||
For more information,
|
||||
see
|
||||
In addition, Symbian devices have different input methods, such as different
|
||||
keyboard styles or touch input, screen sizes, memory, and CPU and GPU
|
||||
capabilities. Therefore, you must test applications on specific target
|
||||
devices to ensure compatibility. In order to build applications that are
|
||||
supported also on earlier devices, select the target in \QSDK carefully.
|
||||
Generally, an earlier target (such as S60 5th Edition) is supported on a
|
||||
larger number of devices than a later target (such as Symbian Belle).
|
||||
|
||||
You can run Qt applications on Symbian devices if the software that Qt
|
||||
applications require (typically Qt, Qt Mobility, QtWebkit, and Open C) is
|
||||
installed on the device. On Symbian^3 and later devices, some version of Qt
|
||||
is pre-installed. On earlier devices, you must install the modules that Qt
|
||||
applications require. For more information, see
|
||||
\l{Installing Required Applications on Devices}.
|
||||
|
||||
To run and debug applications on Symbian devices from Qt Creator, you must
|
||||
install the CODA on-device debugging agent on the device. For more
|
||||
information, see
|
||||
\if defined(qcmanual)
|
||||
\l{Using On-device Debugging Agents}.
|
||||
\else
|
||||
@@ -65,35 +82,21 @@
|
||||
The tool chain for building applications locally on the development PC for
|
||||
the \gui {Symbian Device} target is only supported on Windows.
|
||||
If you develop on Linux or Mac OS, you must use the Remote Compiler
|
||||
interface to a compilation service at Nokia Developer.
|
||||
interface to a compilation service at Nokia Developer. You can install
|
||||
Remote Compiler as part of the \QSDK. For more information, see
|
||||
\if defined(qcmanual)
|
||||
\l{Building with Remote Compiler}.
|
||||
\else
|
||||
\l{http://doc.qt.nokia.com/qtcreator-snapshot/creator-remote-compiler.html}
|
||||
{Building with Remote Compiler}.
|
||||
\endif
|
||||
|
||||
|
||||
For more information about developing applications for the Symbian
|
||||
platform, select \gui {Help > Index} and look for \gui {Platform Notes},
|
||||
or see
|
||||
\l{http://doc.qt.nokia.com/4.7/platform-notes-symbian.html}{Platform Notes - Symbian}.
|
||||
|
||||
\section1 Hardware and Software Requirements
|
||||
|
||||
For deploying and running applications on the device, you need the
|
||||
following:
|
||||
\list
|
||||
\o The Nokia USB drivers that come with \e{PC Suite} or \e{Ovi Suite}
|
||||
\o The \e CODA on-device debugging agent installed on
|
||||
the device
|
||||
\o \e {Qt libraries} installed on the device
|
||||
\o \e {Qt Mobility libraries} installed on the device, if you use them in
|
||||
applications
|
||||
\o \e {QtWebKit} installed on the device, if you use web functionality
|
||||
in applications
|
||||
\endlist
|
||||
|
||||
In addition, you can install example applications, demos, and utility
|
||||
applications, such as Nokia Energy Profiler and Nokia Performance Manager,
|
||||
on devices.
|
||||
|
||||
The \QSDK installation program creates shortcuts for installing
|
||||
the applications on Symbian devices.
|
||||
|
||||
\if defined(qcmanual)
|
||||
To run your applications in the Symbian emulator, you also need
|
||||
to install Carbide.c++ v2.0.0 or higher.
|
||||
@@ -102,64 +105,128 @@
|
||||
|
||||
\section1 Installing Required Applications on Devices
|
||||
|
||||
Separate installation packages are provided for Symbian^3 and Symbian^1
|
||||
devices. To check the Symbian platform version of your device, see
|
||||
Generally, when developing for Symbian^3 or later devices, you do not need
|
||||
to install Qt on devices. However, you might want to upgrade or downgrade
|
||||
the Qt version on a device to test your application on a particular Qt
|
||||
version. Use the installation packages delivered with \QSDK
|
||||
(\c {<QtSDK_install_path>\Symbian\sis}). Keep in mind that this might
|
||||
replace the pre-installed Qt on the device.
|
||||
|
||||
\note Earlier Qt for Symbian versions, such as Qt 4.6.3 for Symbian, are
|
||||
only available in the \QSDK online installer. For more information, see
|
||||
\if defined(qcmanual)
|
||||
\l{http://doc.qt.nokia.com/sdk-1.1/sdk-installing.html}{Installing Qt SDK}.
|
||||
\else
|
||||
{Installing Qt SDK}.
|
||||
\endif
|
||||
|
||||
|
||||
Qt is supported on different Symbian platforms as follows:
|
||||
|
||||
\list
|
||||
|
||||
\o Symbian Belle devices contain Qt 4.7.4 libraries as part of device
|
||||
firmware (ROM). To upgrade the Qt version, update the device
|
||||
firmware. You cannot downgrade the Qt version on Belle devices.
|
||||
|
||||
\omit
|
||||
To develop applications using Qt 4.8 or later, you can install Qt
|
||||
4.8 or later libraries to Belle devices. The Qt in Belle firmware is
|
||||
not overwritten. It is eclipsed by the installed Qt on the C: drive.
|
||||
\endomit
|
||||
|
||||
\o Symbian Anna devices have Qt 4.7.3 pre-installed.
|
||||
|
||||
\o Symbian^3 devices have Qt 4.6 pre-installed.
|
||||
|
||||
\o S60 5th Edition and later devices support Qt 4.6.3 and 4.7.3.
|
||||
|
||||
\o S60 3rd Edition feature pack 1 and later devices support Qt 4.6 for
|
||||
Symbian through Nokia Smart Installer for Symbian.
|
||||
|
||||
\endlist
|
||||
|
||||
To check the Symbian platform version of your device, see
|
||||
\l{http://www.developer.nokia.com/Devices/Device_specifications/}
|
||||
{Device Specifications}.
|
||||
{Device Specifications}. The site contains information about the content
|
||||
that can be published for the device to the Ovi Store (\e General section)
|
||||
and the Qt libraries that are pre-installed on the device (\e API section).
|
||||
|
||||
\note You can also copy the .sis files from
|
||||
\c {<QtSDK_install_path>\Symbian\sis} to the device using USB storage
|
||||
mode and install them from the file manager on the device.
|
||||
If the device does not have the necessary Qt libraries pre-installed, you
|
||||
can use Nokia Smart Installer for Symbian to deploy them during application
|
||||
installation. Smart Installer ensures that the necessary libraries are
|
||||
available in the target Symbian device before installing the actual
|
||||
application. For more information about which Qt modules are supported
|
||||
on-demand for different Symbian device models and how to enable Smart
|
||||
Installer support in Qt applications, see
|
||||
\l{http://www.developer.nokia.com/Community/Wiki/Nokia_Smart_Installer_for_Symbian}{Nokia Smart Installer for Symbian}.
|
||||
|
||||
\section2 Developing for Symbian^3
|
||||
\section2 Supported Configurations
|
||||
|
||||
\note The command names and paths depend on the \QSDK version that is
|
||||
installed.
|
||||
When you select the Qt version to build the application with, consider
|
||||
which version provides the application with the widest support on different
|
||||
Symbian platforms. The binary compatibility promise of Qt and Symbian means
|
||||
that applications that are built against Qt 4.6.3 also run on Qt 4.7.3.
|
||||
Similarly, applications that are supported on S60 5th Edition are also
|
||||
supported
|
||||
on Symbian^3. However, dependencies, such as QML or Qt Mobility API
|
||||
versions might restrict the choice of Qt versions that you have.
|
||||
|
||||
\list 1
|
||||
In general, if you use only Qt widgets and APIs in the application, you
|
||||
can use \gui {Qt 4.6.3 for Symbian^1} to build it.
|
||||
The application is supported on both Symbian^1 and Symbian^3 devices.
|
||||
|
||||
\o Choose \gui {Start > Qt SDK > Symbian^3 Qt 4.7.3 > Install Qt 4.7.3 for
|
||||
Symbian^3 on Device}. Follow the instructions on the screen to install Qt
|
||||
libraries to the device.
|
||||
If you use QML in the application, you can use \gui {Qt 4.7.3 for
|
||||
Symbian^1} to build it. The application is supported on both Symbian^1 and
|
||||
Symbian^3 devices.
|
||||
|
||||
\o Choose \gui {Start > Qt SDK > Symbian^3 Qt 4.7.3 > Install QtMobility 1.1.2 for
|
||||
Symbian^3 on Device}
|
||||
and follow the instructions on the screen to install Qt
|
||||
mobility libraries to the device.
|
||||
If you use native Symbian APIs, you must check that they are available on
|
||||
the target devices. For more information about the API differences between
|
||||
Symbian^1 (S60 5th Edition) and Symbian^3, see the \bold {Symbian
|
||||
Reference Documentation for Qt}, which is delivered together with \QSDK
|
||||
and which you can view in the \gui Help mode.
|
||||
|
||||
\o Choose \gui {Start > Qt SDK > Symbian^3 Qt 4.7.3 > Install QtWebKit
|
||||
for for Qt 4.7.3 on Symbian^3 Device} and follow the
|
||||
instructions on the screen to install QtWebKit to the device.
|
||||
|
||||
\endlist
|
||||
|
||||
\section2 Developing for Symbian^1
|
||||
|
||||
Symbian^1 incorporates Symbian OS and S60 5th Edition (S60 5.0), which is
|
||||
built on Symbian OS v9.4.
|
||||
|
||||
\note The command names and paths depend on the \QSDK version that is
|
||||
installed.
|
||||
|
||||
\list 1
|
||||
|
||||
\o Choose \gui {Start > Qt SDK > Symbian^1 Qt 4.7.3 > Install Qt 4.7.3
|
||||
for Symbian^1 on Device}. Follow the instructions on the screen to install Qt
|
||||
libraries to the device.
|
||||
|
||||
\o Choose \gui {Start > Qt SDK > Symbian^1 Qt 4.7.3 > Install QtMobility 1.1.2
|
||||
for Symbian^1 on Device} and follow the instructions on the screen to install Qt
|
||||
mobility libraries to the device.
|
||||
|
||||
\o Choose \gui {Start > Qt SDK > Symbian^1 Qt 4.7.3 > Install QtWebKit
|
||||
for for Qt 4.7.3 on Symbian^1 Device} and follow the
|
||||
instructions on the screen to install QtWebKit to the device.
|
||||
|
||||
\endlist
|
||||
|
||||
In addition, you can install an example application and demos to Symbian^1
|
||||
devices.
|
||||
The following table summarizes the supported configurations for each Qt
|
||||
version available in Qt Creator build settings:
|
||||
|
||||
\table
|
||||
\header
|
||||
\i Qt Version
|
||||
\i QML
|
||||
\i Qt Mobility Version
|
||||
\i Native Symbian C++ APIs
|
||||
\i Open GL
|
||||
\row
|
||||
\i Qt 4.6.3 for Symbian^1 (S60 5th Edition)
|
||||
\i No
|
||||
\i 1.0.2
|
||||
\i No
|
||||
\i No
|
||||
\row
|
||||
\i Qt 4.6.3 for Symbian^3
|
||||
\i No
|
||||
\i 1.0.2
|
||||
\i Yes
|
||||
\i No
|
||||
\row
|
||||
\i Qt 4.7.3 for Symbian^1
|
||||
\i Yes
|
||||
\i 1.1.3
|
||||
\i No
|
||||
\i No
|
||||
\row
|
||||
\i Qt 4.7.3 for Symbian^3
|
||||
\i Yes
|
||||
\i 1.1.3
|
||||
\i Yes
|
||||
\i Yes
|
||||
\row
|
||||
\i Qt 4.7.4 for Symbian Belle
|
||||
\i Yes
|
||||
\i 1.2
|
||||
\i Yes
|
||||
\i Yes
|
||||
\endtable
|
||||
|
||||
\if defined(qcmanual)
|
||||
\section1 Using On-device Debugging Agents
|
||||
@@ -181,26 +248,14 @@
|
||||
|
||||
\section2 Installing Debugging Agents
|
||||
|
||||
You can download CODA from the
|
||||
CODA installation packages are delivered together with the \QSDK. On
|
||||
Windows, you can use \gui Start menu commands to install CODA on Symbian
|
||||
devices.
|
||||
|
||||
You can also download CODA from the
|
||||
\l{http://tools.ext.nokia.com/coda/}{CODA download server}.
|
||||
|
||||
\section1 Adding Symbian Platform SDKs
|
||||
|
||||
\QSDK contains all the tools you need for developing Qt applications for
|
||||
Symbian devices. To use Symbian APIs directly in your applications, you can
|
||||
install additional Symbian Platform SDKs:
|
||||
|
||||
\list
|
||||
\o \l{http://www.forum.nokia.com/info/sw.nokia.com/id/ec866fab-4b76-49f6-b5a5-af0631419e9c/S60_All_in_One_SDKs.html}
|
||||
{S60 Platform SDK 3rd Edition FP1 or higher}.
|
||||
\o Either the GCCE ARM Toolchain that is included in the Symbian
|
||||
SDKs, or RVCT 2.2 [build 686] or later (which requires a license).
|
||||
\o Qt for Symbian 4.6.2 or later, installed into the Symbian SDKs you want
|
||||
to use.
|
||||
|
||||
\endlist
|
||||
|
||||
\section2 Setting Up Qt Creator
|
||||
\section1 Setting Up Qt Creator
|
||||
|
||||
When you run Qt Creator after installing the Symbian SDK and Qt for
|
||||
Symbian, the installed SDKs and their corresponding Qt versions are
|
||||
|
||||
@@ -52,6 +52,6 @@ DATA_FILE_PATTERNS = \
|
||||
|
||||
!macx {
|
||||
qmlfiles.files = $$PWD/*.qml $$PWD/qmldir $$PWD/images $$PWD/custom
|
||||
qmlfiles.path = /lib/qtcreator/qtcomponents
|
||||
qmlfiles.path = /$${IDE_LIBRARY_BASENAME}/qtcreator/qtcomponents
|
||||
INSTALLS += qmlfiles
|
||||
}
|
||||
|
||||
@@ -26,4 +26,5 @@ OTHER_FILES += dist/copyright_template.txt \
|
||||
dist/changes-2.1.0 \
|
||||
dist/changes-2.2.0 \
|
||||
dist/changes-2.3.0 \
|
||||
dist/changes-2.3.1 \
|
||||
dist/changes-2.4.0
|
||||
|
||||
@@ -28,9 +28,13 @@ symbian:TARGET.CAPABILITY += NetworkServices
|
||||
# CONFIG += mobility
|
||||
# MOBILITY +=
|
||||
|
||||
# Add dependency to symbian components
|
||||
# Speed up launching on MeeGo/Harmattan when using applauncherd daemon
|
||||
# HARMATTAN_BOOSTABLE #
|
||||
# CONFIG += qdeclarative-boostable
|
||||
|
||||
# Add dependency to Symbian components
|
||||
# QTQUICKCOMPONENTS #
|
||||
# CONFIG += qtquickcomponents
|
||||
# CONFIG += qt-components
|
||||
|
||||
# The .cpp file which was generated for your project. Feel free to hack it.
|
||||
SOURCES += main.cpp
|
||||
|
||||
@@ -1,15 +1,15 @@
|
||||
#include <QtGui/QApplication>
|
||||
#include "qmlapplicationviewer.h"
|
||||
|
||||
int main(int argc, char *argv[])
|
||||
Q_DECL_EXPORT int main(int argc, char *argv[])
|
||||
{
|
||||
QApplication app(argc, argv);
|
||||
QScopedPointer<QApplication> app(createApplication(argc, argv));
|
||||
QScopedPointer<QmlApplicationViewer> viewer(QmlApplicationViewer::create());
|
||||
|
||||
QmlApplicationViewer viewer;
|
||||
viewer.addImportPath(QLatin1String("modules")); // ADDIMPORTPATH
|
||||
viewer.setOrientation(QmlApplicationViewer::ScreenOrientationAuto); // ORIENTATION
|
||||
viewer.setMainQmlFile(QLatin1String("qml/app/main.qml")); // MAINQML
|
||||
viewer.showExpanded();
|
||||
viewer->addImportPath(QLatin1String("modules")); // ADDIMPORTPATH
|
||||
viewer->setOrientation(QmlApplicationViewer::ScreenOrientationAuto); // ORIENTATION
|
||||
viewer->setMainQmlFile(QLatin1String("qml/app/main.qml")); // MAINQML
|
||||
viewer->showExpanded();
|
||||
|
||||
return app.exec();
|
||||
return app->exec();
|
||||
}
|
||||
|
||||
@@ -9,15 +9,19 @@
|
||||
|
||||
#include "qmlapplicationviewer.h"
|
||||
|
||||
#include <QtCore/QCoreApplication>
|
||||
#include <QtCore/QDir>
|
||||
#include <QtCore/QFileInfo>
|
||||
#include <QtDeclarative/QDeclarativeComponent>
|
||||
#include <QtDeclarative/QDeclarativeEngine>
|
||||
#include <QtDeclarative/QDeclarativeContext>
|
||||
#include <QtGui/QApplication>
|
||||
|
||||
#include <qplatformdefs.h> // MEEGO_EDITION_HARMATTAN
|
||||
|
||||
#ifdef HARMATTAN_BOOSTER
|
||||
#include <MDeclarativeCache>
|
||||
#endif
|
||||
|
||||
#if defined(QMLJSDEBUGGER) && QT_VERSION < 0x040800
|
||||
|
||||
#include <qt_private/qdeclarativedebughelper_p.h>
|
||||
@@ -45,9 +49,12 @@ static QmlJsDebuggingEnabler enableDebuggingHelper;
|
||||
|
||||
class QmlApplicationViewerPrivate
|
||||
{
|
||||
QmlApplicationViewerPrivate(QDeclarativeView *view_) : view(view_) {}
|
||||
|
||||
QString mainQmlFile;
|
||||
QDeclarativeView *view;
|
||||
friend class QmlApplicationViewer;
|
||||
static QString adjustPath(const QString &path);
|
||||
QString adjustPath(const QString &path);
|
||||
};
|
||||
|
||||
QString QmlApplicationViewerPrivate::adjustPath(const QString &path)
|
||||
@@ -60,47 +67,70 @@ QString QmlApplicationViewerPrivate::adjustPath(const QString &path)
|
||||
#else
|
||||
const QString pathInInstallDir =
|
||||
QString::fromAscii("%1/../%2").arg(QCoreApplication::applicationDirPath(), path);
|
||||
if (pathInInstallDir.contains(QLatin1String("opt"))
|
||||
&& pathInInstallDir.contains(QLatin1String("bin"))
|
||||
&& QFileInfo(pathInInstallDir).exists()) {
|
||||
if (QFileInfo(pathInInstallDir).exists())
|
||||
return pathInInstallDir;
|
||||
}
|
||||
#endif
|
||||
#endif
|
||||
return path;
|
||||
}
|
||||
|
||||
QmlApplicationViewer::QmlApplicationViewer(QWidget *parent) :
|
||||
QDeclarativeView(parent),
|
||||
m_d(new QmlApplicationViewerPrivate)
|
||||
QmlApplicationViewer::QmlApplicationViewer(QWidget *parent)
|
||||
: QDeclarativeView(parent)
|
||||
, d(new QmlApplicationViewerPrivate(this))
|
||||
{
|
||||
connect(engine(), SIGNAL(quit()), SLOT(close()));
|
||||
setResizeMode(QDeclarativeView::SizeRootObjectToView);
|
||||
// Qt versions prior to 4.8.0 don't have QML/JS debugging services built in
|
||||
#if defined(QMLJSDEBUGGER) && QT_VERSION < 0x040800
|
||||
#if !defined(NO_JSDEBUGGER)
|
||||
new QmlJSDebugger::JSDebuggerAgent(engine());
|
||||
new QmlJSDebugger::JSDebuggerAgent(d->view->engine());
|
||||
#endif
|
||||
#if !defined(NO_QMLOBSERVER)
|
||||
new QmlJSDebugger::QDeclarativeViewObserver(this, this);
|
||||
new QmlJSDebugger::QDeclarativeViewObserver(d->view, d->view);
|
||||
#endif
|
||||
#endif
|
||||
}
|
||||
|
||||
QmlApplicationViewer::QmlApplicationViewer(QDeclarativeView *view, QWidget *parent)
|
||||
: QDeclarativeView(parent)
|
||||
, d(new QmlApplicationViewerPrivate(view))
|
||||
{
|
||||
connect(view->engine(), SIGNAL(quit()), view, SLOT(close()));
|
||||
view->setResizeMode(QDeclarativeView::SizeRootObjectToView);
|
||||
// Qt versions prior to 4.8.0 don't have QML/JS debugging services built in
|
||||
#if defined(QMLJSDEBUGGER) && QT_VERSION < 0x040800
|
||||
#if !defined(NO_JSDEBUGGER)
|
||||
new QmlJSDebugger::JSDebuggerAgent(d->view->engine());
|
||||
#endif
|
||||
#if !defined(NO_QMLOBSERVER)
|
||||
new QmlJSDebugger::QDeclarativeViewObserver(d->view, d->view);
|
||||
#endif
|
||||
#endif
|
||||
}
|
||||
|
||||
QmlApplicationViewer::~QmlApplicationViewer()
|
||||
{
|
||||
delete m_d;
|
||||
delete d;
|
||||
}
|
||||
|
||||
QmlApplicationViewer *QmlApplicationViewer::create()
|
||||
{
|
||||
#ifdef HARMATTAN_BOOSTER
|
||||
return new QmlApplicationViewer(MDeclarativeCache::qDeclarativeView(), 0);
|
||||
#else
|
||||
return new QmlApplicationViewer();
|
||||
#endif
|
||||
}
|
||||
|
||||
void QmlApplicationViewer::setMainQmlFile(const QString &file)
|
||||
{
|
||||
m_d->mainQmlFile = QmlApplicationViewerPrivate::adjustPath(file);
|
||||
setSource(QUrl::fromLocalFile(m_d->mainQmlFile));
|
||||
d->mainQmlFile = d->adjustPath(file);
|
||||
d->view->setSource(QUrl::fromLocalFile(d->mainQmlFile));
|
||||
}
|
||||
|
||||
void QmlApplicationViewer::addImportPath(const QString &path)
|
||||
{
|
||||
engine()->addImportPath(QmlApplicationViewerPrivate::adjustPath(path));
|
||||
d->view->engine()->addImportPath(d->adjustPath(path));
|
||||
}
|
||||
|
||||
void QmlApplicationViewer::setOrientation(ScreenOrientation orientation)
|
||||
@@ -149,10 +179,19 @@ void QmlApplicationViewer::setOrientation(ScreenOrientation orientation)
|
||||
void QmlApplicationViewer::showExpanded()
|
||||
{
|
||||
#if defined(Q_OS_SYMBIAN) || defined(MEEGO_EDITION_HARMATTAN) || defined(Q_WS_SIMULATOR)
|
||||
showFullScreen();
|
||||
d->view->showFullScreen();
|
||||
#elif defined(Q_WS_MAEMO_5)
|
||||
showMaximized();
|
||||
d->view->showMaximized();
|
||||
#else
|
||||
show();
|
||||
d->view->show();
|
||||
#endif
|
||||
}
|
||||
|
||||
QApplication *createApplication(int &argc, char **argv)
|
||||
{
|
||||
#ifdef HARMATTAN_BOOSTER
|
||||
return MDeclarativeCache::qApplication(argc, argv);
|
||||
#else
|
||||
return new QApplication(argc, argv);
|
||||
#endif
|
||||
}
|
||||
|
||||
@@ -26,6 +26,8 @@ public:
|
||||
explicit QmlApplicationViewer(QWidget *parent = 0);
|
||||
virtual ~QmlApplicationViewer();
|
||||
|
||||
static QmlApplicationViewer *create();
|
||||
|
||||
void setMainQmlFile(const QString &file);
|
||||
void addImportPath(const QString &path);
|
||||
|
||||
@@ -35,7 +37,10 @@ public:
|
||||
void showExpanded();
|
||||
|
||||
private:
|
||||
class QmlApplicationViewerPrivate *m_d;
|
||||
explicit QmlApplicationViewer(QDeclarativeView *view, QWidget *parent);
|
||||
class QmlApplicationViewerPrivate *d;
|
||||
};
|
||||
|
||||
QApplication *createApplication(int &argc, char **argv);
|
||||
|
||||
#endif // QMLAPPLICATIONVIEWER_H
|
||||
|
||||
@@ -16,3 +16,7 @@ INCLUDEPATH += $$PWD
|
||||
} else {
|
||||
DEFINES -= QMLJSDEBUGGER
|
||||
}
|
||||
|
||||
contains(CONFIG,qdeclarative-boostable):contains(MEEGO_EDITION,harmattan) {
|
||||
DEFINES += HARMATTAN_BOOSTER
|
||||
}
|
||||
|
||||
@@ -1499,6 +1499,10 @@ Local pulls are not applied to the master branch.</source>
|
||||
<source>Unix Generator (%1)</source>
|
||||
<translation>Unix ジェネレータ (%1)</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>No generator selected.</source>
|
||||
<translation>ジェネレータが選択されていません。</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>CMake exited with errors. Please check CMake output.</source>
|
||||
<translation>CMake は異常終了しました。CMake の出力を確認して下さい。</translation>
|
||||
@@ -17871,7 +17875,15 @@ Please build the debugging helpers on the Qt version options page.</source>
|
||||
</message>
|
||||
<message>
|
||||
<source>The QML Profiler can be used to find performance bottlenecks in applications using QML.</source>
|
||||
<translation>jQML プロファイラは、QML を使っているアプリケーションの性能のボトルネックを探すのに使用する事ができます。</translation>
|
||||
<translation>QML プロファイラは、QML を使っているアプリケーションの性能のボトルネックを探すのに使用する事ができます。</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>The QML profiler requires Qt 4.7.4 or newer.
|
||||
The Qt version configured in your active build configuration is too old.
|
||||
Do you want to continue?</source>
|
||||
<translation>QML プロファイラは Qt 4.7.4 以降を要求しますが
|
||||
アクティブなビルド構成で構成されている Qt バージョンは古すぎます。
|
||||
続行しますか?</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Events</source>
|
||||
@@ -20622,10 +20634,34 @@ Reason: %2</source>
|
||||
<source>Add Build</source>
|
||||
<translation>ビルドを追加</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Create Build Configurations:</source>
|
||||
<translation>ビルド構成の作成:</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>For Each Qt Version One Debug And One Release</source>
|
||||
<translation>Qt バージョン毎に Debug と Release を1つずつ</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>For One Qt Version One Debug And One Release</source>
|
||||
<translation>1つの Qt バージョンで Debug と Release を1つずつ</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Manually</source>
|
||||
<translation>手動</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>None</source>
|
||||
<translation>なし</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Use Shadow Building</source>
|
||||
<translation>シャドウビルドを使用</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Qt Version:</source>
|
||||
<translation>Qt バージョン:</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>debug</source>
|
||||
<extracomment>Debug build</extracomment>
|
||||
@@ -27852,4 +27888,67 @@ p, li { white-space: pre-wrap; }
|
||||
<translation>text</translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
<name>Core::Internal::ExternalTool</name>
|
||||
<message>
|
||||
<source>Creates qm translation files that can be used by an application from the translator's ts files</source>
|
||||
<translation>ts ファイルからアプリケーションが利用する事ができる qm ファイルを作成します</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Release Translations (lrelease)</source>
|
||||
<translation>翻訳をリリース (lrelease)</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Linguist</source>
|
||||
<translation>Linguist</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Synchronizes translator's ts files with the program code</source>
|
||||
<translation>プログラムコードと ts ファイルを同期します</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Update Translations (lupdate)</source>
|
||||
<translation>翻訳を更新 (lupdate)</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Opens the current file in Notepad</source>
|
||||
<translation>現在のファイルをメモ帳で開きます</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Edit with Notepad</source>
|
||||
<translation>メモ帳で編集</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Text</source>
|
||||
<translation>テキスト</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Runs the current QML file with qmlviewer</source>
|
||||
<translation>現在の QML ファイルを qmlviewer で実行します</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Preview (qmlviewer)</source>
|
||||
<translation>プレビュー (qmlviewer)</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Qt Quick</source>
|
||||
<translation>Qt Quick</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Sorts the selected text</source>
|
||||
<translation>選択しているテキストをソートします</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Sort Selection</source>
|
||||
<translation>選択をソート</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Opens the current file in vi</source>
|
||||
<translation>現在のファイルを vi で開きます</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Edit with vi</source>
|
||||
<translation>vi で編集</translation>
|
||||
</message>
|
||||
</context>
|
||||
</TS>
|
||||
|
||||
@@ -1482,6 +1482,10 @@ Local pulls are not applied to the master branch.</source>
|
||||
<source>Unix Generator (%1)</source>
|
||||
<translation>Генератор для Unix (%1)</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>No generator selected.</source>
|
||||
<translation>Генератор не выбран.</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>No valid cmake executable specified.</source>
|
||||
<translation>Не указана корректная программа cmake.</translation>
|
||||
@@ -3861,7 +3865,7 @@ Would you like to overwrite them?</source>
|
||||
</message>
|
||||
<message>
|
||||
<source>Shortcut</source>
|
||||
<translation>Комбинация клавиш</translation>
|
||||
<translation>Сочетание клавиш</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Import Keyboard Mapping Scheme</source>
|
||||
@@ -6983,16 +6987,6 @@ Setting breakpoints by file name and line number may fail.</source>
|
||||
<source>%1 debugger activated</source>
|
||||
<translation>Отладчик %1 активирован</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>QML/C++ Debugging</source>
|
||||
<translation type="obsolete">Отладка QML/C++</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Cannot stop execution before QML engine is started. Skipping breakpoint.
|
||||
Suggestions: Move the breakpoint after QmlApplicationViewer instantiation or switch to C++ only debugging.</source>
|
||||
<translation type="obsolete">Невозможно прекратить выполнение пока запущен движок QML. Пропуск точки останова.
|
||||
Рекомендуется переустановить точку останова после инициализации QmlApplicationViewer или переключиться в режим отладки только C++.</translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
<name>Debugger::Internal::QmlEngine</name>
|
||||
@@ -9354,7 +9348,7 @@ Add, modify, and remove document filters, which determine the documentation set
|
||||
<name>FlowSpecifics</name>
|
||||
<message>
|
||||
<source>Flow</source>
|
||||
<translation type="unfinished">Перетекание</translation>
|
||||
<translation>Перетекание</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Spacing</source>
|
||||
@@ -11152,7 +11146,7 @@ You can choose between stashing the changes or discarding them.</source>
|
||||
</message>
|
||||
<message>
|
||||
<source>Flow</source>
|
||||
<translation type="unfinished">Перетекание</translation>
|
||||
<translation>Перетекание</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Spacing</source>
|
||||
@@ -11183,11 +11177,11 @@ You can choose between stashing the changes or discarding them.</source>
|
||||
</message>
|
||||
<message>
|
||||
<source>Resize wraps</source>
|
||||
<translation type="unfinished"></translation>
|
||||
<translation>Перенос при изменении размера</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Determines whether the grid wraps key navigation.</source>
|
||||
<translation type="unfinished"></translation>
|
||||
<translation>Определяет, меняет ли сетка навигацию клавишами.</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Snap mode</source>
|
||||
@@ -11243,7 +11237,7 @@ You can choose between stashing the changes or discarding them.</source>
|
||||
</message>
|
||||
<message>
|
||||
<source>Flow</source>
|
||||
<translation type="unfinished">Перетекание</translation>
|
||||
<translation>Перетекание</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Grid View Highlight</source>
|
||||
@@ -11907,11 +11901,11 @@ QML.</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Navigation wraps</source>
|
||||
<translation type="unfinished"></translation>
|
||||
<translation>Перенос при перемещениях</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Determines whether the grid wraps key navigation.</source>
|
||||
<translation type="unfinished"></translation>
|
||||
<translation>Определяет, меняет ли сетка навигацию клавишами.</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Orientation of the list.</source>
|
||||
@@ -13649,6 +13643,25 @@ Preselects Qt for Simulator and mobile targets if available.</source>
|
||||
<translation>Поведение ориентации:</translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
<name>MobileAppWizardHarmattanOptionsPage</name>
|
||||
<message>
|
||||
<source>WizardPage</source>
|
||||
<translation></translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Application icon (80x80):</source>
|
||||
<translation>Значок приложения (80x80):</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Generate code to speed up the launching on the device.</source>
|
||||
<translation>Создать код для ускорения запуска на устройстве.</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Make application boostable</source>
|
||||
<translation>Делать приложение быстрее</translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
<name>MobileAppWizardMaemoOptionsPage</name>
|
||||
<message>
|
||||
@@ -13656,8 +13669,8 @@ Preselects Qt for Simulator and mobile targets if available.</source>
|
||||
<translation></translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Application icon (%%w%%x%%h%%):</source>
|
||||
<translation>Значок приложения (%%w%%x%%h%%):</translation>
|
||||
<source>Application icon (64x64):</source>
|
||||
<translation>Значок приложения (64x64):</translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
@@ -13875,7 +13888,7 @@ Preselects Qt for Simulator and mobile targets if available.</source>
|
||||
</message>
|
||||
<message>
|
||||
<source>Path View Highlight</source>
|
||||
<translation type="unfinished">Подсветка вида кривой</translation>
|
||||
<translation>Подсветка вида кривой</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Highlight range</source>
|
||||
@@ -18032,6 +18045,14 @@ Please build the debugging helpers on the Qt version options page.</source>
|
||||
<source>The QML Profiler can be used to find performance bottlenecks in applications using QML.</source>
|
||||
<translation>QML Profiler предназначен для поиска узких мест в приложениях использующих QML.</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>The QML profiler requires Qt 4.7.4 or newer.
|
||||
The Qt version configured in your active build configuration is too old.
|
||||
Do you want to continue?</source>
|
||||
<translation>Профилеру QML требуется Qt версии 4.7.4 или выше.
|
||||
Версия Qt настроенная для текущей конфигурации сборки слишком старая.
|
||||
Продолжить?</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Events</source>
|
||||
<translation>События</translation>
|
||||
@@ -18252,7 +18273,7 @@ You can review Qt Quick UI projects in the QML Viewer and you need not build the
|
||||
<message>
|
||||
<source>QML Viewer</source>
|
||||
<comment>QMLRunConfiguration display name.</comment>
|
||||
<translation>Просмотр QML</translation>
|
||||
<translation></translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
@@ -18260,7 +18281,7 @@ You can review Qt Quick UI projects in the QML Viewer and you need not build the
|
||||
<message>
|
||||
<source>QML Viewer</source>
|
||||
<comment>QML Viewer target display name</comment>
|
||||
<translation>Просмотр QML</translation>
|
||||
<translation></translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
@@ -19111,33 +19132,6 @@ Adds the library and include paths to the .pro file.</source>
|
||||
<translation>Зафиксировать портретную</translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
<name>Qt4ProjectManager::Internal::MobileAppWizardMaemoOptionsPage</name>
|
||||
<message>
|
||||
<source>Invalid Icon</source>
|
||||
<translation>Неверный значок</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>The file is not a valid image.</source>
|
||||
<translation>Файл не является изображением.</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Wrong Icon Size</source>
|
||||
<translation>Неверный размер значка</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>The icon needs to be %1x%2 pixels big, but is not. Do you want Creator to scale it?</source>
|
||||
<translation>Значок должен быть размером %1х%2. Желаете, чтобы Qt Creator подогнал размер?</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>File Error</source>
|
||||
<translation>Ошибка файла</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Could not copy icon file: %1</source>
|
||||
<translation>Не удалось скопировать файл значка: %1</translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
<name>Qt4ProjectManager::Internal::ModulesPage</name>
|
||||
<message>
|
||||
@@ -19156,6 +19150,25 @@ Adds the library and include paths to the .pro file.</source>
|
||||
<translation>Создание нескольких библиотек виджетов (%1, %2) в одном проекте (%3) не поддерживается.</translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
<name>Qt4ProjectManager::Internal::PngIconScaler</name>
|
||||
<message>
|
||||
<source>Wrong Icon Size</source>
|
||||
<translation>Неверный размер значка</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>The icon needs to be %1x%2 pixels big, but is not. Do you want Qt Creator to scale it?</source>
|
||||
<translation>Значок должен быть размером в %1x%2 пикселей. Должен ли Qt Creator изменить его масштаб?</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>File Error</source>
|
||||
<translation>Ошибка файла</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Could not copy icon file: %1</source>
|
||||
<translation>Не удалось скопировать файл значка: %1</translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
<name>Qt4ProjectManager::Internal::ProjectLoadWizard</name>
|
||||
<message>
|
||||
@@ -19928,6 +19941,10 @@ Use a developer certificate or any other signing option to prevent this patching
|
||||
<source>Qt Quick components version: </source>
|
||||
<translation>Версия элементов Qt Quick: </translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>QML Viewer version: </source>
|
||||
<translation>Версия QML Viewer: </translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Screen size:</source>
|
||||
<translation>Размер экрана:</translation>
|
||||
@@ -20784,10 +20801,34 @@ Reason: %2</source>
|
||||
<source>Add Build</source>
|
||||
<translation>Добавить сборку</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Create Build Configurations:</source>
|
||||
<translation>Создать конфигурации сборки:</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>For Each Qt Version One Debug And One Release</source>
|
||||
<translation>Одну отладочную и одну релизную для каждого профиля Qt</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>For One Qt Version One Debug And One Release</source>
|
||||
<translation>Одну отладочную и одну релизную для одного профиля Qt</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Manually</source>
|
||||
<translation>Вручную</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>None</source>
|
||||
<translation>Не создавать</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Use Shadow Building</source>
|
||||
<translation>Использовать теневую сборку</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Qt Version:</source>
|
||||
<translation>Профиль Qt:</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>debug</source>
|
||||
<extracomment>Debug build</extracomment>
|
||||
@@ -21670,10 +21711,6 @@ Requires Qt 4.7.4 or newer, and the component set installed for your Qt version.
|
||||
<translation>Выполнение внешнего процесса завершено. Код завершения %1.
|
||||
</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Remote Execution Failure</source>
|
||||
<translation>Ошибка внешнего выполнения</translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
<name>RemoteLinux::CreateTarStepWidget</name>
|
||||
@@ -21730,6 +21767,14 @@ In addition, device connectivity will be tested.</source>
|
||||
<source>Debian changelog file '%1' has unexpected format.</source>
|
||||
<translation>Файл журнала изменений Debian «%1» имеет неожиданный формат.</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Refusing to update changelog file: Already contains version '%1'.</source>
|
||||
<translation>Не удалось обновить файл changelog: Уже содержит версию «%1».</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Cannot update changelog: Invalid format (no maintainer entry found).</source>
|
||||
<translation>Не удалось обновить changelog: Неверный формат (нет записи о разработчике).</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Invalid icon data in Debian control file.</source>
|
||||
<translation>Неверные данные значка в управляющем файле Debian.</translation>
|
||||
@@ -27141,7 +27186,7 @@ Influences the indentation of continuation lines.
|
||||
<name>Valgrind::Callgrind::ParseData</name>
|
||||
<message>
|
||||
<source>Last-level</source>
|
||||
<translation type="unfinished">Последний уровень</translation>
|
||||
<translation>Последний уровень</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Instruction</source>
|
||||
|
||||
@@ -102,7 +102,7 @@
|
||||
<name>BINEditor::Internal::BinEditorPlugin</name>
|
||||
<message>
|
||||
<source>&Undo</source>
|
||||
<translation>撤销(&U)</translation>
|
||||
<translation>撤销</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>&Redo</source>
|
||||
@@ -245,7 +245,7 @@
|
||||
<name>Bookmarks::Internal::BookmarksPlugin</name>
|
||||
<message>
|
||||
<source>&Bookmarks</source>
|
||||
<translation>书签(&B)</translation>
|
||||
<translation>书签</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Toggle Bookmark</source>
|
||||
@@ -756,7 +756,7 @@
|
||||
<name>CodePaster::CodepasterPlugin</name>
|
||||
<message>
|
||||
<source>&Code Pasting</source>
|
||||
<translation>粘贴代码(&C)</translation>
|
||||
<translation>粘贴代码</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Paste Snippet...</source>
|
||||
@@ -1216,7 +1216,7 @@ Would you like to overwrite them?</source>
|
||||
</message>
|
||||
<message>
|
||||
<source>Save %1 &As...</source>
|
||||
<translation>%1 另存为(&A)...</translation>
|
||||
<translation>%1 另存为...</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Goto Other Split</source>
|
||||
@@ -1332,7 +1332,7 @@ Would you like to overwrite them?</source>
|
||||
</message>
|
||||
<message>
|
||||
<source>Ad&vanced</source>
|
||||
<translation>高级(&v)</translation>
|
||||
<translation>高级</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Full path of the current document including file name.</source>
|
||||
@@ -1757,11 +1757,11 @@ Would you like to overwrite them?</source>
|
||||
</message>
|
||||
<message>
|
||||
<source>&New File or Project...</source>
|
||||
<translation>新建文件或工程(&N)...</translation>
|
||||
<translation>新建文件或工程...</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>&Open File or Project...</source>
|
||||
<translation>打开文件或工程(&O)...</translation>
|
||||
<translation>打开文件或工程...</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>&Open File With...</source>
|
||||
@@ -1773,19 +1773,20 @@ Would you like to overwrite them?</source>
|
||||
</message>
|
||||
<message>
|
||||
<source>Open File &With...</source>
|
||||
<translation>用...打开文件(&W)...</translation>
|
||||
<translatorcomment>不需要快捷键</translatorcomment>
|
||||
<translation>用...打开文件</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Recent &Files</source>
|
||||
<translation>最近访问的文件(&F)</translation>
|
||||
<translation>最近访问的文件</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>&Save</source>
|
||||
<translation>保存(&S)</translation>
|
||||
<translation>保存</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Save &As...</source>
|
||||
<translation>另存为(&A)...</translation>
|
||||
<translation>另存为...</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Ctrl+Shift+S</source>
|
||||
@@ -1793,15 +1794,15 @@ Would you like to overwrite them?</source>
|
||||
</message>
|
||||
<message>
|
||||
<source>Save A&ll</source>
|
||||
<translation>保存所有文件(&l)</translation>
|
||||
<translation>保存所有文件</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>&Print...</source>
|
||||
<translation>打印(&P)...</translation>
|
||||
<translation>打印...</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>E&xit</source>
|
||||
<translation>退出(&x)</translation>
|
||||
<translation>退出</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Ctrl+Q</source>
|
||||
@@ -1809,7 +1810,7 @@ Would you like to overwrite them?</source>
|
||||
</message>
|
||||
<message>
|
||||
<source>&Undo</source>
|
||||
<translation>撤销(&U)</translation>
|
||||
<translation>撤销</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>&Redo</source>
|
||||
@@ -1817,23 +1818,23 @@ Would you like to overwrite them?</source>
|
||||
</message>
|
||||
<message>
|
||||
<source>Cu&t</source>
|
||||
<translation>剪切(&t)</translation>
|
||||
<translation>剪切</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>&Copy</source>
|
||||
<translation>复制(&C)</translation>
|
||||
<translation>复制</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>&Paste</source>
|
||||
<translation>粘贴(&P)</translation>
|
||||
<translation>粘贴</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Select &All</source>
|
||||
<translation>全选(&A)</translation>
|
||||
<translation>全选</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>&Go to Line...</source>
|
||||
<translation>转到行(&G)...</translation>
|
||||
<translation>转到行...</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>&Select All</source>
|
||||
@@ -1849,7 +1850,7 @@ Would you like to overwrite them?</source>
|
||||
</message>
|
||||
<message>
|
||||
<source>&Options...</source>
|
||||
<translation>选项(&O)...</translation>
|
||||
<translation>选项...</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Minimize</source>
|
||||
@@ -1869,19 +1870,19 @@ Would you like to overwrite them?</source>
|
||||
</message>
|
||||
<message>
|
||||
<source>&Views</source>
|
||||
<translation>视图(&V)</translation>
|
||||
<translation>视图</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>About &Qt Creator</source>
|
||||
<translation>关于 Qt Creator(&Q)</translation>
|
||||
<translation>关于 Qt Creator</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>About &Qt Creator...</source>
|
||||
<translation>关于 Qt Creator(&Q)...</translation>
|
||||
<translation>关于 Qt Creator...</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>About &Plugins...</source>
|
||||
<translation>关于插件(&P)...</translation>
|
||||
<translation>关于插件...</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>New</source>
|
||||
@@ -2058,7 +2059,7 @@ Would you like to overwrite them?</source>
|
||||
</message>
|
||||
<message>
|
||||
<source>Output &Panes</source>
|
||||
<translation>输出窗口(&P)</translation>
|
||||
<translation>输出窗口</translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
@@ -2990,7 +2991,7 @@ Would you like to overwrite them?</source>
|
||||
<name>CppTools::Internal::CppToolsPlugin</name>
|
||||
<message>
|
||||
<source>&C++</source>
|
||||
<translation>C++(&C)</translation>
|
||||
<translation>C++</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Switch Header/Source</source>
|
||||
@@ -9039,11 +9040,11 @@ on slow machines. In this case, the value should be increased.</source>
|
||||
</message>
|
||||
<message>
|
||||
<source>&Undo</source>
|
||||
<translation>撤销(&U)</translation>
|
||||
<translation>撤销</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>&Redo</source>
|
||||
<translation>重做(&R)</translation>
|
||||
<translation>重做</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Could not find working directory</source>
|
||||
@@ -9453,7 +9454,7 @@ on slow machines. In this case, the value should be increased.</source>
|
||||
</message>
|
||||
<message>
|
||||
<source>Technical Support</source>
|
||||
<translation>计数支持</translation>
|
||||
<translation>技术支持</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Report Bug</source>
|
||||
@@ -10181,11 +10182,11 @@ SOURCES *= .../ide/main/bin/dumper/dumper.cpp
|
||||
</message>
|
||||
<message>
|
||||
<source>&Undo</source>
|
||||
<translation>撤销(&U)</translation>
|
||||
<translation>撤销</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>&Redo</source>
|
||||
<translation>重做(&R)</translation>
|
||||
<translation>重做</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>p4 revert</source>
|
||||
@@ -11757,7 +11758,7 @@ to project '%2'.</source>
|
||||
</message>
|
||||
<message>
|
||||
<source>&Start Debugging</source>
|
||||
<translation>开始调试(&S)</translation>
|
||||
<translation>开始调试</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Open With</source>
|
||||
@@ -11809,7 +11810,7 @@ to project '%2'.</source>
|
||||
</message>
|
||||
<message>
|
||||
<source>Recent P&rojects</source>
|
||||
<translation>最近使用的项目(&r)</translation>
|
||||
<translation>最近使用的项目</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Close Project</source>
|
||||
@@ -14506,11 +14507,11 @@ To do this, you type this shortcut and a space in the Locator entry field, and t
|
||||
</message>
|
||||
<message>
|
||||
<source>&Undo</source>
|
||||
<translation>撤销(&U)</translation>
|
||||
<translation>撤销</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>&Redo</source>
|
||||
<translation>重做(&R)</translation>
|
||||
<translation>重做</translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
@@ -15096,11 +15097,11 @@ To do this, you type this shortcut and a space in the Locator entry field, and t
|
||||
</message>
|
||||
<message>
|
||||
<source>&Undo</source>
|
||||
<translation>撤销(&U)</translation>
|
||||
<translation>撤销</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>&Redo</source>
|
||||
<translation>重做(&R)</translation>
|
||||
<translation>重做</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Closing Subversion Editor</source>
|
||||
@@ -15595,7 +15596,7 @@ Influences the indentation of continuation lines.
|
||||
</message>
|
||||
<message>
|
||||
<source>&Visualize whitespace</source>
|
||||
<translation>标示空白(&V)</translation>
|
||||
<translation>标示空白</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Highlight current &line</source>
|
||||
@@ -15607,7 +15608,7 @@ Influences the indentation of continuation lines.
|
||||
</message>
|
||||
<message>
|
||||
<source>Enable text &wrapping</source>
|
||||
<translation>开启文字折行(&w)</translation>
|
||||
<translation>开启文字折行</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Display right &margin at column:</source>
|
||||
@@ -15881,11 +15882,11 @@ The following encodings are likely to fit:</source>
|
||||
<name>TextEditor::TextEditorActionHandler</name>
|
||||
<message>
|
||||
<source>&Undo</source>
|
||||
<translation>撤销(&U)</translation>
|
||||
<translation>撤销</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>&Redo</source>
|
||||
<translation>重做(&R)</translation>
|
||||
<translation>重做</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Select Encoding...</source>
|
||||
@@ -15893,7 +15894,7 @@ The following encodings are likely to fit:</source>
|
||||
</message>
|
||||
<message>
|
||||
<source>Auto-&indent Selection</source>
|
||||
<translation>选中的文字自动缩进(&i)</translation>
|
||||
<translation>选中的文字自动缩进</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Ctrl+I</source>
|
||||
@@ -15913,7 +15914,7 @@ The following encodings are likely to fit:</source>
|
||||
</message>
|
||||
<message>
|
||||
<source>&Visualize Whitespace</source>
|
||||
<translation>标示空白符(&V)</translation>
|
||||
<translation>标示空白</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Clean Whitespace</source>
|
||||
@@ -15921,7 +15922,7 @@ The following encodings are likely to fit:</source>
|
||||
</message>
|
||||
<message>
|
||||
<source>Enable Text &Wrapping</source>
|
||||
<translation>开启文字折行(&W)</translation>
|
||||
<translation>开启文字折行</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>(Un)Comment &Selection</source>
|
||||
@@ -15985,7 +15986,7 @@ The following encodings are likely to fit:</source>
|
||||
</message>
|
||||
<message>
|
||||
<source>&Rewrap Paragraph</source>
|
||||
<translation>段落重新折行(&R)</translation>
|
||||
<translation>段落重新折行</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>%1+E, %2+V</source>
|
||||
@@ -15997,7 +15998,7 @@ The following encodings are likely to fit:</source>
|
||||
</message>
|
||||
<message>
|
||||
<source>Toggle Comment &Selection</source>
|
||||
<translation>选中评论选择(&S)</translation>
|
||||
<translation>选中区域注释/反注释</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Cut &Line</source>
|
||||
@@ -16069,7 +16070,7 @@ The following encodings are likely to fit:</source>
|
||||
</message>
|
||||
<message>
|
||||
<source>Toggle &Fold All</source>
|
||||
<translation>选择 折叠/展开所有(&F)</translation>
|
||||
<translation>选择 折叠/展开所有</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Ctrl+}</source>
|
||||
@@ -18339,11 +18340,11 @@ p, li { white-space: pre-wrap; }
|
||||
</message>
|
||||
<message>
|
||||
<source>&Undo</source>
|
||||
<translation>撤销(&U)</translation>
|
||||
<translation>撤销</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>&Redo</source>
|
||||
<translation>重做(&R)</translation>
|
||||
<translation>重做</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Closing CVS Editor</source>
|
||||
@@ -20817,11 +20818,11 @@ S60 emulator run configuration default display name, %1 is base pro-File name</e
|
||||
</message>
|
||||
<message>
|
||||
<source>&Undo</source>
|
||||
<translation>撤销(&U)</translation>
|
||||
<translation>撤销</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>&Redo</source>
|
||||
<translation>重做(&R)</translation>
|
||||
<translation>重做</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>There are no changes to commit.</source>
|
||||
@@ -22150,11 +22151,11 @@ You can choose between stashing the changes or discarding them.</source>
|
||||
</message>
|
||||
<message>
|
||||
<source>Save P&ublic Key...</source>
|
||||
<translation>保存公钥文件(&u)...</translation>
|
||||
<translation>保存公钥文件...</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Save Pr&ivate Key...</source>
|
||||
<translation>保存私钥文件(&i)...</translation>
|
||||
<translation>保存私钥文件...</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>&Close</source>
|
||||
@@ -23226,7 +23227,7 @@ Previous decimal signed value (big endian): %4</source>
|
||||
<name>Find::FindPlugin</name>
|
||||
<message>
|
||||
<source>&Find/Replace</source>
|
||||
<translation>查找/替换(&F)</translation>
|
||||
<translation>查找/替换</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Advanced Find</source>
|
||||
@@ -24173,11 +24174,11 @@ Ids must begin with a lowercase letter.</source>
|
||||
<name>QmlDesigner::Internal::DesignModeWidget</name>
|
||||
<message>
|
||||
<source>&Undo</source>
|
||||
<translation>撤销(&U)</translation>
|
||||
<translation>撤销</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>&Redo</source>
|
||||
<translation>重做(&R)</translation>
|
||||
<translation>重做</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Delete</source>
|
||||
@@ -24189,7 +24190,7 @@ Ids must begin with a lowercase letter.</source>
|
||||
</message>
|
||||
<message>
|
||||
<source>Cu&t</source>
|
||||
<translation>剪切(&t)</translation>
|
||||
<translation>剪切</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Cut "%1"</source>
|
||||
@@ -24197,7 +24198,7 @@ Ids must begin with a lowercase letter.</source>
|
||||
</message>
|
||||
<message>
|
||||
<source>&Copy</source>
|
||||
<translation>复制(&C)</translation>
|
||||
<translation>复制</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Copy "%1"</source>
|
||||
@@ -24205,7 +24206,7 @@ Ids must begin with a lowercase letter.</source>
|
||||
</message>
|
||||
<message>
|
||||
<source>&Paste</source>
|
||||
<translation>粘贴(&P)</translation>
|
||||
<translation>粘贴</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Paste "%1"</source>
|
||||
@@ -24213,7 +24214,7 @@ Ids must begin with a lowercase letter.</source>
|
||||
</message>
|
||||
<message>
|
||||
<source>Select &All</source>
|
||||
<translation>全选(&A)</translation>
|
||||
<translation>全选</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Select All "%1"</source>
|
||||
@@ -24268,7 +24269,7 @@ Ids must begin with a lowercase letter.</source>
|
||||
</message>
|
||||
<message>
|
||||
<source>&Save %1</source>
|
||||
<translation>保存%1(&S)</translation>
|
||||
<translation>保存%1</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Revert %1 to Saved</source>
|
||||
@@ -30329,7 +30330,7 @@ instead of its installation directory when run outside git bash.</source>
|
||||
<message>
|
||||
<source>&Copy</source>
|
||||
<comment>Name of the action triggering the copytaskhandler</comment>
|
||||
<translation>复制(&C)</translation>
|
||||
<translation>复制</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Copy task to clipboard</source>
|
||||
@@ -34612,11 +34613,11 @@ Influences the indentation of continuation lines.
|
||||
</message>
|
||||
<message>
|
||||
<source>&Undo</source>
|
||||
<translation>撤销(&U)</translation>
|
||||
<translation>撤销</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>&Redo</source>
|
||||
<translation>重做(&R)</translation>
|
||||
<translation>重做</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>There are no changes to commit.</source>
|
||||
@@ -34894,7 +34895,7 @@ Note: This might remove the local file.</source>
|
||||
</message>
|
||||
<message>
|
||||
<source>&Refactor</source>
|
||||
<translation>重构(&R)</translation>
|
||||
<translation>重构</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Unused variable</source>
|
||||
|
||||
@@ -29,6 +29,6 @@ SOURCES += qtmenu.cpp \
|
||||
qwheelarea.cpp
|
||||
|
||||
!macx {
|
||||
target.path = /lib/qtcreator/qtcomponents/plugin
|
||||
target.path = /$${IDE_LIBRARY_BASENAME}/qtcreator/qtcomponents/plugin
|
||||
INSTALLS += target
|
||||
}
|
||||
|
||||
@@ -945,8 +945,8 @@ void BinEditor::setCursorPosition(int pos, MoveMode moveMode)
|
||||
hasSelection = m_anchorPosition != m_cursorPosition;
|
||||
updateLines(hasSelection ? oldCursorPosition : m_cursorPosition, m_cursorPosition);
|
||||
ensureCursorVisible();
|
||||
if (hasSelection != (m_anchorPosition != m_anchorPosition))
|
||||
emit copyAvailable(m_anchorPosition != m_cursorPosition);
|
||||
if (hasSelection)
|
||||
emit copyAvailable(hasSelection);
|
||||
emit cursorPositionChanged(m_cursorPosition);
|
||||
}
|
||||
|
||||
|
||||
@@ -164,10 +164,9 @@ void QmlEngine::setupInferior()
|
||||
QTC_ASSERT(state() == InferiorSetupRequested, qDebug() << state());
|
||||
|
||||
if (startParameters().startMode == AttachToRemote) {
|
||||
emit requestRemoteSetup();
|
||||
if (startParameters().qmlServerPort != quint16(-1))
|
||||
notifyInferiorSetupOk();
|
||||
else
|
||||
emit requestRemoteSetup();
|
||||
} else {
|
||||
d->m_applicationLauncher.setEnvironment(startParameters().environment);
|
||||
d->m_applicationLauncher.setWorkingDirectory(startParameters().workingDirectory);
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
macx {
|
||||
DESTDIR = $$IDE_LIBRARY_PATH/QmlDesigner
|
||||
} else {
|
||||
DESTDIR = $$IDE_BUILD_TREE/lib/qmldesigner
|
||||
DESTDIR = $$IDE_BUILD_TREE/$${IDE_LIBRARY_BASENAME}/qmldesigner
|
||||
}
|
||||
|
||||
@@ -71,7 +71,7 @@ static inline bool checkIfNodeIsAView(const ModelNode &node)
|
||||
|
||||
static inline bool isItem(const ModelNode &node)
|
||||
{
|
||||
return node.metaInfo().isValid() && node.metaInfo().isSubclassOf("QtQuick.Item", -1, -1);
|
||||
return node.isValid() && node.metaInfo().isValid() && node.metaInfo().isSubclassOf("QtQuick.Item", -1, -1);
|
||||
}
|
||||
|
||||
static inline QList<QmlItemNode> siblingsForNode(const QmlItemNode &itemNode)
|
||||
@@ -251,7 +251,7 @@ void ModelNodeContextMenu::execute(const QPoint &pos, bool selectionMenuBool)
|
||||
editMenu->addAction(action);
|
||||
action = createModelNodeAction(tr("Visibility"), editMenu, QList<ModelNode>() << currentSingleNode, ModelNodeAction::ModelNodeVisibility, singleSelected);
|
||||
editMenu->addAction(action);
|
||||
if (!isItem(currentSingleNode))
|
||||
if (singleSelected && !isItem(currentSingleNode))
|
||||
action->setDisabled(true);
|
||||
|
||||
} else {
|
||||
|
||||
@@ -216,6 +216,8 @@ RunControl *QmlProjectRunControlFactory::createDebugRunControl(QmlProjectRunConf
|
||||
params.displayName = runConfig->displayName();
|
||||
params.projectSourceDirectory = runConfig->target()->project()->projectDirectory();
|
||||
params.projectSourceFiles = runConfig->target()->project()->files(Project::ExcludeGeneratedFiles);
|
||||
if (!runConfig->qtVersion()->qtAbis().isEmpty())
|
||||
params.toolChainAbi = runConfig->qtVersion()->qtAbis().first();
|
||||
|
||||
// Makes sure that all bindings go through the JavaScript engine, so that
|
||||
// breakpoints are actually hit!
|
||||
|
||||
@@ -180,7 +180,7 @@ QStringList QMakeStep::moreArguments()
|
||||
if (!bc->qtVersion()->needsQmlDebuggingLibrary()) {
|
||||
// This Qt version has the QML debugging services built in, however
|
||||
// they still need to be enabled at compile time
|
||||
arguments << QLatin1String("CONFIG+=declarative_debug");
|
||||
arguments << QLatin1String(Constants::QMAKEVAR_DECLARATIVE_DEBUG);
|
||||
} else {
|
||||
QString qmlDebuggingHelperLibrary = bc->qtVersion()->qmlDebuggingHelperLibrary(true);
|
||||
if (!qmlDebuggingHelperLibrary.isEmpty()) {
|
||||
|
||||
@@ -70,7 +70,6 @@ CodaRunControl::CodaRunControl(RunConfiguration *runConfiguration, const QString
|
||||
S60RunControlBase(runConfiguration, mode),
|
||||
m_port(0),
|
||||
m_state(StateUninit),
|
||||
m_codaFlags(0),
|
||||
m_stopAfterConnect(false)
|
||||
{
|
||||
const S60DeviceRunConfiguration *s60runConfig = qobject_cast<S60DeviceRunConfiguration *>(runConfiguration);
|
||||
@@ -167,7 +166,7 @@ void CodaRunControl::doStop()
|
||||
case StateProcessRunning:
|
||||
QTC_ASSERT(!m_runningProcessId.isEmpty(), return);
|
||||
m_codaDevice->sendRunControlTerminateCommand(CodaCallback(),
|
||||
m_runningProcessId.toAscii());
|
||||
m_runningProcessId.toAscii());
|
||||
break;
|
||||
default:
|
||||
if (debug)
|
||||
@@ -226,10 +225,7 @@ void CodaRunControl::slotCodaEvent(const CodaEvent &event)
|
||||
|
||||
void CodaRunControl::initCommunication()
|
||||
{
|
||||
if (m_codaFlags & OptionsUseDebugSession)
|
||||
m_codaDevice->sendDebugSessionControlSessionStartCommand(CodaCallback(this, &CodaRunControl::handleDebugSessionStarted));
|
||||
else
|
||||
m_codaDevice->sendLoggingAddListenerCommand(CodaCallback(this, &CodaRunControl::handleAddListener));
|
||||
m_codaDevice->sendDebugSessionControlSessionStartCommand(CodaCallback(this, &CodaRunControl::handleDebugSessionStarted));
|
||||
}
|
||||
|
||||
void CodaRunControl::handleConnected(const CodaEvent &event)
|
||||
@@ -241,8 +237,6 @@ void CodaRunControl::handleConnected(const CodaEvent &event)
|
||||
setProgress(maxProgress()*0.80);
|
||||
|
||||
m_codaServices = static_cast<const CodaLocatorHelloEvent &>(event).services();
|
||||
if (m_codaServices.contains(QLatin1String("DebugSessionControl")))
|
||||
m_codaFlags |= OptionsUseDebugSession;
|
||||
|
||||
emit connected();
|
||||
if (!m_stopAfterConnect)
|
||||
@@ -255,11 +249,7 @@ void CodaRunControl::handleContextRemoved(const CodaEvent &event)
|
||||
= static_cast<const CodaRunControlContextRemovedEvent &>(event).ids();
|
||||
if (!m_runningProcessId.isEmpty()
|
||||
&& removedItems.contains(m_runningProcessId.toAscii())) {
|
||||
appendMessage(tr("Process has finished.\n"), Utils::NormalMessageFormat);
|
||||
if (m_codaFlags & OptionsUseDebugSession)
|
||||
m_codaDevice->sendDebugSessionControlSessionEndCommand(CodaCallback(this, &CodaRunControl::handleDebugSessionEnded));
|
||||
else
|
||||
finishRunControl();
|
||||
m_codaDevice->sendDebugSessionControlSessionEndCommand(CodaCallback(this, &CodaRunControl::handleDebugSessionEnded));
|
||||
}
|
||||
}
|
||||
|
||||
@@ -331,6 +321,10 @@ void CodaRunControl::handleAddListener(const CodaCommandResult &result)
|
||||
void CodaRunControl::handleDebugSessionStarted(const CodaCommandResult &result)
|
||||
{
|
||||
Q_UNUSED(result)
|
||||
if (m_codaDevice.isNull()) {
|
||||
finishRunControl();
|
||||
return;
|
||||
}
|
||||
m_state = StateDebugSessionStarted;
|
||||
m_codaDevice->sendLoggingAddListenerCommand(CodaCallback(this, &CodaRunControl::handleAddListener));
|
||||
}
|
||||
@@ -355,7 +349,7 @@ void CodaRunControl::handleFindProcesses(const CodaCommandResult &result)
|
||||
executableUid(),
|
||||
commandLineArguments().split(' '),
|
||||
QString(),
|
||||
!(m_codaFlags & OptionsUseDebugSession));
|
||||
true);
|
||||
appendMessage(tr("Launching: %1\n").arg(executableName()), Utils::NormalMessageFormat);
|
||||
}
|
||||
}
|
||||
@@ -365,17 +359,14 @@ void CodaRunControl::handleCreateProcess(const CodaCommandResult &result)
|
||||
const bool ok = result.type == CodaCommandResult::SuccessReply;
|
||||
bool processCreated = false;
|
||||
if (ok) {
|
||||
if (m_codaFlags & OptionsUseDebugSession) {
|
||||
if (result.values.size()) {
|
||||
Json::JsonValue id = result.values.at(0).findChild("ID");
|
||||
if (id.isValid()) {
|
||||
m_state = StateProcessRunning;
|
||||
m_runningProcessId = id.data();
|
||||
processCreated = true;
|
||||
}
|
||||
if (result.values.size()) {
|
||||
Json::JsonValue id = result.values.at(0).findChild("ID");
|
||||
if (id.isValid()) {
|
||||
m_state = StateProcessRunning;
|
||||
m_runningProcessId = id.data();
|
||||
processCreated = true;
|
||||
}
|
||||
} else // If no DebugSession is present the process will already be created by now
|
||||
processCreated = true;
|
||||
}
|
||||
}
|
||||
if (processCreated) {
|
||||
setProgress(maxProgress());
|
||||
|
||||
@@ -116,11 +116,6 @@ private:
|
||||
StateDebugSessionEnded
|
||||
};
|
||||
|
||||
enum Options {
|
||||
OptionsNone = 0,
|
||||
OptionsUseDebugSession = 1
|
||||
};
|
||||
|
||||
QSharedPointer<Coda::CodaDevice> m_codaDevice;
|
||||
|
||||
QString m_address;
|
||||
@@ -130,7 +125,6 @@ private:
|
||||
QStringList m_codaServices;
|
||||
|
||||
State m_state;
|
||||
quint32 m_codaFlags;
|
||||
bool m_stopAfterConnect;
|
||||
};
|
||||
|
||||
|
||||
@@ -77,6 +77,7 @@ const char LAST_DRIVE_LETTER = 'Z';
|
||||
static const quint32 CODA_UID = 0x20021F96;
|
||||
static const quint32 QTMOBILITY_UID = 0x2002AC89;
|
||||
static const quint32 QTCOMPONENTS_UID = 0x200346DE;
|
||||
static const quint32 QMLVIEWER_UID = 0x20021317;
|
||||
|
||||
QString formatDriveText(const S60DeployConfiguration::DeviceDrive &drive)
|
||||
{
|
||||
@@ -597,6 +598,7 @@ void S60DeployConfigurationWidget::getRomInfoResult(const Coda::CodaCommandResul
|
||||
packagesOfInterest.append(CODA_UID);
|
||||
packagesOfInterest.append(QTMOBILITY_UID);
|
||||
packagesOfInterest.append(QTCOMPONENTS_UID);
|
||||
packagesOfInterest.append(QMLVIEWER_UID);
|
||||
if (m_codaInfoDevice)
|
||||
m_codaInfoDevice->sendSymbianInstallGetPackageInfoCommand(Coda::CodaCallback(this, &S60DeployConfigurationWidget::getInstalledPackagesResult), packagesOfInterest);
|
||||
}
|
||||
@@ -642,6 +644,10 @@ void S60DeployConfigurationWidget::getInstalledPackagesResult(const Coda::CodaCo
|
||||
addToTable(str, tr("Qt Quick components version: "), error ? tr("Not installed") : versionString);
|
||||
}
|
||||
break;
|
||||
case QMLVIEWER_UID: {
|
||||
addToTable(str, tr("QML Viewer version: "), error ? tr("Not installed") : versionString);
|
||||
}
|
||||
break;
|
||||
default: break;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -535,8 +535,9 @@ bool Qt4BuildConfiguration::removeQMLInspectorFromArguments(QString *args)
|
||||
{
|
||||
bool removedArgument = false;
|
||||
for (Utils::QtcProcess::ArgIterator ait(args); ait.next(); ) {
|
||||
if (ait.value().contains(QLatin1String(Constants::QMAKEVAR_QMLJSDEBUGGER_PATH))) {
|
||||
ait.deleteArg();
|
||||
const QString arg = ait.value();
|
||||
if (arg.contains(QLatin1String(Constants::QMAKEVAR_QMLJSDEBUGGER_PATH))
|
||||
|| arg.contains(Constants::QMAKEVAR_DECLARATIVE_DEBUG)) {
|
||||
removedArgument = true;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -137,6 +137,7 @@ FORMS += makestep.ui \
|
||||
wizards/mobileappwizardgenericoptionspage.ui \
|
||||
wizards/mobileappwizardsymbianoptionspage.ui \
|
||||
wizards/mobileappwizardmaemooptionspage.ui \
|
||||
wizards/mobileappwizardharmattanoptionspage.ui \
|
||||
wizards/qtquickcomponentsetoptionspage.ui
|
||||
|
||||
RESOURCES += qt4projectmanager.qrc \
|
||||
|
||||
@@ -115,6 +115,7 @@ const char * const ICON_HTML5_APP = ":/wizards/images/html5app.png";
|
||||
|
||||
// Env variables
|
||||
const char * const QMAKEVAR_QMLJSDEBUGGER_PATH = "QMLJSDEBUGGER_PATH";
|
||||
const char * const QMAKEVAR_DECLARATIVE_DEBUG = "CONFIG+=declarative_debug";
|
||||
|
||||
} // namespace Constants
|
||||
} // namespace Qt4ProjectManager
|
||||
|
||||
@@ -42,6 +42,7 @@
|
||||
#endif // CREATORLESSTEST
|
||||
|
||||
#include <utils/fileutils.h>
|
||||
#include <utils/qtcassert.h>
|
||||
|
||||
namespace Qt4ProjectManager {
|
||||
|
||||
@@ -62,8 +63,11 @@ const QString AbstractMobileApp::FileStubVersion(QLatin1String("version"));
|
||||
const int AbstractMobileApp::StubVersion = 6;
|
||||
|
||||
AbstractMobileApp::AbstractMobileApp()
|
||||
: m_orientation(ScreenOrientationAuto)
|
||||
: QObject()
|
||||
, m_canSupportMeegoBooster(false)
|
||||
, m_orientation(ScreenOrientationAuto)
|
||||
, m_networkEnabled(true)
|
||||
, m_supportsMeegoBooster(false)
|
||||
{
|
||||
}
|
||||
|
||||
@@ -209,7 +213,10 @@ QByteArray AbstractMobileApp::generateDesktopFile(QString *errorMessage, int fil
|
||||
} else if (fileType == AbstractGeneratedFileInfo::DesktopFileHarmattan) {
|
||||
desktopFileContent.replace("Icon=thisApp",
|
||||
"Icon=/usr/share/icons/hicolor/80x80/apps/" + projectName().toUtf8() + "80.png");
|
||||
desktopFileContent.replace("Exec=", "Exec=/usr/bin/single-instance ");
|
||||
if (m_supportsMeegoBooster)
|
||||
desktopFileContent.replace("Exec=", "Exec=/usr/bin/invoker --type=d -s ");
|
||||
else
|
||||
desktopFileContent.replace("Exec=", "Exec=/usr/bin/single-instance ");
|
||||
}
|
||||
return desktopFileContent.replace("thisApp", projectName().toUtf8());
|
||||
}
|
||||
@@ -416,6 +423,22 @@ QString AbstractMobileApp::error() const
|
||||
return m_error;
|
||||
}
|
||||
|
||||
bool AbstractMobileApp::canSupportMeegoBooster() const
|
||||
{
|
||||
return m_canSupportMeegoBooster;
|
||||
}
|
||||
|
||||
bool AbstractMobileApp::supportsMeegoBooster() const
|
||||
{
|
||||
return m_supportsMeegoBooster;
|
||||
}
|
||||
|
||||
void AbstractMobileApp::setSupportsMeegoBooster(bool supportMeegoBooster)
|
||||
{
|
||||
QTC_ASSERT(canSupportMeegoBooster(), return);
|
||||
m_supportsMeegoBooster = supportMeegoBooster;
|
||||
}
|
||||
|
||||
QByteArray AbstractMobileApp::readBlob(const QString &filePath,
|
||||
QString *errorMsg) const
|
||||
{
|
||||
|
||||
@@ -133,6 +133,10 @@ public:
|
||||
QString path(int fileType) const;
|
||||
QString error() const;
|
||||
|
||||
bool canSupportMeegoBooster() const;
|
||||
bool supportsMeegoBooster() const;
|
||||
void setSupportsMeegoBooster(bool supportBooster);
|
||||
|
||||
#ifndef CREATORLESSTEST
|
||||
virtual Core::GeneratedFiles generateFiles(QString *errorMessage) const;
|
||||
#else
|
||||
@@ -168,6 +172,8 @@ protected:
|
||||
static const int StubVersion;
|
||||
|
||||
QString m_error;
|
||||
bool m_canSupportMeegoBooster;
|
||||
|
||||
private:
|
||||
QByteArray generateDesktopFile(QString *errorMessage, int fileType) const;
|
||||
QByteArray generateMainCpp(QString *errorMessage) const;
|
||||
@@ -194,6 +200,7 @@ private:
|
||||
QString m_symbianTargetUid;
|
||||
ScreenOrientation m_orientation;
|
||||
bool m_networkEnabled;
|
||||
bool m_supportsMeegoBooster;
|
||||
};
|
||||
|
||||
} // namespace Qt4ProjectManager
|
||||
|
||||
@@ -70,8 +70,8 @@ AbstractMobileAppWizardDialog::AbstractMobileAppWizardDialog(QWidget *parent, co
|
||||
|
||||
m_genericOptionsPage = new Internal::MobileAppWizardGenericOptionsPage;
|
||||
m_symbianOptionsPage = new Internal::MobileAppWizardSymbianOptionsPage;
|
||||
m_maemoOptionsPage = new Internal::MobileAppWizardMaemoOptionsPage(64);
|
||||
m_harmattanOptionsPage = new Internal::MobileAppWizardMaemoOptionsPage(80);
|
||||
m_maemoOptionsPage = new Internal::MobileAppWizardMaemoOptionsPage;
|
||||
m_harmattanOptionsPage = new Internal::MobileAppWizardHarmattanOptionsPage;
|
||||
}
|
||||
|
||||
void AbstractMobileAppWizardDialog::addMobilePages()
|
||||
@@ -235,6 +235,7 @@ QWizard *AbstractMobileAppWizard::createWizardDialog(QWidget *parent,
|
||||
wdlg->m_symbianOptionsPage->setNetworkEnabled(app()->networkEnabled());
|
||||
wdlg->m_maemoOptionsPage->setPngIcon(app()->pngIcon64());
|
||||
wdlg->m_harmattanOptionsPage->setPngIcon(app()->pngIcon80());
|
||||
wdlg->m_harmattanOptionsPage->setBoosterOptionEnabled(app()->canSupportMeegoBooster());
|
||||
connect(wdlg, SIGNAL(projectParametersChanged(QString, QString)),
|
||||
SLOT(useProjectPath(QString, QString)));
|
||||
foreach (QWizardPage *p, extensionPages)
|
||||
@@ -253,6 +254,9 @@ Core::GeneratedFiles AbstractMobileAppWizard::generateFiles(const QWizard *wizar
|
||||
app()->setNetworkEnabled(wdlg->m_symbianOptionsPage->networkEnabled());
|
||||
app()->setPngIcon64(wdlg->m_maemoOptionsPage->pngIcon());
|
||||
app()->setPngIcon80(wdlg->m_harmattanOptionsPage->pngIcon());
|
||||
if (wdlg->isHarmattanTargetSelected())
|
||||
app()->setSupportsMeegoBooster(wdlg->isHarmattanTargetSelected()
|
||||
&& wdlg->m_harmattanOptionsPage->supportsBooster());
|
||||
prepareGenerateFiles(wizard, errorMessage);
|
||||
return app()->generateFiles(errorMessage);
|
||||
}
|
||||
|
||||
@@ -48,6 +48,7 @@ namespace Internal {
|
||||
class MobileAppWizardGenericOptionsPage;
|
||||
class MobileAppWizardSymbianOptionsPage;
|
||||
class MobileAppWizardMaemoOptionsPage;
|
||||
class MobileAppWizardHarmattanOptionsPage;
|
||||
}
|
||||
|
||||
/// \internal
|
||||
@@ -81,7 +82,7 @@ private:
|
||||
Internal::MobileAppWizardGenericOptionsPage *m_genericOptionsPage;
|
||||
Internal::MobileAppWizardSymbianOptionsPage *m_symbianOptionsPage;
|
||||
Internal::MobileAppWizardMaemoOptionsPage *m_maemoOptionsPage;
|
||||
Internal::MobileAppWizardMaemoOptionsPage *m_harmattanOptionsPage;
|
||||
Internal::MobileAppWizardHarmattanOptionsPage *m_harmattanOptionsPage;
|
||||
TargetSetupPage *m_targetsPage;
|
||||
|
||||
int m_genericOptionsPageId;
|
||||
|
||||
@@ -0,0 +1,95 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<ui version="4.0">
|
||||
<class>MobileAppWizardHarmattanOptionsPage</class>
|
||||
<widget class="QWizardPage" name="MobileAppWizardHarmattanOptionsPage">
|
||||
<property name="geometry">
|
||||
<rect>
|
||||
<x>0</x>
|
||||
<y>0</y>
|
||||
<width>400</width>
|
||||
<height>300</height>
|
||||
</rect>
|
||||
</property>
|
||||
<property name="windowTitle">
|
||||
<string>WizardPage</string>
|
||||
</property>
|
||||
<layout class="QGridLayout" name="gridLayout">
|
||||
<item row="0" column="0">
|
||||
<widget class="QLabel" name="appIconLabel">
|
||||
<property name="text">
|
||||
<string>Application icon (80x80):</string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="0" column="1">
|
||||
<widget class="QToolButton" name="pngIconButton">
|
||||
<property name="minimumSize">
|
||||
<size>
|
||||
<width>0</width>
|
||||
<height>0</height>
|
||||
</size>
|
||||
</property>
|
||||
<property name="maximumSize">
|
||||
<size>
|
||||
<width>16777215</width>
|
||||
<height>16777215</height>
|
||||
</size>
|
||||
</property>
|
||||
<property name="text">
|
||||
<string/>
|
||||
</property>
|
||||
<property name="iconSize">
|
||||
<size>
|
||||
<width>64</width>
|
||||
<height>64</height>
|
||||
</size>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="1" column="0" colspan="2">
|
||||
<widget class="QCheckBox" name="makeBoostableCheckBox">
|
||||
<property name="enabled">
|
||||
<bool>true</bool>
|
||||
</property>
|
||||
<property name="toolTip">
|
||||
<string>Generate code to speed up the launching on the device.</string>
|
||||
</property>
|
||||
<property name="text">
|
||||
<string>Make application boostable</string>
|
||||
</property>
|
||||
<property name="checked">
|
||||
<bool>true</bool>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="0" column="2">
|
||||
<spacer name="horizontalSpacer">
|
||||
<property name="orientation">
|
||||
<enum>Qt::Horizontal</enum>
|
||||
</property>
|
||||
<property name="sizeHint" stdset="0">
|
||||
<size>
|
||||
<width>40</width>
|
||||
<height>20</height>
|
||||
</size>
|
||||
</property>
|
||||
</spacer>
|
||||
</item>
|
||||
<item row="2" column="1">
|
||||
<spacer name="verticalSpacer">
|
||||
<property name="orientation">
|
||||
<enum>Qt::Vertical</enum>
|
||||
</property>
|
||||
<property name="sizeHint" stdset="0">
|
||||
<size>
|
||||
<width>20</width>
|
||||
<height>40</height>
|
||||
</size>
|
||||
</property>
|
||||
</spacer>
|
||||
</item>
|
||||
</layout>
|
||||
</widget>
|
||||
<resources/>
|
||||
<connections/>
|
||||
</ui>
|
||||
@@ -17,7 +17,7 @@
|
||||
<item row="0" column="0">
|
||||
<widget class="QLabel" name="appIconLabel">
|
||||
<property name="text">
|
||||
<string>Application icon (%%w%%x%%h%%):</string>
|
||||
<string>Application icon (64x64):</string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
|
||||
@@ -33,6 +33,7 @@
|
||||
#include "mobileappwizardpages.h"
|
||||
#include "ui_mobileappwizardgenericoptionspage.h"
|
||||
#include "ui_mobileappwizardmaemooptionspage.h"
|
||||
#include "ui_mobileappwizardharmattanoptionspage.h"
|
||||
#include "ui_mobileappwizardsymbianoptionspage.h"
|
||||
#include <coreplugin/coreconstants.h>
|
||||
#include <utils/fileutils.h>
|
||||
@@ -67,6 +68,14 @@ class MobileAppWizardMaemoOptionsPagePrivate
|
||||
friend class MobileAppWizardMaemoOptionsPage;
|
||||
};
|
||||
|
||||
class MobileAppWizardHarmattanOptionsPagePrivate
|
||||
{
|
||||
Ui::MobileAppWizardHarmattanOptionsPage ui;
|
||||
QSize iconSize;
|
||||
QString pngIcon;
|
||||
friend class MobileAppWizardHarmattanOptionsPage;
|
||||
};
|
||||
|
||||
MobileAppWizardGenericOptionsPage::MobileAppWizardGenericOptionsPage(QWidget *parent)
|
||||
: QWizardPage(parent)
|
||||
, m_d(new MobileAppWizardGenericOptionsPagePrivate)
|
||||
@@ -167,18 +176,12 @@ void MobileAppWizardSymbianOptionsPage::openSvgIcon()
|
||||
setSvgIcon(svgIcon);
|
||||
}
|
||||
|
||||
|
||||
MobileAppWizardMaemoOptionsPage::MobileAppWizardMaemoOptionsPage(int appIconSize,
|
||||
QWidget *parent)
|
||||
MobileAppWizardMaemoOptionsPage::MobileAppWizardMaemoOptionsPage(QWidget *parent)
|
||||
: QWizardPage(parent)
|
||||
, m_d(new MobileAppWizardMaemoOptionsPagePrivate)
|
||||
{
|
||||
m_d->ui.setupUi(this);
|
||||
QString iconLabelText = m_d->ui.appIconLabel->text();
|
||||
iconLabelText.replace(QLatin1String("%%w%%"), QString::number(appIconSize));
|
||||
iconLabelText.replace(QLatin1String("%%h%%"), QString::number(appIconSize));
|
||||
m_d->ui.appIconLabel->setText(iconLabelText);
|
||||
m_d->iconSize = QSize(appIconSize, appIconSize);
|
||||
m_d->iconSize = QSize(64, 64);
|
||||
m_d->ui.pngIconButton->setIconSize(m_d->iconSize);
|
||||
connect(m_d->ui.pngIconButton, SIGNAL(clicked()), this, SLOT(openPngIcon()));
|
||||
}
|
||||
@@ -193,42 +196,66 @@ QString MobileAppWizardMaemoOptionsPage::pngIcon() const
|
||||
return m_d->pngIcon;
|
||||
}
|
||||
|
||||
void MobileAppWizardMaemoOptionsPage::setPngIcon(const QString &icon)
|
||||
|
||||
class PngIconScaler : public QObject
|
||||
{
|
||||
QString error;
|
||||
QPixmap iconPixmap(icon);
|
||||
if (iconPixmap.isNull()) {
|
||||
QMessageBox::critical(this, tr("Invalid Icon"),
|
||||
tr("The file is not a valid image."));
|
||||
return;
|
||||
Q_OBJECT
|
||||
public:
|
||||
PngIconScaler(const QSize &expectedSize, const QString &iconPath)
|
||||
: m_expectedSize(expectedSize)
|
||||
, m_iconPath(iconPath)
|
||||
, m_pixmap(iconPath)
|
||||
{
|
||||
}
|
||||
|
||||
QString actualIconPath;
|
||||
if (iconPixmap.size() == m_d->iconSize) {
|
||||
actualIconPath = icon;
|
||||
} else {
|
||||
const QMessageBox::StandardButton button = QMessageBox::warning(this,
|
||||
tr("Wrong Icon Size"), tr("The icon needs to be %1x%2 pixels big, "
|
||||
"but is not. Do you want Creator to scale it?")
|
||||
.arg(m_d->iconSize.width()).arg(m_d->iconSize.height()),
|
||||
QMessageBox::Ok | QMessageBox::Cancel);
|
||||
bool hasRightSize() const { return m_expectedSize == m_pixmap.size(); }
|
||||
QPixmap pixmap() const { return m_pixmap; }
|
||||
|
||||
bool scale(QString *newPath) {
|
||||
const QMessageBox::StandardButton button
|
||||
= QMessageBox::warning(QApplication::activeWindow(),
|
||||
tr("Wrong Icon Size"),
|
||||
tr("The icon needs to be %1x%2 pixels big, "
|
||||
"but is not. Do you want Qt Creator to scale it?")
|
||||
.arg(m_expectedSize.width()).arg(m_expectedSize.height()),
|
||||
QMessageBox::Ok | QMessageBox::Cancel);
|
||||
if (button != QMessageBox::Ok)
|
||||
return;
|
||||
iconPixmap = iconPixmap.scaled(m_d->iconSize);
|
||||
return false;
|
||||
|
||||
m_pixmap = m_pixmap.scaled(m_expectedSize);
|
||||
Utils::TempFileSaver saver;
|
||||
saver.setAutoRemove(false);
|
||||
if (!saver.hasError())
|
||||
saver.setResult(iconPixmap.save(
|
||||
saver.file(), QFileInfo(icon).suffix().toAscii().constData()));
|
||||
saver.setResult(m_pixmap.save(
|
||||
saver.file(), QFileInfo(m_iconPath).suffix().toAscii().constData()));
|
||||
if (!saver.finalize()) {
|
||||
QMessageBox::critical(this, tr("File Error"),
|
||||
tr("Could not copy icon file: %1").arg(saver.errorString()));
|
||||
return;
|
||||
QMessageBox::critical(QApplication::activeWindow(),
|
||||
tr("File Error"),
|
||||
tr("Could not copy icon file: %1").arg(saver.errorString()));
|
||||
return false;
|
||||
}
|
||||
actualIconPath = saver.fileName();
|
||||
*newPath = saver.fileName();
|
||||
return true;
|
||||
}
|
||||
private:
|
||||
QSize m_expectedSize;
|
||||
QString m_iconPath;
|
||||
QPixmap m_pixmap;
|
||||
};
|
||||
|
||||
|
||||
void MobileAppWizardMaemoOptionsPage::setPngIcon(const QString &icon)
|
||||
{
|
||||
QString actualIconPath;
|
||||
PngIconScaler scaler(m_d->iconSize, icon);
|
||||
if (scaler.hasRightSize()) {
|
||||
actualIconPath = icon;
|
||||
} else {
|
||||
if (!scaler.scale(&actualIconPath))
|
||||
return;
|
||||
}
|
||||
|
||||
m_d->ui.pngIconButton->setIcon(iconPixmap);
|
||||
m_d->ui.pngIconButton->setIcon(scaler.pixmap());
|
||||
m_d->pngIcon = actualIconPath;
|
||||
}
|
||||
|
||||
@@ -241,5 +268,62 @@ void MobileAppWizardMaemoOptionsPage::openPngIcon()
|
||||
setPngIcon(iconPath);
|
||||
}
|
||||
|
||||
MobileAppWizardHarmattanOptionsPage::MobileAppWizardHarmattanOptionsPage(QWidget *parent)
|
||||
: QWizardPage(parent)
|
||||
, m_d(new MobileAppWizardHarmattanOptionsPagePrivate)
|
||||
{
|
||||
m_d->ui.setupUi(this);
|
||||
m_d->iconSize = QSize(80, 80);
|
||||
m_d->ui.pngIconButton->setIconSize(m_d->iconSize);
|
||||
connect(m_d->ui.pngIconButton, SIGNAL(clicked()), this, SLOT(openPngIcon()));
|
||||
}
|
||||
|
||||
MobileAppWizardHarmattanOptionsPage::~MobileAppWizardHarmattanOptionsPage()
|
||||
{
|
||||
delete m_d;
|
||||
}
|
||||
|
||||
QString MobileAppWizardHarmattanOptionsPage::pngIcon() const
|
||||
{
|
||||
return m_d->pngIcon;
|
||||
}
|
||||
|
||||
void MobileAppWizardHarmattanOptionsPage::setPngIcon(const QString &icon)
|
||||
{
|
||||
QString actualIconPath;
|
||||
PngIconScaler scaler(m_d->iconSize, icon);
|
||||
if (scaler.hasRightSize()) {
|
||||
actualIconPath = icon;
|
||||
} else {
|
||||
if (!scaler.scale(&actualIconPath))
|
||||
return;
|
||||
}
|
||||
|
||||
m_d->ui.pngIconButton->setIcon(scaler.pixmap());
|
||||
m_d->pngIcon = actualIconPath;
|
||||
}
|
||||
|
||||
void MobileAppWizardHarmattanOptionsPage::openPngIcon()
|
||||
{
|
||||
const QString iconPath = QFileDialog::getOpenFileName(this,
|
||||
m_d->ui.appIconLabel->text(), m_d->pngIcon,
|
||||
QLatin1String("*.png"));
|
||||
if (!iconPath.isEmpty())
|
||||
setPngIcon(iconPath);
|
||||
}
|
||||
|
||||
void MobileAppWizardHarmattanOptionsPage::setBoosterOptionEnabled(bool enable)
|
||||
{
|
||||
m_d->ui.makeBoostableCheckBox->setEnabled(enable);
|
||||
m_d->ui.makeBoostableCheckBox->setChecked(enable);
|
||||
}
|
||||
|
||||
bool MobileAppWizardHarmattanOptionsPage::supportsBooster() const
|
||||
{
|
||||
return m_d->ui.makeBoostableCheckBox->isChecked();
|
||||
}
|
||||
|
||||
} // namespace Internal
|
||||
} // namespace Qt4ProjectManager
|
||||
|
||||
#include "mobileappwizardpages.moc"
|
||||
|
||||
@@ -82,8 +82,7 @@ class MobileAppWizardMaemoOptionsPage : public QWizardPage
|
||||
Q_OBJECT
|
||||
|
||||
public:
|
||||
explicit MobileAppWizardMaemoOptionsPage(int appIconSize,
|
||||
QWidget *parent = 0);
|
||||
explicit MobileAppWizardMaemoOptionsPage(QWidget *parent = 0);
|
||||
virtual ~MobileAppWizardMaemoOptionsPage();
|
||||
|
||||
QString pngIcon() const;
|
||||
@@ -96,6 +95,27 @@ private:
|
||||
class MobileAppWizardMaemoOptionsPagePrivate *m_d;
|
||||
};
|
||||
|
||||
class MobileAppWizardHarmattanOptionsPage : public QWizardPage
|
||||
{
|
||||
Q_OBJECT
|
||||
|
||||
public:
|
||||
explicit MobileAppWizardHarmattanOptionsPage(QWidget *parent = 0);
|
||||
virtual ~MobileAppWizardHarmattanOptionsPage();
|
||||
|
||||
QString pngIcon() const;
|
||||
void setPngIcon(const QString &icon);
|
||||
|
||||
void setBoosterOptionEnabled(bool enable);
|
||||
bool supportsBooster() const;
|
||||
|
||||
private slots:
|
||||
void openPngIcon();
|
||||
|
||||
private:
|
||||
class MobileAppWizardHarmattanOptionsPagePrivate *m_d;
|
||||
};
|
||||
|
||||
} // namespace Internal
|
||||
} // namespace Qt4ProjectManager
|
||||
|
||||
|
||||
@@ -102,6 +102,7 @@ QtQuickApp::QtQuickApp()
|
||||
, m_mainQmlMode(ModeGenerate)
|
||||
, m_componentSet(QtQuick10Components)
|
||||
{
|
||||
m_canSupportMeegoBooster = true;
|
||||
}
|
||||
|
||||
QtQuickApp::~QtQuickApp()
|
||||
@@ -226,16 +227,16 @@ QString QtQuickApp::mainWindowClassName() const
|
||||
bool QtQuickApp::adaptCurrentMainCppTemplateLine(QString &line) const
|
||||
{
|
||||
const QLatin1Char quote('"');
|
||||
bool adaptLine = true;
|
||||
|
||||
if (line.contains(QLatin1String("// MAINQML"))) {
|
||||
insertParameter(line, quote + path(MainQmlDeployed) + quote);
|
||||
} else if (line.contains(QLatin1String("// ADDIMPORTPATH"))) {
|
||||
if (m_modules.isEmpty())
|
||||
adaptLine = false;
|
||||
return false;
|
||||
else
|
||||
insertParameter(line, quote + path(ModulesDir) + quote);
|
||||
}
|
||||
return adaptLine;
|
||||
return true;
|
||||
}
|
||||
|
||||
void QtQuickApp::handleCurrentProFileTemplateLine(const QString &line,
|
||||
@@ -263,6 +264,11 @@ void QtQuickApp::handleCurrentProFileTemplateLine(const QString &line,
|
||||
if (componentSet() == Symbian10Components)
|
||||
nextLine.remove(0, 2); // remove comment
|
||||
proFile << nextLine << endl;
|
||||
} else if (line.contains(QLatin1String("# HARMATTAN_BOOSTABLE"))) {
|
||||
QString nextLine = proFileTemplate.readLine(); // eats '# CONFIG += qdeclarative-boostable'
|
||||
if (supportsMeegoBooster())
|
||||
nextLine.remove(0, 2); // remove comment
|
||||
proFile << nextLine << endl;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -460,7 +466,7 @@ QString QtQuickApp::componentSetDir(ComponentSet componentSet) const
|
||||
}
|
||||
}
|
||||
|
||||
const int QtQuickApp::StubVersion = 15;
|
||||
const int QtQuickApp::StubVersion = 16;
|
||||
|
||||
} // namespace Internal
|
||||
} // namespace Qt4ProjectManager
|
||||
|
||||
@@ -72,7 +72,6 @@ void MaemoPackageCreationWidget::initGui()
|
||||
{
|
||||
m_ui->shortDescriptionLineEdit->setMaxLength(60);
|
||||
updateVersionInfo();
|
||||
versionInfoChanged();
|
||||
const AbstractDebBasedQt4MaemoTarget * const debBasedMaemoTarget
|
||||
= m_step->debBasedMaemoTarget();
|
||||
if (debBasedMaemoTarget) {
|
||||
@@ -142,9 +141,17 @@ void MaemoPackageCreationWidget::updateVersionInfo()
|
||||
}
|
||||
const QStringList list = versionString.split(QLatin1Char('.'),
|
||||
QString::SkipEmptyParts);
|
||||
const bool blocked = m_ui->major->signalsBlocked();
|
||||
m_ui->major->blockSignals(true);
|
||||
m_ui->minor->blockSignals(true);
|
||||
m_ui->patch->blockSignals(true);
|
||||
m_ui->major->setValue(list.value(0, QLatin1String("0")).toInt());
|
||||
m_ui->minor->setValue(list.value(1, QLatin1String("0")).toInt());
|
||||
m_ui->patch->setValue(list.value(2, QLatin1String("0")).toInt());
|
||||
m_ui->major->blockSignals(blocked);
|
||||
m_ui->minor->blockSignals(blocked);
|
||||
m_ui->patch->blockSignals(blocked);
|
||||
updateSummary();
|
||||
}
|
||||
|
||||
void MaemoPackageCreationWidget::handleControlFileUpdate()
|
||||
@@ -249,8 +256,10 @@ void MaemoPackageCreationWidget::versionInfoChanged()
|
||||
const bool success = m_step->setVersionString(m_ui->major->text()
|
||||
+ QLatin1Char('.') + m_ui->minor->text() + QLatin1Char('.')
|
||||
+ m_ui->patch->text(), &error);
|
||||
if (!success)
|
||||
if (!success) {
|
||||
QMessageBox::critical(this, tr("Could Not Set Version Number"), error);
|
||||
updateVersionInfo();
|
||||
}
|
||||
}
|
||||
|
||||
void MaemoPackageCreationWidget::editDebianFile()
|
||||
|
||||
@@ -57,6 +57,8 @@
|
||||
#include <QtGui/QApplication>
|
||||
#include <QtGui/QMainWindow>
|
||||
#include <QtCore/QBuffer>
|
||||
#include <QtCore/QDateTime>
|
||||
#include <QtCore/QLocale>
|
||||
#include <QtCore/QRegExp>
|
||||
#include <QtCore/QDir>
|
||||
#include <QtCore/QFile>
|
||||
@@ -276,6 +278,23 @@ void AbstractQt4MaemoTarget::handleTargetAdded(ProjectExplorer::Target *target)
|
||||
if (status == ActionSuccessful) // Don't do this when the packaging data already exists.
|
||||
initPackagingSettingsFromOtherTarget();
|
||||
handleTargetAddedSpecial();
|
||||
if (status == ActionSuccessful) {
|
||||
const QStringList &files = packagingFilePaths();
|
||||
if (!files.isEmpty()) {
|
||||
const QString list = QLatin1String("<ul><li>") + files.join(QLatin1String("</li><li>"))
|
||||
+ QLatin1String("</li></ul>");
|
||||
QMessageBox::StandardButton button = QMessageBox::question(Core::ICore::instance()->mainWindow(),
|
||||
tr("Add Packaging Files to Project"),
|
||||
tr("<html>Qt Creator has set up the following files to enable "
|
||||
"packaging:\n %1\nDo you want to add them to the project?</html>")
|
||||
.arg(list), QMessageBox::Yes | QMessageBox::No);
|
||||
if (button == QMessageBox::Yes) {
|
||||
ProjectExplorer::ProjectExplorerPlugin::instance()
|
||||
->addExistingFiles(project()->rootProjectNode(), files);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
m_isInitialized = true;
|
||||
}
|
||||
|
||||
@@ -327,27 +346,7 @@ AbstractQt4MaemoTarget::ActionStatus AbstractQt4MaemoTarget::createTemplates()
|
||||
return ActionFailed;
|
||||
}
|
||||
|
||||
const ActionStatus actionStatus = createSpecialTemplates();
|
||||
if (actionStatus == ActionFailed)
|
||||
return ActionFailed;
|
||||
if (actionStatus == ActionSuccessful) {
|
||||
const QStringList &files = packagingFilePaths();
|
||||
if (!files.isEmpty()) {
|
||||
const QString list = QLatin1String("<ul><li>")
|
||||
+ files.join(QLatin1String("</li><li>")) + QLatin1String("</li></ul>");
|
||||
QMessageBox::StandardButton button
|
||||
= QMessageBox::question(Core::ICore::instance()->mainWindow(),
|
||||
tr("Add Packaging Files to Project"),
|
||||
tr("<html>Qt Creator has set up the following files to enable "
|
||||
"packaging:\n %1\nDo you want to add them to the project?</html>")
|
||||
.arg(list), QMessageBox::Yes | QMessageBox::No);
|
||||
if (button == QMessageBox::Yes) {
|
||||
ProjectExplorer::ProjectExplorerPlugin::instance()
|
||||
->addExistingFiles(project()->rootProjectNode(), files);
|
||||
}
|
||||
}
|
||||
}
|
||||
return actionStatus;
|
||||
return createSpecialTemplates();
|
||||
}
|
||||
|
||||
bool AbstractQt4MaemoTarget::initPackagingSettingsFromOtherTarget()
|
||||
@@ -416,8 +415,50 @@ bool AbstractDebBasedQt4MaemoTarget::setProjectVersionInternal(const QString &ve
|
||||
if (!reader.fetch(filePath, error))
|
||||
return false;
|
||||
QString content = QString::fromUtf8(reader.data());
|
||||
content.replace(QRegExp(QLatin1String("\\([a-zA-Z0-9_\\.]+\\)")),
|
||||
QLatin1Char('(') + version + QLatin1Char(')'));
|
||||
if (content.contains(QLatin1Char('(') + version + QLatin1Char(')'))) {
|
||||
if (error) {
|
||||
*error = tr("Refusing to update changelog file: Already contains version '%1'.")
|
||||
.arg(version);
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
int maintainerOffset = content.indexOf(QLatin1String("\n -- "));
|
||||
const int eolOffset = content.indexOf(QLatin1Char('\n'), maintainerOffset+1);
|
||||
if (maintainerOffset == -1 || eolOffset == -1) {
|
||||
if (error) {
|
||||
*error = tr("Cannot update changelog: Invalid format (no maintainer entry found).");
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
++maintainerOffset;
|
||||
const QDateTime currentDateTime = QDateTime::currentDateTime();
|
||||
QDateTime utcDateTime = QDateTime(currentDateTime);
|
||||
utcDateTime.setTimeSpec(Qt::UTC);
|
||||
int utcOffsetSeconds = currentDateTime.secsTo(utcDateTime);
|
||||
QChar sign;
|
||||
if (utcOffsetSeconds < 0) {
|
||||
utcOffsetSeconds = -utcOffsetSeconds;
|
||||
sign = QLatin1Char('-');
|
||||
} else {
|
||||
sign = QLatin1Char('+');
|
||||
}
|
||||
const int utcOffsetMinutes = (utcOffsetSeconds / 60) % 60;
|
||||
const int utcOffsetHours = utcOffsetSeconds / 3600;
|
||||
const QString dateString = QString::fromLatin1("%1 %2%3%4")
|
||||
.arg(currentDateTime.toString(QLatin1String("ddd, dd MMM yyyy hh:mm:ss"))).arg(sign)
|
||||
.arg(utcOffsetHours, 2, 10, QLatin1Char('0'))
|
||||
.arg(utcOffsetMinutes, 2, 10, QLatin1Char('0'));
|
||||
const QString maintainerLine = content.mid(maintainerOffset, eolOffset - maintainerOffset + 1)
|
||||
.replace(QRegExp(QLatin1String("> [^\\n]*\n")),
|
||||
QString::fromLocal8Bit("> %1").arg(dateString));
|
||||
QString versionLine = content.left(content.indexOf(QLatin1Char('\n')))
|
||||
.replace(QRegExp(QLatin1String("\\([a-zA-Z0-9_\\.]+\\)")),
|
||||
QLatin1Char('(') + version + QLatin1Char(')'));
|
||||
const QString newEntry = versionLine + QLatin1String("\n * <Add change description here>\n\n")
|
||||
+ maintainerLine + QLatin1String("\n\n");
|
||||
content.prepend(newEntry);
|
||||
Core::FileChangeBlocker update(filePath);
|
||||
Utils::FileSaver saver(filePath);
|
||||
saver.write(content.toUtf8());
|
||||
@@ -664,10 +705,11 @@ void AbstractDebBasedQt4MaemoTarget::handleTargetAddedSpecial()
|
||||
// Such a file is created by the mobile wizards.
|
||||
const QString iconPath = project()->projectDirectory()
|
||||
+ QLatin1Char('/') + project()->displayName()
|
||||
+ QLatin1String(".png");
|
||||
+ QLatin1String("64.png");
|
||||
if (QFileInfo(iconPath).exists())
|
||||
setPackageManagerIcon(iconPath);
|
||||
}
|
||||
|
||||
m_filesWatcher->addDirectory(debianDirPath(), Utils::FileSystemWatcher::WatchAllChanges);
|
||||
m_controlFile = new WatchableFile(controlFilePath(), this);
|
||||
connect(m_controlFile, SIGNAL(modified()), SIGNAL(controlChanged()));
|
||||
@@ -875,7 +917,6 @@ bool AbstractDebBasedQt4MaemoTarget::setPackageManagerIcon(const QString &iconFi
|
||||
return success;
|
||||
}
|
||||
|
||||
|
||||
AbstractRpmBasedQt4MaemoTarget::AbstractRpmBasedQt4MaemoTarget(Qt4Project *parent,
|
||||
const QString &id) : AbstractQt4MaemoTarget(parent, id)
|
||||
{
|
||||
|
||||
@@ -37,10 +37,8 @@
|
||||
#include <projectexplorer/projectexplorerconstants.h>
|
||||
#include <utils/qtcassert.h>
|
||||
|
||||
#include <QtGui/QIcon>
|
||||
#include <QtGui/QMessageBox>
|
||||
|
||||
#include <QtCore/QString>
|
||||
#include <QtGui/QIcon>
|
||||
|
||||
using namespace ProjectExplorer;
|
||||
|
||||
@@ -137,7 +135,6 @@ void AbstractRemoteLinuxRunControl::handleError(const QString &errString)
|
||||
{
|
||||
stop();
|
||||
appendMessage(errString, Utils::ErrorMessageFormat);
|
||||
QMessageBox::critical(0, tr("Remote Execution Failure"), errString);
|
||||
}
|
||||
|
||||
void AbstractRemoteLinuxRunControl::setFinished()
|
||||
|
||||