summaryrefslogtreecommitdiff
path: root/sw
diff options
context:
space:
mode:
Diffstat (limited to 'sw')
-rw-r--r--sw/inc/cmdid.h1
-rw-r--r--sw/inc/helpid.h1
-rw-r--r--sw/inc/swcommands.h1
-rw-r--r--sw/sdi/swriter.sdi26
-rw-r--r--sw/sdi/viewsh.sdi5
-rw-r--r--sw/source/uibase/app/swmodule.cxx1
-rw-r--r--sw/source/uibase/inc/pview.hxx2
-rw-r--r--sw/source/uibase/inc/ribbar.hrc1
-rw-r--r--sw/source/uibase/inc/workctrl.hxx11
-rw-r--r--sw/source/uibase/ribbar/workctrl.cxx63
-rw-r--r--sw/source/uibase/ribbar/workctrl.src7
-rw-r--r--sw/source/uibase/uiview/pview.cxx19
-rw-r--r--sw/uiconfig/swriter/toolbar/previewobjectbar.xml1
13 files changed, 138 insertions, 1 deletions
diff --git a/sw/inc/cmdid.h b/sw/inc/cmdid.h
index e4f4d8dd4cc5..6e7cd830d38d 100644
--- a/sw/inc/cmdid.h
+++ b/sw/inc/cmdid.h
@@ -700,6 +700,7 @@
#define FN_READONLY_SELECTION_MODE (FN_SELECTION + 89) /* switches text selection mode in readonly documents*/
#define FN_SELECTION_MODE_DEFAULT (FN_SELECTION + 90) /* use default selection mode - not block mode */
#define FN_SELECTION_MODE_BLOCK (FN_SELECTION + 91) /* switch on block selection */
+#define SID_JUMP_TO_SPECIFIC_PAGE (FN_SELECTION + 92)
// QUERY-Block
#define FN_TXTATR_INET (FN_QUERY +29) /* INet-Attribut */
diff --git a/sw/inc/helpid.h b/sw/inc/helpid.h
index 8513271e278d..5a4c351dc498 100644
--- a/sw/inc/helpid.h
+++ b/sw/inc/helpid.h
@@ -240,6 +240,7 @@
#define HID_SEND_HTML_CTRL_LISTBOX_TEMPLATE "SW_HID_SEND_HTML_CTRL_LISTBOX_TEMPLATE"
#define HID_PVIEW_ZOOM_LB "SW_HID_PVIEW_ZOOM_LB"
+#define HID_JUMP_TO_SPEC_PAGE "SW_HID_JUMP_TO_SPEC_PAGE"
#define HID_NID_TBL "SW_HID_NID_TBL"
diff --git a/sw/inc/swcommands.h b/sw/inc/swcommands.h
index 09c93b4ad096..4478a4d5b88a 100644
--- a/sw/inc/swcommands.h
+++ b/sw/inc/swcommands.h
@@ -121,6 +121,7 @@
#define CMD_FN_HEADERFOOTER_BORDERBACK ".uno:HeaderFooterBorderBackground"
#define CMD_FN_PAGEBREAK_EDIT ".uno:PageBreakEdit"
#define CMD_FN_PAGEBREAK_DELETE ".uno:PageBreakDelete"
+#define CMD_SID_JUMP_TO_SPECIFIC_PAGE ".uno:JumpToSpecificPage"
#endif
diff --git a/sw/sdi/swriter.sdi b/sw/sdi/swriter.sdi
index 1b6829e1be7f..a80d38caa026 100644
--- a/sw/sdi/swriter.sdi
+++ b/sw/sdi/swriter.sdi
@@ -10300,3 +10300,29 @@ SfxVoidItem UnicodeNotationToggle SID_UNICODE_NOTATION_TOGGLE
GroupId = GID_OPTIONS;
]
+SfxVoidItem JumpToSpecificPage SID_JUMP_TO_SPECIFIC_PAGE
+( SfxUInt16Item JumpToSpecificPage SID_JUMP_TO_SPECIFIC_PAGE )
+[
+ /* flags: */
+ AutoUpdate = FALSE,
+ Cachable = Cachable,
+ FastCall = TRUE,
+ HasCoreId = FALSE,
+ HasDialog = TRUE,
+ ReadOnlyDoc = TRUE,
+ Toggle = FALSE,
+ Container = FALSE,
+ RecordAbsolute = FALSE,
+ RecordPerSet;
+ Synchron;
+
+ /* status: */
+ SlotType = SfxUInt16Item
+
+ /* config: */
+ AccelConfig = FALSE,
+ MenuConfig = FALSE,
+ StatusBarConfig = FALSE,
+ ToolBoxConfig = TRUE,
+ GroupId = GID_NAVIGATOR;
+]
diff --git a/sw/sdi/viewsh.sdi b/sw/sdi/viewsh.sdi
index 567d70476e5a..1717fc828880 100644
--- a/sw/sdi/viewsh.sdi
+++ b/sw/sdi/viewsh.sdi
@@ -312,6 +312,11 @@ interface TextPrintPreview
ExecMethod = Execute ;
StateMethod = GetState ;
]
+ SID_JUMP_TO_SPECIFIC_PAGE // status()
+ [
+ ExecMethod = Execute ;
+ StateMethod = GetState ;
+ ]
// End StatusBar
}
diff --git a/sw/source/uibase/app/swmodule.cxx b/sw/source/uibase/app/swmodule.cxx
index c213443bfa98..9be3159c792f 100644
--- a/sw/source/uibase/app/swmodule.cxx
+++ b/sw/source/uibase/app/swmodule.cxx
@@ -383,6 +383,7 @@ void SwDLL::RegisterControls()
SvxSmartTagsControl::RegisterControl(SID_OPEN_SMARTTAGMENU, pMod);
::sfx2::sidebar::SidebarChildWindow::RegisterChildWindow(false, pMod);
::sfx2::TaskPaneWrapper::RegisterChildWindow(false, pMod);
+ SwJumpToSpecificPageControl::RegisterControl(SID_JUMP_TO_SPECIFIC_PAGE, pMod);
}
// Load Module (only dummy for linking of the DLL)
diff --git a/sw/source/uibase/inc/pview.hxx b/sw/source/uibase/inc/pview.hxx
index e07f066d45ab..a59f37f87f23 100644
--- a/sw/source/uibase/inc/pview.hxx
+++ b/sw/source/uibase/inc/pview.hxx
@@ -120,7 +120,7 @@ public:
// Add <MV_SELPAGE>, <MV_SCROLL>
enum MoveMode{ MV_CALC, MV_PAGE_UP, MV_PAGE_DOWN, MV_DOC_STT, MV_DOC_END,
- MV_SELPAGE, MV_SCROLL, MV_NEWWINSIZE };
+ MV_SELPAGE, MV_SCROLL, MV_NEWWINSIZE, MV_SPECIFIC_PAGE };
bool MovePage( int eMoveMode );
// Create the status bar's string
diff --git a/sw/source/uibase/inc/ribbar.hrc b/sw/source/uibase/inc/ribbar.hrc
index ac38d3155a9e..4973d8126f34 100644
--- a/sw/source/uibase/inc/ribbar.hrc
+++ b/sw/source/uibase/inc/ribbar.hrc
@@ -54,6 +54,7 @@
#define RID_PVIEW_ZOOM_LB (RC_RIBBAR_BEGIN + 32)
#define STR_IMGBTN_START (RC_RIBBAR_BEGIN + 33)
+#define RID_JUMP_TO_SPEC_PAGE (RC_RIBBAR_BEGIN + 34)
#define STR_IMGBTN_NEXT_DOWN (STR_IMGBTN_START + 0)
#define STR_IMGBTN_PREV_DOWN (STR_IMGBTN_START + 1)
diff --git a/sw/source/uibase/inc/workctrl.hxx b/sw/source/uibase/inc/workctrl.hxx
index 6f65bb7c14a1..9a13873c0e7d 100644
--- a/sw/source/uibase/inc/workctrl.hxx
+++ b/sw/source/uibase/inc/workctrl.hxx
@@ -157,6 +157,17 @@ public:
virtual VclPtr<vcl::Window> CreateItemWindow( vcl::Window *pParent ) override;
};
+
+class SwJumpToSpecificPageControl : public SfxToolBoxControl
+{
+public:
+ SFX_DECL_TOOLBOX_CONTROL();
+
+ SwJumpToSpecificPageControl( sal_uInt16 nSlotId, sal_uInt16 nId, ToolBox& rTbx );
+ virtual ~SwJumpToSpecificPageControl();
+
+ virtual VclPtr<vcl::Window> CreateItemWindow( vcl::Window *pParent ) SAL_OVERRIDE;
+};
#endif
/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/sw/source/uibase/ribbar/workctrl.cxx b/sw/source/uibase/ribbar/workctrl.cxx
index 8c26419167d8..9b8276d6bd2c 100644
--- a/sw/source/uibase/ribbar/workctrl.cxx
+++ b/sw/source/uibase/ribbar/workctrl.cxx
@@ -612,4 +612,67 @@ VclPtr<vcl::Window> SwPreviewZoomControl::CreateItemWindow( vcl::Window *pParent
return pRet.get();
}
+class SwJumpToSpecificBox_Impl : public NumericField
+{
+ sal_uInt16 nSlotId;
+ uno::Reference< frame::XDispatchProvider > m_xDispatchProvider;
+
+public:
+ SwJumpToSpecificBox_Impl(
+ vcl::Window* pParent,
+ sal_uInt16 nSlot,
+ const Reference< XDispatchProvider >& rDispatchProvider );
+ virtual ~SwJumpToSpecificBox_Impl();
+
+protected:
+ virtual void Select();
+ virtual bool Notify( NotifyEvent& rNEvt ) SAL_OVERRIDE;
+};
+
+SwJumpToSpecificBox_Impl::SwJumpToSpecificBox_Impl(
+ vcl::Window* pParent,
+ sal_uInt16 nSlot,
+ const Reference< XDispatchProvider >& rDispatchProvider ):
+ NumericField( pParent, SW_RES(RID_JUMP_TO_SPEC_PAGE)),
+ nSlotId(nSlot),
+ m_xDispatchProvider( rDispatchProvider )
+{}
+
+SwJumpToSpecificBox_Impl::~SwJumpToSpecificBox_Impl()
+{}
+
+void SwJumpToSpecificBox_Impl::Select()
+{
+ OUString sEntry(GetText());
+ SfxUInt16Item aPageNum(nSlotId);
+ aPageNum.SetValue((sal_uInt16)sEntry.toInt32());
+ SfxObjectShell* pCurrentShell = SfxObjectShell::Current();
+ pCurrentShell->GetDispatcher()->Execute(nSlotId, SfxCallMode::ASYNCHRON, &aPageNum, 0L);
+}
+
+bool SwJumpToSpecificBox_Impl::Notify( NotifyEvent& rNEvt )
+{
+ if ( rNEvt.GetType() == MouseNotifyEvent::KEYINPUT )
+ Select();
+ return NumericField::Notify( rNEvt );
+}
+
+SFX_IMPL_TOOLBOX_CONTROL( SwJumpToSpecificPageControl, SfxUInt16Item);
+
+SwJumpToSpecificPageControl::SwJumpToSpecificPageControl(
+ sal_uInt16 nSlotId,
+ sal_uInt16 nId,
+ ToolBox& rTbx) :
+ SfxToolBoxControl( nSlotId, nId, rTbx )
+{}
+
+SwJumpToSpecificPageControl::~SwJumpToSpecificPageControl()
+{}
+
+VclPtr<vcl::Window> SwJumpToSpecificPageControl::CreateItemWindow( vcl::Window *pParent )
+{
+ VclPtrInstance<SwJumpToSpecificBox_Impl> pRet( pParent, GetSlotId(), Reference< XDispatchProvider >( m_xFrame->getController(), UNO_QUERY ));
+ return pRet.get();
+}
+
/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/sw/source/uibase/ribbar/workctrl.src b/sw/source/uibase/ribbar/workctrl.src
index ed871055336e..0ea858d157d2 100644
--- a/sw/source/uibase/ribbar/workctrl.src
+++ b/sw/source/uibase/ribbar/workctrl.src
@@ -359,5 +359,12 @@ ComboBox RID_PVIEW_ZOOM_LB
Border = TRUE ;
Hide = TRUE ;
};
+NumericField RID_JUMP_TO_SPEC_PAGE
+{
+ HelpId = HID_JUMP_TO_SPEC_PAGE;
+ Size = MAP_APPFONT ( 16 , 12) ;
+ Border = TRUE ;
+ Hide = TRUE ;
+};
/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/sw/source/uibase/uiview/pview.cxx b/sw/source/uibase/uiview/pview.cxx
index ee4f6a767188..2a9018834aeb 100644
--- a/sw/source/uibase/uiview/pview.cxx
+++ b/sw/source/uibase/uiview/pview.cxx
@@ -334,6 +334,7 @@ bool SwPagePreviewWin::MovePage( int eMoveMode )
nNewSttPage = nPageCount;
SetSelectedPage( nPageCount );
break;
+
case MV_SELPAGE:
// <nNewSttPage> and <SelectedPage()> are already set.
// not start at first column, only if the
@@ -880,6 +881,24 @@ void SwPagePreview::Execute( SfxRequest &rReq )
_ExecPgUpAndPgDown( rReq.GetSlot() == FN_PAGEUP, &rReq );
break;
}
+ case SID_JUMP_TO_SPECIFIC_PAGE:
+ {
+ sal_uInt16 nPageNum = 1;
+ const SfxItemSet *pArgs = rReq.GetArgs();
+ if( pArgs && pArgs->Count())
+ {
+ nPageNum = static_cast<const SfxUInt16Item &>(pArgs->Get(SID_JUMP_TO_SPECIFIC_PAGE)).GetValue();
+
+ if( nPageNum > 0 && nPageNum <= mnPageCount )
+ {
+ pViewWin->SetSttPage( nPageNum);
+ pViewWin->SetSelectedPage( nPageNum );
+ ChgPage( SwPagePreviewWin::MV_SPECIFIC_PAGE, false );
+ ScrollViewSzChg();
+ }
+ }
+ }
+ break;
case FN_START_OF_LINE:
case FN_START_OF_DOCUMENT:
pViewWin->SetSelectedPage( 1 );
diff --git a/sw/uiconfig/swriter/toolbar/previewobjectbar.xml b/sw/uiconfig/swriter/toolbar/previewobjectbar.xml
index 2512308ef20e..5577082437a5 100644
--- a/sw/uiconfig/swriter/toolbar/previewobjectbar.xml
+++ b/sw/uiconfig/swriter/toolbar/previewobjectbar.xml
@@ -26,6 +26,7 @@
<toolbar:toolbarseparator/>
<toolbar:toolbaritem xlink:href=".uno:GoToStartOfDoc" toolbar:helpid="20907"/>
<toolbar:toolbaritem xlink:href=".uno:PageUp" toolbar:helpid="20937"/>
+ <toolbar:toolbaritem xlink:href=".uno:JumpToSpecificPage" />
<toolbar:toolbaritem xlink:href=".uno:PageDown" toolbar:helpid="20938"/>
<toolbar:toolbaritem xlink:href=".uno:GoToEndOfDoc" toolbar:helpid="20908"/>
<toolbar:toolbarseparator/>