diff options
Diffstat (limited to 'sw/source')
-rw-r--r-- | sw/source/uibase/app/swmodule.cxx | 1 | ||||
-rw-r--r-- | sw/source/uibase/inc/pview.hxx | 2 | ||||
-rw-r--r-- | sw/source/uibase/inc/ribbar.hrc | 1 | ||||
-rw-r--r-- | sw/source/uibase/inc/workctrl.hxx | 11 | ||||
-rw-r--r-- | sw/source/uibase/ribbar/workctrl.cxx | 63 | ||||
-rw-r--r-- | sw/source/uibase/ribbar/workctrl.src | 7 | ||||
-rw-r--r-- | sw/source/uibase/uiview/pview.cxx | 19 |
7 files changed, 103 insertions, 1 deletions
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 ); |