| /************************************************************** |
| * |
| * Licensed to the Apache Software Foundation (ASF) under one |
| * or more contributor license agreements. See the NOTICE file |
| * distributed with this work for additional information |
| * regarding copyright ownership. The ASF licenses this file |
| * to you under the Apache License, Version 2.0 (the |
| * "License"); you may not use this file except in compliance |
| * with the License. You may obtain a copy of the License at |
| * |
| * http://www.apache.org/licenses/LICENSE-2.0 |
| * |
| * Unless required by applicable law or agreed to in writing, |
| * software distributed under the License is distributed on an |
| * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY |
| * KIND, either express or implied. See the License for the |
| * specific language governing permissions and limitations |
| * under the License. |
| * |
| *************************************************************/ |
| |
| |
| #ifndef INCLUDED_unotools_VIEWOPTIONS_HXX |
| #define INCLUDED_unotools_VIEWOPTIONS_HXX |
| |
| //_________________________________________________________________________________________________________________ |
| // includes |
| //_________________________________________________________________________________________________________________ |
| |
| #include "unotools/unotoolsdllapi.h" |
| #include <com/sun/star/uno/Sequence.hxx> |
| #include <com/sun/star/beans/NamedValue.hpp> |
| #include <unotools/configmgr.hxx> |
| #include <unotools/configitem.hxx> |
| #include <sal/types.h> |
| #include <osl/mutex.hxx> |
| #include <rtl/ustring.hxx> |
| #include <unotools/options.hxx> |
| |
| //_________________________________________________________________________________________________________________ |
| // forward declarations |
| //_________________________________________________________________________________________________________________ |
| |
| class SvtViewOptionsBase_Impl; |
| |
| //_________________________________________________________________________________________________________________ |
| // declarations |
| //_________________________________________________________________________________________________________________ |
| |
| /*-************************************************************************************************************//** |
| @descr Use these enum values to specify right list in configuration in which your view data are saved. |
| *//*-*************************************************************************************************************/ |
| |
| enum EViewType |
| { |
| E_DIALOG = 0, |
| E_TABDIALOG = 1, |
| E_TABPAGE = 2, |
| E_WINDOW = 3 |
| }; |
| |
| /*-************************************************************************************************************//** |
| @short collect informations about view features |
| @descr We support different basetypes of views like dialogs, tab-dialogs, tab-pages and normal windows. |
| You must specify your basetype by using right enum value and must give us a valid name for your |
| subkey in registry! We support some fix features for some bastypes and user data as string for all! |
| see also configuration package "org.openoffice.Office.Views/..." for further informations. |
| |
| template of configuration: |
| DialogType |
| /WindowState [string] |
| /UserData [set of any scalar types] |
| TabDialogType |
| /WindowState [string] |
| /UserData [set of any scalar types] |
| /PageID [int] |
| TabPageType |
| /WindowState [string] |
| /UserData [set of any scalar types] |
| WindowType |
| /WindowState [string] |
| /UserData [set of any scalar types] |
| /Visible [boolean] |
| |
| structure of configuration: |
| |
| org.openoffice.Office.Views [package] |
| /Dialogs [set] |
| /Dialog_FileOpen [DialogType] |
| /Dialog_ImportGraphics [DialogType] |
| ... |
| /Dialog_<YourName> [DialogType] |
| |
| /TabDialogs [set] |
| /TabDialog_001 [TabDialogType] |
| /TabDialog_Blubber [TabDialogType] |
| ... |
| /TabDialog_<YourName> [TabDialogType] |
| |
| /TabPages [set] |
| /TabPage_XXX [TabPageType] |
| /TabPage_Date [TabPageType] |
| ... |
| /TabPage_<YourName> [TabPageType] |
| |
| /Windows [set] |
| /Window_User [WindowType] |
| /Window_Options [WindowType] |
| ... |
| /Window_<YourName> [WindowType] |
| |
| @implements - |
| @base - |
| |
| @devstatus ready to use |
| *//*-*************************************************************************************************************/ |
| |
| class UNOTOOLS_DLLPUBLIC SvtViewOptions: public utl::detail::Options |
| { |
| /* |
| #ifdef TF_OLDVIEW |
| public: |
| void GetPosition ( sal_Int32& nX , |
| sal_Int32& nY ) const; |
| void SetPosition ( sal_Int32 nX , |
| sal_Int32 nY ); |
| void GetSize ( sal_Int32& nWidth , |
| sal_Int32& nHeight ) const; |
| void SetSize ( sal_Int32 nWidth , |
| sal_Int32 nHeight ); |
| ::rtl::OUString GetUserData ( ) const; |
| void SetUserData ( const ::rtl::OUString& sData ); |
| static ::com::sun::star::uno::Sequence< ::rtl::OUString > SeperateUserData( const ::rtl::OUString& sData , |
| sal_Unicode cSeperator=';' ); |
| static ::rtl::OUString GenerateUserData( const ::com::sun::star::uno::Sequence< ::rtl::OUString >& seqData , |
| sal_Unicode cSeperator=';' ); |
| ::com::sun::star::uno::Sequence< ::com::sun::star::beans::PropertyValue > GetAnyData ( ) const; |
| void SetAnyData ( const ::com::sun::star::uno::Sequence< ::com::sun::star::beans::PropertyValue >& lData ); |
| #endif |
| */ |
| |
| //------------------------------------------------------------------------------------------------------------- |
| // public methods |
| //------------------------------------------------------------------------------------------------------------- |
| |
| public: |
| |
| //--------------------------------------------------------------------------------------------------------- |
| // constructor / destructor |
| //--------------------------------------------------------------------------------------------------------- |
| |
| /*-****************************************************************************************************//** |
| @short standard constructor and destructor |
| @descr This will de-/initialize an instance with default values. |
| You must give us the basic type of your view and a name which specify right entry |
| in dynamical configuration list. If entry not exist, we create a new one! |
| |
| @seealso enum EViewType |
| |
| @param "eType" specify type of your view and is used to use right data container! |
| @param "sViewName" specify the name of your view and is the key name in data list too. |
| @return - |
| |
| @onerror An assertion is thrown in debug version. Otherwise we do nothing! |
| *//*-*****************************************************************************************************/ |
| |
| SvtViewOptions( EViewType eType , |
| const ::rtl::OUString& sViewName ); |
| virtual ~SvtViewOptions(); |
| |
| /*-****************************************************************************************************//** |
| @short support preload of these config item |
| @descr Sometimes we need preloading of these configuration data without real using of it. |
| |
| @seealso - |
| |
| @param - |
| @return - |
| |
| @onerror - |
| *//*-*****************************************************************************************************/ |
| |
| static void AcquireOptions(); |
| static void ReleaseOptions(); |
| |
| //--------------------------------------------------------------------------------------------------------- |
| // interface |
| //--------------------------------------------------------------------------------------------------------- |
| |
| /*-****************************************************************************************************//** |
| @short use it to get information about existing entries in configuration |
| @descr The methods to set/get the position or size will create a new entry automatically if |
| it not already exist and work with default values! |
| If this a problem for you - you MUST call these method before and |
| you must make up your own mind about that. |
| |
| @seealso - |
| |
| @onerror No error should occur. |
| *//*-*****************************************************************************************************/ |
| |
| sal_Bool Exists() const; |
| |
| /*-****************************************************************************************************//** |
| @short use it to delete an entry of dynamic view set |
| @descr You can use this method to delete anexisting node in configuration. |
| But if you call a Set- or Get- method again on this instance |
| the item is created again! If you do nothing after this call |
| your view will die relay in configuration ... |
| |
| @seealso method Exist() |
| |
| @return True if delete OK, False otherwise. |
| |
| @onerror We return sal_False. |
| *//*-*****************************************************************************************************/ |
| |
| sal_Bool Delete(); |
| |
| /*-****************************************************************************************************//** |
| @short use it to set/get the window state of your view |
| @descr These value describe position/size and some other states of a window. |
| Use it with right vcl methods directly. Normaly it's not necessary to |
| parse given string! |
| |
| @seealso vcl methods |
| |
| @onerror - |
| *//*-*****************************************************************************************************/ |
| |
| ::rtl::OUString GetWindowState( ) const; |
| void SetWindowState( const ::rtl::OUString& sState ); |
| |
| /*-****************************************************************************************************//** |
| @short use it to set/get the page number which was the last active one |
| @descr It's only supported for: - tab-dialogs |
| If you call it for other ones you will get an assertion in debug version. |
| In a product version we do nothing! |
| |
| @seealso - |
| |
| @onerror An assertion is thrown in debug version. Otherwise we do nothing! |
| *//*-*****************************************************************************************************/ |
| |
| sal_Int32 GetPageID( ) const; |
| void SetPageID( sal_Int32 nID ); |
| |
| /*-****************************************************************************************************//** |
| @short use it to set/get the visual state of a window |
| @descr It's only supported for: - windows |
| If you call it for other ones you will get an assertion in debug version. |
| In a product version we do nothing! |
| |
| @seealso - |
| |
| @onerror An assertion is thrown in debug version. Otherwise we do nothing! |
| *//*-*****************************************************************************************************/ |
| |
| sal_Bool IsVisible ( ) const; |
| void SetVisible( sal_Bool bState ); |
| |
| /*-****************************************************************************************************//** |
| @short use it to set/get the extended user data (consisting of a set of named scalar values) |
| @descr It's supported for ALL types! |
| Every view can handle its own user defined data set. |
| |
| @seealso - |
| |
| @onerror In the non-product version, an assertion is made. In a product version, errors are silently ignored. |
| *//*-*****************************************************************************************************/ |
| /* |
| #ifdef TF_OLDVIEW |
| ::com::sun::star::uno::Sequence< ::com::sun::star::beans::NamedValue > GetUserData( sal_Bool bMakeItDifferent ) const; |
| #else |
| */ |
| ::com::sun::star::uno::Sequence< ::com::sun::star::beans::NamedValue > GetUserData( ) const; |
| //#endif |
| void SetUserData( const ::com::sun::star::uno::Sequence< ::com::sun::star::beans::NamedValue >& lData ); |
| |
| /*-****************************************************************************************************//** |
| @short use it to set/get ONE special user data item directly |
| @descr Normaly you can work on full user data list by using "Set/GetUserData()". |
| With this function you have an access on special list entries directly without any |
| |
| @seealso - |
| |
| @onerror In the non-product version, an assertion is made. In a product version, errors are silently ignored. |
| *//*-*****************************************************************************************************/ |
| |
| ::com::sun::star::uno::Any GetUserItem( const ::rtl::OUString& sName ) const; |
| void SetUserItem( const ::rtl::OUString& sName , |
| const ::com::sun::star::uno::Any& aValue ); |
| |
| //------------------------------------------------------------------------------------------------------------- |
| // private methods |
| //------------------------------------------------------------------------------------------------------------- |
| |
| private: |
| |
| /*-****************************************************************************************************//** |
| @short return a reference to a static mutex |
| @descr These class is threadsafe. |
| We create a static mutex only for one time and use it to protect our refcount and container |
| member! |
| |
| @seealso - |
| |
| @param - |
| @return A reference to a static mutex member. |
| |
| @onerror - |
| *//*-*****************************************************************************************************/ |
| |
| UNOTOOLS_DLLPRIVATE static ::osl::Mutex& GetOwnStaticMutex(); |
| |
| //------------------------------------------------------------------------------------------------------------- |
| // private member |
| //------------------------------------------------------------------------------------------------------------- |
| |
| private: |
| |
| /// specify which list of views in configuration is used! This can't be a static value!!! |
| /// ... because we need this value to work with right static data container. |
| EViewType m_eViewType ; |
| ::rtl::OUString m_sViewName ; |
| |
| /// - impl. data container as dynamic pointer for smaller memory requirements! |
| /// - internal ref count mechanism |
| |
| /*Attention |
| |
| Don't initialize these static member in these header! |
| a) Double defined symbols will be detected ... |
| b) and unresolved externals exist at linking time. |
| Do it in your source only. |
| */ |
| |
| static SvtViewOptionsBase_Impl* m_pDataContainer_Dialogs ; /// hold data for all dialogs |
| static sal_Int32 m_nRefCount_Dialogs ; |
| static SvtViewOptionsBase_Impl* m_pDataContainer_TabDialogs ; /// hold data for all tab-dialogs |
| static sal_Int32 m_nRefCount_TabDialogs ; |
| static SvtViewOptionsBase_Impl* m_pDataContainer_TabPages ; /// hold data for all tab-pages |
| static sal_Int32 m_nRefCount_TabPages ; |
| static SvtViewOptionsBase_Impl* m_pDataContainer_Windows ; /// hold data for all windows |
| static sal_Int32 m_nRefCount_Windows ; |
| |
| }; // class SvtViewOptions |
| |
| #endif // #ifndef INCLUDED_unotools_VIEWOPTIONS_HXX |