cmmanager/cpdestinationplugin/inc/cpdestinationentryitem.h
author Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
Mon, 03 May 2010 12:53:07 +0300
changeset 20 9c97ad6591ae
child 32 5c4486441ae6
child 46 95d45f234cf3
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:  
* This items represents one Destination in UI.
*
*/

#ifndef CPDESTINATIONENTRYITEM_H
#define CPDESTINATIONENTRYITEM_H

// System includes
#include <QSharedPointer>
#include <cpsettingformentryitemdata.h>
#include <cmmanagerdefines_shim.h>

// User includes

// Forward declarations
class QString;
class HbMenu;
class HbView;
class HbListWidget;
class HbListWidgetItem;
class HbMainWindow;
class HbAction;
class HbInputDialog;
class CpItemDataHelper;
class CpIapItem;
class CmConnectionMethodShim;
class CmManagerShim;

// External data types

// Constants

// Class declaration
class CpDestinationEntryItemData : public CpSettingFormEntryItemData
{
    Q_OBJECT
public:
    explicit CpDestinationEntryItemData(CpItemDataHelper &itemDataHelper);
    virtual ~CpDestinationEntryItemData();
    
    int destinationId();
    void setDestinationId( int destId );
    QString destinationName();
    void setDestinationName(const QString destinationName);
    
signals:
    void destChanged();
    
public slots:
    void updateDestinationView();
    void showItemMenu(QPointF position);
    void renameDestination();
    void confirmDestinationDelete();
    void deleteDestination();
    void activateArrangeMode();
    void viewDone();
    void viewCancel();
    void updateIndex(HbListWidgetItem *widgetItem);
    void saveNewDestinationName();
    
protected:
    
protected slots:
    
private:
    virtual CpBaseSettingView *createSettingView() const;
    void fetchReferencedAps(
        QList<QSharedPointer<CmConnectionMethodShim> > &apList, const CmManagerShim *cmm) const;
    bool isDestinationNameValid(QString &destination, const CmManagerShim *cmm);
    void createArrangeModeView(HbView *view);
    void constructSettingView(CpBaseSettingView *view) const;
    HbMenu *createItemMenu(
        CMManagerShim::CmmProtectionLevel protLvl,
        const QPointF position);
    void lauchNewDestinationNameQuery();
    void showRenameError(const QString &info);
    void showErrorNote(const QString &info);
            
private slots:
    
private: // data
    
    //! Helper for connecting signals to underlying widgets
    CpItemDataHelper    *mItemDataHelper;
    //! Unique Destination ID
    int                 mDestinationId;
    //! Destination Name
    QString             mDestinationName;
    //! List of access points contained by this object
    QList<CpIapItem*>   *mAps;
    //! Pointer to CmManager for commsdat operations
    CmManagerShim       *mCmm;
    //! Previous view when arrange mode view is shown
    HbView              *mPreView;
    //! List of access points for arrange mode
    HbListWidget        *mList;
    //! New Destination name query dialog
    HbInputDialog      *mDialog;
    //! New Destination name query's OK action
    HbAction           *mOkAction;
    
    //! Maximun length for destination name
    static const int DestinationNameMaxLength = 30;
};

#endif /* CPDESTINATIONENTRYITEM_H */