cmmanager/cmapplsettingsui/inc/cmradiodialog.h
author Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
Mon, 03 May 2010 12:53:07 +0300
changeset 20 9c97ad6591ae
permissions -rw-r--r--
Revision: 201015 Kit: 201018

/*
* Copyright (c) 2010 Nokia Corporation and/or its subsidiary(-ies).
* All rights reserved.
* This component and the accompanying materials are made available
* under the terms of "Eclipse Public License v1.0"
* which accompanies this distribution, and is available
* at the URL "http://www.eclipse.org/legal/epl-v10.html".
*
* Initial Contributors:
* Nokia Corporation - initial contribution.
*
* Contributors:
*
* Description: 
* Dialog implementation for the CM Manager Application Settings UI. 
*
*/

#ifndef CMRADIODIALOG_H
#define CMRADIODIALOG_H

// System includes

#include <QObject>
#include <QSet>
#include <QStringList>
#include <QSharedPointer>

// User includes

// Forward declarations

class HbDialog;
class HbLabel;
class HbRadioButtonList;
class HbAction;
class HbDocumentLoader;
class TestCmApplSettingsUi;

// External data types

// Constants

// Supported dialog types
enum CmRadioDialogType {
    CmRadioDialogTypeDestination = 1,       //!< Destination selection dialog
    CmRadioDialogTypeAccessPoint            //!< Access point selection dialog
};

// Supported options
enum CmRadioDialogOpt {
    CmRadioDialogOptDedicatedAP = 1         //!< Append "Dedicated access point"
};

// Class declaration

class CmRadioDialog : public QObject
{
    Q_OBJECT

public:

    // Data types

    explicit CmRadioDialog(QObject *parent = 0);
    
    ~CmRadioDialog();
    
    void setType(CmRadioDialogType type);
    
    void setOptions(const QSet<CmRadioDialogOpt> &options);
    
    void setItems(const QStringList &list);
    
    void setSelected(int index);
    
    int selected() const;
    
    void open();
    
signals:

    /*!
     * Signal used for informing that the dialog has finished.
     * 
     * @param[in] success Dialog run success. This is true if OK was pressed.
     */
    void finished(bool success);

public slots:

    void dialogClosed(HbAction *action);

protected:

protected slots:

private:

    void setHeading();

private slots:
    
    void loadDocml();

private: // data

    // Owned data
    CmRadioDialogType mType;                    //!< Radio dialog type
    QSet<CmRadioDialogOpt> mOptions;            //!< Radio dialog options
    QSharedPointer<HbDocumentLoader> mLoader;   //!< Dialog document loader
    QStringList mListItems;                     //!< Dialog radio button items
    QSharedPointer<HbDialog> mDialog;           //!< Dialog reference
    
    // Not owned data
    HbLabel *mHeading;                          //!< Dialog title
    HbRadioButtonList *mList;                   //!< Dialog's radio button list
    HbAction *mOkAction;                        //!< Dialog's OK button action
    
    // Friend classes
    
    // Test class needs direct access
    friend class TestCmApplSettingsUi;
};

#endif // CMRADIODIALOG_H