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
This commit is contained in:
Eike Ziller
2011-09-15 11:50:29 +02:00
56 changed files with 1551 additions and 594 deletions

View File

@@ -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
View 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

View File

@@ -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

View File

@@ -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

Binary file not shown.

After

Width:  |  Height:  |  Size: 60 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 11 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 25 KiB

After

Width:  |  Height:  |  Size: 25 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 12 KiB

After

Width:  |  Height:  |  Size: 12 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 25 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 12 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 95 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 60 KiB

After

Width:  |  Height:  |  Size: 36 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 56 KiB

After

Width:  |  Height:  |  Size: 44 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 48 KiB

After

Width:  |  Height:  |  Size: 69 KiB

25
doc/linuxdev-keys.qdocinc Normal file
View 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

View 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}.

View File

@@ -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

View File

@@ -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
View 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.
*/

View File

@@ -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

View File

@@ -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

View File

@@ -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
}

View File

@@ -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

View File

@@ -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

View File

@@ -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();
}

View File

@@ -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
}

View File

@@ -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

View File

@@ -16,3 +16,7 @@ INCLUDEPATH += $$PWD
} else {
DEFINES -= QMLJSDEBUGGER
}
contains(CONFIG,qdeclarative-boostable):contains(MEEGO_EDITION,harmattan) {
DEFINES += HARMATTAN_BOOSTER
}

View File

@@ -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&apos;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&apos;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>

View File

@@ -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 &apos;%1&apos; has unexpected format.</source>
<translation>Файл журнала изменений Debian «%1» имеет неожиданный формат.</translation>
</message>
<message>
<source>Refusing to update changelog file: Already contains version &apos;%1&apos;.</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>

View File

@@ -102,7 +102,7 @@
<name>BINEditor::Internal::BinEditorPlugin</name>
<message>
<source>&amp;Undo</source>
<translation>(&amp;U)</translation>
<translation></translation>
</message>
<message>
<source>&amp;Redo</source>
@@ -245,7 +245,7 @@
<name>Bookmarks::Internal::BookmarksPlugin</name>
<message>
<source>&amp;Bookmarks</source>
<translation>(&amp;B)</translation>
<translation></translation>
</message>
<message>
<source>Toggle Bookmark</source>
@@ -756,7 +756,7 @@
<name>CodePaster::CodepasterPlugin</name>
<message>
<source>&amp;Code Pasting</source>
<translation>(&amp;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 &amp;As...</source>
<translation>%1 (&amp;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&amp;vanced</source>
<translation>(&amp;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>&amp;New File or Project...</source>
<translation>(&amp;N)...</translation>
<translation>...</translation>
</message>
<message>
<source>&amp;Open File or Project...</source>
<translation>(&amp;O)...</translation>
<translation>...</translation>
</message>
<message>
<source>&amp;Open File With...</source>
@@ -1773,19 +1773,20 @@ Would you like to overwrite them?</source>
</message>
<message>
<source>Open File &amp;With...</source>
<translation>...(&amp;W)...</translation>
<translatorcomment></translatorcomment>
<translation>...</translation>
</message>
<message>
<source>Recent &amp;Files</source>
<translation>访(&amp;F)</translation>
<translation>访</translation>
</message>
<message>
<source>&amp;Save</source>
<translation>(&amp;S)</translation>
<translation></translation>
</message>
<message>
<source>Save &amp;As...</source>
<translation>(&amp;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&amp;ll</source>
<translation>(&amp;l)</translation>
<translation></translation>
</message>
<message>
<source>&amp;Print...</source>
<translation>(&amp;P)...</translation>
<translation>...</translation>
</message>
<message>
<source>E&amp;xit</source>
<translation>退(&amp;x)</translation>
<translation>退</translation>
</message>
<message>
<source>Ctrl+Q</source>
@@ -1809,7 +1810,7 @@ Would you like to overwrite them?</source>
</message>
<message>
<source>&amp;Undo</source>
<translation>(&amp;U)</translation>
<translation></translation>
</message>
<message>
<source>&amp;Redo</source>
@@ -1817,23 +1818,23 @@ Would you like to overwrite them?</source>
</message>
<message>
<source>Cu&amp;t</source>
<translation>(&amp;t)</translation>
<translation></translation>
</message>
<message>
<source>&amp;Copy</source>
<translation>(&amp;C)</translation>
<translation></translation>
</message>
<message>
<source>&amp;Paste</source>
<translation>(&amp;P)</translation>
<translation></translation>
</message>
<message>
<source>Select &amp;All</source>
<translation>(&amp;A)</translation>
<translation></translation>
</message>
<message>
<source>&amp;Go to Line...</source>
<translation>(&amp;G)...</translation>
<translation>...</translation>
</message>
<message>
<source>&amp;Select All</source>
@@ -1849,7 +1850,7 @@ Would you like to overwrite them?</source>
</message>
<message>
<source>&amp;Options...</source>
<translation>(&amp;O)...</translation>
<translation>...</translation>
</message>
<message>
<source>Minimize</source>
@@ -1869,19 +1870,19 @@ Would you like to overwrite them?</source>
</message>
<message>
<source>&amp;Views</source>
<translation>(&amp;V)</translation>
<translation></translation>
</message>
<message>
<source>About &amp;Qt Creator</source>
<translation> Qt Creator(&amp;Q)</translation>
<translation> Qt Creator</translation>
</message>
<message>
<source>About &amp;Qt Creator...</source>
<translation> Qt Creator(&amp;Q)...</translation>
<translation> Qt Creator...</translation>
</message>
<message>
<source>About &amp;Plugins...</source>
<translation>(&amp;P)...</translation>
<translation>...</translation>
</message>
<message>
<source>New</source>
@@ -2058,7 +2059,7 @@ Would you like to overwrite them?</source>
</message>
<message>
<source>Output &amp;Panes</source>
<translation>(&amp;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>&amp;C++</source>
<translation>C++(&amp;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>&amp;Undo</source>
<translation>(&amp;U)</translation>
<translation></translation>
</message>
<message>
<source>&amp;Redo</source>
<translation>(&amp;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>&amp;Undo</source>
<translation>(&amp;U)</translation>
<translation></translation>
</message>
<message>
<source>&amp;Redo</source>
<translation>(&amp;R)</translation>
<translation></translation>
</message>
<message>
<source>p4 revert</source>
@@ -11757,7 +11758,7 @@ to project &apos;%2&apos;.</source>
</message>
<message>
<source>&amp;Start Debugging</source>
<translation>(&amp;S)</translation>
<translation></translation>
</message>
<message>
<source>Open With</source>
@@ -11809,7 +11810,7 @@ to project &apos;%2&apos;.</source>
</message>
<message>
<source>Recent P&amp;rojects</source>
<translation>使(&amp;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>&amp;Undo</source>
<translation>(&amp;U)</translation>
<translation></translation>
</message>
<message>
<source>&amp;Redo</source>
<translation>(&amp;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>&amp;Undo</source>
<translation>(&amp;U)</translation>
<translation></translation>
</message>
<message>
<source>&amp;Redo</source>
<translation>(&amp;R)</translation>
<translation></translation>
</message>
<message>
<source>Closing Subversion Editor</source>
@@ -15595,7 +15596,7 @@ Influences the indentation of continuation lines.
</message>
<message>
<source>&amp;Visualize whitespace</source>
<translation>(&amp;V)</translation>
<translation></translation>
</message>
<message>
<source>Highlight current &amp;line</source>
@@ -15607,7 +15608,7 @@ Influences the indentation of continuation lines.
</message>
<message>
<source>Enable text &amp;wrapping</source>
<translation>(&amp;w)</translation>
<translation></translation>
</message>
<message>
<source>Display right &amp;margin at column:</source>
@@ -15881,11 +15882,11 @@ The following encodings are likely to fit:</source>
<name>TextEditor::TextEditorActionHandler</name>
<message>
<source>&amp;Undo</source>
<translation>(&amp;U)</translation>
<translation></translation>
</message>
<message>
<source>&amp;Redo</source>
<translation>(&amp;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-&amp;indent Selection</source>
<translation>(&amp;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>&amp;Visualize Whitespace</source>
<translation>(&amp;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 &amp;Wrapping</source>
<translation>(&amp;W)</translation>
<translation></translation>
</message>
<message>
<source>(Un)Comment &amp;Selection</source>
@@ -15985,7 +15986,7 @@ The following encodings are likely to fit:</source>
</message>
<message>
<source>&amp;Rewrap Paragraph</source>
<translation>(&amp;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 &amp;Selection</source>
<translation>(&amp;S)</translation>
<translation>/</translation>
</message>
<message>
<source>Cut &amp;Line</source>
@@ -16069,7 +16070,7 @@ The following encodings are likely to fit:</source>
</message>
<message>
<source>Toggle &amp;Fold All</source>
<translation> /(&amp;F)</translation>
<translation> /</translation>
</message>
<message>
<source>Ctrl+}</source>
@@ -18339,11 +18340,11 @@ p, li { white-space: pre-wrap; }
</message>
<message>
<source>&amp;Undo</source>
<translation>(&amp;U)</translation>
<translation></translation>
</message>
<message>
<source>&amp;Redo</source>
<translation>(&amp;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>&amp;Undo</source>
<translation>(&amp;U)</translation>
<translation></translation>
</message>
<message>
<source>&amp;Redo</source>
<translation>(&amp;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&amp;ublic Key...</source>
<translation>(&amp;u)...</translation>
<translation>...</translation>
</message>
<message>
<source>Save Pr&amp;ivate Key...</source>
<translation>(&amp;i)...</translation>
<translation>...</translation>
</message>
<message>
<source>&amp;Close</source>
@@ -23226,7 +23227,7 @@ Previous decimal signed value (big endian): %4</source>
<name>Find::FindPlugin</name>
<message>
<source>&amp;Find/Replace</source>
<translation>/(&amp;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>&amp;Undo</source>
<translation>(&amp;U)</translation>
<translation></translation>
</message>
<message>
<source>&amp;Redo</source>
<translation>(&amp;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&amp;t</source>
<translation>(&amp;t)</translation>
<translation></translation>
</message>
<message>
<source>Cut &quot;%1&quot;</source>
@@ -24197,7 +24198,7 @@ Ids must begin with a lowercase letter.</source>
</message>
<message>
<source>&amp;Copy</source>
<translation>(&amp;C)</translation>
<translation></translation>
</message>
<message>
<source>Copy &quot;%1&quot;</source>
@@ -24205,7 +24206,7 @@ Ids must begin with a lowercase letter.</source>
</message>
<message>
<source>&amp;Paste</source>
<translation>(&amp;P)</translation>
<translation></translation>
</message>
<message>
<source>Paste &quot;%1&quot;</source>
@@ -24213,7 +24214,7 @@ Ids must begin with a lowercase letter.</source>
</message>
<message>
<source>Select &amp;All</source>
<translation>(&amp;A)</translation>
<translation></translation>
</message>
<message>
<source>Select All &quot;%1&quot;</source>
@@ -24268,7 +24269,7 @@ Ids must begin with a lowercase letter.</source>
</message>
<message>
<source>&amp;Save %1</source>
<translation>%1(&amp;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>&amp;Copy</source>
<comment>Name of the action triggering the copytaskhandler</comment>
<translation>(&amp;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>&amp;Undo</source>
<translation>(&amp;U)</translation>
<translation></translation>
</message>
<message>
<source>&amp;Redo</source>
<translation>(&amp;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>&amp;Refactor</source>
<translation>(&amp;R)</translation>
<translation></translation>
</message>
<message>
<source>Unused variable</source>

View File

@@ -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
}

View File

@@ -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);
}

View File

@@ -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);

View File

@@ -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
}

View File

@@ -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 {

View File

@@ -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!

View File

@@ -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()) {

View File

@@ -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());

View File

@@ -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;
};

View File

@@ -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;
}
}

View File

@@ -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;
}
}

View File

@@ -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 \

View File

@@ -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

View File

@@ -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
{

View File

@@ -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

View File

@@ -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);
}

View File

@@ -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;

View File

@@ -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>

View File

@@ -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>

View File

@@ -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"

View File

@@ -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

View File

@@ -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

View File

@@ -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()

View File

@@ -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)
{

View File

@@ -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()