Pagina principala
Informatii
Internationalizarea
pROgrame KDE/Qt
Download
Documentatii
Despre LKR
Contact
Resurse
Harta site-ului

Programarea setarilor utilizator in KDE 3


   Andreas Nicolai
   18 Mai 2003

Partea a-II-a: Plictisitoarea teorie

Unul din principalele obiective ale tutorialului este accesarea cu usurinta a setarilor definite de utilizator. In aceasta idee am putea crea o singura clasa si sa-i accesam membrii din toate widget-utile si obiectele din program. Imaginati-va ca vom crea o astfel de clasa si o numim Configuration. Ar exista doar un singur obiect de configurare in program si care ar trebui sa fie disponibil pe intreaga durata a executiei (de la primul obiect creat pina la ultimul distrus). De ce trebuie creat asa? Cind initializam aplicatia, probabil multe obiecte depind de setari cind sint create si deci trebuie sa ne asiguram ca este creat intodeauna si este singura instanta a obiectului de configurare.

Cum putem face asa ceva? Cream o clasa singleton (puteti citi mai multe despre aceasta tehnica in una din cartile lui Scott Meyers "Effective C++"). Este simplu, nu lasam utilizatorul sa creeze de mina o instanta a clasei sau sa creeze fii ai clasei! Putem sa facem acest lucru folosind constructorul implicit ca privat.

Dar, va veti intreba, cum vom crea o instanta a clasei Configuration in cele din urma? O variabila globala este o alegere proasta deoarece in standardele C++ nu exista o ordine concreta in initializarea variabilelor globale. Asta inseamna ca s-ar putea sa folositi obiectul inainte de a fi construit. Standardele C++ spun ca o variabila statica intr-o functie trebuie creata inainte de primul apel al functiei, asa ca vom crea o functie care va intoarce o referinta la obiectul declarat static in interiorul funtiei si astfel vom fi siguri ca acel obiect va exista ori de cite ori il vom accesa.

Toate aceste sint ilustrate de liniile de cod de mai jos:


#ifndef CONFIGURATION_H
#define CONFIGURATION_H

class Configuration {
  public:
    // aici puteti adauga membrii publici
    // pentru setarile utilizatorului
  private:
    Configuration();
    Configuration(const Configuration&);

    // permite creare unei singure instante
    friend Configuration& Config();
};

// folositi aceasta functie pentru a accesa setarile
Configuration& Config();

#endif  // CONFIGURATION_H
configuration.h


#include "configuration.h"

Configuration::Configuration() {
    // DE FACUT: Initializarea setarilor utilizatorului
};

Configuration& Config() {
    static Configuration conf;
    return conf;
};
configuration.cpp

Ori de cite ori functia globala Config() este apelata, aceasta va returna o referinta la obiectul de configurare deja creat. De acum incolo putem folosi configuratia setarilor in orice parte a programului, doar incluzind antetul obiectului de configurare si primind o referinta la acel obiect prin functia Config(). Presupunind ca avem o variabila m_myButtonText in clasa de configurare, puteti accesa variabila in genul Config().m_myButtonText=....

Inainte de a termina aceasta parte a tutorialului, vreau sa fac o scurta remarca in ceea ce priveste adaugarea de clase noi in proiectul KDevelop. Exista diferite metode de a adauga o clasa (inclusiv fisierele de implementare si definitie). Prima metoda, cea mai sigura si rapida, este sa folosim vrajitorul "New class" (clasa noua). Celalalta metoda ar fi sa cream ambele fisiere (<newclass>.h and <newclass>.cpp) si sa folosim "Managerul automake" pentru a adauga fisierele la proiect. Astfel, deschideti "Managerul automake", selectati proiectul curent (fereastra de jos, "settingstutorial (program in bin)") si alegeti din meniul contextual "Add existing files".

Fara
KDevelop:
In acest caz va trebui sa creati cele doua fisiere singuri (este destul de simplu) si mai trebuie sa modificati fisierul Makefile.am din subdirectorul src. Trebuie doar adaugati fisierul configuration.cpp in linia cu fisiere sursa. Ar trebui sa arate cam asa:
settingstutorial_SOURCES = main.cpp \
                           settingstutorial.cpp \
                           configuration.cpp

Dupa ce veti adauga clasa de configurare la proiect si il veti compila, veti fi gata pentru partea a-III-a.

In cazul in care doriti sa va scutiti de munca (totusi, pentru a invata este recomandabil sa creati proiectul si fisierele singuri) puteti descarca arhiva proiectului de la: settingstutorial-01.tar.gz

Retineti ca dupa ce deschideti proiectul in KDevelop, trebuie sa executati pentru prima data meniul "Build -> Run automake & friends", dupa care "Build -> Run Configure" si apoi puteti sa compilati proiectul.

Fara
KDevelop:
Executati liniile urmatoare:
make -f Makefile.cvs
./configure
make



Traducere de Bogdan Daniel Vatra. Adaptare de Claudiu Costin.