diff options
author | Michael Meeks <michael.meeks@suse.com> | 2013-04-10 17:25:32 +0100 |
---|---|---|
committer | Michael Meeks <michael.meeks@suse.com> | 2013-04-10 17:36:40 +0100 |
commit | 5dfe4ff3adff1193965572522d630f334e730129 (patch) | |
tree | b3aa9a433cfa84742aebfc1de07882c45ba85fda | |
parent | 21346ce5d21ee34b420159d9a737093b0a5cfe78 (diff) |
start of slide grouping UI in the slide-sorter.
Change-Id: If19ee509b698cb69e8e7313837a4a5428f8b3d1d
-rw-r--r-- | sd/Library_sdui.mk | 1 | ||||
-rw-r--r-- | sd/UI_simpress.mk | 1 | ||||
-rw-r--r-- | sd/inc/sdabstdlg.hxx | 3 | ||||
-rw-r--r-- | sd/source/ui/dlg/GroupSlidesDialog.cxx | 61 | ||||
-rw-r--r-- | sd/source/ui/dlg/GroupSlidesDialog.hxx | 52 | ||||
-rw-r--r-- | sd/source/ui/dlg/sddlgfact.cxx | 8 | ||||
-rw-r--r-- | sd/source/ui/dlg/sddlgfact.hxx | 5 | ||||
-rw-r--r-- | sd/source/ui/slidesorter/controller/SlsSlotManager.cxx | 42 | ||||
-rw-r--r-- | sd/source/ui/slidesorter/inc/controller/SlsSlotManager.hxx | 5 | ||||
-rw-r--r-- | sd/uiconfig/simpress/ui/groupslides.ui | 306 |
10 files changed, 478 insertions, 6 deletions
diff --git a/sd/Library_sdui.mk b/sd/Library_sdui.mk index 14f4fbb7625c..af2ba0706fba 100644 --- a/sd/Library_sdui.mk +++ b/sd/Library_sdui.mk @@ -106,6 +106,7 @@ $(eval $(call gb_Library_add_exception_objects,sdui,\ sd/source/ui/dlg/tpoption \ sd/source/ui/dlg/vectdlg \ sd/source/ui/dlg/PhotoAlbumDialog \ + sd/source/ui/dlg/GroupSlidesDialog \ )) # $(WORKDIR)/inc/sd/sddll0.hxx : diff --git a/sd/UI_simpress.mk b/sd/UI_simpress.mk index d6cf6e08c1bc..513f292ab957 100644 --- a/sd/UI_simpress.mk +++ b/sd/UI_simpress.mk @@ -13,6 +13,7 @@ $(eval $(call gb_UI_add_uifiles,modules/simpress,\ sd/uiconfig/simpress/ui/presentationdialog \ sd/uiconfig/simpress/ui/printeroptions \ sd/uiconfig/simpress/ui/photoalbum \ + sd/uiconfig/simpress/ui/groupslides \ )) # vim: set noet sw=4 ts=4: diff --git a/sd/inc/sdabstdlg.hxx b/sd/inc/sdabstdlg.hxx index 21c78b7aadba..a42a4816c643 100644 --- a/sd/inc/sdabstdlg.hxx +++ b/sd/inc/sdabstdlg.hxx @@ -213,7 +213,8 @@ public: virtual CreateTabPage GetSdOptionsMiscTabPageCreatorFunc() = 0; virtual CreateTabPage GetSdOptionsSnapTabPageCreatorFunc() = 0; - virtual VclAbstractDialog* CreateSdPhotoAlbumDialog( ::Window* pWindow, SdDrawDocument* pDoc) = 0; + virtual VclAbstractDialog* CreateSdPhotoAlbumDialog( ::Window* pWindow, SdDrawDocument* pDoc) = 0; + virtual VclAbstractDialog* CreateSdGroupDialog( ::Window* pWindow, SdDrawDocument *pDoc, const std::vector< SdPage * > &rPagesToGroup ) = 0; protected: ~SdAbstractDialogFactory() {} diff --git a/sd/source/ui/dlg/GroupSlidesDialog.cxx b/sd/source/ui/dlg/GroupSlidesDialog.cxx new file mode 100644 index 000000000000..d6c3cb2a69ba --- /dev/null +++ b/sd/source/ui/dlg/GroupSlidesDialog.cxx @@ -0,0 +1,61 @@ +/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */ +/* +* 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 "GroupSlidesDialog.hxx" + +#include <com/sun/star/graphic/GraphicProvider.hpp> +#include <com/sun/star/graphic/XGraphicProvider.hpp> +#include <comphelper/namedvaluecollection.hxx> +#include <comphelper/processfactory.hxx> +#include <comphelper/componentcontext.hxx> + +#include <com/sun/star/ui/dialogs/TemplateDescription.hpp> +#include <com/sun/star/drawing/XMasterPagesSupplier.hpp> +#include <com/sun/star/drawing/XDrawPages.hpp> +#include <com/sun/star/drawing/XDrawPage.hpp> +#include <com/sun/star/drawing/XDrawPagesSupplier.hpp> + +#include <sfx2/filedlghelper.hxx> +#include <tools/urlobj.hxx> + +#include <unotools/pathoptions.hxx> +#include <unotools/useroptions.hxx> +#include <unotools/ucbstreamhelper.hxx> + +#include <vcl/msgbox.hxx> + +using namespace ::com::sun::star; +using namespace ::com::sun::star::uno; +using namespace ::com::sun::star::presentation; + +namespace sd +{ + +SdGroupSlidesDialog::SdGroupSlidesDialog(Window* pWindow, SdDrawDocument* pActDoc, + const std::vector< SdPage * > &rPages ) + : ModalDialog(pWindow, "GroupSlidesDialog", "modules/simpress/ui/groupslides.ui"), + pDoc(pActDoc), + maPages( rPages ) +{ + get(pCancelBtn, "cancel_btn"); + pCancelBtn->SetClickHdl(LINK(this, SdGroupSlidesDialog, CancelHdl)); +} + +SdGroupSlidesDialog::~SdGroupSlidesDialog() +{ +} + +IMPL_LINK_NOARG(SdGroupSlidesDialog, CancelHdl) +{ + EndDialog(0); + return 0; +} + +} +/* vim:set shiftwidth=4 softtabstop=4 expandtab: */ diff --git a/sd/source/ui/dlg/GroupSlidesDialog.hxx b/sd/source/ui/dlg/GroupSlidesDialog.hxx new file mode 100644 index 000000000000..ed5c9c8fb796 --- /dev/null +++ b/sd/source/ui/dlg/GroupSlidesDialog.hxx @@ -0,0 +1,52 @@ +/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */ +/* +* 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/. +*/ + +#ifndef _SD_GROUPSLIDESDIALOG_HXX +#define _SD_GROUPSLIDESDIALOG_HXX + +#include "tools/link.hxx" +#include "sdpage.hxx" +#include "pres.hxx" +#include "drawdoc.hxx" + +#include <vcl/lstbox.hxx> +#include <vcl/fixed.hxx> +#include <vcl/button.hxx> +#include <vcl/dialog.hxx> +#include <vcl/field.hxx> +#include <vcl/graphicfilter.hxx> +#include <svx/svdotext.hxx> + +class SdrTextObj; +class SdDrawDocument; +class SdPage; + +namespace sd +{ + +class SdGroupSlidesDialog : public ModalDialog +{ +public: + SdGroupSlidesDialog(Window* pWindow, SdDrawDocument* pActDoc, + const std::vector< SdPage * > &rPages ); + ~SdGroupSlidesDialog(); + +private: + CancelButton* pCancelBtn; + + SdDrawDocument* pDoc; + std::vector< SdPage * > maPages; + + DECL_LINK(CancelHdl, void*); +}; + +} + +#endif // _SD_GROUPSLIDESDIALOG_HXX +/* vim:set shiftwidth=4 softtabstop=4 expandtab: */ diff --git a/sd/source/ui/dlg/sddlgfact.cxx b/sd/source/ui/dlg/sddlgfact.cxx index 0103a32b7ac2..312de2273e67 100644 --- a/sd/source/ui/dlg/sddlgfact.cxx +++ b/sd/source/ui/dlg/sddlgfact.cxx @@ -47,6 +47,7 @@ #include "masterlayoutdlg.hxx" #include "headerfooterdlg.hxx" #include "PhotoAlbumDialog.hxx" +#include "GroupSlidesDialog.hxx" IMPL_ABSTDLG_BASE(SdVclAbstractDialog_Impl); IMPL_ABSTDLG_BASE(AbstractCopyDlg_Impl); @@ -576,7 +577,12 @@ AbstractHeaderFooterDialog* SdAbstractDialogFactory_Impl::CreateHeaderFooterDial VclAbstractDialog * SdAbstractDialogFactory_Impl::CreateSdPhotoAlbumDialog( ::Window* pWindow, SdDrawDocument* pDoc ) { - return new SdVclAbstractDialog_Impl( new ::sd::SdPhotoAlbumDialog( pWindow, pDoc ) ); + return new SdVclAbstractDialog_Impl( new ::sd::SdPhotoAlbumDialog( pWindow, pDoc ) ); +} + +VclAbstractDialog* SdAbstractDialogFactory_Impl::CreateSdGroupDialog( ::Window* pWindow, SdDrawDocument *pDoc, const std::vector< SdPage * > &rPagesToGroup ) +{ + return new SdVclAbstractDialog_Impl( new ::sd::SdGroupSlidesDialog( pWindow, pDoc, rPagesToGroup ) ); } /* vim:set shiftwidth=4 softtabstop=4 expandtab: */ diff --git a/sd/source/ui/dlg/sddlgfact.hxx b/sd/source/ui/dlg/sddlgfact.hxx index bd44d54e5022..337e4da77d31 100644 --- a/sd/source/ui/dlg/sddlgfact.hxx +++ b/sd/source/ui/dlg/sddlgfact.hxx @@ -276,10 +276,9 @@ public: virtual SfxAbstractDialog* CreatSdActionDialog( ::Window* pParent, const SfxItemSet* pAttr, ::sd::View* pView ); virtual AbstractSdVectorizeDlg* CreateSdVectorizeDlg( ::Window* pParent, const Bitmap& rBmp, ::sd::DrawDocShell* pDocShell ); virtual AbstractSdPublishingDlg* CreateSdPublishingDlg( ::Window* pWindow, DocumentType eDocType); - virtual VclAbstractDialog* CreateSdPhotoAlbumDialog( ::Window* pWindow, SdDrawDocument* pDoc); - - virtual VclAbstractDialog* CreateMasterLayoutDialog( ::Window* pParent, + virtual VclAbstractDialog* CreateSdGroupDialog( ::Window* pWindow, SdDrawDocument *pDoc, const std::vector< SdPage * > &rPagesToGroup ); + virtual VclAbstractDialog* CreateMasterLayoutDialog( ::Window* pParent, SdDrawDocument* pDoc, SdPage* ); // add for MasterLayoutDialog diff --git a/sd/source/ui/slidesorter/controller/SlsSlotManager.cxx b/sd/source/ui/slidesorter/controller/SlsSlotManager.cxx index 0b6b060ebd0e..a500dee4d748 100644 --- a/sd/source/ui/slidesorter/controller/SlsSlotManager.cxx +++ b/sd/source/ui/slidesorter/controller/SlsSlotManager.cxx @@ -65,6 +65,7 @@ #include "glob.hrc" #include "unmodpg.hxx" #include "DrawViewShell.hxx" +#include "sdabstdlg.hxx" #include <sfx2/request.hxx> #include <sfx2/viewfrm.hxx> @@ -143,8 +144,11 @@ void SlotManager::FuTemporary (SfxRequest& rRequest) break; case SID_GROUP_SLIDES: + GroupSlides(); + break; + case SID_UNGROUP_SLIDES: - fprintf (stderr, "Execute group / un-group\n"); + UnGroupSlides(); break; case SID_PAGES_PER_ROW: @@ -1266,6 +1270,42 @@ SlideExclusionState GetSlideExclusionState (model::PageEnumeration& rPageSet) } // end of anonymous namespace +void SlotManager::GroupSlides() +{ + PageKind ePageKind = mrSlideSorter.GetModel().GetPageType(); + View* pDrView = &mrSlideSorter.GetView(); + + fprintf (stderr, "Execute -group\n"); + + model::PageEnumeration aSelectedPages ( + model::PageEnumerationProvider::CreateSelectedPagesEnumeration( + mrSlideSorter.GetModel())); + std::vector< SdPage * > aPagesToGroup; + while (aSelectedPages.HasMoreElements()) + { + SdPage* pPage = aSelectedPages.GetNextElement()->GetPage(); + aPagesToGroup.push_back( pPage ); + } + if( aPagesToGroup.size() > 0 ) + { + SdAbstractDialogFactory* pFact = SdAbstractDialogFactory::Create(); + VclAbstractDialog *pDialog = pFact->CreateSdGroupDialog( + mrSlideSorter.GetContentWindow().get(), /* TESTME: window ? */ + mrSlideSorter.GetModel().GetDocument(), + aPagesToGroup); + if ( pDialog->Execute() == RET_OK ) + { +// mrSlideSorter.Redraw(); // FIXME ... + } + delete pDialog; + } +} + +void SlotManager::UnGroupSlides() +{ + fprintf (stderr, "Execute un-group\n"); +} + } } } // end of namespace ::sd::slidesorter::controller /* vim:set shiftwidth=4 softtabstop=4 expandtab: */ diff --git a/sd/source/ui/slidesorter/inc/controller/SlsSlotManager.hxx b/sd/source/ui/slidesorter/inc/controller/SlsSlotManager.hxx index 5d76da661ce8..b706d51ba985 100644 --- a/sd/source/ui/slidesorter/inc/controller/SlsSlotManager.hxx +++ b/sd/source/ui/slidesorter/inc/controller/SlsSlotManager.hxx @@ -105,6 +105,11 @@ private: This can be the current selection or the insertion indicator. */ sal_Int32 GetInsertionPosition (void); + + /// Handle SID_GROUP_SLIDES + void GroupSlides(); + /// Handle SID_UNGROUP_SLIDES + void UnGroupSlides(); }; } } } // end of namespace ::sd::slidesorter::controller diff --git a/sd/uiconfig/simpress/ui/groupslides.ui b/sd/uiconfig/simpress/ui/groupslides.ui new file mode 100644 index 000000000000..bb209bc237ba --- /dev/null +++ b/sd/uiconfig/simpress/ui/groupslides.ui @@ -0,0 +1,306 @@ +<?xml version="1.0" encoding="UTF-8"?> +<interface> + <!-- interface-requires gtk+ 3.0 --> + <object class="GtkDialog" id="GroupSlidesDialog"> + <property name="can_focus">False</property> + <property name="border_width">6</property> + <property name="title" translatable="yes">Slide Grouping</property> + <property name="resizable">False</property> + <property name="window_position">center</property> + <property name="type_hint">dialog</property> + <property name="has_resize_grip">False</property> + <child internal-child="vbox"> + <object class="GtkBox" id="dialog-vbox1"> + <property name="can_focus">False</property> + <property name="orientation">vertical</property> + <property name="spacing">12</property> + <child internal-child="action_area"> + <object class="GtkButtonBox" id="dialog-action_area1"> + <property name="can_focus">False</property> + <property name="layout_style">end</property> + <child> + <object class="GtkButton" id="create_btn"> + <property name="label" translatable="yes">Add to group</property> + <property name="use_action_appearance">False</property> + <property name="visible">True</property> + <property name="can_focus">True</property> + <property name="can_default">True</property> + <property name="has_default">True</property> + <property name="receives_default">True</property> + <property name="use_action_appearance">False</property> + </object> + <packing> + <property name="expand">False</property> + <property name="fill">True</property> + <property name="position">0</property> + </packing> + </child> + <child> + <object class="GtkButton" id="cancel_btn"> + <property name="label">gtk-cancel</property> + <property name="use_action_appearance">False</property> + <property name="visible">True</property> + <property name="can_focus">True</property> + <property name="receives_default">True</property> + <property name="use_action_appearance">False</property> + <property name="use_stock">True</property> + </object> + <packing> + <property name="expand">False</property> + <property name="fill">True</property> + <property name="position">1</property> + </packing> + </child> + </object> + <packing> + <property name="expand">False</property> + <property name="fill">True</property> + <property name="pack_type">end</property> + <property name="position">0</property> + </packing> + </child> + <child> + <object class="GtkBox" id="box1"> + <property name="visible">True</property> + <property name="can_focus">False</property> + <property name="orientation">vertical</property> + <property name="spacing">12</property> + <child> + <object class="GtkFrame" id="frame1"> + <property name="visible">True</property> + <property name="can_focus">False</property> + <property name="label_xalign">0</property> + <property name="shadow_type">none</property> + <child> + <object class="GtkAlignment" id="alignment1"> + <property name="visible">True</property> + <property name="can_focus">False</property> + <property name="top_padding">6</property> + <property name="left_padding">12</property> + <child> + <object class="GtkGrid" id="grid4"> + <property name="visible">True</property> + <property name="can_focus">False</property> + <property name="hexpand">True</property> + <property name="row_spacing">6</property> + <child> + <object class="GtkLabel" id="label5"> + <property name="visible">True</property> + <property name="can_focus">False</property> + <property name="label" translatable="yes">Group:</property> + <property name="use_underline">True</property> + </object> + <packing> + <property name="left_attach">0</property> + <property name="top_attach">0</property> + <property name="width">1</property> + <property name="height">1</property> + </packing> + </child> + <child> + <object class="GtkLabel" id="label6"> + <property name="visible">True</property> + <property name="can_focus">False</property> + <property name="label" translatable="yes">Keywords</property> + <property name="use_underline">True</property> + </object> + <packing> + <property name="left_attach">0</property> + <property name="top_attach">2</property> + <property name="width">1</property> + <property name="height">1</property> + </packing> + </child> + <child> + <object class="GtkComboBoxText" id="comboboxtext1"> + <property name="visible">True</property> + <property name="can_focus">False</property> + <property name="hexpand">True</property> + </object> + <packing> + <property name="left_attach">1</property> + <property name="top_attach">0</property> + <property name="width">1</property> + <property name="height">1</property> + </packing> + </child> + <child> + <object class="GtkLabel" id="label3"> + <property name="visible">True</property> + <property name="can_focus">False</property> + <property name="label" translatable="yes">Title</property> + <property name="justify">right</property> + </object> + <packing> + <property name="left_attach">0</property> + <property name="top_attach">1</property> + <property name="width">1</property> + <property name="height">1</property> + </packing> + </child> + <child> + <placeholder/> + </child> + <child> + <placeholder/> + </child> + <child> + <placeholder/> + </child> + <child> + <object class="GtkEntry" id="entry1"> + <property name="visible">True</property> + <property name="can_focus">True</property> + <property name="invisible_char">●</property> + </object> + <packing> + <property name="left_attach">1</property> + <property name="top_attach">1</property> + <property name="width">1</property> + <property name="height">1</property> + </packing> + </child> + <child> + <object class="GtkEntry" id="entry2"> + <property name="visible">True</property> + <property name="can_focus">True</property> + <property name="invisible_char">●</property> + </object> + <packing> + <property name="left_attach">1</property> + <property name="top_attach">2</property> + <property name="width">1</property> + <property name="height">1</property> + </packing> + </child> + </object> + </child> + </object> + </child> + <child type="label"> + <object class="GtkLabel" id="label1"> + <property name="visible">True</property> + <property name="can_focus">False</property> + <property name="label" translatable="yes">Select Group to add to:</property> + <attributes> + <attribute name="weight" value="bold"/> + </attributes> + </object> + </child> + </object> + <packing> + <property name="expand">True</property> + <property name="fill">False</property> + <property name="position">0</property> + </packing> + </child> + <child> + <object class="GtkFrame" id="frame2"> + <property name="visible">True</property> + <property name="can_focus">False</property> + <property name="label_xalign">0</property> + <property name="shadow_type">none</property> + <child> + <object class="GtkAlignment" id="alignment2"> + <property name="visible">True</property> + <property name="can_focus">False</property> + <property name="top_padding">6</property> + <property name="left_padding">12</property> + <child> + <object class="GtkGrid" id="grid5"> + <property name="visible">True</property> + <property name="can_focus">False</property> + <property name="column_spacing">12</property> + <child> + <object class="GtkRadioButton" id="rb_update_automatic"> + <property name="label" translatable="yes">Automatic Update</property> + <property name="use_action_appearance">False</property> + <property name="visible">True</property> + <property name="can_focus">True</property> + <property name="receives_default">False</property> + <property name="use_action_appearance">False</property> + <property name="xalign">0</property> + <property name="active">True</property> + <property name="draw_indicator">True</property> + </object> + <packing> + <property name="left_attach">0</property> + <property name="top_attach">1</property> + <property name="width">1</property> + <property name="height">1</property> + </packing> + </child> + <child> + <object class="GtkRadioButton" id="rb_update_manual"> + <property name="label" translatable="yes">Notify for Manual Update</property> + <property name="use_action_appearance">False</property> + <property name="visible">True</property> + <property name="can_focus">True</property> + <property name="receives_default">False</property> + <property name="use_action_appearance">False</property> + <property name="xalign">0</property> + <property name="active">True</property> + <property name="draw_indicator">True</property> + </object> + <packing> + <property name="left_attach">0</property> + <property name="top_attach">2</property> + <property name="width">1</property> + <property name="height">1</property> + </packing> + </child> + <child> + <object class="GtkRadioButton" id="rb_update_never"> + <property name="label" translatable="yes">Never Update</property> + <property name="use_action_appearance">False</property> + <property name="visible">True</property> + <property name="can_focus">True</property> + <property name="receives_default">False</property> + <property name="use_action_appearance">False</property> + <property name="xalign">0</property> + <property name="active">True</property> + <property name="draw_indicator">True</property> + </object> + <packing> + <property name="left_attach">0</property> + <property name="top_attach">0</property> + <property name="width">1</property> + <property name="height">1</property> + </packing> + </child> + </object> + </child> + </object> + </child> + <child type="label"> + <object class="GtkLabel" id="label2"> + <property name="visible">True</property> + <property name="can_focus">False</property> + <property name="label" translatable="yes">Select updating type:</property> + <attributes> + <attribute name="weight" value="bold"/> + </attributes> + </object> + </child> + </object> + <packing> + <property name="expand">False</property> + <property name="fill">True</property> + <property name="position">1</property> + </packing> + </child> + </object> + <packing> + <property name="expand">True</property> + <property name="fill">True</property> + <property name="position">1</property> + </packing> + </child> + </object> + </child> + <action-widgets> + <action-widget response="0">create_btn</action-widget> + <action-widget response="0">cancel_btn</action-widget> + </action-widgets> + </object> +</interface> |