/*
 * GlLista.h
 * Autor: Pawe Gala
 */

#ifndef __GLLISTA_H__
#define __GLLISTA_H__

#include "GlobalneOknoDialogowe.h"


class CAknGlobalListQuery;
class MDesCArray;

class CGlLista : public CGlobalneOknoDialogowe
    {
public:    // Konstruktory dwufazowe i destruktor
    static CGlLista* NewL( TUint aId, MObserwatorDialogu& aObserwator );
    static CGlLista* NewLC( TUint aId, MObserwatorDialogu& aObserwator );
    
    ~CGlLista();
    
public:
    void WyswietlListeL( const MDesCArray* aLista, TInt aZaznaczonaPoz = 0 );
    
private:   // Odziedziczone z CGlobalneOknoDialogowe
    void DoCancel();
    
private:   // Konstruktory pierwszej i drugiej fazy
    CGlLista( TUint aId, MObserwatorDialogu& aObserwator );
    void ConstructL();
    
private:   // Pola
    CAknGlobalListQuery* iGlListQuery;
    };

#endif /* __GLLISTA_H__ */


/*
 * GlLista.cpp
 * Autor: Pawe Gala
 */

#include <akngloballistquery.h>
#include "GlLista.h"

CGlLista* CGlLista::NewL( TUint aId, MObserwatorDialogu& aObserwator )
    {
    CGlLista* self = CGlLista::NewLC( aId, aObserwator );
    CleanupStack::Pop( self );
    return self;
    }

CGlLista* CGlLista::NewLC( TUint aId, MObserwatorDialogu& aObserwator )
    {
    CGlLista* self = new( ELeave ) CGlLista( aId, aObserwator );
    CleanupStack::PushL( self );
    self->ConstructL();
    return self;
    }
    
CGlLista::CGlLista( TUint aId, MObserwatorDialogu& aObserwator )
:CGlobalneOknoDialogowe( aId, aObserwator )
    {
    }

CGlLista::~CGlLista()
    {
    Cancel();
    delete iGlListQuery;
    }
    
void CGlLista::ConstructL()
    {
    iGlListQuery = CAknGlobalListQuery::NewL();
    }
    
void CGlLista::WyswietlListeL( const MDesCArray* aLista, TInt aZaznaczonaPoz )
    {
    iGlListQuery->ShowListQueryL( aLista, iStatus, aZaznaczonaPoz );
    SetActive();
    }

void CGlLista::DoCancel()
    {
    iGlListQuery->CancelListQuery();
    }


// ----------------
// Uycie klasy CGlLista
// ----------------

#include <badesca.h>    // CDesCArray, CDesCArrayFlat
#include "GlLista.h"

// Wymagana biblioteka: aknnotify.lib, bafl.lib
// ...

const TInt KGranulacja = 1;
iListaPozycji = new( ELeave ) CDesCArrayFlat( KGranulacja );

const TUint KIdDialogu = 2;
iLista = CGlLista::NewL( KIdDialogu, *iObserwatorDialogu );

_LIT( KPozycja1, "Pozycja 1" );
_LIT( KPozycja2, "Pozycja 2" );
_LIT( KPozycja3, "Pozycja 3" );

iListaPozycji->AppendL( KPozycja1 );
iListaPozycji->AppendL( KPozycja2 );
iListaPozycji->AppendL( KPozycja3 );

iLista->WyswietlListeL( iListaPozycji, 1 );
