summaryrefslogtreecommitdiff
path: root/sw/source/uibase/ribbar/workctrl.cxx
diff options
context:
space:
mode:
authorGulsah Kose <gulsah.1004@gmail.com>2015-10-13 00:53:25 +0300
committerOliver Specht <oliver.specht@cib.de>2015-11-01 17:41:55 +0000
commitc2a76550a287adf8bdbe93c02395fb80cb11c950 (patch)
tree49f82b1d8b8e622966cf71f2436f72ecce42eff9 /sw/source/uibase/ribbar/workctrl.cxx
parent707f416192d5a0ca5fa96f7e141c988060b0f292 (diff)
tdf#80657 Adding new field to jump to specific page.
This patch is not completed. It adds a dropdown field to toolbar. When you click it, the page preview focuses third page (hard coded). This patch's purpose is getting information from developers how to add numbers to dropdown field. -- v2: Removed unnecessary MV_SPECIFIC_PAGE case. v3: Added dropdown field and defined new controller for new field. v4: Implemented page focus who user want. v5: Used NumericField instead of Combobox and added page count control v6: Used nSlotId instead of SID_JUMP_TO_SPECIFIC_PAGE in order to fix macOs build error. Change-Id: I722fbffcc72a1bcee70065e2e9369b73ab27f100 Signed-off-by: Gulsah Kose <gulsah.1004@gmail.com> Reviewed-on: https://gerrit.libreoffice.org/19335 Tested-by: Jenkins <ci@libreoffice.org> Reviewed-by: Oliver Specht <oliver.specht@cib.de>
Diffstat (limited to 'sw/source/uibase/ribbar/workctrl.cxx')
-rw-r--r--sw/source/uibase/ribbar/workctrl.cxx63
1 files changed, 63 insertions, 0 deletions
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: */