--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/fep/aknfep/inc/AknFepSharedDataInterface.h Wed Sep 01 12:23:33 2010 +0100
@@ -0,0 +1,792 @@
+/*
+* Copyright (c) 2002-2005 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:
+*
+*/
+
+
+
+
+
+
+
+
+
+
+
+
+#ifndef _AKNFEP_SHARED_DATA_INT_H__
+#define _AKNFEP_SHARED_DATA_INT_H__
+
+#include <e32base.h>
+#include <PtiDefs.h>
+#include <e32property.h>
+#include <cenrepnotifyhandler.h>
+#include <pslninternalcrkeys.h>
+#include <AknFepGlobalEnums.h> // for TPluginInputMode
+
+class CRepository;
+
+class CAknFepRepositoryWatcher : public CBase, public MCenRepNotifyHandlerCallback
+ {
+public:
+ static CAknFepRepositoryWatcher* NewL(
+ const TUid aUid,
+ const TUint32 aKey,
+ CCenRepNotifyHandler::TCenRepKeyType aKeyType,
+ TCallBack aCallBack,
+ CRepository* aRepository);
+
+ static CAknFepRepositoryWatcher* NewL(
+ const TUid aUid,
+ TCallBack aCallBack,
+ CRepository* aRepository);
+
+ ~CAknFepRepositoryWatcher();
+
+ TUint32 ChangedKey();
+#ifdef RD_INTELLIGENT_TEXT_INPUT
+ inline TBool IsGenericCenrepChange(){return iIsGeneric;}
+#endif
+
+public: // from MCenRepNotifyHandlerCallback
+ void HandleNotifyInt (TUint32 aKey, TInt aNewValue);
+ void HandleNotifyError (TUint32 aKey, TInt aError, CCenRepNotifyHandler* aHandler);
+ void HandleNotifyGeneric(TUint32 aId);
+
+private:
+ CAknFepRepositoryWatcher(
+ const TUid aUid,
+ const TUint32 aKey,
+ TCallBack aCallBack,
+ CRepository* aRepository);
+
+ void ConstructL(CCenRepNotifyHandler::TCenRepKeyType aKeyType);
+
+ void ConstructL();
+
+private:
+ TUid iUid;
+ TUint32 iKey;
+ TUint32 iChangedKey;
+ TCallBack iCallBack;
+ CRepository* iRepository;
+ CCenRepNotifyHandler* iNotifyHandler;
+#ifdef RD_INTELLIGENT_TEXT_INPUT
+ TBool iIsGeneric;
+#endif
+ };
+
+
+class CAknFepManager;
+
+class CAknFepSharedDataInterface : public CBase
+ {
+public:
+ /**
+ * Two phase constructor for this class
+ */
+ static CAknFepSharedDataInterface* NewL(CAknFepManager* aFepManager);
+
+ /**
+ * C++ Destructor
+ */
+ ~CAknFepSharedDataInterface();
+
+public:
+ /**
+ * Queries the value of PredictiveTextOn from shared data
+ *
+ * @return 1 for on or 0 for off
+ */
+ TInt PredictiveTextOn();
+
+ /**
+ * Queries the value of Japanese PredictiveTextOn from shared data
+ *
+ * @since 2.6
+ * @return 1 for on or 0 for off
+ */
+ TInt PredictiveTextJapaneseOn();
+
+ /**
+ * Queries the value of InputMode from shared data
+ *
+ * @since 2.6
+ * @return value of current input mode
+ */
+ TInt InputMode();
+
+ /**
+ * Sets the value of InputMode in shared data to the passed value
+ *
+ * @since 2.6
+ * @param aValue new value set to InputMode shared data item which
+ * represents the input mode currently being used
+ */
+ void SetInputMode(TInt aInputMode);
+
+ /**
+ * Queries the value of CangJieMode from shared data
+ *
+ * @since 3.0
+ * @return value of current input mode
+ */
+ TInt CangJieMode();
+
+ /**
+ * Sets the value of CangJieMode in shared data to the passed value
+ *
+ * @since 3.0
+ * @param aValue new value set to CangJieMode shared data item which
+ * represents the input mode currently being used
+ */
+ void SetCangJieMode(TInt aNewCangJieMode);
+
+ /**
+ * Queries the value of iInputTextLang from shared data
+ *
+ * @return language code of currently used language
+ */
+ TInt InputTextLanguage();
+
+ /**
+ * Sets the value of InputTextLanguage in shared data to the passed value
+ *
+ * @param aValue new value set to InputTextLanguage shared data item which
+ * represents the language code currently being used
+ */
+ void SetInputTextLanguage(TInt aValue);
+
+ /**
+ * Queries the value of iDisplayLang from shared data
+ *
+ * @return language code of currently display language
+ */
+ TInt DisplayLanguage();
+#ifdef RD_INTELLIGENT_TEXT_INPUT
+ /**
+ * Sets the Fn key state and copies it to Cenrep.
+ *
+ * @return Nothing
+ */
+ void SetFnKeyState(TInt aState);
+ TInt GetFnKeyState();
+#ifdef FF_DUAL_LANGUAGE_SUPPORT
+ /**
+ * Queries the value of secondary input language from shared data
+ *
+ * @return language code of currently used language
+ */
+ TInt InputTextLanguageSecondary();
+ /**
+ * Sets the value of secondary input language in shared data to the passed value
+ *
+ * @param aValue new value set to InputTextLanguageSecondary shared data item
+ * which represents the language code currently being used
+ */
+ void SetInputTextLanguageSecondary(TInt aValue);
+#endif // FF_DUAL_LANGUAGE_SUPPORT
+#endif
+
+ /**
+ * Sets the value of PredictiveTextOn to 1 in shared data - this
+ * is used to represent predictive text being on
+ */
+ void SetPredictiveTextOn();
+
+ /**
+ * Sets the value of PredictiveTextOn to 0 in shared data - this
+ * is used to represent predictive text being off
+ */
+ void ResetPredictiveTextOn();
+
+ /**
+ * Sets the value of Japanese PredictiveTextOn to 1 in shared data
+ * - this is used to represent Japanese predictive text being on
+ *
+ * @since 2.6
+ */
+ void SetJapanesePredictiveTextOn();
+
+ /**
+ * Sets the value of Japanese PredictiveTextOn to 0 in shared data
+ * - this is used to represent Japanese predictive text being off
+ *
+ * @since 2.6
+ */
+ void ResetJapanesePredictiveTextOn();
+
+ /**
+ * Query if KAknFepScrollLatinPredictive feature is enabled in shared data.
+ *
+ * @since 2.6
+ * @return Value of KAknFepScrollLatinPredictive setting.
+ */
+ TInt ScrollLatinPredictiveCandidates() const;
+
+ /**
+ * Query if KAknFepSpaceWithScrollRight feature is enabled in shared data.
+ *
+ * @since 2.6
+ * @return Value of KAknFepSpaceWithScrollRight setting.
+ */
+ TInt SpaceWithScrollRight() const;
+
+ /**
+ * Query if KAknFepEnterWithScrollDown feature is enabled in shared data.
+ *
+ * @since 2.6
+ * @return Value of KAknFepEnterWithScrollDown setting.
+ */
+ TInt EntersWithScrollDown() const;
+
+ /**
+ * Query Qwerty input mode.
+ *
+ * @since 2.6
+ * @return Value of KAknQwertyInputModeActive setting.
+ */
+ TInt QwertyInputMode() ; //const;
+#ifdef RD_INTELLIGENT_TEXT_INPUT
+ /**
+ * Reads Cenrep and returns the keyboard layout
+ *
+ */
+ TInt KeyboardLayout() ;//const
+#endif
+
+
+ /**
+ * Returns a value indicating whether edit-submenu functionality should be
+ * used in options menu.
+ *
+ * @since 3.1
+ * @return Value indicating whether edit submenu should be used.
+ */
+ TInt EditSubmenuInUse() const;
+
+ /**
+ * Returns a value indicating whether edit-submenu functionality should be
+ * used in options menu.
+ *
+ * @since 3.1
+ * @return Value indicating whether edit submenu should be used.
+ */
+ TInt HashKeySelectionInUse();
+
+ /**
+ * Multitap timer value.
+ * Replaces the constant KMultiTapTimeoutMS in Japanese variant.
+ *
+ * @since 3.0
+ * @return Value of KAknFepMultiTapTimer setting.
+ */
+ TInt MultiTapTimer() const;
+ /**
+ * Japanese Qwerty Flags value.
+ * Replaces the constant KAknFepJapaneseSpecialCharFlag in Japanese variant.
+ *
+ * @since 3.0
+ * @return Value of KAknFepJapaneseSpecialCharFlag setting.
+ */
+ TInt JapaneseQwertyFlags() const;
+
+ /**
+ * Get the last used plugin input mode
+ *
+ * @since 3.2
+ * @return Value of KAknFepLastUsedInput setting.
+ */
+ TInt PluginInputMode() const;
+
+ /**
+ * Replaces the last used plugin input mode
+ *
+ * @since 3.2
+ * @return Replace value of KAknFepLastUsedInput setting.
+ */
+ void SetPluginInputMode(TInt aId);
+
+
+ /**
+ * Get the last used plugin UI language
+ *
+ * @since 3.2
+ * @return Value of KAknFepLastUsedUILanguage setting.
+ */
+ TInt PluginUILanguage() const;
+
+ /**
+ * Replaces the last used plugin UI language
+ *
+ * @since 3.2
+ * @param aLanguage Replace value of KAknFepLastUsedUILanguage setting.
+ */
+ void SetPluginUILanguage(TInt aLanguage);
+
+
+ /**
+ * Get current pen input language
+ * @since 3.0
+ *
+ * @return Value of KSettingsPenInputLang
+ */
+ TInt PenInputLanguage() const;
+
+ /**
+ * Replaces the value of number input mode
+ *
+ * @since 3.2
+ * @param aMode (KSettingsDefaultNumberMode or KSettingsIndicDefaultNumberMode)
+ * @param aValue a value
+ */
+ void SetDefaultNumberMode( TInt aMode, TInt aValue );
+
+ /**
+ * Returns a value of current clear direction.
+ *
+ * @since 3.2
+ * @return Value of KAknFepClearDirection setting.
+ */
+ TInt ClearDirection() const;
+
+ /**
+ * Set a value of current clear direction.
+ *
+ * @since 3.2
+ * @param aValue new value set to Clear Direction shared data item which
+ * represents the direction currently being used
+ */
+ void SetClearDirection(TInt aValue);
+ /**
+ * Queries the value of PredictiveText Auto Word Completion state to be On from shared data
+ *
+ * @return 1 for on or 0 for off
+ * Since 5.0
+ */
+ TInt CAknFepSharedDataInterface::PredictiveTextAutoCompleteOn();
+
+
+ /**
+ * Sets the value of PredictiveText Auto Word Completion state to 1 in shared data - this
+ * is used to represent predictive text Auto Word Completion being on
+ * Since 5.0
+ */
+ void CAknFepSharedDataInterface::SetPredictiveTextAutoCompleteOn();
+
+
+ /**
+ * Sets the value of PredictiveText Auto Word Completion state to 0 in shared data - this
+ * is used to represent predictive text Auto Word Completion being off
+ * Since 5.0
+ */
+ void CAknFepSharedDataInterface::ResetPredictiveTextAutoCompleteOn();
+#ifndef RD_INTELLIGENT_TEXT_INPUT
+
+ /**
+ * Handles a change in predictive text Auto Word Completion setting from general settings
+ * Since 5.0
+ */
+ void CAknFepSharedDataInterface::HandlePredictiveTextAutoCompleteSettingGSChange();
+#endif
+#ifdef RD_INTELLIGENT_TEXT_INPUT
+
+ /**
+ * Handles a change in predictive text Auto Word Completion setting from general settings
+ * Since 5.0
+ */
+ void HandlePredictiveTextAutoCompleteSettingGSChange();
+#endif //
+
+ /**
+ * Returns a value of Hwr conversion ON/OFF.
+ *
+ * @since 3.2
+ * @return Value of KAknFepJapaneseHwrConversion value
+ */
+ TInt JapaneseHwrConversion() const;
+
+ /**
+ * Set a value of Hwr conversion ON/OFF.
+ *
+ * @since 3.2
+ * @param aValue new value set to Hwr conversion ON/OFF shared data item which
+ * represents the conversion ON/OFF currently being used
+ */
+ void SetJapaneseHwrConversion(TInt aValue);
+#ifdef RD_INTELLIGENT_TEXT_INPUT
+ /**
+ * Queries the value of PredictiveText Typing Correction Level from shared data
+ *
+ * @return Typing Correction Level
+ */
+ TInt PredictiveTextTypingCorrectionLevel();
+
+
+ /**
+ * Sets the value of PredictiveText Typing Correction Level state to aCorrectionLevel in shared data
+ */
+ void SetPredictiveTextTypingCorrectionLevel(TInt aCorrectionLevel);
+
+
+ /**
+ * Handles a change in predictive text Typing Correction Level setting.
+ */
+ void HandlePredictiveTextTypingCorrectionLevelChange();
+
+ /**
+ * Queries the value of PredictiveText Number Candidate Shown state to be On from shared data
+ *
+ * @return 1 for shown or 0 for not shown
+ */
+ TInt PredictiveTextNumberCandidateShown();
+
+
+ /**
+ * Sets the value of PredictiveText Number Candidate Shown state to 1 in shared data - this
+ * is used to represent predictive text Number Candidate Shown being shown.
+ */
+ void SetPredictiveTextNumberCandidateShown();
+
+
+ /**
+ * Sets the value of PredictiveText Number Candidate Shown state to 0 in shared data - this
+ * is used to represent predictive text Number Candidate Shown being not shown.
+ */
+ void ResetPredictiveTextNumberCandidateShown();
+
+
+ /**
+ * Handles a change in predictive text NumberCandidateShown setting.
+ */
+ void HandlePredictiveTextNumberCandidateSettingChange();
+
+ /**
+ * Queries the value of PredictiveText Primary candidate setting from shared data
+ *
+ * @return Primary candidate setting(0 for Exact or 1 for Suggested)
+ */
+ TInt PredictiveTextPrimaryCandidate();
+
+
+ /**
+ * Sets the value of PredictiveText Primary candidate setting state to aPrimaryCandidate in shared data
+ */
+ void SetPredictiveTextPrimaryCandidate(TInt aPrimaryCandidate);
+
+
+ /**
+ * Handles a change in predictive text Primary candidate setting.
+ */
+ void HandlePredictiveTextPrimaryCandidateChange();
+#endif // RD_INTELLIGENT_TEXT_INPUT
+
+ TInt FepShowFsqPreviewStatus();
+
+ void SetFepShowFsqPreviewStatus(TInt aValue);
+
+ TInt FepShowVkbPreviewStatus();
+
+ void SetFepShowVkbPreviewStatus(TInt aValue);
+
+ TInt FepLastUseVkbModeForLandscape();
+
+ void SetFepLastUseVkbModeForLandscape(TInt aValue);
+
+ TBool AutoRotateEnabled();
+
+ TBool ThemeEffectsEnabled();
+#ifdef __ITI_LONGPRESS_NUM_SHIFT_COPYPASTE__
+#ifdef RD_INTELLIGENT_TEXT_INPUT
+ /**
+ * Queries if numbers (and other characters found behind Fn) can be entered with long key press on QWERTY.
+ */
+ TBool LongPressNumberEntryOnQwerty() const;
+ /**
+ * Queries if copy-pasting with shift+softkeys is available also on QWERTY.
+ */
+ TBool ShiftCopyPastingOnQwerty() const;
+#endif // RD_INTELLIGENT_TEXT_INPUT
+#endif // __ITI_LONGPRESS_NUM_SHIFT_COPYPASTE__
+#ifdef RD_SCALABLE_UI_V2
+ /**
+ * Get a value of current default on screen vkb.
+ * It depends on input lanage is PRC/HW/TW Chinese.
+ *
+ * @return Value of current default on screen vkb
+ */
+ TInt DefaultOnScreenVKB();
+#endif
+
+ /**
+ * Returns a value of default arabic finger hwr orientation.
+ *
+ * @since 5.2
+ * @return 0 is portrait.
+ * 1 is landscape.
+ */
+ TInt DefaultArabicFingerHwrOrientation() const;
+
+ /**
+ * Set a value of default arabic finger hwr orientation.
+ *
+ * @since 5.2
+ * @param aValue new value set to default arabic finger hwr orientation shared data item which
+ * represents the default orientation.
+ * 0 is portrait.
+ * 1 is landscape.
+ */
+ void SetDefaultArabicFingerHwrOrientation(TInt aValue);
+ /**
+ * Returns a value of default arabic finger hwr number mode.
+ *
+ * @since 5.2
+ * @return 0 is portrait.
+ * 1 is landscape.
+ */
+ TInt DefaultArabicNumberMode() const;
+
+ /**
+ * Set a value of default arabic finger hwr number mode.
+ *
+ * @since 5.2
+ * @param aValue new value set to default arabic finger hwr number mode
+ * ared data item which represents the default number mode.
+ * 0 is latin nubmer.
+ * 1 is arabic native number.
+ */
+ void SetDefaultArabicNumberMode(TInt aValue);
+
+ /**
+ * Get the last used plugin input mode for portrait orientation
+ *
+ * @since 5.2
+ * @return value of KAknFepLastUsedPortraitInput value.
+ */
+ TPluginInputMode PluginPortraitInputMode() const;
+
+ /**
+ * Replaces the last used plugin input mode for portrait orientation
+ *
+ * @since 5.2
+ * @param Replace value of KAknFepLastUsedPortraitInput value.
+ */
+ void SetPluginPortraitInputMode( TPluginInputMode aLastUsedPortraitInputMode );
+private:
+ /**
+ * C++ Constructor
+ */
+ CAknFepSharedDataInterface(CAknFepManager* aFepManager);
+ /**
+ * Second phase constructor for this class
+ */
+ void ConstructL();
+
+private:
+
+ /**
+ * Handles a change in hash key selection setting
+ */
+ static TInt HashKeySelectionNotification(TAny* aObj);
+
+ /**
+ * Handles a change in input mode from general settings
+ */
+ static TInt InputModeChangeGSNotification(TAny* aObj);
+
+ /**
+ * Handles a change in input language from general settings
+ */
+ static TInt InputTextLangGSNotification(TAny* aObj);
+
+ /**
+ * Handles a change in predictive text setting from general settings
+ */
+ static TInt PredictiveTextSettingChangeGSNotification(TAny* aObj);
+#ifndef RD_INTELLIGENT_TEXT_INPUT
+
+ /**
+ * Handles a change in predictive text Auto Word Completion setting from general settings
+ * Since 5.0
+ */
+ static TInt PredictiveTextAutoCompleteSettingChangeGSNotification(TAny* aObj);
+#endif // RD_PRED_AW_COMPLETION
+#ifdef RD_INTELLIGENT_TEXT_INPUT
+ /**
+ Handles the change in keyboard layout.
+ */
+ void HandleKeyboardLayoutChange();
+ /**
+ * Call back function to handle a change in keyboard layout.
+ */
+ static TInt HandleKeyboardLayoutChangeNotification(TAny* aObj);
+
+#ifdef RD_SCALABLE_UI_V2
+ /**
+ Handles the change to virtual keyboard layout.
+ */
+ void HandleVirtualKeyboardLayoutChange();
+
+ /**
+ * Call back function to handle a change to virtual keyboard layout.
+ */
+ static TInt HandleVirtualKeyboardLayoutChangeNotification(TAny* aObj);
+#endif // RD_SCALABLE_UI_V2
+
+#endif
+#ifdef RD_INTELLIGENT_TEXT_INPUT
+
+ /**
+ * Handles a change in predictive text Auto Word Completion setting from general settings
+ * Since 3.2
+ */
+ static TInt PredictiveTextAutoCompleteSettingChangeGSNotification(TAny* aObj);
+#endif // RD_INTELLIGENT_TEXT_INPUT
+ /**
+ * Handles a change in Japanese predictive text setting from general settings
+ */
+ static TInt JapanesePredictiveTextSettingChangeGSNotification(TAny* aObj);
+#ifdef RD_INTELLIGENT_TEXT_INPUT
+ /**
+ * Handles a change in predictive text Typing Correction Level setting.
+ */
+ static TInt PredictiveTextTypingCorrectionLevelChangeNotification(TAny* aObj);
+
+ /**
+ * Handles a change in predictive text Number Candidate setting.
+ */
+ static TInt PredictiveTextNumberCandidateSettingChangeNotification(TAny* aObj);
+
+ /**
+ * Handles a change in predictive text Primary Candidate setting.
+ */
+ static TInt PredictiveTextPrimaryCandidateChangeNotification(TAny* aObj);
+#endif // RD_INTELLIGENT_TEXT_INPUT
+
+ /**
+ * Handles a change in qwerty input mode setting.
+ */
+ static TInt QwertyModeChangeNotification(TAny* aObj);
+
+ /**
+ * Handles a change in hash key selection
+ */
+ void HandleHashKeySelectionChange();
+
+ /**
+ * Handles a change in input mode from general settings
+ */
+ void HandleInputModeGSChange();
+
+ /**
+ * Handles a change in input language from general settings
+ */
+ void HandleInputTextLanguageGSChange();
+
+ /**
+ * Handles a change in predictive text setting from general settings
+ */
+ void HandlePredictiveTextSettingGSChange();
+
+ /**
+ * Handles a change in Japanese predictive text setting from general settings
+ */
+ void HandleJapanesePredictiveTextSettingGSChange();
+
+ /**
+ * Call back function to handle a change in MultiTapTimer from general settings
+ */
+ static TInt MultiTapTimerChangeGSNotification(TAny* aObj);
+ /**
+ * Handles a change in MultiTapTimer from general settings
+ */
+ void HandleMultiTapTimerChangeGSNotification();
+
+ /**
+ * Call back function to handle a change in Japanese Qwerty Flags from general settings
+ */
+ static TInt JapaneseQwertyFlagsChangeGSNotification(TAny* aObj);
+ /**
+ * Handle change notification for Japanese Qwerty Flags.
+ */
+ void HandleJapaneseQwertyFlagsChangeGSNotification();
+
+ /**
+ * Handles a change in qwerty input mode setting.
+ */
+ void HandleQwertyModeChangeNotification();
+ TInt NumberModeChangesGSNotification();
+
+ static TInt HandleRepositoryCallBack(TAny* aPtr);
+#ifdef RD_INTELLIGENT_TEXT_INPUT
+ static TInt HandleGenericRepositoryChange(TAny* aPtr);
+ TPtiKeyboardType ActiveKeyboardType() const;
+#endif
+ static TInt HandleLocaleRepositoryCallBack(TAny* aPtr);
+
+ class CSubscriber : public CActive
+ {
+ public:
+ CSubscriber(TCallBack aCallBack, RProperty& aProperty);
+ ~CSubscriber();
+
+ public: // New functions
+ void SubscribeL();
+ void StopSubscribe();
+
+ private: // from CActive
+ void RunL();
+ void DoCancel();
+
+ private:
+ TCallBack iCallBack;
+ RProperty& iProperty;
+ };
+
+ CSubscriber* iQwertyModeStatusSubscriber;
+ RProperty iQwertyModeStatusProperty;
+#ifdef RD_INTELLIGENT_TEXT_INPUT
+ CSubscriber* iKeyboardLayoutStatusSubscriber;
+ RProperty iKeyboardLayoutStatusProperty;
+#ifdef RD_SCALABLE_UI_V2
+ CSubscriber* iVirtualKeyboardLayoutStatusSubscriber;
+ RProperty iVirtualKeyboardLayoutStatusProperty;
+#endif // #ifdef RD_SCALABLE_UI_V2
+#endif
+
+ friend class CSubscriber;
+
+private:
+ CAknFepManager* iFepManager; //not owned
+
+ CRepository* iCommonEngineRepository;
+ CRepository* iAknFepRepository;
+ CRepository* iGsPenSettings; //for global setting
+ CRepository* iLocaleRepository; // locale related settings
+ CRepository* iSensorRepository;
+ CRepository* iThemeEffectsRepository;//transition effects
+ CAknFepRepositoryWatcher* iAknFepRepositoryWatcher;
+ CAknFepRepositoryWatcher* iAknFepLocaleRepositoryWatcher;
+
+ TInt iSharedDataScrollLatinPredictive;
+ TInt iSharedDataSpaceWithScrollRight;
+ TInt iSharedDataEnterWithScrollDown;
+
+ TInt iHashKeySelectionInUse;
+ };
+
+#endif
+
+// End of File