diff options
author | Sarper Akdemir <sarper.akdemir.extern@allotropia.de> | 2023-11-09 20:18:44 +0300 |
---|---|---|
committer | Thorsten Behrens <thorsten.behrens@allotropia.de> | 2023-11-12 13:37:53 +0100 |
commit | 2a2f53131c8dd906b549230ea211993c094efd66 (patch) | |
tree | be8576d41d1a41951380631f5da9356e02507dd0 | |
parent | 9ec513d6346634c8ede37c0d58cf9e42928b87a0 (diff) |
Edit notes in child window
These are the initial ui bits for testing the feature
Change-Id: Ibc6e8a3f126c443453c5ecab52ba988a4f4f56e6
20 files changed, 159 insertions, 7 deletions
diff --git a/officecfg/registry/data/org/openoffice/Office/UI/DrawImpressCommands.xcu b/officecfg/registry/data/org/openoffice/Office/UI/DrawImpressCommands.xcu index cca1b2ec38ae..618dbfa0d837 100644 --- a/officecfg/registry/data/org/openoffice/Office/UI/DrawImpressCommands.xcu +++ b/officecfg/registry/data/org/openoffice/Office/UI/DrawImpressCommands.xcu @@ -24,6 +24,14 @@ <value xml:lang="en-US">S~lide</value> </prop> </node> + <node oor:name=".uno:NotesChildWindow" oor:op="replace"> + <prop oor:name="Label" oor:type="xs:string"> + <value xml:lang="en-US">Notes Panel</value> + </prop> + <prop oor:name="Properties" oor:type="xs:int"> + <value>1</value> + </prop> + </node> <node oor:name=".uno:PageMenu" oor:op="replace"> <prop oor:name="Label" oor:type="xs:string"> <value xml:lang="en-US">~Page</value> diff --git a/sd/Library_sd.mk b/sd/Library_sd.mk index 926dd86ee755..d7483cb77c25 100644 --- a/sd/Library_sd.mk +++ b/sd/Library_sd.mk @@ -232,6 +232,7 @@ $(eval $(call gb_Library_add_exception_objects,sd,\ sd/source/ui/dlg/AnimationChildWindow \ sd/source/ui/dlg/LayerTabBar \ sd/source/ui/dlg/NavigatorChildWindow \ + sd/source/ui/dlg/NotesChildWindow \ sd/source/ui/dlg/PaneChildWindows \ sd/source/ui/dlg/PaneShells \ sd/source/ui/dlg/SpellDialogChildWindow \ diff --git a/sd/inc/glob.hxx b/sd/inc/glob.hxx index 6ecfc3fd39ce..8cdfcb18491b 100644 --- a/sd/inc/glob.hxx +++ b/sd/inc/glob.hxx @@ -39,6 +39,7 @@ #define SD_IF_SDDRAWTABLEOBJECTBAR SFX_INTERFACE_SD_START + SfxInterfaceId(27) #define SD_IF_SDTOOLPANELPANESHELL SFX_INTERFACE_SD_START + SfxInterfaceId(29) #define SD_IF_SDTOOLPANELSHELL SFX_INTERFACE_SD_START + SfxInterfaceId(30) +#define SD_IF_SDNOTESCHILDWINDOWSHELL SFX_INTERFACE_SD_START + SfxInterfaceId(31) // Object-Ids for StarDraw UserData diff --git a/sd/inc/strings.hrc b/sd/inc/strings.hrc index 3e1ddd1542e7..ff7fca3f5447 100644 --- a/sd/inc/strings.hrc +++ b/sd/inc/strings.hrc @@ -263,6 +263,7 @@ #define STR_UNDO_HANGULHANJACONVERSION NC_("STR_UNDO_HANGULHANJACONVERSION", "Hangul/Hanja Conversion") #define STR_LEFT_PANE_IMPRESS_TITLE NC_("STR_LEFT_PANE_IMPRESS_TITLE", "Slides") #define STR_LEFT_PANE_DRAW_TITLE NC_("STR_LEFT_PANE_DRAW_TITLE", "Pages") +#define STR_BOTTOM_NOTES_PANE_TITLE NC_("STR_BOTTOM_NOTES_PANE_TITLE", "Notes") #define STR_TASKPANEL_NOT_AVAILABLE_SUBSTITUTION NC_("STR_TASKPANEL_NOT_AVAILABLE_SUBSTITUTION", "Preview not available") #define STR_TASKPANEL_PREPARING_PREVIEW_SUBSTITUTION NC_("STR_TASKPANEL_PREPARING_PREVIEW_SUBSTITUTION", "Preparing preview") #define STR_TASKPANEL_LAYOUT_MENU_TITLE NC_("STR_TASKPANEL_LAYOUT_MENU_TITLE", "Layouts") diff --git a/sd/source/ui/app/sddll.cxx b/sd/source/ui/app/sddll.cxx index c195869b790e..c97a5d892a83 100644 --- a/sd/source/ui/app/sddll.cxx +++ b/sd/source/ui/app/sddll.cxx @@ -48,6 +48,7 @@ #include <OutlineViewShell.hxx> #include <OutlineViewShellBase.hxx> #include <PaneChildWindows.hxx> +#include <NotesChildWindow.hxx> #include <SpellDialogChildWindow.hxx> #include <SlideSorterViewShell.hxx> #include <SlideSorterViewShellBase.hxx> @@ -166,6 +167,7 @@ void SdDLL::RegisterControllers(SdModule* pMod) ::sd::LeftPaneImpressChildWindow::RegisterChildWindow(false, pMod); ::sd::LeftPaneDrawChildWindow::RegisterChildWindow(false, pMod); ::sfx2::sidebar::SidebarChildWindow::RegisterChildWindow(false, pMod); + ::sd::NotesChildWindow::RegisterChildWindow(false, pMod); DevelopmentToolChildWindow::RegisterChildWindow(false, pMod); ::sd::SdNavigatorWrapper::RegisterChildWindow(false, pMod, SfxChildWindowFlags::NEVERHIDE); diff --git a/sd/source/ui/dlg/NotesChildWindow.cxx b/sd/source/ui/dlg/NotesChildWindow.cxx new file mode 100644 index 000000000000..ac26af12eb6b --- /dev/null +++ b/sd/source/ui/dlg/NotesChildWindow.cxx @@ -0,0 +1,33 @@ +/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4; fill-column: 100 -*- */ +/* + * This file is part of the LibreOffice project. + * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. + */ +#include <NotesChildWindow.hxx> +#include <titledockwin.hxx> +#include <ViewShellBase.hxx> +#include <framework/FrameworkHelper.hxx> +#include <app.hrc> +#include <strings.hrc> +#include <sdresid.hxx> + +#include <sfx2/bindings.hxx> +#include <sfx2/dispatch.hxx> + +namespace sd +{ +SFX_IMPL_DOCKINGWINDOW_WITHID(NotesChildWindow, SID_NOTES_WINDOW); + +NotesChildWindow::NotesChildWindow(vcl::Window* pParentWindow, sal_uInt16 nId, + SfxBindings* pBindings, SfxChildWinInfo* pInfo) + : PaneChildWindow(pParentWindow, nId, pBindings, pInfo, STR_BOTTOM_NOTES_PANE_TITLE, + SfxChildAlignment::RIGHT) +{ +} + +} // end of namespace ::sd + +/* vim:set shiftwidth=4 softtabstop=4 expandtab cinoptions=b1,g0,N-s cinkeys+=0=break: */ diff --git a/sd/source/ui/dlg/PaneChildWindows.cxx b/sd/source/ui/dlg/PaneChildWindows.cxx index 320ce2a74b3d..72d9392f6f41 100644 --- a/sd/source/ui/dlg/PaneChildWindows.cxx +++ b/sd/source/ui/dlg/PaneChildWindows.cxx @@ -40,7 +40,8 @@ PaneChildWindow::PaneChildWindow ( sal_uInt16 nId, SfxBindings* pBindings, SfxChildWinInfo* pInfo, - TranslateId pTitleBarResId) + TranslateId pTitleBarResId, + SfxChildAlignment eAlignment) : SfxChildWindow (pParentWindow, nId) { SetWindow( VclPtr<TitledDockingWindow>::Create( @@ -48,7 +49,7 @@ PaneChildWindow::PaneChildWindow ( this, pParentWindow, SdResId(pTitleBarResId))); - SetAlignment(SfxChildAlignment::LEFT); + SetAlignment(eAlignment); SfxDockingWindow* pDockingWindow = static_cast<SfxDockingWindow*>(GetWindow()); pDockingWindow->EnableInput(); pDockingWindow->Initialize(pInfo); @@ -83,7 +84,8 @@ LeftPaneImpressChildWindow::LeftPaneImpressChildWindow ( nId, pBindings, pInfo, - STR_LEFT_PANE_IMPRESS_TITLE) + STR_LEFT_PANE_IMPRESS_TITLE, + SfxChildAlignment::LEFT) { } @@ -98,7 +100,8 @@ LeftPaneDrawChildWindow::LeftPaneDrawChildWindow ( nId, pBindings, pInfo, - STR_LEFT_PANE_DRAW_TITLE) + STR_LEFT_PANE_DRAW_TITLE, + SfxChildAlignment::LEFT) { } diff --git a/sd/source/ui/dlg/PaneShells.cxx b/sd/source/ui/dlg/PaneShells.cxx index 77e411aaedc2..8f8140cf3411 100644 --- a/sd/source/ui/dlg/PaneShells.cxx +++ b/sd/source/ui/dlg/PaneShells.cxx @@ -18,6 +18,7 @@ */ #include <PaneShells.hxx> +#include <NotesChildWindow.hxx> #include <PaneChildWindows.hxx> @@ -74,6 +75,30 @@ LeftDrawPaneShell::~LeftDrawPaneShell() { } +//===== NotesChildWindowShell ================================================== + +static SfxSlot aNotesChildWindowShellSlots_Impl[] = +{ + { 0, SfxGroupId::NONE, SfxSlotMode::NONE, 0, 0, nullptr, nullptr, nullptr, nullptr, nullptr, 0, SfxDisableFlags::NONE, "" } +}; + +SFX_IMPL_INTERFACE(NotesChildWindowShell, SfxShell) + +void NotesChildWindowShell::InitInterface_Impl() +{ + GetStaticInterface()->RegisterChildWindow(::sd::NotesChildWindow::GetChildWindowId()); +} + + +NotesChildWindowShell::NotesChildWindowShell() +{ + SetName("NotesChildWindow"); +} + +NotesChildWindowShell::~NotesChildWindowShell() +{ +} + } // end of namespace ::sd /* vim:set shiftwidth=4 softtabstop=4 expandtab: */ diff --git a/sd/source/ui/framework/factories/BasicPaneFactory.cxx b/sd/source/ui/framework/factories/BasicPaneFactory.cxx index e112ac4c315a..ade1947f4d3c 100644 --- a/sd/source/ui/framework/factories/BasicPaneFactory.cxx +++ b/sd/source/ui/framework/factories/BasicPaneFactory.cxx @@ -25,6 +25,7 @@ #include "ChildWindowPane.hxx" #include "FrameWindowPane.hxx" #include "FullScreenPane.hxx" +#include "NotesChildWindow.hxx" #include <comphelper/servicehelper.hxx> #include <framework/FrameworkHelper.hxx> @@ -46,7 +47,8 @@ namespace { CenterPaneId, FullScreenPaneId, LeftImpressPaneId, - LeftDrawPaneId + LeftDrawPaneId, + NotesChildWindowId }; const sal_Int32 gnConfigurationUpdateStartEvent(0); @@ -123,6 +125,11 @@ BasicPaneFactory::BasicPaneFactory ( aDescriptor.mePaneId = LeftDrawPaneId; mpPaneContainer->push_back(aDescriptor); xCC->addResourceFactory(aDescriptor.msPaneURL, this); + + aDescriptor.msPaneURL = FrameworkHelper::msNotesChildWindowURL; + aDescriptor.mePaneId = NotesChildWindowId; + mpPaneContainer->push_back(aDescriptor); + xCC->addResourceFactory(aDescriptor.msPaneURL, this); } // Register as configuration change listener. @@ -223,6 +230,7 @@ Reference<XResource> SAL_CALL BasicPaneFactory::createResource ( case LeftImpressPaneId: case LeftDrawPaneId: + case NotesChildWindowId: xPane = CreateChildWindowPane( rxPaneId, *iDescriptor); @@ -373,6 +381,11 @@ Reference<XResource> BasicPaneFactory::CreateChildWindowPane ( nChildWindowId = ::sd::LeftPaneDrawChildWindow::GetChildWindowId(); break; + case NotesChildWindowId: + pShell.reset(new NotesChildWindowShell()); + nChildWindowId = ::sd::NotesChildWindow::GetChildWindowId(); + break; + default: break; } diff --git a/sd/source/ui/framework/factories/BasicViewFactory.cxx b/sd/source/ui/framework/factories/BasicViewFactory.cxx index 3ea7e37f1f93..6572bdf30748 100644 --- a/sd/source/ui/framework/factories/BasicViewFactory.cxx +++ b/sd/source/ui/framework/factories/BasicViewFactory.cxx @@ -426,6 +426,8 @@ bool BasicViewFactory::IsCacheable (const std::shared_ptr<ViewDescriptor>& rpDes FrameworkHelper::msSlideSorterURL, FrameworkHelper::msLeftDrawPaneURL)); tmp.push_back(FrameworkHelper::CreateResourceId( FrameworkHelper::msSlideSorterURL, FrameworkHelper::msLeftImpressPaneURL)); + tmp.push_back(FrameworkHelper::CreateResourceId( + FrameworkHelper::msNotesViewURL, FrameworkHelper::msNotesChildWindowURL)); return tmp; }(); diff --git a/sd/source/ui/framework/module/ModuleController.cxx b/sd/source/ui/framework/module/ModuleController.cxx index b064eefcdad7..09094a95a093 100644 --- a/sd/source/ui/framework/module/ModuleController.cxx +++ b/sd/source/ui/framework/module/ModuleController.cxx @@ -52,7 +52,8 @@ ModuleController::ModuleController(const rtl::Reference<::sd::DrawController>& r "com.sun.star.drawing.framework.BasicPaneFactory", { "private:resource/pane/CenterPane", "private:resource/pane/LeftImpressPane", - "private:resource/pane/LeftDrawPane" }); + "private:resource/pane/LeftDrawPane", + "private:resource/pane/NotesChildWindow" }); ProcessFactory( "com.sun.star.drawing.framework.BasicViewFactory", { "private:resource/view/ImpressView", diff --git a/sd/source/ui/framework/tools/FrameworkHelper.cxx b/sd/source/ui/framework/tools/FrameworkHelper.cxx index 0a42649b1c85..4d73865aedc6 100644 --- a/sd/source/ui/framework/tools/FrameworkHelper.cxx +++ b/sd/source/ui/framework/tools/FrameworkHelper.cxx @@ -175,6 +175,7 @@ const OUString FrameworkHelper::msCenterPaneURL( msPaneURLPrefix + "CenterPane") const OUString FrameworkHelper::msFullScreenPaneURL( msPaneURLPrefix + "FullScreenPane"); const OUString FrameworkHelper::msLeftImpressPaneURL( msPaneURLPrefix + "LeftImpressPane"); const OUString FrameworkHelper::msLeftDrawPaneURL( msPaneURLPrefix + "LeftDrawPane"); +const OUString FrameworkHelper::msNotesChildWindowURL( msPaneURLPrefix + "NotesChildWindow"); // View URLs. diff --git a/sd/source/ui/inc/NotesChildWindow.hxx b/sd/source/ui/inc/NotesChildWindow.hxx new file mode 100644 index 000000000000..cec774cd04dd --- /dev/null +++ b/sd/source/ui/inc/NotesChildWindow.hxx @@ -0,0 +1,29 @@ +/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4; fill-column: 100 -*- */ +/* + * This file is part of the LibreOffice project. + * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. + */ +#pragma once + +#include <sfx2/dockwin.hxx> +#include <sfx2/childwin.hxx> +#include <unotools/resmgr.hxx> +#include <PaneChildWindows.hxx> + +namespace sd +{ +class NotesChildWindow final : public PaneChildWindow +{ +public: + SFX_DECL_CHILDWINDOW_WITHID(NotesChildWindow); + + NotesChildWindow(vcl::Window* pParentWindow, sal_uInt16 nId, SfxBindings* pBindings, + SfxChildWinInfo* pInfo); +}; + +} // end of namespace ::sd + +/* vim:set shiftwidth=4 softtabstop=4 expandtab cinoptions=b1,g0,N-s cinkeys+=0=break: */ diff --git a/sd/source/ui/inc/PaneChildWindows.hxx b/sd/source/ui/inc/PaneChildWindows.hxx index f96ede468bac..4e0c7b718f42 100644 --- a/sd/source/ui/inc/PaneChildWindows.hxx +++ b/sd/source/ui/inc/PaneChildWindows.hxx @@ -34,7 +34,8 @@ public: sal_uInt16 nId, SfxBindings* pBindings, SfxChildWinInfo* pInfo, - TranslateId pTitleBarResId); + TranslateId pTitleBarResId, + SfxChildAlignment eAlignment); virtual ~PaneChildWindow() override; }; diff --git a/sd/source/ui/inc/PaneShells.hxx b/sd/source/ui/inc/PaneShells.hxx index 73f24909c2fd..814888c6a2a6 100644 --- a/sd/source/ui/inc/PaneShells.hxx +++ b/sd/source/ui/inc/PaneShells.hxx @@ -58,6 +58,20 @@ public: virtual ~LeftDrawPaneShell() override; }; +class NotesChildWindowShell final : public SfxShell +{ +public: + SFX_DECL_INTERFACE(SD_IF_SDNOTESCHILDWINDOWSHELL) + +private: + /// SfxInterface initializer. + static void InitInterface_Impl(); + +public: + NotesChildWindowShell(); + virtual ~NotesChildWindowShell() override; +}; + } // end of namespace sd /* vim:set shiftwidth=4 softtabstop=4 expandtab: */ diff --git a/sd/source/ui/inc/framework/FrameworkHelper.hxx b/sd/source/ui/inc/framework/FrameworkHelper.hxx index 927b206b9edf..3ae8e0a55af8 100644 --- a/sd/source/ui/inc/framework/FrameworkHelper.hxx +++ b/sd/source/ui/inc/framework/FrameworkHelper.hxx @@ -61,6 +61,7 @@ public: static const OUString msFullScreenPaneURL; static const OUString msLeftImpressPaneURL; static const OUString msLeftDrawPaneURL; + static const OUString msNotesChildWindowURL; // URLs of frequently used views. static constexpr OUStringLiteral msViewURLPrefix = u"private:resource/view/"; diff --git a/sd/source/ui/inc/framework/factories/BasicPaneFactory.hxx b/sd/source/ui/inc/framework/factories/BasicPaneFactory.hxx index fb1ac2cf8236..ca05c1b4ee15 100644 --- a/sd/source/ui/inc/framework/factories/BasicPaneFactory.hxx +++ b/sd/source/ui/inc/framework/factories/BasicPaneFactory.hxx @@ -48,6 +48,7 @@ typedef comphelper::WeakComponentImplHelper < private:resource/pane/FullScreenPane private:resource/pane/LeftImpressPane private:resource/pane/LeftDrawPane + private:resource/pane/NotesChildWindow There are two left panes because this is (seems to be) the only way to show different titles for the left pane in Draw and Impress. */ diff --git a/sd/source/ui/view/ViewShellBase.cxx b/sd/source/ui/view/ViewShellBase.cxx index 9099988969d8..c1b7f33f4247 100644 --- a/sd/source/ui/view/ViewShellBase.cxx +++ b/sd/source/ui/view/ViewShellBase.cxx @@ -628,6 +628,11 @@ void ViewShellBase::Execute (SfxRequest& rRequest) framework::FrameworkHelper::msSlideSorterURL); break; + case SID_NOTES_WINDOW: + mpImpl->SetPaneVisibility(rRequest, framework::FrameworkHelper::msNotesChildWindowURL, + framework::FrameworkHelper::msNotesViewURL); + break; + case SID_TOGGLE_TABBAR_VISIBILITY: { SdOptions* pOptions = SD_MOD()->GetSdOptions(GetDocument()->GetDocumentType()); @@ -1277,6 +1282,12 @@ void ViewShellBase::Implementation::GetSlotState (SfxItemSet& rSet) bState = xConfiguration->hasResource(xResourceId); break; + case SID_NOTES_WINDOW: + xResourceId = ResourceId::create( + xContext, FrameworkHelper::msNotesChildWindowURL); + bState = xConfiguration->hasResource(xResourceId); + break; + case SID_DRAWINGMODE: case SID_NORMAL_MULTI_PANE_GUI: case SID_SLIDE_MASTER_MODE: diff --git a/sd/source/ui/view/drvwshrg.cxx b/sd/source/ui/view/drvwshrg.cxx index 792d5b833a54..9871db2e2de7 100644 --- a/sd/source/ui/view/drvwshrg.cxx +++ b/sd/source/ui/view/drvwshrg.cxx @@ -40,6 +40,7 @@ #include <SpellDialogChildWindow.hxx> #include <GraphicViewShell.hxx> #include <AnimationChildWindow.hxx> +#include <NotesChildWindow.hxx> using namespace sd; #define ShellClass_DrawViewShell @@ -77,6 +78,7 @@ void DrawViewShell::InitInterface_Impl() GetStaticInterface()->RegisterChildWindow( sfx2::sidebar::SidebarChildWindow::GetChildWindowId()); GetStaticInterface()->RegisterChildWindow(DevelopmentToolChildWindow::GetChildWindowId()); + GetStaticInterface()->RegisterChildWindow(::sd::NotesChildWindow::GetChildWindowId()); } // SdGraphicViewShell @@ -103,6 +105,7 @@ void GraphicViewShell::InitInterface_Impl() GetStaticInterface()->RegisterChildWindow( sfx2::sidebar::SidebarChildWindow::GetChildWindowId()); GetStaticInterface()->RegisterChildWindow(DevelopmentToolChildWindow::GetChildWindowId()); + GetStaticInterface()->RegisterChildWindow(::sd::NotesChildWindow::GetChildWindowId()); } } // end of namespace sd diff --git a/sd/uiconfig/simpress/menubar/menubar.xml b/sd/uiconfig/simpress/menubar/menubar.xml index 78489c56383e..ba1cc4868cc0 100644 --- a/sd/uiconfig/simpress/menubar/menubar.xml +++ b/sd/uiconfig/simpress/menubar/menubar.xml @@ -125,6 +125,7 @@ <menu:menuitem menu:id=".uno:StatusBarVisible" menu:style="text"/> <menu:menuitem menu:id=".uno:LeftPaneImpress" menu:style="text"/> <menu:menuitem menu:id=".uno:ToggleTabBarVisibility" menu:style="text"/> + <menu:menuitem menu:id=".uno:NotesChildWindow" menu:style="text"/> <menu:menuseparator/> <menu:menuitem menu:id=".uno:ShowRuler"/> <menu:menu menu:id=".uno:GridMenu"> |