| /************************************************************** |
| * |
| * 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_SLIDESHOW_UNOVIEWCONTAINER_HXX |
| #define INCLUDED_SLIDESHOW_UNOVIEWCONTAINER_HXX |
| |
| #include <com/sun/star/uno/Reference.hxx> |
| |
| #include <boost/shared_ptr.hpp> |
| #include <boost/utility.hpp> |
| |
| #include <vector> |
| |
| #include "unoview.hxx" |
| |
| |
| namespace com { namespace sun { namespace star { namespace presentation |
| { |
| class XSlideShowView; |
| } } } } |
| |
| /* Definition of UnoViewContainer class */ |
| |
| namespace slideshow |
| { |
| namespace internal |
| { |
| /** Contains UnoViews |
| */ |
| class UnoViewContainer : private boost::noncopyable |
| { |
| public: |
| UnoViewContainer(); |
| |
| /** Add a view to this container |
| |
| @return true, if the view was successfully added |
| (false is e.g. returned, if the view was already |
| added) |
| */ |
| bool addView( const UnoViewSharedPtr& rView ); |
| |
| /** Remove a previously added a view from this container |
| |
| @return true, if this view was successfully removed, false |
| otherwise (e.g. if this view wasn't added in the first place) |
| */ |
| bool removeView( const UnoViewSharedPtr& rView ); |
| |
| /** Remove a previously added a view from this container |
| |
| @return the View object, if this view was successfully |
| removed, and an empty shared_ptr otherwise (e.g. if |
| this view wasn't added in the first place) |
| */ |
| UnoViewSharedPtr removeView( const ::com::sun::star::uno::Reference< |
| ::com::sun::star::presentation::XSlideShowView >& xView ); |
| |
| /// Dispose all stored views. Implies clear(). |
| void dispose(); |
| |
| // the following parrots STL container concept methods |
| // =================================================== |
| |
| std::size_t size() const { return maViews.size(); } |
| bool empty() const { return maViews.empty(); } |
| |
| void clear() { maViews.clear(); } |
| |
| |
| UnoViewVector::iterator begin() { return maViews.begin(); } |
| UnoViewVector::const_iterator begin() const { return maViews.begin(); } |
| UnoViewVector::iterator end() { return maViews.end(); } |
| UnoViewVector::const_iterator end() const { return maViews.end(); } |
| |
| private: |
| /// All added views |
| UnoViewVector maViews; |
| }; |
| |
| typedef ::boost::shared_ptr< UnoViewContainer > UnoViewContainerSharedPtr; |
| |
| } |
| } |
| |
| #endif /* INCLUDED_SLIDESHOW_UNOVIEWCONTAINER_HXX */ |