Description: Description: Description: Description: Description: Description: Description: Description: Description: Description: logo ETTI

 

Description: Description: http://www.crunchgear.com/wp-content/photos/scaled.nokia_logo.jpg    Description: Description: http://www.marincristian.ro/wp-content/uploads/2009/08/Universitatea_Politehnica_Bucuresti_logo.png

 

Catedra de Telecomunicatii

 

  POO – an II

 

18/12/2010

 

  TPI – an III

 

  ISC – an IV

Introducere in tehnologia Qt Nokia

 

                     

 

2010 - 2011

Laborator 1 (draft)

Programarea pe platforma Nokia Qt SDK folosind Qt Creator IDE

 

Descrierea laboratorului

 

In aceasta lucrare de laborator vor fi acoperite urmatoarele probleme:

1. Crearea proiectului Battery Indicator

2. Declararea bibliotecilor Qt Mobility API

3. Proiectarea interfeței cu utilizatorul

4. Completarea fișierului Header

5. Completarea fișierului sursă

6. Compilarea și rularea programului

Anexe: Kituri si mod de instalare. Tutoriale in limba romana

 

Software-ul necesar pentru acest laborator (http://discipline.elcom.pub.ro/tpi/Qt_Nokia_UPB/):

·         Ovi Suite  – de la adresa http://europe.nokia.com/support/download-software/nokia-ovi-suite/compatibility-and-download

 

1. Crearea proiectului Battery Indicator

 

Această lucrare își propune crearea unei aplicații cu ajutorul programului Qt creator, aplicație ce poate fi testată pe terminal mobil și care utilizează biblioteca System Information Mobility API pentru a descărca informații despre baterie din dispozitiv (arhiva cu rezolvarea: BatteryIndicator.zip).

 

1. Se selectează  File -> New File or Project...  ->  Qt C++ Project  -> Mobile Qt Application  -> Choose...

 

 

Se deschide fereastra Introduction and Project Location.

 

 

2. Se tastează numele proiectului, BatteryIndicator, în câmpul Name.

 

3. În câmpul Create in, se alege calea unde va fi salvat proiectul. De exemplu, C:\Qt\examples. După aceea, se apasă butonul Next.

 

Se deschide fereastra Select Required Qt Versions.

 

 

4. Se selectează Maemo, Qt Simulator și Symbian Device și se apasă butonul Next.

 

Se deschide fereastra Class Information.

 

 

5. Se tastează numele clasei, BatteryIndicator, în câmpul Class Name.

 

6. Se selectează tipul clasei de bază, QDialog, în lista Base Class.

 

Observație: Câmpurile Header File, Source File și Form File sunt actualizate automat astfel încât numele acestora să se potrivească cu numele clasei.

 

7. Se apasă butonul Next.

 

Se deschide fereastra Project Management.

 

 

8. Se verifică setările proiectului și se apasă butonul Finish pentru a crea proiectul.

 

Proiectul BatteryIndicator conține acum următoarele fișiere (vizibile in modul Edit):

·         batteryindicator.h

·         batteryindicator.cpp

·         main.cpp

·         batteryindicator.ui

·         BatteryIndicator.pro

 

Observație: Fișierele conțin un cod generat automat în momentul în care este creat proiectul. Pentru acestă aplicație, codul trebuie modificat conform secțiunilor de mai jos. De obicei, nu este nevoie să se modifice și fișierul main.cpp.

 

2. Declararea bibliotecilor Qt Mobility API

 

Crearea unui nou proiect are ca rezultat adăugarea de informații în fișierul .pro, informații de care aveți nevoie atunci când folosiți biblioteca Qt Mobility API sau atunci când dezvoltați o aplicație pentru un dispozitiv Symbian. Trebuie să modificați informațiile pentru a declara ce bibliotecă Qt Mobility API folosiți.

 

Acest exemplu folosește biblioteca System Info API, deci trebuie declarată conform fragmentului de cod de mai jos:

 

CONFIG += mobility
MOBILITY = systeminfo

 

 
Fiecare bibliotecă Mobility API are valoarea sa corespunzătoare, pe care trebuie să o adăugați ca valoare a variabilei MOBILITY pentru a utiliza biblioteca API respectivă. 

 

Tabelul de mai jos conține o listă a bibliotecilor API și valorile corespunzătoare ce pot fi atribuite variabilei MOBILITY:

 

 
Următorul fragment de cod conține informațiile necesare pentru a dezvolta o aplicație pe un dispozitiv Symbian. Programul Qt Creator a generat o valoare  UID pentru a testa aplicația pe dispozitiv. Dacă aplicația este dezvoltată pentru uz public, atunci se modifică valoarea UID, altfel se lasă valoarea generată automat. 
 
symbian {
     TARGET.UID3 = 0xecbd72d7 
     # TARGET.CAPABILITY +=
     TARGET.EPOCSTACKSIZE = 0x14000
     TARGET.EPOCHEAPSIZE = 0x020000 0x800000
 }
 
 

3. Proiectarea interfeței utilizator

 

1. În modul Edit, realizați dublu clic pe fișierul batteryindicator.ui pentru a lansa Qt Designer (intrand in modul Design).

 

2. Trageți iconița Progress Bar () din meniul Display Widgets în spațiul de lucru, ca in imagine.

 

 

3. În panoul Properties, schimbați objectName din progressBar in batteryLevelBar.     

 

 

4. Realizați clic dreapta pe obiectul BatteryIndicator și selectați Lay Out -> Lay Out Horizontally pentru a ne asigura că dimensiunea indicatorului de baterie este ajustată corect pe dispozitivele Maemo.

 

 

Pentru a ajusta corect dimensiunea widget-ului pe Qt Simulator, comentați în fișierul main.cpp liniile din fragmentul de cod de mai jos, lăsând doar linia w.showMaximized();

 

#if defined(Q_WS_S60)

    w.showMaximized();

#else

    w.show();

#endif

 

 

4. Completarea fișierului Header

 

Fișierul batteryindicator.h conține câteva declarații incluse automat, un constructor, un destructor și un obiect Ui. Acesta trebuie modificat astfel încât:

 

-          să includeți fișierul header System Info;

 

-          să adăugați o comandă rapidă către mobility namespace, unde sunt plasate bibliotecile QtMobility API;

 

-          să adăugați o funcție de tip private pentru a actualiza valoarea nivelul bateriei în indicator atunci când se modifică nivelul de putere al bateriei.

 

1.      În modul Projects, deschideti fișierul batteryindicator.h cu dublu click.

 

2.      Includeți fișierul header System Info așa cum este ilustrat în următorul fragment de cod:

 

#include <QSystemInfo>
 
3.  Adăugați o comandă rapidă către biblioteci, conform fragmentului de cod de mai jos:
 
    QTM_USE_NAMESPACE
 
4.  Declarați o funcție de tip private în secțiunea private după funcția Ui::BatteryIndicator așa cum este ilustrat în fragmentul de cod de mai jos:
 
  private:
     Ui::BatteryIndicator *ui;
     void setupGeneral();
 
     QSystemDeviceInfo *deviceInfo

 

Fișierul batteryindicator.h dupa modificarile de mai sus:

 
 

#ifndef BATTERYINDICATOR_H

#define BATTERYINDICATOR_H

 

#include <QDialog>

#include <QSystemInfo>

QTM_USE_NAMESPACE

 

namespace Ui {

    class BatteryIndicator;

}

 

class BatteryIndicator : public QDialog

{

    Q_OBJECT

 

public:

    explicit BatteryIndicator(QWidget *parent = 0);

    ~BatteryIndicator();

 

private:

    Ui::BatteryIndicator *ui;

    void setupGeneral();

 

    QSystemDeviceInfo *deviceInfo;

};

 

#endif // BATTERYINDICATOR_H
 

5. Completarea fișierului sursă

 
1.  În modul Projects, apăsați dublu clic pe fișierul batteryindicator.cpp pentru a-l edita.
 
2.  Creați un obiect QSystemDeviceInfo și setați-i valoarea. După aceea conectați semnalul care indică nivelul schimbat al bateriei la slotul setValue al barei de progres. Acest lucru se realizează așa cum este ilustrat în fragmentul de cod de mai jos:
 
void BatteryIndicator::setupGeneral()
 {
     deviceInfo = new QSystemDeviceInfo(this);
 
     ui->batteryLevelBar->setValue(deviceInfo->batteryLevel());
 
     connect(deviceInfo, SIGNAL(batteryLevelChanged(int)),
             ui->batteryLevelBar, SLOT(setValue(int)));
 }
 
3.  Folosiți constructorul pentru a seta valorile inițiale și asigurați-vă că obiectul creat este într-o stare definită, așa cum este ilustrat mai jos:
 
BatteryIndicator::BatteryIndicator(QWidget *parent) :
     QDialog(parent),
     ui(new Ui::BatteryIndicator),
     deviceInfo(NULL)
 {
     ui->setupUi(this);
     setupGeneral();
 }
 

Fișierul batteryindicator.cpp dupa modificarile de mai sus:

 
 

#include "batteryindicator.h"

#include "ui_batteryindicator.h"

 

void BatteryIndicator::setupGeneral()

{

    deviceInfo = new QSystemDeviceInfo (this);

 

    ui->batteryLevelBar->setValue(deviceInfo->batteryLevel());

 

    connect (deviceInfo, SIGNAL(batteryLevelChanged(int)),ui->batteryLevelBar, SLOT(setValue(int)));

 

}

BatteryIndicator::BatteryIndicator(QWidget *parent) :

    QDialog(parent),

    ui(new Ui::BatteryIndicator)

{

    ui->setupUi(this);

    setupGeneral();

}

 

BatteryIndicator::~BatteryIndicator()

{

    delete ui;

}

 

6. Compilarea și rularea programului

 
Selectați Qt Simulator și realizați clic pe butonul  pentru a compila programul și pentru a-l rula. 
 
 
 
 
Puteti selecta in Qt Simulator tipul de dispozitiv pe care doriti sa faceti simularea
`
   – platforma Maemo 5 (Fremantle) – terminal mobil Nokia N900
 
`
 
   –  platforma Symbian^3 – terminal mobil Nokia N8
 
 
 
Rulați scriptul exemplu runOutOfBattery.qs pentru a vedea cum se modifică nivelul bateriei, selectând Scripting -> examples -> runOutOfBattery.qs -> Run.
 
 

 

 

Efectul este diminarea progresiva a nivelului bateriei, care se reduce pas cu pas ca in figurile urmatoare:

 


       

 

 

In final nivelul bateriei ajungand la valoarea 0 (permitand, de exemplu, testarea unor servicii sau aplicatii care actioneaza in cazul descarcarii bateriei):

 

 

_____________________________________________________________________________

 

Anexe

1.   Kituri si mod de instalare

1.1. Qt SDK (instalat primul)

                        

1. La adresa http://qt.nokia.com/downloads/

 

2. Se selecteaza licenta LGPL

 

3. Se descarca Qt SDK for Windows* (322 MB)

 

4. Se salveaza qt-sdk-win-opensource-2010.05.exe

   (scurtatura: http://get.qt.nokia.com/qtsdk/qt-sdk-win-opensource-2010.05.exe)

 

5. Se executa qt-sdk-win-opensource-2010.05.exe pentru instalare

 

1.2. Nokia Qt SDK 1.0.1 - Procedura instalare “Nokia Qt SDK 1.0.1”

 

1. La adresa http://www.forum.nokia.com/Develop/Qt/ se apasa “Download” (buton verde aflat in dreapta)

 

2. In dreapta se selecteaza versiunea dorita, de exemplu versiunea offline Windows (care nu necesita dupa descarcare acces la Internet) “Windows 32/64 (923 MB)” si se apasa “Download”

 

3. Se descarca versiunea selectata, in cazul nostru “Nokia_Qt_SDK_Win_offline_v1_0_1_en.exe”

 

4. Se lanseaza in executie, se permite accesul daca antivirusii sau alte sisteme de protectie se interpun, se pot confirma apoi toate “propunerile implicite”

 

5. In final se accepta lansarea in executie a QtCreator

 

6. Se apasa apoi butonul “Update” care laseaza “Maintain Nokia Qt SDK”

 

7. Se selecteaza update-urile in Updater, toate (inclusiv Symbian SDK)

 

8. In timpul actualizarii este necesara inchiderea QtCreator pentru a putea merge actualizarea mai departe (SDKMaintenanceTool).

 

Dureaza ceva timp toate actualizarile…

 

9. Se selecteaza in“Maintain Nokia Qt SDK”  si Package Manager, se selecteaza tot si se apasa Update

Dureaza ceva timp …

 

1.3. Nokia Ovi Suite

 

 

1. La adresa http://europe.nokia.com/support/download-software/nokia-ovi-suite/compatibility-and-download se apasa Download din dreapta (zona “Quick download”)

 

2. Se descarca astfel “Nokia_Ovi_Suite_webinstaller_ALL.exe” – care probabil necesita conexiune la Internet pentru instalare.

 

3. Se lanseaza in executie, se permite accesul daca antivirusii sau alte sisteme de protectie se interpun, incepe “Instalarea Nokia Ovi Suite 2.2.1.23”.

 

4. Se poate selecta limba Romana (propusa implicit) , se da acordul pt instalare,

 

5. In final, dupa terminarea instalarii, la lansare, “Nokia Ovi Suite 2.2.1.23” se cere conectarea unui telefon compatibil (dar se poate lucra pe emulator)

 

 

2.   Tutoriale in limba romana

 

            GettingStartedProgrammingWithQtRomanian (in limba romana!!!!!)

 

            Tutoriale QT  (in limba romana!!!!!)

 

Lectia 1. Introducere, primul proiect

 

Lectia 2. Notiuni de baza

 

Lectia 3. Widget-uri simple

 

GettingStartedQMLRomanian (in limba romana!!!!!)