| /************************************************************** |
| * |
| * 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 __FRAMEWORK_HELPER_OTASKSACCESS_HXX_ |
| #define __FRAMEWORK_HELPER_OTASKSACCESS_HXX_ |
| |
| //_________________________________________________________________________________________________________________ |
| // my own includes |
| //_________________________________________________________________________________________________________________ |
| |
| #include <classes/framecontainer.hxx> |
| #include <threadhelp/threadhelpbase.hxx> |
| #include <macros/generic.hxx> |
| #include <macros/xinterface.hxx> |
| #include <macros/xtypeprovider.hxx> |
| #include <macros/debug.hxx> |
| |
| //_________________________________________________________________________________________________________________ |
| // interface includes |
| //_________________________________________________________________________________________________________________ |
| #include <com/sun/star/container/XEnumerationAccess.hpp> |
| #include <com/sun/star/container/XElementAccess.hpp> |
| #include <com/sun/star/container/XEnumeration.hpp> |
| #include <com/sun/star/frame/XDesktop.hpp> |
| |
| //_________________________________________________________________________________________________________________ |
| // other includes |
| //_________________________________________________________________________________________________________________ |
| #include <cppuhelper/weak.hxx> |
| #include <cppuhelper/weakref.hxx> |
| |
| //_________________________________________________________________________________________________________________ |
| // namespace |
| //_________________________________________________________________________________________________________________ |
| |
| namespace framework{ |
| |
| //_________________________________________________________________________________________________________________ |
| // exported const |
| //_________________________________________________________________________________________________________________ |
| |
| //_________________________________________________________________________________________________________________ |
| // exported definitions |
| //_________________________________________________________________________________________________________________ |
| |
| /*-************************************************************************************************************//** |
| @short implement XEnumerationAccess interface as helper to create many oneway enumeration of tasks |
| @descr We share mutex and framecontainer with our owner and have full access to his child tasks. |
| (Our owner can be the Desktop only!) We create oneway enumerations on demand. These "lists" |
| can be used for one time only. Step during the list from first to last element. |
| (The type of created enumerations is OTasksEnumeration.) |
| |
| @implements XInterface |
| XEnumerationAccess |
| XElementAccess |
| |
| @base OWeakObject |
| |
| @devstatus deprecated |
| *//*-*************************************************************************************************************/ |
| |
| class OTasksAccess : public css::lang::XTypeProvider , |
| public css::container::XEnumerationAccess , // => XElementAccess |
| private ThreadHelpBase , |
| public ::cppu::OWeakObject |
| { |
| //------------------------------------------------------------------------------------------------------------- |
| // public methods |
| //------------------------------------------------------------------------------------------------------------- |
| |
| public: |
| |
| //--------------------------------------------------------------------------------------------------------- |
| // constructor / destructor |
| //--------------------------------------------------------------------------------------------------------- |
| |
| /*-****************************************************************************************************//** |
| @short constructor to initialize this instance |
| @descr A desktop will create an enumeration-access-object. An enumeration is a oneway-list and a |
| snapshot of the tasklist of current tasks of desktop. |
| But we need a instance to create more then one enumerations to the same tasklist! |
| |
| @seealso class Desktop |
| @seealso class OTasksEnumeration |
| |
| @param "xOwner" is a reference to our owner and must be the desktop! |
| @param "pTasks" is a pointer to the taskcontainer of the desktop. We need it to create a new enumeration. |
| @return - |
| |
| @onerror Do nothing and reset this object to default with an empty list. |
| *//*-*****************************************************************************************************/ |
| |
| OTasksAccess( const css::uno::Reference< css::frame::XDesktop >& xOwner , |
| FrameContainer* pTasks ); |
| |
| //--------------------------------------------------------------------------------------------------------- |
| // XInterface |
| //--------------------------------------------------------------------------------------------------------- |
| |
| DECLARE_XINTERFACE |
| DECLARE_XTYPEPROVIDER |
| |
| //--------------------------------------------------------------------------------------------------------- |
| // XEnumerationAccess |
| //--------------------------------------------------------------------------------------------------------- |
| |
| /*-****************************************************************************************************//** |
| @short create a new enumeration of tasks |
| @descr You can call this method to get a new snapshot to all tasks of the desktop as an enumeration. |
| |
| @seealso interface XEnumerationAccess |
| @seealso interface XEnumeration |
| @seealso class Desktop |
| |
| @param - |
| @return If the desktop and some tasks exist => a valid reference to an enumeration<BR> |
| An NULL-reference, other way. |
| |
| @onerror - |
| *//*-*****************************************************************************************************/ |
| |
| virtual css::uno::Reference< css::container::XEnumeration > SAL_CALL createEnumeration() throw( css::uno::RuntimeException ); |
| |
| //--------------------------------------------------------------------------------------------------------- |
| // XElementAccess |
| //--------------------------------------------------------------------------------------------------------- |
| |
| /*-****************************************************************************************************//** |
| @short get the type of elements in enumeration |
| @descr - |
| |
| @seealso interface XElementAccess |
| @seealso class TasksEnumeration |
| |
| @param - |
| @return The uno-type XTask. |
| |
| @onerror - |
| *//*-*****************************************************************************************************/ |
| |
| virtual css::uno::Type SAL_CALL getElementType() throw( css::uno::RuntimeException ); |
| |
| /*-****************************************************************************************************//** |
| @short get state of tasklist of enumeration. |
| @descr - |
| |
| @seealso interface XElementAccess |
| |
| @param - |
| @return sal_True ,if more then 0 elements exist. |
| @return sal_False ,otherwise. |
| |
| @onerror - |
| *//*-*****************************************************************************************************/ |
| |
| virtual sal_Bool SAL_CALL hasElements() throw( css::uno::RuntimeException ); |
| |
| //------------------------------------------------------------------------------------------------------------- |
| // protected methods |
| //------------------------------------------------------------------------------------------------------------- |
| |
| protected: |
| |
| /*-****************************************************************************************************//** |
| @short standard destructor |
| @descr This method destruct an instance of this class and clear some member. |
| Don't use an instance of this class as normal member. Use it dynamicly with a pointer. |
| We hold a weakreference to our owner and not to our superclass! |
| That's the reason for a protected dtor. |
| |
| @seealso class Desktop |
| |
| @param - |
| @return - |
| |
| @onerror - |
| *//*-*****************************************************************************************************/ |
| |
| virtual ~OTasksAccess(); |
| |
| //------------------------------------------------------------------------------------------------------------- |
| // private methods |
| //------------------------------------------------------------------------------------------------------------- |
| |
| private: |
| |
| //------------------------------------------------------------------------------------------------------------- |
| // debug methods |
| // (should be private everyway!) |
| //------------------------------------------------------------------------------------------------------------- |
| |
| /*-****************************************************************************************************//** |
| @short debug-method to check incoming parameter of some other mehods of this class |
| @descr The following methods are used to check parameters for other methods |
| of this class. The return value is used directly for an ASSERT(...). |
| |
| @seealso ASSERTs in implementation! |
| |
| @param references to checking variables |
| @return sal_False ,on invalid parameter. |
| @return sal_True ,otherwise |
| |
| @onerror - |
| *//*-*****************************************************************************************************/ |
| |
| #ifdef ENABLE_ASSERTIONS |
| |
| private: |
| |
| static sal_Bool impldbg_checkParameter_OTasksAccessCtor( const css::uno::Reference< css::frame::XDesktop >& xOwner , |
| FrameContainer* pTasks ); |
| |
| #endif // #ifdef ENABLE_ASSERTIONS |
| |
| //------------------------------------------------------------------------------------------------------------- |
| // variables |
| // (should be private everyway!) |
| //------------------------------------------------------------------------------------------------------------- |
| |
| private: |
| |
| css::uno::WeakReference< css::frame::XDesktop > m_xOwner ; /// weak reference to the desktop object! |
| FrameContainer* m_pTasks ; /// pointer to list of current tasks on desktop (is a member of class Desktop!) |
| /// This pointer is valid only, if weakreference can be locked. |
| |
| }; // class OTasksAccess |
| |
| } // namespace framework |
| |
| #endif // #ifndef __FRAMEWORK_HELPER_OTASKSACCESS_HXX_ |