[Libreoffice-commits] core.git: officecfg/registry sw/inc sw/sdi sw/source sw/uiconfig

Gulsah Kose gulsah.1004 at gmail.com
Sun Nov 1 09:42:19 PST 2015


 officecfg/registry/data/org/openoffice/Office/UI/WriterCommands.xcu |    8 +
 sw/inc/cmdid.h                                                      |    1 
 sw/inc/helpid.h                                                     |    1 
 sw/inc/swcommands.h                                                 |    1 
 sw/sdi/swriter.sdi                                                  |   26 ++++
 sw/sdi/viewsh.sdi                                                   |    5 
 sw/source/uibase/app/swmodule.cxx                                   |    1 
 sw/source/uibase/inc/pview.hxx                                      |    2 
 sw/source/uibase/inc/ribbar.hrc                                     |    1 
 sw/source/uibase/inc/workctrl.hxx                                   |   11 +
 sw/source/uibase/ribbar/workctrl.cxx                                |   63 ++++++++++
 sw/source/uibase/ribbar/workctrl.src                                |    7 +
 sw/source/uibase/uiview/pview.cxx                                   |   19 +++
 sw/uiconfig/swriter/toolbar/previewobjectbar.xml                    |    1 
 14 files changed, 146 insertions(+), 1 deletion(-)

New commits:
commit c2a76550a287adf8bdbe93c02395fb80cb11c950
Author: Gulsah Kose <gulsah.1004 at gmail.com>
Date:   Tue Oct 13 00:53:25 2015 +0300

    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 at gmail.com>
    Reviewed-on: https://gerrit.libreoffice.org/19335
    Tested-by: Jenkins <ci at libreoffice.org>
    Reviewed-by: Oliver Specht <oliver.specht at cib.de>

diff --git a/officecfg/registry/data/org/openoffice/Office/UI/WriterCommands.xcu b/officecfg/registry/data/org/openoffice/Office/UI/WriterCommands.xcu
index 44727d9..f378a79 100644
--- a/officecfg/registry/data/org/openoffice/Office/UI/WriterCommands.xcu
+++ b/officecfg/registry/data/org/openoffice/Office/UI/WriterCommands.xcu
@@ -1660,6 +1660,14 @@
           <value>1</value>
         </prop>
       </node>
+      <node oor:name=".uno:JumpToSpecificPage" oor:op="replace">
+        <prop oor:name="Label" oor:type="xs:string">
+          <value xml:lang="en-US">Jump To Specific Page</value>
+        </prop>
+        <prop oor:name="Properties" oor:type="xs:int">
+          <value>1</value>
+        </prop>
+      </node>
       <node oor:name=".uno:PageDown" oor:op="replace">
         <prop oor:name="Label" oor:type="xs:string">
           <value xml:lang="en-US">Next Page</value>
diff --git a/sw/inc/cmdid.h b/sw/inc/cmdid.h
index e4f4d8d..6e7cd83 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 8513271..5a4c351 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 09c93b4..4478a4d 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 1b6829e..a80d38c 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 567d704..1717fc8 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 c213443..9be3159 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 e07f066..a59f37f 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 ac38d31..4973d81 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 6f65bb7..9a13873 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 8c26419..9b8276d 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 ed87105..0ea858d 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 ee4f6a7..2a90188 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 2512308..5577082 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/>


More information about the Libreoffice-commits mailing list