AnyConnect Secure Mobility Client 4.4.00243

include/Preference.h

00001 /**************************************************************************
00002 *       Copyright © 2008, Cisco Systems, All Rights Reserved
00003 ***************************************************************************
00004 *
00005 *  File:    Preference.h
00006 *  Date:    7/2008
00007 *
00008 ***************************************************************************
00009 *
00010 *   Preference class declaration for the Client API.
00011 *
00012 ***************************************************************************/
00013 
00014 #ifndef _PREFERENCE_
00015 #define _PREFERENCE_
00016 
00017 /**
00018 * The Preference class represents a single preference setting that is read
00019 * from disk.  Some preferences can be controlled by the user, as specified
00020 * by administrator policy.  In these instances, the UI layer will represent
00021 * the controls/widgets used to modify a preference by rendering an associated
00022 * PromptEntry object, accessible via the getPromptEntry() method, similar to
00023 * the mechanism used to obtain user input in a ClientIfc::UserPromptCB call.
00024 */
00025 
00026 #include "PreferenceBase.h"
00027 
00028 class VPN_VPNAPI Preference : public PreferenceBase
00029 {
00030 
00031     public:
00032 
00033         /**
00034         * Sets the value associated with this preference.  Returns true on 
00035         * success, false if the value is not in the range of allowed values
00036         * for this preference (e.g. setting a value of "fish" for a true/false
00037         * preference).
00038         */
00039         bool setPreferenceValue(const tstring& value);
00040 
00041 
00042         /**
00043         * Returns the current value of this preference as returned by
00044         * PromptEntry::getTrueValue(). The values "true" and "false" are 
00045         * returned for preferences represented by a checkbox.
00046         */
00047         const tstring& getPreferenceValue() const;
00048 
00049 
00050         /**
00051         * Returns the ID of this Preference. For a complete list of preference
00052         * ID's see the ::PreferenceId enum in api.h.
00053         */
00054         const PreferenceId& getPreferenceId() const;
00055 
00056 
00057         /**
00058         * Returns a reference to an internal list of child preferences for this
00059         * class.  Callers may modify the value of the Preference objects contained
00060         * within, but should not alter the list or delete individual objects.
00061         */
00062         const std::list<Preference*>& getChildren() const; 
00063 
00064 
00065         /**
00066         * Returns a pointer to an internal PromptEntry used to modify the value
00067         * of this Preference. By checking the type of the PromptEntry, an 
00068         * appropriate UI layer control/widget should be created that can be
00069         * used to update the value of the preference. The caller should not 
00070         * delete the returned pointer.
00071         *
00072         * From the ::PromptType enum in api.h, Prompt_Combo and Prompt_Checkbox
00073         * are used by this class.
00074         *
00075         * @see PromptEntry
00076         */
00077         PromptEntry* getPromptEntry() const;
00078 
00079 
00080         Preference(PreferenceId preferenceId,
00081                    const tstring& label,
00082                    PromptType prefType,
00083                    const tstring& initialValue,
00084                    ApiStringMap* pOptions = NULL,
00085                    Preference* pParent = NULL);
00086 
00087 };
00088 
00089 #endif // _PREFERENCE_