[Libreoffice-commits] core.git: sd/inc sd/source
Rob Snelders
programming at ertai.nl
Sat Mar 23 14:59:38 PDT 2013
sd/inc/drawdoc.hxx | 2 +
sd/source/core/PageListWatcher.cxx | 18 +++++++++++++++++
sd/source/core/PageListWatcher.hxx | 2 +
sd/source/core/drawdoc2.cxx | 6 +++++
sd/source/ui/slidesorter/controller/SlsSlotManager.cxx | 11 +++++++++-
sd/source/ui/view/drviews4.cxx | 2 -
sd/source/ui/view/drviewsa.cxx | 10 ++++++++-
7 files changed, 48 insertions(+), 3 deletions(-)
New commits:
commit 99120b7ddc8ede9108d4a45a5605ac191fe22bc9
Author: Rob Snelders <programming at ertai.nl>
Date: Sat Mar 23 19:36:41 2013 +0100
Display the number of active slides in the statusbar
Conflicts:
sd/source/ui/view/drviews4.cxx
Change-Id: I788070fdf093ec8b9f875ea5e81999990cd04501
diff --git a/sd/inc/drawdoc.hxx b/sd/inc/drawdoc.hxx
index 3d89978..d9b9679 100644
--- a/sd/inc/drawdoc.hxx
+++ b/sd/inc/drawdoc.hxx
@@ -343,6 +343,8 @@ public:
SD_DLLPUBLIC SdPage*GetMasterSdPage(sal_uInt16 nPgNum, PageKind ePgKind);
SD_DLLPUBLIC sal_uInt16 GetMasterSdPageCount(PageKind ePgKind) const;
+ SD_DLLPUBLIC sal_uInt16 GetActiveSdPageCount() const;
+
sal_uInt16 GetMasterPageUserCount(SdrPage* pMaster) const;
const sd::PresentationSettings& getPresentationSettings() const { return maPresentationSettings; }
diff --git a/sd/source/core/PageListWatcher.cxx b/sd/source/core/PageListWatcher.cxx
index 6efa75b..cd4f9ff 100644
--- a/sd/source/core/PageListWatcher.cxx
+++ b/sd/source/core/PageListWatcher.cxx
@@ -32,6 +32,7 @@ void ImpPageListWatcher::ImpRecreateSortedPageListOnDemand()
maPageVectorStandard.clear();
maPageVectorNotes.clear();
mpHandoutPage = 0L;
+ mnVisiblePageCount = -1;
// build up vectors again
const sal_uInt32 nPageCount(ImpGetPageCount());
@@ -46,6 +47,7 @@ void ImpPageListWatcher::ImpRecreateSortedPageListOnDemand()
case PK_STANDARD:
{
maPageVectorStandard.push_back(pCandidate);
+ if (!pCandidate->IsExcluded()) mnVisiblePageCount++;
break;
}
case PK_NOTES:
@@ -167,6 +169,22 @@ sal_uInt32 ImpPageListWatcher::GetSdPageCount(PageKind ePgKind)
return nRetval;
}
+
+sal_uInt32 ImpPageListWatcher::GetVisibleSdPageCount()
+{
+ sal_uInt32 nVisiblePageCount = 0;
+
+ // build up vectors again
+ const sal_uInt32 nPageCount(ImpGetPageCount());
+
+ for(sal_uInt32 a(0L); a < nPageCount; a++)
+ {
+ SdPage* pCandidate = ImpGetPage(a);
+ if ((pCandidate->GetPageKind() == PK_STANDARD)&&(!pCandidate->IsExcluded())) nVisiblePageCount++;
+ }
+ return nVisiblePageCount;
+}
+
//////////////////////////////////////////////////////////////////////////////
sal_uInt32 ImpDrawPageListWatcher::ImpGetPageCount() const
diff --git a/sd/source/core/PageListWatcher.hxx b/sd/source/core/PageListWatcher.hxx
index 177acd2..fd81645 100644
--- a/sd/source/core/PageListWatcher.hxx
+++ b/sd/source/core/PageListWatcher.hxx
@@ -43,6 +43,7 @@ protected:
SdPage* mpHandoutPage;
sal_Bool mbPageListValid;
+ sal_uInt32 mnVisiblePageCount;
void ImpRecreateSortedPageListOnDemand();
virtual sal_uInt32 ImpGetPageCount() const = 0;
@@ -60,6 +61,7 @@ public:
void Invalidate() { mbPageListValid = sal_False; }
SdPage* GetSdPage(PageKind ePgKind, sal_uInt32 nPgNum = 0L);
sal_uInt32 GetSdPageCount(PageKind ePgKind);
+ sal_uInt32 GetVisibleSdPageCount();
};
//////////////////////////////////////////////////////////////////////////////
diff --git a/sd/source/core/drawdoc2.cxx b/sd/source/core/drawdoc2.cxx
index fd36dd4..0e8f5d6 100644
--- a/sd/source/core/drawdoc2.cxx
+++ b/sd/source/core/drawdoc2.cxx
@@ -66,6 +66,7 @@
#include "PageListWatcher.hxx"
#include <vcl/virdev.hxx>
+#include "customshowlist.hxx"
using namespace ::sd;
@@ -202,6 +203,11 @@ sal_uInt16 SdDrawDocument::GetMasterSdPageCount(PageKind ePgKind) const
return (sal_uInt16)mpMasterPageListWatcher->GetSdPageCount(ePgKind);
}
+sal_uInt16 SdDrawDocument::GetActiveSdPageCount() const
+{
+ return (sal_uInt16)mpDrawPageListWatcher->GetVisibleSdPageCount();
+}
+
// Adapt the page numbers that are registered in the page objects of the notes
// pages
void SdDrawDocument::UpdatePageObjectsInNotes(sal_uInt16 nStartPos)
diff --git a/sd/source/ui/slidesorter/controller/SlsSlotManager.cxx b/sd/source/ui/slidesorter/controller/SlsSlotManager.cxx
index 6db42a0..bdf802b 100644
--- a/sd/source/ui/slidesorter/controller/SlsSlotManager.cxx
+++ b/sd/source/ui/slidesorter/controller/SlsSlotManager.cxx
@@ -815,6 +815,8 @@ void SlotManager::GetStatusBarState (SfxItemSet& rSet)
SdPage* pPage = NULL;
SdPage* pFirstPage = NULL;
sal_uInt16 nFirstPage;
+ sal_Int32 nPageCount;
+ sal_Int32 nActivePageCount;
sal_uInt16 nSelectedPages = mrSlideSorter.GetController().GetPageSelector().GetSelectedPageCount();
OUStringBuffer aPageStr;
String aLayoutStr;
@@ -831,7 +833,14 @@ void SlotManager::GetStatusBarState (SfxItemSet& rSet)
{
pPage = pDescriptor->GetPage();
nFirstPage = (pPage->GetPageNum()/2) + 1;
- aPageStr.append(" ").append(static_cast<sal_Int32>(nFirstPage), 10).append(" / ").append(mrSlideSorter.GetModel().GetPageCount(), 10);
+ nPageCount = mrSlideSorter.GetModel().GetPageCount();
+ nActivePageCount = static_cast<sal_Int32>(mrSlideSorter.GetModel().GetDocument()->GetActiveSdPageCount());
+
+ aPageStr.append(" ").append(static_cast<sal_Int32>(nFirstPage), 10).append(" / ").append(nPageCount, 10);
+ if (nPageCount != nActivePageCount)
+ {
+ aPageStr.append(" (").append(nActivePageCount, 10).append(")");
+ }
}
rSet.Put( SfxStringItem( SID_STATUS_PAGE, aPageStr.makeStringAndClear() ) );
}
diff --git a/sd/source/ui/view/drviews4.cxx b/sd/source/ui/view/drviews4.cxx
index e360345..1a5dd61 100644
--- a/sd/source/ui/view/drviews4.cxx
+++ b/sd/source/ui/view/drviews4.cxx
@@ -822,7 +822,7 @@ void DrawViewShell::ShowMousePosInfo(const Rectangle& rRect,
SID_ATTR_SIZE, SID_ATTR_SIZE,
0L);
-// GetStatusBarState(aSet); not fast by pressed modify key!!
+ GetStatusBarState(aSet);
aSet.Put( SfxStringItem( SID_CONTEXT, mpDrawView->GetStatusText() ) );
diff --git a/sd/source/ui/view/drviewsa.cxx b/sd/source/ui/view/drviewsa.cxx
index 1a0443e..b75289e 100644
--- a/sd/source/ui/view/drviewsa.cxx
+++ b/sd/source/ui/view/drviewsa.cxx
@@ -699,12 +699,20 @@ void DrawViewShell::GetStatusBarState(SfxItemSet& rSet)
// Display of current page and layer.
if( SFX_ITEM_AVAILABLE == rSet.GetItemState( SID_STATUS_PAGE ) )
{
+ sal_Int32 nPageCount = sal_Int32(GetDoc()->GetSdPageCount(mePageKind));
+ sal_Int32 nActivePageCount = sal_Int32(GetDoc()->GetActiveSdPageCount());
// Always show the slide/page number.
OUString aOUString = SD_RESSTR(STR_SD_PAGE);
aOUString += " ";
aOUString += OUString::valueOf( sal_Int32(maTabControl.GetCurPageId()) );
aOUString += " / " ;
- aOUString += OUString::valueOf( sal_Int32(GetDoc()->GetSdPageCount(mePageKind)) );
+ aOUString += OUString::valueOf( nPageCount );
+ if (nPageCount != nActivePageCount)
+ {
+ aOUString += " (";
+ aOUString += OUString::valueOf( nActivePageCount );
+ aOUString += ")";
+ }
// If in layer mode additionally show the layer that contains all
// selected shapes of the page. If the shapes are distributed on
More information about the Libreoffice-commits
mailing list