Use the new mobile project wizard to create the application.
Update example files and screen shots.
Reviewed-by: ckamm
Reviewed-by: Niels Weber
--- /dev/null
+[Desktop Entry]
+Encoding=UTF-8
+Version=1.0
+Type=Application
+Terminal=false
+Name=BatteryIndicator
+Exec=/opt/usr/bin/BatteryIndicator
+Icon=BatteryIndicator
+X-Window-Icon=
+X-HildonDesk-ShowInToolbar=true
+X-Osso-Type=application/x-executable
-#-------------------------------------------------
-#
-# Project created by QtCreator 2010-05-26T16:46:58
-#
-#-------------------------------------------------
+# Add files and directories to ship with the application
+# by adapting the examples below.
+# file1.source = myfile
+# dir1.source = mydir
+DEPLOYMENTFOLDERS = # file1 dir1
-QT += core gui
+# Avoid auto screen rotation
+#DEFINES += ORIENTATIONLOCK
-TARGET = BatteryIndicator
-TEMPLATE = app
+# Needs to be defined for Symbian
+#DEFINES += NETWORKACCESS
-
-SOURCES += main.cpp\
- batteryindicator.cpp
-
-HEADERS += batteryindicator.h
-
-FORMS += batteryindicator.ui
+symbian:TARGET.UID3 = 0xE5123A52
CONFIG += mobility
MOBILITY = systeminfo
-symbian {
- TARGET.UID3 = 0xecbd72d7
- # TARGET.CAPABILITY +=
- TARGET.EPOCSTACKSIZE = 0x14000
- TARGET.EPOCHEAPSIZE = 0x020000 0x800000
-}
+SOURCES += main.cpp mainwindow.cpp
+HEADERS += mainwindow.h
+FORMS += mainwindow.ui
+
+# Please do not modify the following two lines. Required for deployment.
+include(deployment.pri)
+qtcAddDeployment()
+
+OTHER_FILES += \
+ debian/changelog \
+ debian/compat \
+ debian/control \
+ debian/copyright \
+ debian/README \
+ debian/rules
--- /dev/null
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<svg
+ xmlns:dc="http://purl.org/dc/elements/1.1/"
+ xmlns:cc="http://creativecommons.org/ns#"
+ xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+ xmlns:svg="http://www.w3.org/2000/svg"
+ xmlns="http://www.w3.org/2000/svg"
+ xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
+ xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+ height="44px"
+ version="1.1"
+ viewBox="0 0 44 44"
+ width="44px"
+ x="0px"
+ y="0px"
+ id="svg2"
+ inkscape:version="0.47 r22583"
+ sodipodi:docname="qt.svg">
+ <metadata
+ id="metadata18">
+ <rdf:RDF>
+ <cc:Work
+ rdf:about="">
+ <dc:format>image/svg+xml</dc:format>
+ <dc:type
+ rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+ </cc:Work>
+ </rdf:RDF>
+ </metadata>
+ <defs
+ id="defs16">
+ <inkscape:perspective
+ sodipodi:type="inkscape:persp3d"
+ inkscape:vp_x="0 : 22 : 1"
+ inkscape:vp_y="0 : 1000 : 0"
+ inkscape:vp_z="44 : 22 : 1"
+ inkscape:persp3d-origin="22 : 14.666667 : 1"
+ id="perspective2836" />
+ </defs>
+ <sodipodi:namedview
+ pagecolor="#ffffff"
+ bordercolor="#666666"
+ borderopacity="1"
+ objecttolerance="10"
+ gridtolerance="10"
+ guidetolerance="10"
+ inkscape:pageopacity="0"
+ inkscape:pageshadow="2"
+ inkscape:window-width="1920"
+ inkscape:window-height="1020"
+ id="namedview14"
+ showgrid="false"
+ inkscape:zoom="21.454545"
+ inkscape:cx="49.412871"
+ inkscape:cy="21.894358"
+ inkscape:window-x="-4"
+ inkscape:window-y="-4"
+ inkscape:window-maximized="1"
+ inkscape:current-layer="g3" />
+ <g
+ transform="matrix(0.18308778,0,0,0.18308778,6.6100946,3.2385199)"
+ id="g3">
+ <path
+ d="M 43.09,0.3586 C 40.94,0.0036 38.84,-0.0824 36.81,0.0776 31.968136,0.39505671 27.122677,0.73638425 22.28,1.0696 9.62,2.0816 0,12.4996 0,26.8896 l 0,169.7 14.19,13.2 28.87,-209.42 0.03,-0.011 z"
+ style="fill:#006225"
+ id="path5"
+ sodipodi:nodetypes="cccccccc" />
+ <path
+ d="m 174.4,160 c 0,12.5 -7.75,24.07 -17.57,25.77 L 14.23,209.73 V 25.93 C 14.23,9.21 27.57,-2.27 43.12,0.3 l 131.3,21.52 v 138.2 z"
+ style="fill:#80c342"
+ id="path7" />
+ <path
+ d="m 154.9,80.96 -12.96,-0.598 0,0.278 6.945,0.32 6.016,0 z"
+ style="fill:#006225"
+ id="path11" />
+ <path
+ d="m 144.6,135.6 c 0.66,0.328 1.43,0.476 2.351,0.476 0.161,0 0.329,-0.004 0.497,-0.016 2.55,-0.148 5.32,-0.933 8.343,-2.308 h -6.015 c -1.821,0.832 -3.532,1.457 -5.176,1.848 z"
+ style="fill:#006225"
+ id="path13" />
+ <path
+ id="path17"
+ style="fill:#ffffff"
+ d="m 91.15,132.4 c 2.351,-6.051 3.511,-17.91 3.511,-35.62 0,-15.89 -1.148,-26.82 -3.484,-32.81 -2.336,-6.027 -5.832,-9.281 -10.52,-9.691 -0.359,-0.031 -0.714,-0.051 -1.058,-0.051 -4.34,0 -7.68,2.535 -10.01,7.625 -2.52,5.543 -3.793,17.04 -3.793,34.44 0,16.82 1.238,28.75 3.734,35.75 2.356,6.672 5.879,9.976 10.5,9.976 0.207,0 0.41,-0.008 0.621,-0.019 4.633,-0.293 8.121,-3.496 10.49,-9.602 m 17.98,3.75 c -4.117,9.707 -10.39,16.06 -18.99,19 0.867,4.449 2.176,7.441 3.922,9.019 1.351,1.211 3.433,1.821 6.222,1.821 0.805,0 1.668,-0.055 2.59,-0.157 v 13.12 l -5.961,0.782 c -1.758,0.23 -3.426,0.343 -5.004,0.343 -5.218,0 -9.445,-1.265 -12.62,-3.824 -4.207,-3.379 -7.308,-9.894 -9.297,-19.54 -9.136,-1.945 -16.26,-7.754 -21.19,-17.5 -5.004,-9.902 -7.551,-24.39 -7.551,-43.34 0,-20.43 3.484,-35.51 10.34,-45.07 5.789,-8.07 13.86,-12.04 24.02,-12.04 1.629,0 3.309,0.102 5.043,0.305 11.95,1.375 20.62,7.016 26.26,16.79 5.535,9.562 8.254,23.27 8.254,41.26 0,16.48 -2,29.45 -6.043,39.02 z M 130.4,45.91 l 11.52,1.238 0,20.21 12.96,0.914 0,12.68 -12.96,-0.598 0,46.33 c 0,4.032 0.445,6.625 1.34,7.789 0.8,1.067 2.046,1.594 3.71,1.594 0.161,0 0.329,-0.004 0.497,-0.016 2.55,-0.148 5.32,-0.933 8.343,-2.308 v 11.65 c -5.136,2.258 -10.18,3.598 -15.12,4.02 -0.718,0.055 -1.41,0.086 -2.078,0.086 -4.48,0 -7.906,-1.301 -10.25,-3.934 -2.73,-3.051 -4.09,-7.949 -4.09,-14.67 V 79.535 L 118.046,79.25 V 65.66 l 7.586,0.547 4.773,-20.3 z" />
+ <path
+ d="m 100.3,166 c 0.809,0 1.672,-0.055 2.59,-0.157 H 98.054 C 98.73,165.949 99.507,166 100.3,166 z"
+ style="fill:#006225"
+ id="path19" />
+ <path
+ id="path21"
+ style="fill:#006225"
+ d="m 84.85,63.98 c 2.336,5.997 3.484,16.92 3.484,32.81 0,17.7 -1.16,29.57 -3.512,35.62 -1.894,4.879 -4.527,7.902 -7.863,9.07 0.965,0.368 1.992,0.551 3.078,0.551 0.207,0 0.41,-0.008 0.621,-0.019 4.633,-0.293 8.121,-3.496 10.49,-9.602 2.351,-6.051 3.511,-17.91 3.511,-35.62 0,-15.89 -1.148,-26.82 -3.484,-32.81 -2.336,-6.027 -5.832,-9.281 -10.52,-9.691 -0.359,-0.031 -0.714,-0.051 -1.058,-0.051 -1.09,0 -2.117,0.16 -3.082,0.481 h -0.004 c 3.601,1.121 6.379,4.215 8.336,9.261 z m -2.344,114.3 c -0.113,-0.05 -0.227,-0.105 -0.336,-0.16 -0.012,-0.004 -0.023,-0.012 -0.035,-0.015 -0.102,-0.051 -0.207,-0.106 -0.309,-0.157 -0.019,-0.011 -0.039,-0.019 -0.058,-0.031 -0.09,-0.051 -0.184,-0.098 -0.278,-0.148 -0.027,-0.016 -0.054,-0.036 -0.086,-0.051 -0.082,-0.043 -0.164,-0.09 -0.242,-0.137 -0.039,-0.023 -0.078,-0.047 -0.113,-0.07 -0.07,-0.039 -0.145,-0.082 -0.215,-0.125 -0.047,-0.031 -0.094,-0.059 -0.14,-0.09 -0.059,-0.039 -0.118,-0.074 -0.176,-0.113 -0.059,-0.039 -0.114,-0.075 -0.168,-0.114 -0.051,-0.031 -0.102,-0.066 -0.149,-0.097 -0.066,-0.047 -0.132,-0.094 -0.195,-0.137 -0.039,-0.027 -0.078,-0.055 -0.113,-0.082 -0.078,-0.055 -0.153,-0.113 -0.231,-0.172 -0.023,-0.016 -0.05,-0.035 -0.078,-0.055 -0.098,-0.078 -0.199,-0.156 -0.297,-0.234 -4.207,-3.379 -7.308,-9.894 -9.297,-19.54 -9.136,-1.945 -16.26,-7.754 -21.19,-17.5 -5.004,-9.902 -7.551,-24.39 -7.551,-43.34 0,-20.43 3.484,-35.51 10.34,-45.07 5.789,-8.07 13.86,-12.04 24.02,-12.04 h -6.351 c -10.15,0.008 -18.22,3.977 -24,12.04 -6.855,9.563 -10.34,24.64 -10.34,45.07 0,18.95 2.547,33.44 7.551,43.34 4.934,9.75 12.05,15.56 21.19,17.5 1.989,9.641 5.09,16.16 9.297,19.54 3.176,2.559 7.403,3.824 12.62,3.824 0.098,0 0.199,0 0.297,-0.004 h 5.539 c -3.406,-0.05 -6.383,-0.66 -8.906,-1.828 L 82.498,178.28 z M 128.4,145.6 c -2.73,-3.051 -4.09,-7.949 -4.09,-14.67 V 79.57 l -6.226,-0.285 v -13.59 h -6.016 v 3.035 c 0.871,3.273 1.555,6.82 2.063,10.64 l 4.164,0.192 v 51.36 c 0,6.723 1.367,11.62 4.09,14.67 2.343,2.633 5.765,3.934 10.25,3.934 h 6.015 c -4.48,0 -7.906,-1.301 -10.25,-3.934 z m 2.043,-99.66 -6.016,0 -4.668,19.88 5.911,0.422 4.773,-20.3 z" />
+ </g>
+</svg>
+++ /dev/null
-#include "batteryindicator.h"
-#include "ui_batteryindicator.h"
-
-//! [2]
-BatteryIndicator::BatteryIndicator(QWidget *parent) :
- QDialog(parent),
- ui(new Ui::BatteryIndicator),
- deviceInfo(NULL)
-{
- ui->setupUi(this);
- setupGeneral();
-}
-//! [2]
-
-BatteryIndicator::~BatteryIndicator()
-{
- delete ui;
-}
-
-//! [1]
-void BatteryIndicator::setupGeneral()
-{
- deviceInfo = new QSystemDeviceInfo(this);
-
- ui->batteryLevelBar->setValue(deviceInfo->batteryLevel());
-
- connect(deviceInfo, SIGNAL(batteryLevelChanged(int)),
- ui->batteryLevelBar, SLOT(setValue(int)));
-}
-//! [1]
+++ /dev/null
-#ifndef BATTERYINDICATOR_H
-#define BATTERYINDICATOR_H
-
-#include <QDialog>
-
-//! [1]
-#include <QSystemInfo>
-//! [1]
-
-//! [2]
-QTM_USE_NAMESPACE
-//! [2]
-
-namespace Ui {
- class BatteryIndicator;
-}
-
-class BatteryIndicator : public QDialog
-{
- Q_OBJECT
-
-public:
- explicit BatteryIndicator(QWidget *parent = 0);
- ~BatteryIndicator();
-
-//! [3]
-private:
- Ui::BatteryIndicator *ui;
- void setupGeneral();
-
- QSystemDeviceInfo *deviceInfo;
-//! [3]
-};
-
-#endif // BATTERYINDICATOR_H
+++ /dev/null
-<?xml version="1.0" encoding="UTF-8"?>
-<ui version="4.0">
- <class>BatteryIndicator</class>
- <widget class="QDialog" name="BatteryIndicator">
- <property name="geometry">
- <rect>
- <x>0</x>
- <y>0</y>
- <width>800</width>
- <height>480</height>
- </rect>
- </property>
- <property name="windowTitle">
- <string>BatteryIndicator</string>
- </property>
- <widget class="QProgressBar" name="batteryLevelBar">
- <property name="geometry">
- <rect>
- <x>10</x>
- <y>10</y>
- <width>118</width>
- <height>23</height>
- </rect>
- </property>
- <property name="value">
- <number>24</number>
- </property>
- </widget>
- </widget>
- <layoutdefault spacing="6" margin="11"/>
- <resources/>
- <connections/>
-</ui>
--- /dev/null
+The Debian Package batteryindicator
+----------------------------
+
+Comments regarding the Package
+
+ -- unknown <> Tue, 05 Oct 2010 12:01:24 +0200
--- /dev/null
+batteryindicator (0.0.1) unstable; urgency=low
+
+ * Initial Release.
+
+ -- unknown <> Tue, 05 Oct 2010 12:01:24 +0200
--- /dev/null
+Source: batteryindicator
+Section: user/hidden
+Priority: optional
+Maintainer: unknown <>
+Build-Depends: debhelper (>= 5), libqt4-dev
+Standards-Version: 3.7.3
+Homepage: <insert the upstream URL, if relevant>
+
+Package: batteryindicator
+Architecture: any
+Depends: ${shlibs:Depends}, ${misc:Depends}
+Description: <insert up to 60 chars description>
+ <insert long description, indented with spaces>
--- /dev/null
+This package was debianized by unknown <> on
+Tue, 05 Oct 2010 12:01:24 +0200.
+
+It was downloaded from <url://example.com>
+
+Upstream Author(s):
+
+ <put author's name and email here>
+ <likewise for another author>
+
+Copyright:
+
+ <Copyright (C) YYYY Name OfAuthor>
+ <likewise for another author>
+
+License:
+
+ This package is free software; you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 2 of the License, or
+ (at your option) any later version.
+
+ This package is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this package; if not, write to the Free Software
+ Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
+
+On Debian systems, the complete text of the GNU General
+Public License can be found in `/usr/share/common-licenses/GPL'.
+
+The Debian packaging is (C) 2010, unknown <> and
+is licensed under the GPL, see above.
+
+
+# Please also look if there are files or directories which have a
+# different copyright/license attached and list them here.
--- /dev/null
+#!/usr/bin/make -f
+# -*- makefile -*-
+# Sample debian/rules that uses debhelper.
+# This file was originally written by Joey Hess and Craig Small.
+# As a special exception, when this file is copied by dh-make into a
+# dh-make output file, you may use that output file without restriction.
+# This special exception was added by Craig Small in version 0.37 of dh-make.
+
+# Uncomment this to turn on verbose mode.
+#export DH_VERBOSE=1
+
+
+
+
+
+configure: configure-stamp
+configure-stamp:
+ dh_testdir
+ # Add here commands to configure the package.
+
+ touch configure-stamp
+
+
+build: build-stamp
+
+build-stamp: configure-stamp
+ dh_testdir
+
+ # Add here commands to compile the package.
+ $(MAKE)
+ #docbook-to-man debian/batteryindicator.sgml > batteryindicator.1
+
+ touch $@
+
+clean:
+ dh_testdir
+ dh_testroot
+ rm -f build-stamp configure-stamp
+
+ # Add here commands to clean up after the build process.
+ $(MAKE) clean
+
+ dh_clean
+
+install: build
+ dh_testdir
+ dh_testroot
+ dh_clean -k
+ dh_installdirs
+
+ # Add here commands to install the package into debian/batteryindicator.
+ $(MAKE) INSTALL_ROOT="$(CURDIR)"/debian/batteryindicator install
+
+
+# Build architecture-independent files here.
+binary-indep: build install
+# We have nothing to do by default.
+
+# Build architecture-dependent files here.
+binary-arch: build install
+ dh_testdir
+ dh_testroot
+ dh_installchangelogs
+ dh_installdocs
+ dh_installexamples
+# dh_install
+# dh_installmenu
+# dh_installdebconf
+# dh_installlogrotate
+# dh_installemacsen
+# dh_installpam
+# dh_installmime
+# dh_python
+# dh_installinit
+# dh_installcron
+# dh_installinfo
+ dh_installman
+ dh_link
+ # dh_strip
+ dh_compress
+ dh_fixperms
+# dh_perl
+# dh_makeshlibs
+ dh_installdeb
+ # dh_shlibdeps
+ dh_gencontrol
+ dh_md5sums
+ dh_builddeb
+
+binary: binary-indep binary-arch
+.PHONY: build clean binary-indep binary-arch binary install configure
--- /dev/null
+# checksum 0x2bb3 version 0x10001
+# This file should not be edited.
+# Future versions of Qt Creator might offer updated versions of this file.
+
+defineTest(qtcAddDeployment) {
+for(deploymentfolder, DEPLOYMENTFOLDERS) {
+ item = item$${deploymentfolder}
+ itemsources = $${item}.sources
+ $$itemsources = $$eval($${deploymentfolder}.source)
+ itempath = $${item}.path
+ $$itempath= $$eval($${deploymentfolder}.target)
+ export($$itemsources)
+ export($$itempath)
+ DEPLOYMENT += $$item
+}
+
+MAINPROFILEPWD = $$PWD
+
+symbian {
+ ICON = $${TARGET}.svg
+ TARGET.EPOCHEAPSIZE = 0x20000 0x2000000
+ contains(DEFINES, ORIENTATIONLOCK):LIBS += -lavkon -leikcore -leiksrv -lcone
+ contains(DEFINES, NETWORKACCESS):TARGET.CAPABILITY += NetworkServices
+} else:win32 {
+ !isEqual(PWD,$$OUT_PWD) {
+ copyCommand = @echo Copying application data...
+ for(deploymentfolder, DEPLOYMENTFOLDERS) {
+ source = $$eval($${deploymentfolder}.source)
+ pathSegments = $$split(source, /)
+ sourceAndTarget = $$MAINPROFILEPWD/$$source $$OUT_PWD/$$eval($${deploymentfolder}.target)/$$last(pathSegments)
+ copyCommand += && $(COPY_DIR) $$replace(sourceAndTarget, /, \\)
+ }
+ copydeploymentfolders.commands = $$copyCommand
+ first.depends = $(first) copydeploymentfolders
+ export(first.depends)
+ export(copydeploymentfolders.commands)
+ QMAKE_EXTRA_TARGETS += first copydeploymentfolders
+ }
+} else:unix {
+ maemo5 {
+ installPrefix = /opt/usr
+ desktopfile.path = /usr/share/applications/hildon
+ } else {
+ installPrefix = /usr/local
+ desktopfile.path = /usr/share/applications
+ !isEqual(PWD,$$OUT_PWD) {
+ copyCommand = @echo Copying application data...
+ for(deploymentfolder, DEPLOYMENTFOLDERS) {
+ macx {
+ target = $$OUT_PWD/$${TARGET}.app/Contents/Resources/$$eval($${deploymentfolder}.target)
+ } else {
+ target = $$OUT_PWD/$$eval($${deploymentfolder}.target)
+ }
+ copyCommand += && $(MKDIR) $$target
+ copyCommand += && $(COPY_DIR) $$MAINPROFILEPWD/$$eval($${deploymentfolder}.source) $$target
+ }
+ copydeploymentfolders.commands = $$copyCommand
+ first.depends = $(first) copydeploymentfolders
+ export(first.depends)
+ export(copydeploymentfolders.commands)
+ QMAKE_EXTRA_TARGETS += first copydeploymentfolders
+ }
+ }
+ for(deploymentfolder, DEPLOYMENTFOLDERS) {
+ item = item$${deploymentfolder}
+ itemfiles = $${item}.files
+ $$itemfiles = $$eval($${deploymentfolder}.source)
+ itempath = $${item}.path
+ $$itempath = $${installPrefix}/share/$${TARGET}/$$eval($${deploymentfolder}.target)
+ export($$itemfiles)
+ export($$itempath)
+ INSTALLS += $$item
+ }
+ icon.files = $${TARGET}.png
+ icon.path = /usr/share/icons/hicolor/64x64/apps
+ desktopfile.files = $${TARGET}.desktop
+ target.path = $${installPrefix}/bin
+ export(icon.files)
+ export(icon.path)
+ export(desktopfile.files)
+ export(desktopfile.path)
+ export(target.path)
+ INSTALLS += desktopfile icon target
+}
+
+export (ICON)
+export (INSTALLS)
+export (DEPLOYMENT)
+export (TARGET.EPOCHEAPSIZE)
+export (TARGET.CAPABILITY)
+export (LIBS)
+export (QMAKE_EXTRA_TARGETS)
+}
+#include "mainwindow.h"
+
#include <QtGui/QApplication>
-#include "batteryindicator.h"
int main(int argc, char *argv[])
{
- QApplication a(argc, argv);
- BatteryIndicator w;
+ QApplication app(argc, argv);
+
+ MainWindow mainWindow;
+ mainWindow.setOrientation(MainWindow::Auto);
//! [0]
-#if defined(Q_WS_S60)
- w.showMaximized();
+#ifdef Q_OS_SYMBIAN
+ mainWindow.showFullScreen();
+#elif defined(Q_WS_MAEMO_5)
+ mainWindow.showMaximized();
#else
- w.show();
+ mainWindow.show();
#endif
//! [0]
- return a.exec();
+ return app.exec();
}
--- /dev/null
+// checksum 0xd429 version 0x10001
+#include "mainwindow.h"
+#include "ui_mainwindow.h"
+
+#include <QtCore/QCoreApplication>
+
+#if defined(Q_OS_SYMBIAN) && defined(ORIENTATIONLOCK)
+#include <eikenv.h>
+#include <eikappui.h>
+#include <aknenv.h>
+#include <aknappui.h>
+#endif // Q_OS_SYMBIAN && ORIENTATIONLOCK
+
+//! [2]
+MainWindow::MainWindow(QWidget *parent):
+ QMainWindow(parent),
+ ui(new Ui::MainWindow),
+ deviceInfo(NULL)
+{
+ ui->setupUi(this);
+ setupGeneral();
+}
+//! [2]
+
+MainWindow::~MainWindow()
+{
+ delete ui;
+}
+
+//! [1]
+void MainWindow::setupGeneral()
+{
+ deviceInfo = new QSystemDeviceInfo(this);
+
+ ui->batteryLevelBar->setValue(deviceInfo->batteryLevel());
+
+ connect(deviceInfo, SIGNAL(batteryLevelChanged(int)),
+ ui->batteryLevelBar, SLOT(setValue(int)));
+}
+//! [1]
+
+void MainWindow::setOrientation(Orientation orientation)
+{
+#ifdef Q_OS_SYMBIAN
+ if (orientation != Auto) {
+#if defined(ORIENTATIONLOCK)
+ const CAknAppUiBase::TAppUiOrientation uiOrientation =
+ (orientation == LockPortrait) ? CAknAppUi::EAppUiOrientationPortrait
+ : CAknAppUi::EAppUiOrientationLandscape;
+ CAknAppUi* appUi = dynamic_cast<CAknAppUi*> (CEikonEnv::Static()->AppUi());
+ TRAPD(error,
+ if (appUi)
+ appUi->SetOrientationL(uiOrientation);
+ );
+#else // ORIENTATIONLOCK
+ qWarning("'ORIENTATIONLOCK' needs to be defined on Symbian when locking the orientation.");
+#endif // ORIENTATIONLOCK
+ }
+#elif defined(Q_WS_MAEMO_5)
+ Qt::WidgetAttribute attribute;
+ switch (orientation) {
+ case LockPortrait:
+ attribute = Qt::WA_Maemo5PortraitOrientation;
+ break;
+ case LockLandscape:
+ attribute = Qt::WA_Maemo5LandscapeOrientation;
+ break;
+ case Auto:
+ default:
+ attribute = Qt::WA_Maemo5AutoOrientation;
+ break;
+ }
+ setAttribute(attribute, true);
+#else // Q_OS_SYMBIAN
+ Q_UNUSED(orientation);
+#endif // Q_OS_SYMBIAN
+}
--- /dev/null
+// checksum 0xa940 version 0x10001
+#ifndef MAINWINDOW_H
+#define MAINWINDOW_H
+
+#include <QtGui/QMainWindow>
+
+//! [1]
+#include <QSystemInfo>
+//! [1]
+
+//! [2]
+QTM_USE_NAMESPACE
+//! [2]
+
+namespace Ui {
+ class MainWindow;
+}
+
+class MainWindow : public QMainWindow
+{
+public:
+ enum Orientation {
+ LockPortrait,
+ LockLandscape,
+ Auto
+ };
+
+ MainWindow(QWidget *parent = 0);
+ ~MainWindow();
+
+ void setOrientation(Orientation orientation);
+
+//! [3]
+private:
+ Ui::MainWindow *ui;
+ void setupGeneral();
+
+ QSystemDeviceInfo *deviceInfo;
+//! [3]
+};
+
+#endif // MAINWINDOW_H
--- /dev/null
+<?xml version="1.0" encoding="UTF-8"?>
+<ui version="4.0">
+ <class>MainWindow</class>
+ <widget class="QMainWindow" name="MainWindow">
+ <property name="geometry">
+ <rect>
+ <x>0</x>
+ <y>0</y>
+ <width>200</width>
+ <height>320</height>
+ </rect>
+ </property>
+ <property name="windowTitle">
+ <string>MainWindow</string>
+ </property>
+ <widget class="QWidget" name="centralWidget">
+ <layout class="QHBoxLayout" name="horizontalLayout">
+ <item>
+ <widget class="QProgressBar" name="batteryLevelBar">
+ <property name="value">
+ <number>24</number>
+ </property>
+ </widget>
+ </item>
+ </layout>
+ </widget>
+ <widget class="QMenuBar" name="menuBar">
+ <property name="geometry">
+ <rect>
+ <x>0</x>
+ <y>0</y>
+ <width>200</width>
+ <height>21</height>
+ </rect>
+ </property>
+ </widget>
+ <widget class="QToolBar" name="mainToolBar">
+ <attribute name="toolBarArea">
+ <enum>TopToolBarArea</enum>
+ </attribute>
+ <attribute name="toolBarBreak">
+ <bool>false</bool>
+ </attribute>
+ </widget>
+ <widget class="QStatusBar" name="statusBar"/>
+ </widget>
+ <layoutdefault spacing="6" margin="11"/>
+ <resources/>
+ <connections/>
+</ui>
\o In the \gui {Create in} field, enter the path for the project files. For example,
\c {C:\Qt\examples}, and then click \gui{Next}.
- The \gui{Select Required Qt Versions} dialog opens.
+ The \gui{Qt Versions} dialog opens.
- \image qtcreator-mobile-project-qt-versions.png "Select Required Qt Versions dialog"
+ \image qtcreator-mobile-project-qt-versions.png "Qt Versions dialog"
\o Select \gui Maemo, \gui {Qt Simulator}, and \gui {Symbian Device} targets,
and click \gui{Next}.
\note Targets are listed if you installed the appropriate development
- environment, for example, as part of the Nokia Qt SDK.
+ environment, for example, as part of the Nokia Qt SDK. You can add targets
+ later in the \gui Projects mode.
- The \gui{Class Information} dialog opens.
-
- \image qtcreator-mobile-class-info.png "Class Information dialog"
-
- \o In the \gui{Class Name} field, type \bold {BatteryIndicator} as the class name.
+ The \gui {Application Options} dialog opens.
- \o In the \gui{Base Class} list, select \bold {QDialog} as the base class type.
+ \image qtcreator-mobile-project-app-options.png "Application Options dialog"
- \note The \gui{Header File}, \gui{Source File} and \gui{Form File} fields are
- automatically updated to match the name of the class.
+ \o In the \gui {Orientation behavior} field, determine how the application
+ behaves when the orientation of the device display rotates between portrait
+ and landscape, and then click \gui{Next}.
- \o Click \gui{Next}.
+ \note Qt Creator contains a default program icon and generates a UID for testing
+ the application on a device. You only need to specify the \gui {Symbian Specific}
+ and \gui {Maemo Specific} settings if you deliver the application for public use.
The \gui{Project Management} dialog opens.
\list
- \o batteryindicator.h
- \o batteryindicator.cpp
- \o main.cpp
- \o batteryindicator.ui
\o BatteryIndicator.pro
+ \o main.cpp
+ \o BatteryIndicator.svg
+ \o BatteryIndicator.png
+ \o BatteryIndicator.desktop
+ \o deployment.pri
+ \o mainwindow.cpp
+ \o mainwindow.ui
+ \o mainwindow.h
+ \o templates for debian deployment files
\endlist
\image qtcreator-mobile-project-contents.png "Project contents"
The files come with the necessary boiler plate code that you must
- modify, as described in the following sections. You do not need
- to change the main.cpp file.
+ modify, as described in the following sections.
\section1 Declaring the Qt Mobility API
- The \gui New wizard automatically adds information to the .pro file
- that you need when you use the Qt Mobility APIs or develop applications
- for Symbian devices. You must modify the information to declare the
- Qt Mobility APIs that you use.
+ To use the Qt Mobility APIs or develop applications for Symbian
+ devices, you must modify the .pro file to declare the Qt Mobility APIs
+ that you use.
This example uses the System Info API, so you must declare it, as
illustrated by the following code snippet:
corresponding values that you can assign to MOBILITY, see the
\l {http://doc.qt.nokia.com/qtmobility-1.0/quickstart.html}{Quickstart Example}.
- The following code snippet shows information that is needed for
- applications developed for Symbian device. Qt Creator generated
- the UID for testing the application on a device. You only need
- to change the UID and capabilities if you deliver the application
- for public use and need to have it Symbian Signed.
-
- \code
-
- symbian {
- TARGET.UID3 = 0xecbd72d7
- # TARGET.CAPABILITY +=
- TARGET.EPOCSTACKSIZE = 0x14000
- TARGET.EPOCHEAPSIZE = 0x020000 0x800000
- }
-
- \endcode
-
\section1 Designing the User Interface
\list 1
- \o In the \gui{Editor} mode, double-click the batteryindicator.ui
+ \o In the \gui{Editor} mode, double-click the mainwindow.ui
file in the \gui{Projects} view to launch the integrated \QD.
\o Drag and drop a \gui{Progress Bar} (\l{http://doc.qt.nokia.com/4.7/qprogressbar.html}{QProgressBar})
\o In the \gui Properties pane, change the \gui objectName to
\bold batteryLevelBar.
- \o Right-click the \gui BatteryIndicator object and select
+ \o Right-click the \gui MainWindow object and select
\gui {Lay Out > Lay Out Horizontally} to ensure that the battery
indicator widget size is adjusted correctly on Maemo devices.
- To adjust widget size correctly on Qt Simulator, remove the condition
- from the main.cpp file (displayed in the following code snippet) and just
- leave the \c {w.showMaximized();} line:
-
- \snippet examples/batteryindicator/main.cpp 0
-
-
\endlist
\section1 Completing the Header File
- The batteryindicator.h file contains some of the necessary #includes, a
+ The mainwindow.h file contains some of the necessary #includes, a
constructor, a destructor, and the \c{Ui} object. You must include
the System Info header file, add a shortcut to the mobility name
space, and add a private function to update the battery level value in
\list 1
- \o In the \gui{Projects} view, double-click the \c{batteryindicator.h} file
+ \o In the \gui{Projects} view, double-click the \c{mainwindow.h} file
to open it for editing.
\o Include the System Info header file, as illustrated by the following
code snippet:
- \snippet examples/batteryindicator/batteryindicator.h 1
+ \snippet examples/batteryindicator/mainwindow.h 1
\o Add a shortcut to the mobility name space, as illustrated by the
following code snippet:
- \snippet examples/batteryindicator/batteryindicator.h 2
+ \snippet examples/batteryindicator/mainwindow.h 2
\o Declare a private function in the \c{private} section, after the
- \c{Ui::BatteryIndicator} function, as illustrated by the following code
+ \c{Ui::MainWindow} function, as illustrated by the following code
snippet:
- \snippet examples/batteryindicator/batteryindicator.h 3
+ \snippet examples/batteryindicator/mainwindow.h 3
\endlist
\section1 Completing the Source File
Now that the header file is complete, move on to the source file,
- batteryindicator.cpp.
+ mainwindow.cpp.
\list 1
- \o In the \gui{Projects} view, double-click the batteryindicator.cpp file
+ \o In the \gui{Projects} view, double-click the mainwindow.cpp file
to open it for editing.
\o Create a QSystemDeviceInfo object and set its value. Then connect the signal
that indicates that battery level changed to the \c setValue
slot of the progress bar. This is illustrated by the following code snippet:
- \snippet examples/batteryindicator/batteryindicator.cpp 1
+ \snippet examples/batteryindicator/mainwindow.cpp 1
\o Use the constructor to set initial values and make sure that the
created object is in a defined state, as illustrated by the following
code snippet:
- \snippet examples/batteryindicator/batteryindicator.cpp 2
+ \snippet examples/batteryindicator/mainwindow.cpp 2
\endlist
\list 1
- \o Install Qt 4.6.2 libraries, the Qt mobile libraries, and the TRK
+ \o Install Qt libraries, Qt mobile libraries, and the TRK
debugging application on the device. For more information,
see \l{Setting Up Development Environment for Symbian}.
configurations by clicking \gui {Device}. You can also simulate various
mobile functions and create your own scripts.
- \o To test the application on a Symbian device install Qt 4.6.2
+ \o To test the application on a Symbian device install Qt libraries
and the TRK debugging application on the device. For more information,
see \l{Setting Up Development Environment for Symbian}.