Hi,
I have submitted a patch for review:
https://gerrit.libreoffice.org/2941
To pull it, you can do:
git pull ssh://gerrit.libreoffice.org:29418/core refs/changes/41/2941/1
Display the number of active slides in the statusbar
Change-Id: I788070fdf093ec8b9f875ea5e81999990cd04501
---
M sd/inc/drawdoc.hxx
M sd/source/core/PageListWatcher.cxx
M sd/source/core/PageListWatcher.hxx
M sd/source/core/drawdoc2.cxx
M sd/source/ui/slidesorter/controller/SlsSlotManager.cxx
M sd/source/ui/view/drviews4.cxx
M sd/source/ui/view/drviewsa.cxx
7 files changed, 48 insertions(+), 3 deletions(-)
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 @@
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 @@
maPageVectorStandard.clear();
maPageVectorNotes.clear();
mpHandoutPage = 0L;
+ mnVisiblePageCount = -1;
// build up vectors again
const sal_uInt32 nPageCount(ImpGetPageCount());
@@ -46,6 +47,7 @@
case PK_STANDARD:
{
maPageVectorStandard.push_back(pCandidate);
+ if (!pCandidate->IsExcluded()) mnVisiblePageCount++;
break;
}
case PK_NOTES:
@@ -167,6 +169,22 @@
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 @@
SdPage* mpHandoutPage;
sal_Bool mbPageListValid;
+ sal_uInt32 mnVisiblePageCount;
void ImpRecreateSortedPageListOnDemand();
virtual sal_uInt32 ImpGetPageCount() const = 0;
@@ -60,6 +61,7 @@
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 @@
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 @@
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 @@
{
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 c3511c9..eedd6cc 100644
--- a/sd/source/ui/view/drviews4.cxx
+++ b/sd/source/ui/view/drviews4.cxx
@@ -866,7 +866,7 @@
SID_ATTR_SIZE, SID_ATTR_SIZE,
0L);
-// GetStatusBarState(aSet); nicht performant bei gedrueckter Modifiertaste!!
+ 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 135b198..56a0f7f 100644
--- a/sd/source/ui/view/drviewsa.cxx
+++ b/sd/source/ui/view/drviewsa.cxx
@@ -735,12 +735,20 @@
// 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
--
To view, visit https://gerrit.libreoffice.org/2941
To unsubscribe, visit https://gerrit.libreoffice.org/settings
Gerrit-MessageType: newchange
Gerrit-Change-Id: I788070fdf093ec8b9f875ea5e81999990cd04501
Gerrit-PatchSet: 1
Gerrit-Project: core
Gerrit-Branch: master
Gerrit-Owner: Rob Snelders <libreoffice@ertai.nl>
Context
- [PATCH] Display the number of active slides in the statusbar · Rob Snelders (via Code Review)
Privacy Policy |
Impressum (Legal Info) |
Copyright information: Unless otherwise specified, all text and images
on this website are licensed under the
Creative Commons Attribution-Share Alike 3.0 License.
This does not include the source code of LibreOffice, which is
licensed under the Mozilla Public License (
MPLv2).
"LibreOffice" and "The Document Foundation" are
registered trademarks of their corresponding registered owners or are
in actual use as trademarks in one or more countries. Their respective
logos and icons are also subject to international copyright laws. Use
thereof is explained in our
trademark policy.