summaryrefslogtreecommitdiff
path: root/sd/source/ui/toolpanel/controls/MasterPagesSelector.cxx
diff options
context:
space:
mode:
Diffstat (limited to 'sd/source/ui/toolpanel/controls/MasterPagesSelector.cxx')
-rw-r--r--sd/source/ui/toolpanel/controls/MasterPagesSelector.cxx846
1 files changed, 0 insertions, 846 deletions
diff --git a/sd/source/ui/toolpanel/controls/MasterPagesSelector.cxx b/sd/source/ui/toolpanel/controls/MasterPagesSelector.cxx
deleted file mode 100644
index ca0243d64..000000000
--- a/sd/source/ui/toolpanel/controls/MasterPagesSelector.cxx
+++ /dev/null
@@ -1,846 +0,0 @@
-/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
-/*************************************************************************
- *
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * Copyright 2000, 2010 Oracle and/or its affiliates.
- *
- * OpenOffice.org - a multi-platform office productivity suite
- *
- * This file is part of OpenOffice.org.
- *
- * OpenOffice.org is free software: you can redistribute it and/or modify
- * it under the terms of the GNU Lesser General Public License version 3
- * only, as published by the Free Software Foundation.
- *
- * OpenOffice.org is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU Lesser General Public License version 3 for more details
- * (a copy is included in the LICENSE file that accompanied this code).
- *
- * You should have received a copy of the GNU Lesser General Public License
- * version 3 along with OpenOffice.org. If not, see
- * <http://www.openoffice.org/license.html>
- * for a copy of the LGPLv3 License.
- *
- ************************************************************************/
-
-// MARKER(update_precomp.py): autogen include statement, do not remove
-#include "precompiled_sd.hxx"
-
-#include "MasterPagesSelector.hxx"
-
-#include "MasterPageContainer.hxx"
-#include "DocumentHelper.hxx"
-#include "pres.hxx"
-#include "drawdoc.hxx"
-#include "DrawDocShell.hxx"
-#include "sdpage.hxx"
-#include "glob.hxx"
-#include "glob.hrc"
-#include "app.hrc"
-#include "res_bmp.hrc"
-#include "strings.hrc"
-#include "DrawViewShell.hxx"
-#include "DrawController.hxx"
-#include "SlideSorterViewShell.hxx"
-#include "PreviewValueSet.hxx"
-#include "ViewShellBase.hxx"
-#include "../TaskPaneShellManager.hxx"
-#include "taskpane/TitledControl.hxx"
-#include "taskpane/ControlContainer.hxx"
-#include "controller/SlideSorterController.hxx"
-#include "controller/SlsPageSelector.hxx"
-#include <sfx2/objface.hxx>
-#include "sdresid.hxx"
-#include "TemplateScanner.hxx"
-#include "drawview.hxx"
-#include <vcl/image.hxx>
-#include <svl/languageoptions.hxx>
-#include <sfx2/app.hxx>
-#include <sfx2/dispatch.hxx>
-#include <sfx2/mnumgr.hxx>
-#include <svl/itemset.hxx>
-#include <svl/eitem.hxx>
-#include <svx/dlgutil.hxx>
-#include <svx/svdpagv.hxx>
-#include <svx/svxids.hrc>
-#include "FrameView.hxx"
-#include "sdpage.hxx"
-#include "stlpool.hxx"
-#include "unmovss.hxx"
-#include <sfx2/request.hxx>
-#include <svl/itempool.hxx>
-
-using namespace ::sd::toolpanel::controls;
-#define MasterPagesSelector
-#include "sdslots.hxx"
-
-using namespace ::com::sun::star::text;
-
-
-
-namespace sd { namespace toolpanel { namespace controls {
-
-
-SFX_IMPL_INTERFACE(MasterPagesSelector, SfxShell,
- SdResId(STR_MASTERPAGESSELECTOR))
-{
- SFX_POPUPMENU_REGISTRATION( SdResId(RID_TASKPANE_MASTERPAGESSELECTOR_POPUP) );
-}
-
-TYPEINIT1(MasterPagesSelector, SfxShell);
-
-
-
-MasterPagesSelector::MasterPagesSelector (
- TreeNode* pParent,
- SdDrawDocument& rDocument,
- ViewShellBase& rBase,
- const ::boost::shared_ptr<MasterPageContainer>& rpContainer)
- : TreeNode (pParent),
- SfxShell(),
- maMutex(),
- mpContainer(rpContainer),
- mrDocument(rDocument),
- mpPageSet (new PreviewValueSet(pParent)),
- mrBase(rBase),
- mnDefaultClickAction(SID_TP_APPLY_TO_ALL_SLIDES),
- maPreviewUpdateQueue(),
- maCurrentItemList(),
- maTokenToValueSetIndex(),
- maLockedMasterPages()
-{
- SetPool (&rDocument.GetPool());
-
- mpPageSet->SetSelectHdl (
- LINK(this, MasterPagesSelector, ClickHandler));
- mpPageSet->SetRightMouseClickHandler (
- LINK(this, MasterPagesSelector, RightClickHandler));
- mpPageSet->SetContextMenuCallback (
- LINK(this, MasterPagesSelector, ContextMenuCallback));
- mpPageSet->SetStyle(mpPageSet->GetStyle() | WB_NO_DIRECTSELECT);
- mpPageSet->SetPreviewSize(mpContainer->GetPreviewSizePixel());
- mpPageSet->Show();
-
- Link aChangeListener (LINK(this,MasterPagesSelector,ContainerChangeListener));
- mpContainer->AddChangeListener(aChangeListener);
-}
-
-
-
-
-MasterPagesSelector::~MasterPagesSelector (void)
-{
- Clear();
- mpPageSet.reset();
- UpdateLocks(ItemList());
-
- if (GetShellManager() != NULL)
- GetShellManager()->RemoveSubShell (this);
-
- Link aChangeListener (LINK(this,MasterPagesSelector,ContainerChangeListener));
- mpContainer->RemoveChangeListener(aChangeListener);
-}
-
-
-
-
-void MasterPagesSelector::LateInit (void)
-{
-}
-
-
-
-
-sal_Int32 MasterPagesSelector::GetPreferredWidth (sal_Int32 nHeight)
-{
- const ::osl::MutexGuard aGuard (maMutex);
-
- return mpPageSet->GetPreferredWidth (nHeight);
-}
-
-
-
-
-sal_Int32 MasterPagesSelector::GetPreferredHeight (sal_Int32 nWidth)
-{
- const ::osl::MutexGuard aGuard (maMutex);
-
- return mpPageSet->GetPreferredHeight (nWidth);
-}
-
-
-
-
-Size MasterPagesSelector::GetPreferredSize (void)
-{
- int nPreferredWidth = GetPreferredWidth(
- mpPageSet->GetOutputSizePixel().Height());
- int nPreferredHeight = GetPreferredHeight(nPreferredWidth);
- return Size (nPreferredWidth, nPreferredHeight);
-
-}
-
-
-
-
-void MasterPagesSelector::UpdateLocks (const ItemList& rItemList)
-{
- ItemList aNewLockList;
-
- // In here we first lock the master pages in the given list and then
- // release the locks acquired in a previous call to this method. When
- // this were done the other way round the lock count of some master
- // pages might drop temporarily to 0 and would lead to unnecessary
- // deletion and re-creation of MasterPageDescriptor objects.
-
- // Lock the master pages in the given list.
- ItemList::const_iterator iItem;
- for (iItem=rItemList.begin(); iItem!=rItemList.end(); ++iItem)
- {
- mpContainer->AcquireToken(*iItem);
- aNewLockList.push_back(*iItem);
- }
-
- // Release the previously locked master pages.
- ItemList::const_iterator iPage;
- ItemList::const_iterator iEnd (maLockedMasterPages.end());
- for (iPage=maLockedMasterPages.begin(); iPage!=iEnd; ++iPage)
- mpContainer->ReleaseToken(*iPage);
-
- maLockedMasterPages.swap(aNewLockList);
-}
-
-
-
-
-void MasterPagesSelector::Fill (void)
-{
- ::std::auto_ptr<ItemList> pItemList (new ItemList());
-
- Fill(*pItemList);
-
- UpdateLocks(*pItemList);
- UpdateItemList(pItemList);
-}
-
-
-
-
-ResId MasterPagesSelector::GetContextMenuResId (void) const
-{
- return SdResId(RID_TASKPANE_MASTERPAGESSELECTOR_POPUP);
-}
-
-
-
-
-IMPL_LINK(MasterPagesSelector, ClickHandler, PreviewValueSet*, EMPTYARG)
-{
- // We use the framework to assign the clicked-on master page because we
- // so use the same mechanism as the context menu does (where we do not
- // have the option to call the assignment method directly.)
- if (GetShellManager() != NULL)
- GetShellManager()->MoveToTop (this);
-
- SfxViewFrame* pViewFrame = mrBase.GetViewFrame();
- if (pViewFrame != NULL)
- {
- SfxDispatcher* pDispatcher = pViewFrame->GetDispatcher();
- if (pDispatcher != NULL)
- pDispatcher->Execute(mnDefaultClickAction);
- }
-
- return 0;
-}
-
-
-
-
-IMPL_LINK(MasterPagesSelector, RightClickHandler, MouseEvent*, pEvent)
-{
- // Here we only prepare the display of the context menu: the item under
- // the mouse is selected. The actual display of the context menu is
- // done in ContextMenuCallback which is called indirectly through
- // PreviewValueSet::Command().
- mpPageSet->GrabFocus ();
- mpPageSet->ReleaseMouse();
- if (GetDispatcher() != NULL && pEvent != NULL)
- {
- sal_uInt16 nIndex = mpPageSet->GetItemId (pEvent->GetPosPixel());
- if (nIndex > 0)
- mpPageSet->SelectItem (nIndex);
- }
- return 0;
-}
-
-
-
-
-IMPL_LINK(MasterPagesSelector, ContextMenuCallback, CommandEvent*, pEvent)
-{
- // Use the currently selected item and show the popup menu in its
- // center.
- if (GetShellManager() != NULL)
- GetShellManager()->MoveToTop (this);
- const sal_uInt16 nIndex = mpPageSet->GetSelectItemId();
- if (nIndex > 0 && pEvent!=NULL)
- {
- // The position of the upper left corner of the context menu is
- // taken either from the mouse position (when the command was sent
- // as reaction to a right click) or in the center of the selected
- // item (when the command was sent as reaction to Shift+F10.)
- Point aPosition (pEvent->GetMousePosPixel());
- if ( ! pEvent->IsMouseEvent())
- {
- Rectangle aBBox (mpPageSet->GetItemRect(nIndex));
- aPosition = aBBox.Center();
- }
-
- const ResId aPopupResId (GetContextMenuResId());
- mrBase.GetViewFrame()->GetDispatcher()->ExecutePopup(
- aPopupResId,
- mpPageSet.get(),
- &aPosition);
- }
-
- return 0;
-}
-
-
-
-
-IMPL_LINK(MasterPagesSelector, ContainerChangeListener, MasterPageContainerChangeEvent*, pEvent)
-{
- if (pEvent)
- NotifyContainerChangeEvent(*pEvent);
- return 0;
-}
-
-
-
-
-SdPage* MasterPagesSelector::GetSelectedMasterPage (void)
-{
- const ::osl::MutexGuard aGuard (maMutex);
-
- SdPage* pMasterPage = NULL;
- sal_uInt16 nIndex = mpPageSet->GetSelectItemId();
- UserData* pData = GetUserData(nIndex);
- if (pData != NULL)
- {
- pMasterPage = mpContainer->GetPageObjectForToken(pData->second);
- }
- return pMasterPage;
-}
-
-
-
-
-/** Assemble a list of all slides of the document and pass it to
- AssignMasterPageToPageList().
-*/
-void MasterPagesSelector::AssignMasterPageToAllSlides (SdPage* pMasterPage)
-{
- if (pMasterPage == NULL)
- return;
-
- sal_uInt16 nPageCount = mrDocument.GetSdPageCount(PK_STANDARD);
- if (nPageCount == 0)
- return;
-
- // Get a list of all pages. As a little optimization we only
- // include pages that do not already have the given master page
- // assigned.
- String sFullLayoutName (pMasterPage->GetLayoutName());
- ::sd::slidesorter::SharedPageSelection pPageList (
- new ::sd::slidesorter::SlideSorterViewShell::PageSelection());
- for (sal_uInt16 nPageIndex=0; nPageIndex<nPageCount; nPageIndex++)
- {
- SdPage* pPage = mrDocument.GetSdPage (nPageIndex, PK_STANDARD);
- if (pPage != NULL
- && pPage->GetLayoutName().CompareTo(sFullLayoutName)!=0)
- {
- pPageList->push_back (pPage);
- }
- }
-
- AssignMasterPageToPageList(pMasterPage, pPageList);
-}
-
-
-
-
-/** Assemble a list of the currently selected slides (selected in a visible
- slide sorter) and pass it to AssignMasterPageToPageList().
-*/
-void MasterPagesSelector::AssignMasterPageToSelectedSlides (
- SdPage* pMasterPage)
-{
- using namespace ::sd::slidesorter;
- using namespace ::sd::slidesorter::controller;
-
- if (pMasterPage == NULL)
- return;
-
- // Find a visible slide sorter.
- SlideSorterViewShell* pSlideSorter = SlideSorterViewShell::GetSlideSorter(mrBase);
- if (pSlideSorter == NULL)
- return;
-
- // Get a list of selected pages.
- SharedPageSelection pPageSelection = pSlideSorter->GetPageSelection();
- if (pPageSelection->empty())
- return;
-
- AssignMasterPageToPageList(pMasterPage, pPageSelection);
-
- // Restore the previous selection.
- pSlideSorter->SetPageSelection(pPageSelection);
-}
-
-
-
-
-void MasterPagesSelector::AssignMasterPageToPageList (
- SdPage* pMasterPage,
- const ::sd::slidesorter::SharedPageSelection& rPageList)
-{
- DocumentHelper::AssignMasterPageToPageList(mrDocument, pMasterPage, rPageList);
-}
-
-
-
-
-void MasterPagesSelector::NotifyContainerChangeEvent (const MasterPageContainerChangeEvent& rEvent)
-{
- const ::osl::MutexGuard aGuard (maMutex);
-
- switch (rEvent.meEventType)
- {
- case MasterPageContainerChangeEvent::SIZE_CHANGED:
- mpPageSet->SetPreviewSize(mpContainer->GetPreviewSizePixel());
- UpdateAllPreviews();
- break;
-
- case MasterPageContainerChangeEvent::PREVIEW_CHANGED:
- {
- int nIndex (GetIndexForToken(rEvent.maChildToken));
- if (nIndex >= 0)
- {
- mpPageSet->SetItemImage (
- (sal_uInt16)nIndex,
- mpContainer->GetPreviewForToken(rEvent.maChildToken));
- mpPageSet->Invalidate(mpPageSet->GetItemRect((sal_uInt16)nIndex));
- }
- }
- break;
-
- case MasterPageContainerChangeEvent::DATA_CHANGED:
- {
- InvalidateItem(rEvent.maChildToken);
- Fill();
- }
- break;
-
- default:
- break;
- }
-}
-
-
-
-
-MasterPagesSelector::UserData* MasterPagesSelector::CreateUserData (
- int nIndex,
- MasterPageContainer::Token aToken) const
-{
- return new UserData(nIndex,aToken);
-}
-
-
-
-
-MasterPagesSelector::UserData* MasterPagesSelector::GetUserData (int nIndex) const
-{
- const ::osl::MutexGuard aGuard (maMutex);
-
- if (nIndex>0 && static_cast<unsigned int>(nIndex)<=mpPageSet->GetItemCount())
- return reinterpret_cast<UserData*>(mpPageSet->GetItemData((sal_uInt16)nIndex));
- else
- return NULL;
-}
-
-
-
-
-void MasterPagesSelector::SetUserData (int nIndex, UserData* pData)
-{
- const ::osl::MutexGuard aGuard (maMutex);
-
- if (nIndex>0 && static_cast<unsigned int>(nIndex)<=mpPageSet->GetItemCount())
- {
- UserData* pOldData = GetUserData(nIndex);
- if (pOldData!=NULL && pOldData!=pData)
- delete pOldData;
- mpPageSet->SetItemData((sal_uInt16)nIndex, pData);
- }
-}
-
-
-
-
-bool MasterPagesSelector::IsResizable (void)
-{
- return false;
-}
-
-
-
-
-::Window* MasterPagesSelector::GetWindow (void)
-{
- return mpPageSet.get();
-}
-
-
-
-
-sal_Int32 MasterPagesSelector::GetMinimumWidth (void)
-{
- return mpContainer->GetPreviewSizePixel().Width() + 2*3;
-}
-
-
-
-
-void MasterPagesSelector::UpdateSelection (void)
-{
-}
-
-
-
-
-void MasterPagesSelector::Execute (SfxRequest& rRequest)
-{
- switch (rRequest.GetSlot())
- {
- case SID_TP_APPLY_TO_ALL_SLIDES:
- mrBase.SetBusyState (true);
- AssignMasterPageToAllSlides (GetSelectedMasterPage());
- mrBase.SetBusyState (false);
- break;
-
- case SID_TP_APPLY_TO_SELECTED_SLIDES:
- mrBase.SetBusyState (true);
- AssignMasterPageToSelectedSlides (GetSelectedMasterPage());
- mrBase.SetBusyState (false);
- break;
-
- case SID_TP_USE_FOR_NEW_PRESENTATIONS:
- DBG_ASSERT (false,
- "Using slides as default for new presentations"
- " is not yet implemented");
- break;
-
- case SID_TP_SHOW_SMALL_PREVIEW:
- case SID_TP_SHOW_LARGE_PREVIEW:
- {
- mrBase.SetBusyState (true);
- mpContainer->SetPreviewSize(
- rRequest.GetSlot()==SID_TP_SHOW_SMALL_PREVIEW
- ? MasterPageContainer::SMALL
- : MasterPageContainer::LARGE);
- mrBase.SetBusyState (false);
- break;
- }
-
- case SID_TP_EDIT_MASTER:
- {
- using namespace ::com::sun::star;
- uno::Reference<drawing::XDrawPage> xSelectedMaster (
- GetSelectedMasterPage()->getUnoPage(), uno::UNO_QUERY);
- SfxViewFrame* pViewFrame = mrBase.GetViewFrame();
- if (pViewFrame != NULL && xSelectedMaster.is())
- {
- SfxDispatcher* pDispatcher = pViewFrame->GetDispatcher();
- if (pDispatcher != NULL)
- {
- sal_uInt16 nIndex = mpPageSet->GetSelectItemId();
- pDispatcher->Execute(SID_MASTERPAGE, SFX_CALLMODE_SYNCHRON);
- mpPageSet->SelectItem (nIndex);
- mrBase.GetDrawController().setCurrentPage(xSelectedMaster);
- }
- }
- break;
- }
-
- case SID_CUT:
- case SID_COPY:
- case SID_PASTE:
- // Cut, copy, and paste are not supported and thus are ignored.
- break;
- }
-}
-
-
-
-
-void MasterPagesSelector::GetState (SfxItemSet& rItemSet)
-{
- if (mpContainer->GetPreviewSize() == MasterPageContainer::SMALL)
- rItemSet.DisableItem (SID_TP_SHOW_SMALL_PREVIEW);
- else
- rItemSet.DisableItem (SID_TP_SHOW_LARGE_PREVIEW);
-
- // Cut and paste is not supported so do not show the menu entries.
- rItemSet.DisableItem (SID_CUT);
- rItemSet.DisableItem (SID_COPY);
- rItemSet.DisableItem (SID_PASTE);
-}
-
-
-
-
-void MasterPagesSelector::SetItem (
- sal_uInt16 nIndex,
- MasterPageContainer::Token aToken)
-{
- const ::osl::MutexGuard aGuard (maMutex);
-
- RemoveTokenToIndexEntry(nIndex,aToken);
-
- if (nIndex > 0)
- {
- if (aToken != MasterPageContainer::NIL_TOKEN)
- {
- Image aPreview (mpContainer->GetPreviewForToken(aToken));
- MasterPageContainer::PreviewState eState (mpContainer->GetPreviewState(aToken));
-
- if (aPreview.GetSizePixel().Width()>0)
- {
- if (mpPageSet->GetItemPos(nIndex) != VALUESET_ITEM_NOTFOUND)
- {
- mpPageSet->SetItemImage(nIndex,aPreview);
- mpPageSet->SetItemText(nIndex, mpContainer->GetPageNameForToken(aToken));
- }
- else
- {
- mpPageSet->InsertItem (
- nIndex,
- aPreview,
- mpContainer->GetPageNameForToken(aToken),
- nIndex);
- }
- SetUserData(nIndex, CreateUserData(nIndex,aToken));
-
- AddTokenToIndexEntry(nIndex,aToken);
- }
-
- if (eState == MasterPageContainer::PS_CREATABLE)
- mpContainer->RequestPreview(aToken);
- }
- else
- {
- mpPageSet->RemoveItem(nIndex);
- }
- }
-
-}
-
-
-
-
-void MasterPagesSelector::AddTokenToIndexEntry (
- sal_uInt16 nIndex,
- MasterPageContainer::Token aToken)
-{
- const ::osl::MutexGuard aGuard (maMutex);
-
- maTokenToValueSetIndex[aToken] = nIndex;
-}
-
-
-
-
-void MasterPagesSelector::RemoveTokenToIndexEntry (
- sal_uInt16 nIndex,
- MasterPageContainer::Token aNewToken)
-{
- const ::osl::MutexGuard aGuard (maMutex);
-
- UserData* pData = GetUserData(nIndex);
- if (pData != NULL)
- {
- // Get the token that the index pointed to previously.
- MasterPageContainer::Token aOldToken (pData->second);
-
- if (aNewToken != aOldToken
- && nIndex == GetIndexForToken(aOldToken))
- {
- maTokenToValueSetIndex[aOldToken] = 0;
- }
- }
-}
-
-
-
-
-void MasterPagesSelector::InvalidatePreview (const SdPage* pPage)
-{
- const ::osl::MutexGuard aGuard (maMutex);
-
- for (sal_uInt16 nIndex=1; nIndex<=mpPageSet->GetItemCount(); nIndex++)
- {
- UserData* pData = GetUserData(nIndex);
- if (pData != NULL)
- {
- MasterPageContainer::Token aToken (pData->second);
- if (pPage == mpContainer->GetPageObjectForToken(aToken,false))
- {
- mpContainer->InvalidatePreview(aToken);
- mpContainer->RequestPreview(aToken);
- break;
- }
- }
- }
-}
-
-void MasterPagesSelector::UpdateAllPreviews (void)
-{
- const ::osl::MutexGuard aGuard (maMutex);
-
- for (sal_uInt16 nIndex=1; nIndex<=mpPageSet->GetItemCount(); nIndex++)
- {
- UserData* pData = GetUserData(nIndex);
- if (pData != NULL)
- {
- MasterPageContainer::Token aToken (pData->second);
- mpPageSet->SetItemImage(
- nIndex,
- mpContainer->GetPreviewForToken(aToken));
- if (mpContainer->GetPreviewState(aToken) == MasterPageContainer::PS_CREATABLE)
- mpContainer->RequestPreview(aToken);
- }
- }
- mpPageSet->Rearrange(true);
-}
-
-
-
-
-void MasterPagesSelector::ClearPageSet (void)
-{
- const ::osl::MutexGuard aGuard (maMutex);
-
- for (sal_uInt16 nIndex=1; nIndex<=mpPageSet->GetItemCount(); nIndex++)
- {
- UserData* pData = GetUserData(nIndex);
- if (pData != NULL)
- delete pData;
- }
- mpPageSet->Clear();
-}
-
-
-
-
-void MasterPagesSelector::SetHelpId( const rtl::OString& aId )
-{
- const ::osl::MutexGuard aGuard (maMutex);
-
- mpPageSet->SetHelpId( aId );
-}
-
-
-
-
-sal_Int32 MasterPagesSelector::GetIndexForToken (MasterPageContainer::Token aToken) const
-{
- const ::osl::MutexGuard aGuard (maMutex);
-
- TokenToValueSetIndex::const_iterator iIndex (maTokenToValueSetIndex.find(aToken));
- if (iIndex != maTokenToValueSetIndex.end())
- return iIndex->second;
- else
- return -1;
-}
-
-
-
-
-void MasterPagesSelector::Clear (void)
-{
- const ::osl::MutexGuard aGuard (maMutex);
-
- ClearPageSet();
-}
-
-
-
-
-void MasterPagesSelector::InvalidateItem (MasterPageContainer::Token aToken)
-{
- const ::osl::MutexGuard aGuard (maMutex);
-
- ItemList::iterator iItem;
- for (iItem=maCurrentItemList.begin(); iItem!=maCurrentItemList.end(); ++iItem)
- {
- if (*iItem == aToken)
- {
- *iItem = MasterPageContainer::NIL_TOKEN;
- break;
- }
- }
-}
-
-
-
-
-void MasterPagesSelector::UpdateItemList (::std::auto_ptr<ItemList> pNewItemList)
-{
- const ::osl::MutexGuard aGuard (maMutex);
-
- ItemList::const_iterator iNewItem (pNewItemList->begin());
- ItemList::const_iterator iCurrentItem (maCurrentItemList.begin());
- ItemList::const_iterator iNewEnd (pNewItemList->end());
- ItemList::const_iterator iCurrentEnd (maCurrentItemList.end());
- sal_uInt16 nIndex (1);
-
- // Update existing items.
- for ( ; iNewItem!=iNewEnd && iCurrentItem!=iCurrentEnd; ++iNewItem, ++iCurrentItem,++nIndex)
- {
- if (*iNewItem != *iCurrentItem)
- {
- SetItem(nIndex,*iNewItem);
- }
- }
-
- // Append new items.
- for ( ; iNewItem!=iNewEnd; ++iNewItem,++nIndex)
- {
- SetItem(nIndex,*iNewItem);
- }
-
- // Remove trailing items.
- for ( ; iCurrentItem!=iCurrentEnd; ++iCurrentItem,++nIndex)
- {
- SetItem(nIndex,MasterPageContainer::NIL_TOKEN);
- }
-
- maCurrentItemList.swap(*pNewItemList);
-
- mpPageSet->Rearrange();
- if (GetParentNode() != NULL)
- GetParentNode()->RequestResize();
-}
-
-
-
-
-
-} } } // end of namespace ::sd::toolpanel::controls
-
-/* vim:set shiftwidth=4 softtabstop=4 expandtab: */