diff options
author | Kurt Zenker <kz@openoffice.org> | 2008-04-03 13:26:44 +0000 |
---|---|---|
committer | Kurt Zenker <kz@openoffice.org> | 2008-04-03 13:26:44 +0000 |
commit | b48be33474e443995fb5c7c11a2b971c60158b83 (patch) | |
tree | 40f3a5f549dcaad2d5358e115f85dabfbb92ed3f /sd/source/ui/slidesorter/controller/SlsPageSelector.cxx | |
parent | 1ecad406e29fa5947c25269c8daddd81d9179b33 (diff) |
INTEGRATION: CWS presenterview (1.8.120); FILE MERGED
2007/04/26 15:52:16 af 1.8.120.3: #i75317# Moved code for setting current slide to new CurrentSlideManager class.
2007/04/26 08:48:04 af 1.8.120.2: #i18486# Resolved resync problems.
2007/03/12 15:34:06 af 1.8.120.1: #i75317# Remove dependency between slide sorter and ViewShell.
Diffstat (limited to 'sd/source/ui/slidesorter/controller/SlsPageSelector.cxx')
-rw-r--r-- | sd/source/ui/slidesorter/controller/SlsPageSelector.cxx | 139 |
1 files changed, 40 insertions, 99 deletions
diff --git a/sd/source/ui/slidesorter/controller/SlsPageSelector.cxx b/sd/source/ui/slidesorter/controller/SlsPageSelector.cxx index e72e4fdba83c..0aff6571e323 100644 --- a/sd/source/ui/slidesorter/controller/SlsPageSelector.cxx +++ b/sd/source/ui/slidesorter/controller/SlsPageSelector.cxx @@ -4,9 +4,9 @@ * * $RCSfile: SlsPageSelector.cxx,v $ * - * $Revision: 1.9 $ + * $Revision: 1.10 $ * - * last change: $Author: rt $ $Date: 2007-04-03 16:17:36 $ + * last change: $Author: kz $ $Date: 2008-04-03 14:26:44 $ * * The Contents of this file are made available subject to * the terms of GNU Lesser General Public License Version 2.1. @@ -33,15 +33,16 @@ * ************************************************************************/ -// MARKER(update_precomp.py): autogen include statement, do not remove #include "precompiled_sd.hxx" #include "controller/SlsPageSelector.hxx" +#include "SlideSorter.hxx" #include "SlideSorterViewShell.hxx" #include "controller/SlideSorterController.hxx" +#include "controller/SlsSelectionManager.hxx" #include "model/SlsPageDescriptor.hxx" -#include "model/SlsPageEnumeration.hxx" +#include "model/SlsPageEnumerationProvider.hxx" #include "model/SlideSorterModel.hxx" #include "view/SlideSorterView.hxx" @@ -65,11 +66,10 @@ using namespace ::sd::slidesorter::view; namespace sd { namespace slidesorter { namespace controller { -PageSelector::PageSelector ( - model::SlideSorterModel& rModel, - SlideSorterController& rController) - : mrModel(rModel), - mrController (rController), +PageSelector::PageSelector (SlideSorter& rSlideSorter) + : mrModel(rSlideSorter.GetModel()), + mrSlideSorter(rSlideSorter), + mrController(mrSlideSorter.GetController()), mnSelectedPageCount(0), mnBroadcastDisableLevel(0), mbSelectionChangeBroadcastPending(false), @@ -109,24 +109,28 @@ void PageSelector::DeselectAllPages (void) void PageSelector::UpdateAllPages (void) { + bool bSelectionHasChanged (true); mnSelectedPageCount = 0; - model::SlideSorterModel::Enumeration aAllPages ( - mrModel.GetAllPagesEnumeration()); + model::PageEnumeration aAllPages ( + model::PageEnumerationProvider::CreateAllPagesEnumeration(mrModel)); while (aAllPages.HasMoreElements()) { model::SharedPageDescriptor pDescriptor (aAllPages.GetNextElement()); if (pDescriptor->UpdateSelection()) { - mrController.GetView().RequestRepaint(pDescriptor); - if (mnBroadcastDisableLevel > 0) - mbSelectionChangeBroadcastPending = true; - else - mrController.SelectionHasChanged(); + mrSlideSorter.GetView().RequestRepaint(pDescriptor); + bSelectionHasChanged = true; } if (pDescriptor->IsSelected()) mnSelectedPageCount++; } + + if (bSelectionHasChanged) + if (mnBroadcastDisableLevel > 0) + mbSelectionChangeBroadcastPending = true; + else + mrController.GetSelectionManager()->SelectionHasChanged(); } @@ -158,7 +162,7 @@ void PageSelector::SelectPage (const SharedPageDescriptor& rpDescriptor) if (rpDescriptor.get()!=NULL && rpDescriptor->Select()) { mnSelectedPageCount ++; - mrController.GetView().RequestRepaint(rpDescriptor); + mrSlideSorter.GetView().RequestRepaint(rpDescriptor); mpMostRecentlySelectedPage = rpDescriptor; if (mpSelectionAnchor == NULL) @@ -167,7 +171,7 @@ void PageSelector::SelectPage (const SharedPageDescriptor& rpDescriptor) if (mnBroadcastDisableLevel > 0) mbSelectionChangeBroadcastPending = true; else - mrController.SelectionHasChanged(); + mrController.GetSelectionManager()->SelectionHasChanged(); } } @@ -200,13 +204,13 @@ void PageSelector::DeselectPage (const SharedPageDescriptor& rpDescriptor) if (rpDescriptor.get()!=NULL && rpDescriptor->Deselect()) { mnSelectedPageCount --; - mrController.GetView().RequestRepaint(rpDescriptor); + mrSlideSorter.GetView().RequestRepaint(rpDescriptor); if (mpMostRecentlySelectedPage == rpDescriptor) mpMostRecentlySelectedPage.reset(); if (mnBroadcastDisableLevel > 0) mbSelectionChangeBroadcastPending = true; else - mrController.SelectionHasChanged(); + mrController.GetSelectionManager()->SelectionHasChanged(); } } @@ -225,73 +229,6 @@ bool PageSelector::IsPageSelected (int nPageIndex) -void PageSelector::SetCurrentPage (const SharedPageDescriptor& rpDescriptor) -{ - // Set current page. At the moment we have to do this in two different - // ways. The UNO way is the preferable one but, alas, it does not work - // always correctly (after some kinds of model changes). Therefore, we - // call DrawViewShell::SwitchPage(), too. - try - { - // First the traditional way. - DrawViewShell* pDrawViewShell = dynamic_cast<DrawViewShell*>( - mrController.GetViewShell().GetViewShellBase().GetMainViewShell().get()); - if (pDrawViewShell != NULL) - { - USHORT nPageNumber = (rpDescriptor->GetPage()->GetPageNum()-1)/2; - pDrawViewShell->SwitchPage(nPageNumber); - pDrawViewShell->GetPageTabControl()->SetCurPageId(nPageNumber+1); - } - - // Now the UNO way. - do - { - Reference<beans::XPropertySet> xSet ( - mrController.GetViewShell().GetViewShellBase().GetController(), - UNO_QUERY); - if ( ! xSet.is()) - break; - - Any aPage; - aPage <<= rpDescriptor->GetPage()->getUnoPage(); - xSet->setPropertyValue ( - String::CreateFromAscii("CurrentPage"), - aPage); - } - while (false); - } - catch (beans::UnknownPropertyException aException) - { - // We have not been able to set the current page at the main view. - // This is sad but still leaves us in a valid state. Therefore, - // this exception is silently ignored. - } -} - - - - -void PageSelector::SetCurrentPage (const SdPage* pPage) -{ - int nPageIndex = (pPage->GetPageNum()-1) / 2; - SharedPageDescriptor pDescriptor (mrModel.GetPageDescriptor(nPageIndex)); - if (pDescriptor.get()!=NULL && pDescriptor->GetPage()==pPage) - SetCurrentPage(pDescriptor); -} - - - - -void PageSelector::SetCurrentPage (int nPageIndex) -{ - SharedPageDescriptor pDescriptor (mrModel.GetPageDescriptor(nPageIndex)); - if (pDescriptor.get() != NULL) - SetCurrentPage(pDescriptor); -} - - - - int PageSelector::GetPageCount (void) const { return mrModel.GetPageCount(); @@ -343,8 +280,8 @@ SharedPageDescriptor PageSelector::GetSelectionAnchor (void) const void PageSelector::CountSelectedPages (void) { mnSelectedPageCount = 0; - model::SlideSorterModel::Enumeration aSelectedPages ( - mrModel.GetSelectedPagesEnumeration()); + model::PageEnumeration aSelectedPages ( + model::PageEnumerationProvider::CreateSelectedPagesEnumeration(mrModel)); while (aSelectedPages.HasMoreElements()) { mnSelectedPageCount++; @@ -361,7 +298,7 @@ void PageSelector::EnableBroadcasting (bool bMakeSelectionVisible) mnBroadcastDisableLevel --; if (mnBroadcastDisableLevel==0 && mbSelectionChangeBroadcastPending) { - mrController.SelectionHasChanged(bMakeSelectionVisible); + mrController.GetSelectionManager()->SelectionHasChanged(bMakeSelectionVisible); mbSelectionChangeBroadcastPending = false; } } @@ -377,16 +314,17 @@ void PageSelector::DisableBroadcasting (void) -::std::auto_ptr<PageSelector::PageSelection> - PageSelector::GetPageSelection (void) +::boost::shared_ptr<PageSelector::PageSelection> PageSelector::GetPageSelection (void) const { - ::std::auto_ptr<PageSelection> pSelection (new PageSelection()); + ::boost::shared_ptr<PageSelection> pSelection (new PageSelection()); + pSelection->reserve(GetSelectedPageCount()); int nPageCount = GetPageCount(); for (int nIndex=0; nIndex<nPageCount; nIndex++) { - if (IsPageSelected(nIndex)) - pSelection->insert (nIndex); + SharedPageDescriptor pDescriptor (mrModel.GetPageDescriptor(nIndex)); + if (pDescriptor.get()!=NULL && pDescriptor->IsSelected()) + pSelection->push_back(pDescriptor->GetPage()); } return pSelection; @@ -395,11 +333,14 @@ void PageSelector::DisableBroadcasting (void) -void PageSelector::SetPageSelection (const PageSelection& rSelection) +void PageSelector::SetPageSelection (const ::boost::shared_ptr<PageSelection>& rpSelection) { - PageSelection::const_iterator iIndex; - for (iIndex=rSelection.begin(); iIndex!=rSelection.end(); ++iIndex) - SelectPage (*iIndex); + PageSelection::const_iterator iPage; + for (iPage=rpSelection->begin(); iPage!=rpSelection->end(); ++iPage) + SelectPage(*iPage); } + + + } } } // end of namespace ::sd::slidesorter::controller |