ipcm_plat/connection_settings_ui_api/inc/cmapplsettingsui.h
changeset 20 9c97ad6591ae
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/ipcm_plat/connection_settings_ui_api/inc/cmapplsettingsui.h	Mon May 03 12:53:07 2010 +0300
@@ -0,0 +1,240 @@
+/*
+* 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:
+* CM Manager Application Settings UI interface.  
+*
+*/
+
+#ifndef CMAPPLSETTINGSUI_H
+#define CMAPPLSETTINGSUI_H
+
+// System includes
+
+#include <QObject>
+#include <QFlags>
+#include <QSet>
+
+// User includes
+
+// Forward declarations
+
+class CmApplSettingsUiPrivate;
+class TestCmApplSettingsUi;
+
+// External data types
+
+// Constants
+
+#ifdef BUILD_CMAPPLSETTINGSUI_DLL
+#define CMAPPLSETTINGSUIDLL_EXPORT Q_DECL_EXPORT
+#else
+#define CMAPPLSETTINGSUIDLL_EXPORT Q_DECL_IMPORT
+#endif
+
+// Class declaration
+
+/*!
+    \class CmApplSettingsUi
+    \brief Class for launching the Application Settings UI.
+
+    Displays a radio button list dialog for an application that can be used
+    to select a destination or connection method.
+
+*/
+
+class CMAPPLSETTINGSUIDLL_EXPORT CmApplSettingsUi : public QObject
+{
+    Q_OBJECT
+    
+public:
+
+    // Data types
+
+    /*! 
+       The selection type of a list item in application settings UI
+     */
+    enum SelectionType
+        {
+        //! The user selected a destination
+        SelectionTypeDestination,
+        //! The user selected a connection method
+        SelectionTypeConnectionMethod
+        };
+
+    /*! 
+       These flags control what items the selection UI can contain.
+       Flags that are not listed in the enum are reserved for future usage
+       and they are disabled by default. So extending these flags later on
+       does not cause a BC break. These flags are used as bit fields.
+       
+       The following enumerations control how destinations and 
+       Connection Methods are presented in the selection UI.
+       
+       ShowDestinations is set and ShowConnectionMethods is set:
+         Destination list is shown in selection UI and alternatively
+         the user can select a Connection Method.
+       ShowDestinations is set and ShowConnectionMethods is not set:
+         Destination list is shown in selection UI and no specific
+         Connection Method can be selected. 
+       ShowDestinations is not set and ShowConnectionMethods is set:
+         Connection Method list is shown in selection UI. Destinations
+         can not be selected.
+       ShowDestinations is not set and ShowConnectionMethods is not set:
+         The selection UI will not contain any Destination or
+         Connection Method. If no extension(s) are implemented  (later
+         on), no dialog is shown, and the execution is cancelled
+         (ApplSettingsErrorNoContent).
+     */
+    enum SelectionDialogItems
+        {
+        //! Support destination selection
+        ShowDestinations = 0x01,
+        //! Support connection method selection
+        ShowConnectionMethods = 0x02                              
+        };
+    
+    /*!
+       Error codes for the dialog.
+     */
+    enum ApplSettingsError {
+        //! No error. Dialog succeeded.
+        ApplSettingsErrorNone = 0,
+        //! Selection was canceled.
+        ApplSettingsErrorCancel,
+        //! No items to show (e.g. too strict filters).
+        ApplSettingsErrorNoContent,
+        //! Settings reading failed.
+        ApplSettingsErrorSettingsRead
+    };
+
+    /*!
+       Details of a setting selection. Used both for configuring and
+       selection result.
+     */
+    struct SettingSelection
+        {
+        /*!
+           Selection type, refers to the type of the list item which
+           is selected.
+         */
+        SelectionType result;
+        
+        /*!
+           Id of the selected destination or connection method.
+         */
+        uint id;
+        };
+    
+    /*!
+       Typedef for the bearer filter parameter.
+       This type is used to filter Connection Methods by bearer type.
+
+       The Bearer types are defined in CM Manager's Connection Settings
+       Shim (cmmanagerdefines_shim.h). 
+     */
+    typedef uint BearerTypeFilter;
+    
+    /*!
+        Constructor.
+        
+        @param parent Parent object.
+     */
+    explicit CmApplSettingsUi(QObject *parent = 0);
+    
+    /*!
+        Destructor.
+     */
+    virtual ~CmApplSettingsUi();
+
+    /*!
+        Set dialog options. If this function is not called before running the
+        dialog, the default options are used:
+        -listItems: ShowDestinations | ShowConnectionMethods
+        -bearerFilter: empty
+
+        @param[in] listItems Dialog list items configuration.
+        @param[in] bearerFilter Dialog Connection Method bearer type filter.
+        If empty, all bearers are supported.
+     */
+    void setOptions(
+        const QFlags<SelectionDialogItems> &listItems,
+        const QSet<BearerTypeFilter> &bearerFilter);
+
+    /*!
+        Dialog selection setter. Sets the current selection in the dialog.
+        If not selected, or if the selection is invalid, the default
+        selection is used (the first item in the dialog items list).
+
+        @param[in] selection Dialog selection to set.
+     */
+    void setSelection(const SettingSelection &selection);
+
+    /*!
+        Dialog selection getter. Returns the current selection.
+
+        @return Current dialog selection.
+     */
+    SettingSelection selection() const;
+
+    /*!
+        Launches the Application Settings UI provided for applications
+        for selecting Destinations and/or Connection Methods.
+
+        If a list of Destinations is displayed, and the selection is set to
+        a Connection Method, the destination list highlight is set to
+        "Dedicated access point".
+
+        This function runs the dialog asynchronously.  After the dialog
+        has been closed (or cancelled), the signal finished() is emmitted.
+        If the dialog succeeded, the client can then check the new
+        selection with selection() getter.
+     */
+    void open();
+
+signals:
+
+    /*!
+       Signal used for informing that the dialog has finished.
+       
+       @param[in] status Dialog run status code (ApplSettingsError*).
+     */
+    void finished(uint status);
+
+public slots:
+
+protected:
+
+protected slots:
+
+private:
+
+    Q_DISABLE_COPY(CmApplSettingsUi)
+
+private slots:
+
+private: // data
+
+    CmApplSettingsUiPrivate *d_ptr;         //!< Private implementation
+
+    // Friend classes
+    
+    // This is defined as a friend class in order to be able to emit
+    // signals directly from private implementation code.
+    friend class CmApplSettingsUiPrivate;
+    
+    // Test class needs direct access
+    friend class TestCmApplSettingsUi;
+};
+
+#endif // CMAPPLSETTINGSUI_H