Line data Source code
1 : /* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
2 : /*
3 : * This file is part of the LibreOffice project.
4 : *
5 : * This Source Code Form is subject to the terms of the Mozilla Public
6 : * License, v. 2.0. If a copy of the MPL was not distributed with this
7 : * file, You can obtain one at http://mozilla.org/MPL/2.0/.
8 : *
9 : * This file incorporates work covered by the following license notice:
10 : *
11 : * Licensed to the Apache Software Foundation (ASF) under one or more
12 : * contributor license agreements. See the NOTICE file distributed
13 : * with this work for additional information regarding copyright
14 : * ownership. The ASF licenses this file to you under the Apache
15 : * License, Version 2.0 (the "License"); you may not use this file
16 : * except in compliance with the License. You may obtain a copy of
17 : * the License at http://www.apache.org/licenses/LICENSE-2.0 .
18 : */
19 : #ifndef INCLUDED_CUI_SOURCE_INC_CFG_HXX
20 : #define INCLUDED_CUI_SOURCE_INC_CFG_HXX
21 :
22 : #include <vcl/fixed.hxx>
23 : #include <vcl/group.hxx>
24 : #include <vcl/layout.hxx>
25 : #include <vcl/lstbox.hxx>
26 : #include <vcl/menubtn.hxx>
27 : #include <vcl/toolbox.hxx>
28 : #include <svtools/treelistbox.hxx>
29 : #include <svtools/svmedit2.hxx>
30 : #include <svtools/svmedit.hxx>
31 : #include <com/sun/star/beans/XPropertySet.hpp>
32 : #include <com/sun/star/container/XIndexContainer.hpp>
33 : #include <com/sun/star/container/XNameAccess.hpp>
34 : #include <com/sun/star/frame/XModuleManager.hpp>
35 : #include <com/sun/star/ui/XUIConfigurationListener.hpp>
36 : #include <com/sun/star/ui/XUIConfigurationManager.hpp>
37 : #include <com/sun/star/ui/XImageManager.hpp>
38 : #include <com/sun/star/graphic/XGraphicProvider.hpp>
39 : #include <com/sun/star/frame/XFrame.hpp>
40 : #include <com/sun/star/frame/XStorable.hpp>
41 : #include <com/sun/star/uno/XComponentContext.hpp>
42 : #include <com/sun/star/lang/XSingleComponentFactory.hpp>
43 :
44 : #include <sfx2/tabdlg.hxx>
45 : #include <vector>
46 : #include <vcl/msgbox.hxx>
47 :
48 : #include "selector.hxx"
49 :
50 : class SvxConfigEntry;
51 : class SvxConfigPage;
52 : class SvxMenuConfigPage;
53 : class SvxToolbarConfigPage;
54 :
55 : typedef std::vector< SvxConfigEntry* > SvxEntries;
56 :
57 0 : class SvxConfigDialog : public SfxTabDialog
58 : {
59 : private:
60 : ::com::sun::star::uno::Reference< ::com::sun::star::frame::XFrame > m_xFrame;
61 : sal_uInt16 m_nMenusPageId;
62 : sal_uInt16 m_nKeyboardPageId;
63 : sal_uInt16 m_nToolbarsPageId;
64 : sal_uInt16 m_nEventsPageId;
65 :
66 : public:
67 : SvxConfigDialog( vcl::Window*, const SfxItemSet* );
68 :
69 : virtual void PageCreated( sal_uInt16 nId, SfxTabPage &rPage ) SAL_OVERRIDE;
70 : void SetFrame(const ::com::sun::star::uno::Reference< ::com::sun::star::frame::XFrame >& xFrame);
71 : };
72 :
73 : class SaveInData : public ImageProvider
74 : {
75 : private:
76 :
77 : bool bModified;
78 :
79 : bool bDocConfig;
80 : bool bReadOnly;
81 :
82 : ::com::sun::star::uno::Reference
83 : < com::sun::star::ui::XUIConfigurationManager > m_xCfgMgr;
84 :
85 : ::com::sun::star::uno::Reference
86 : < com::sun::star::ui::XUIConfigurationManager > m_xParentCfgMgr;
87 :
88 : ::com::sun::star::uno::Reference
89 : < com::sun::star::ui::XImageManager > m_xImgMgr;
90 :
91 : ::com::sun::star::uno::Reference
92 : < com::sun::star::ui::XImageManager > m_xParentImgMgr;
93 :
94 : static ::com::sun::star::uno::Reference
95 : < com::sun::star::ui::XImageManager >* xDefaultImgMgr;
96 :
97 : public:
98 :
99 : SaveInData(
100 : const ::com::sun::star::uno::Reference <
101 : ::com::sun::star::ui::XUIConfigurationManager >& xCfgMgr,
102 : const ::com::sun::star::uno::Reference <
103 : ::com::sun::star::ui::XUIConfigurationManager >& xParentCfgMgr,
104 : const OUString& aModuleId,
105 : bool docConfig );
106 :
107 0 : virtual ~SaveInData() {}
108 :
109 : bool PersistChanges(
110 : const com::sun::star::uno::Reference
111 : < com::sun::star::uno::XInterface >& xManager );
112 :
113 0 : void SetModified( bool bValue = true ) { bModified = bValue; }
114 0 : bool IsModified( ) { return bModified; }
115 :
116 0 : bool IsReadOnly( ) { return bReadOnly; }
117 0 : bool IsDocConfig( ) { return bDocConfig; }
118 :
119 : ::com::sun::star::uno::Reference
120 : < ::com::sun::star::ui::XUIConfigurationManager >
121 0 : GetConfigManager() { return m_xCfgMgr; };
122 :
123 : ::com::sun::star::uno::Reference
124 : < ::com::sun::star::ui::XUIConfigurationManager >
125 0 : GetParentConfigManager() { return m_xParentCfgMgr; };
126 :
127 : ::com::sun::star::uno::Reference
128 : < ::com::sun::star::ui::XImageManager >
129 0 : GetImageManager() { return m_xImgMgr; };
130 :
131 : ::com::sun::star::uno::Reference
132 : < ::com::sun::star::ui::XImageManager >
133 0 : GetParentImageManager() { return m_xParentImgMgr; };
134 :
135 : ::com::sun::star::uno::Reference
136 : < com::sun::star::container::XNameAccess > m_xCommandToLabelMap;
137 :
138 : com::sun::star::uno::Sequence
139 : < com::sun::star::beans::PropertyValue > m_aSeparatorSeq;
140 :
141 : Image GetImage( const OUString& rCommandURL ) SAL_OVERRIDE;
142 :
143 : virtual bool HasURL( const OUString& aURL ) = 0;
144 : virtual bool HasSettings() = 0;
145 : virtual SvxEntries* GetEntries() = 0;
146 : virtual void SetEntries( SvxEntries* ) = 0;
147 : virtual void Reset() = 0;
148 : virtual bool Apply() = 0;
149 : };
150 :
151 : class MenuSaveInData : public SaveInData
152 : {
153 : private:
154 :
155 : OUString m_aMenuResourceURL;
156 : OUString m_aDescriptorContainer;
157 :
158 : ::com::sun::star::uno::Reference
159 : < com::sun::star::container::XIndexAccess > m_xMenuSettings;
160 :
161 : SvxConfigEntry* pRootEntry;
162 :
163 :
164 : static MenuSaveInData* pDefaultData; ///< static holder of the default menu data
165 :
166 0 : static void SetDefaultData( MenuSaveInData* pData ) {pDefaultData = pData;}
167 0 : static MenuSaveInData* GetDefaultData() { return pDefaultData; }
168 :
169 : void Apply( bool bDefault );
170 :
171 : void Apply(
172 : SvxConfigEntry* pRootEntry,
173 : com::sun::star::uno::Reference<
174 : com::sun::star::container::XIndexContainer >& rNewMenuBar,
175 : com::sun::star::uno::Reference<
176 : com::sun::star::lang::XSingleComponentFactory >& rFactory,
177 : SvTreeListEntry *pParent = NULL );
178 :
179 : void ApplyMenu(
180 : com::sun::star::uno::Reference<
181 : com::sun::star::container::XIndexContainer >& rNewMenuBar,
182 : com::sun::star::uno::Reference<
183 : com::sun::star::lang::XSingleComponentFactory >& rFactory,
184 : SvxConfigEntry *pMenuData = NULL );
185 :
186 : bool LoadSubMenus(
187 : const ::com::sun::star::uno::Reference<
188 : com::sun::star::container::XIndexAccess >& xMenuBarSettings,
189 : const OUString& rBaseTitle, SvxConfigEntry* pParentData );
190 :
191 : public:
192 :
193 : MenuSaveInData(
194 : const ::com::sun::star::uno::Reference <
195 : ::com::sun::star::ui::XUIConfigurationManager >&,
196 : const ::com::sun::star::uno::Reference <
197 : ::com::sun::star::ui::XUIConfigurationManager >&,
198 : const OUString& aModuleId,
199 : bool docConfig );
200 :
201 : virtual ~MenuSaveInData();
202 :
203 : /// methods inherited from SaveInData
204 : SvxEntries* GetEntries() SAL_OVERRIDE;
205 : void SetEntries( SvxEntries* ) SAL_OVERRIDE;
206 0 : bool HasURL( const OUString& URL ) SAL_OVERRIDE { (void)URL; return false; }
207 0 : bool HasSettings() SAL_OVERRIDE { return m_xMenuSettings.is(); }
208 : void Reset() SAL_OVERRIDE;
209 : bool Apply() SAL_OVERRIDE;
210 : };
211 :
212 : class SvxConfigEntry
213 : {
214 : private:
215 :
216 : /// common properties
217 : sal_uInt16 nId;
218 : OUString aHelpText;
219 : OUString aLabel;
220 : OUString aCommand;
221 : OUString aHelpURL;
222 :
223 : bool bPopUp;
224 : bool bStrEdited;
225 : bool bIsUserDefined;
226 : bool bIsMain;
227 : bool bIsParentData;
228 :
229 : /// toolbar specific properties
230 : bool bIsVisible;
231 : sal_Int32 nStyle;
232 :
233 : ::com::sun::star::uno::Reference<
234 : ::com::sun::star::graphic::XGraphic > xBackupGraphic;
235 :
236 : SvxEntries *mpEntries;
237 :
238 : public:
239 :
240 : SvxConfigEntry( const OUString& rDisplayName,
241 : const OUString& rCommandURL,
242 : bool bPopup = false,
243 : bool bParentData = false );
244 :
245 0 : SvxConfigEntry()
246 : :
247 : nId( 0 ),
248 : bPopUp( false ),
249 : bStrEdited( false ),
250 : bIsUserDefined( false ),
251 : bIsMain( false ),
252 : bIsParentData( false ),
253 : bIsVisible( true ),
254 : nStyle( 0 ),
255 0 : mpEntries( 0 )
256 0 : {}
257 :
258 : ~SvxConfigEntry();
259 :
260 0 : const OUString& GetCommand() const { return aCommand; }
261 : void SetCommand( const OUString& rCmd ) { aCommand = rCmd; }
262 :
263 0 : const OUString& GetName() const { return aLabel; }
264 0 : void SetName( const OUString& rStr ) { aLabel = rStr; bStrEdited = true; }
265 0 : bool HasChangedName() const { return bStrEdited; }
266 :
267 : const OUString& GetHelpText() ;
268 : void SetHelpText( const OUString& rStr ) { aHelpText = rStr; }
269 :
270 : const OUString& GetHelpURL() const { return aHelpURL; }
271 : void SetHelpURL( const OUString& rStr ) { aHelpURL = rStr; }
272 :
273 : void SetPopup( bool bOn = true ) { bPopUp = bOn; }
274 0 : bool IsPopup() const { return bPopUp; }
275 :
276 0 : void SetUserDefined( bool bOn = true ) { bIsUserDefined = bOn; }
277 0 : bool IsUserDefined() const { return bIsUserDefined; }
278 :
279 0 : bool IsBinding() const { return !bPopUp; }
280 0 : bool IsSeparator() const { return nId == 0; }
281 :
282 0 : SvxEntries* GetEntries() const { return mpEntries; }
283 0 : void SetEntries( SvxEntries* entries ) { mpEntries = entries; }
284 : bool HasEntries() const { return mpEntries != NULL; }
285 :
286 0 : void SetMain( bool bValue = true ) { bIsMain = bValue; }
287 0 : bool IsMain() { return bIsMain; }
288 :
289 0 : void SetParentData( bool bValue = true ) { bIsParentData = bValue; }
290 0 : bool IsParentData() { return bIsParentData; }
291 :
292 : bool IsMovable();
293 : bool IsDeletable();
294 : bool IsRenamable();
295 :
296 0 : void SetVisible( bool b ) { bIsVisible = b; }
297 0 : bool IsVisible() const { return bIsVisible; }
298 :
299 0 : void SetBackupGraphic(
300 : ::com::sun::star::uno::Reference<
301 : ::com::sun::star::graphic::XGraphic > graphic )
302 0 : { xBackupGraphic = graphic; }
303 :
304 : ::com::sun::star::uno::Reference<
305 : ::com::sun::star::graphic::XGraphic >
306 0 : GetBackupGraphic()
307 0 : { return xBackupGraphic; }
308 :
309 0 : bool IsIconModified() { return xBackupGraphic.is(); }
310 :
311 0 : sal_Int32 GetStyle() { return nStyle; }
312 0 : void SetStyle( sal_Int32 style ) { nStyle = style; }
313 : };
314 :
315 : class SvxMenuEntriesListBox : public SvTreeListBox
316 : {
317 : private:
318 : SvxConfigPage* pPage;
319 :
320 : protected:
321 : bool m_bIsInternalDrag;
322 :
323 : public:
324 : SvxMenuEntriesListBox(vcl::Window*, SvxConfigPage*);
325 : virtual ~SvxMenuEntriesListBox();
326 :
327 : virtual sal_Int8 AcceptDrop( const AcceptDropEvent& rEvt ) SAL_OVERRIDE;
328 :
329 : virtual bool NotifyAcceptDrop( SvTreeListEntry* pEntry ) SAL_OVERRIDE;
330 :
331 : virtual TriState NotifyMoving( SvTreeListEntry*, SvTreeListEntry*,
332 : SvTreeListEntry*&, sal_uLong& ) SAL_OVERRIDE;
333 :
334 : virtual TriState NotifyCopying( SvTreeListEntry*, SvTreeListEntry*,
335 : SvTreeListEntry*&, sal_uLong&) SAL_OVERRIDE;
336 :
337 : virtual DragDropMode NotifyStartDrag(
338 : TransferDataContainer&, SvTreeListEntry* ) SAL_OVERRIDE;
339 :
340 : virtual void DragFinished( sal_Int8 ) SAL_OVERRIDE;
341 :
342 : void KeyInput( const KeyEvent& rKeyEvent ) SAL_OVERRIDE;
343 : };
344 :
345 0 : class SvxConfigPage : public SfxTabPage
346 : {
347 : private:
348 :
349 : bool bInitialised;
350 : SaveInData* pCurrentSaveInData;
351 :
352 : DECL_LINK( SelectSaveInLocation, ListBox * );
353 : DECL_LINK( AsyncInfoMsg, OUString* );
354 :
355 : bool SwapEntryData( SvTreeListEntry* pSourceEntry, SvTreeListEntry* pTargetEntry );
356 : void AlignControls();
357 :
358 : protected:
359 :
360 : // the top section of the tab page where top level menus and toolbars
361 : // are displayed in a listbox
362 : VclFrame* m_pTopLevel;
363 : FixedText* m_pTopLevelLabel;
364 : ListBox* m_pTopLevelListBox;
365 : PushButton* m_pNewTopLevelButton;
366 : MenuButton* m_pModifyTopLevelButton;
367 :
368 : // the contents section where the contents of the selected
369 : // menu or toolbar are displayed
370 : VclFrame* m_pContents;
371 : FixedText* m_pContentsLabel;
372 : VclContainer* m_pEntries;
373 : SvTreeListBox* m_pContentsListBox;
374 :
375 : PushButton* m_pAddCommandsButton;
376 : MenuButton* m_pModifyCommandButton;
377 :
378 : PushButton* m_pMoveUpButton;
379 : PushButton* m_pMoveDownButton;
380 :
381 : ListBox* m_pSaveInListBox;
382 :
383 : VclMultiLineEdit* m_pDescriptionField;
384 :
385 : SvxScriptSelectorDialog* m_pSelectorDlg;
386 :
387 : /// the ResourceURL to select when opening the dialog
388 : OUString m_aURLToSelect;
389 :
390 : ::com::sun::star::uno::Reference
391 : < ::com::sun::star::frame::XFrame > m_xFrame;
392 :
393 : SvxConfigPage( vcl::Window*, const SfxItemSet& );
394 :
395 : DECL_LINK( MoveHdl, Button * );
396 :
397 : virtual SaveInData* CreateSaveInData(
398 : const ::com::sun::star::uno::Reference <
399 : ::com::sun::star::ui::XUIConfigurationManager >&,
400 : const ::com::sun::star::uno::Reference <
401 : ::com::sun::star::ui::XUIConfigurationManager >&,
402 : const OUString& aModuleId,
403 : bool docConfig ) = 0;
404 :
405 : virtual void Init() = 0;
406 : virtual void UpdateButtonStates() = 0;
407 : virtual short QueryReset() = 0;
408 :
409 : SvTreeListEntry* InsertEntry( SvxConfigEntry* pNewEntryData,
410 : SvTreeListEntry* pTarget = NULL,
411 : bool bFront = false );
412 :
413 : void AddSubMenusToUI( const OUString& rBaseTitle,
414 : SvxConfigEntry* pParentData );
415 :
416 : SvTreeListEntry* InsertEntryIntoUI ( SvxConfigEntry* pNewEntryData,
417 : sal_uLong nPos = TREELIST_APPEND );
418 :
419 : SvxEntries* FindParentForChild( SvxEntries* pParentEntries,
420 : SvxConfigEntry* pChildData );
421 :
422 : void ReloadTopLevelListBox( SvxConfigEntry* pSelection = NULL );
423 :
424 : public:
425 :
426 : static bool CanConfig( const OUString& rModuleId );
427 :
428 0 : SaveInData* GetSaveInData() { return pCurrentSaveInData; }
429 :
430 : SvTreeListEntry* AddFunction( SvTreeListEntry* pTarget = NULL,
431 : bool bFront = false,
432 : bool bAllowDuplicates = false );
433 :
434 : virtual void MoveEntry( bool bMoveUp );
435 :
436 : bool MoveEntryData( SvTreeListEntry* pSourceEntry,
437 : SvTreeListEntry* pTargetEntry );
438 :
439 : bool FillItemSet( SfxItemSet* ) SAL_OVERRIDE;
440 : void Reset( const SfxItemSet* ) SAL_OVERRIDE;
441 :
442 : virtual bool DeleteSelectedContent() = 0;
443 : virtual void DeleteSelectedTopLevel() = 0;
444 :
445 0 : SvxConfigEntry* GetTopLevelSelection()
446 : {
447 : return (SvxConfigEntry*) m_pTopLevelListBox->GetEntryData(
448 0 : m_pTopLevelListBox->GetSelectEntryPos() );
449 : }
450 :
451 : /** identifies the module in the given frame. If the frame is <NULL/>, a default
452 : frame will be determined beforehand.
453 :
454 : If the given frame is <NULL/>, a default frame will be used: The method the active
455 : frame of the desktop, then the current frame. If both are <NULL/>,
456 : the SfxViewFrame::Current's XFrame is used. If this is <NULL/>, too, an empty string is returned.
457 :
458 : If the given frame is not <NULL/>, or an default frame could be successfully determined, then
459 : the ModuleManager is asked for the module ID of the component in the frame.
460 : */
461 : static OUString
462 : GetFrameWithDefaultAndIdentify( ::com::sun::star::uno::Reference< ::com::sun::star::frame::XFrame >& _inout_rxFrame );
463 : };
464 :
465 : class SvxMenuConfigPage : public SvxConfigPage
466 : {
467 : private:
468 :
469 : DECL_LINK( SelectMenu, ListBox * );
470 : DECL_LINK( SelectMenuEntry, Control * );
471 : DECL_LINK( NewMenuHdl, Button * );
472 : DECL_LINK( MenuSelectHdl, MenuButton * );
473 : DECL_LINK( EntrySelectHdl, MenuButton * );
474 : DECL_LINK( AddCommandsHdl, Button * );
475 : DECL_LINK( AddFunctionHdl, SvxScriptSelectorDialog * );
476 :
477 : void Init() SAL_OVERRIDE;
478 : void UpdateButtonStates() SAL_OVERRIDE;
479 : short QueryReset() SAL_OVERRIDE;
480 : bool DeleteSelectedContent() SAL_OVERRIDE;
481 : void DeleteSelectedTopLevel() SAL_OVERRIDE;
482 :
483 : public:
484 : SvxMenuConfigPage( vcl::Window *pParent, const SfxItemSet& rItemSet );
485 : virtual ~SvxMenuConfigPage();
486 :
487 : SaveInData* CreateSaveInData(
488 : const ::com::sun::star::uno::Reference <
489 : ::com::sun::star::ui::XUIConfigurationManager >&,
490 : const ::com::sun::star::uno::Reference <
491 : ::com::sun::star::ui::XUIConfigurationManager >&,
492 : const OUString& aModuleId,
493 : bool docConfig ) SAL_OVERRIDE;
494 : };
495 :
496 : class SvxMainMenuOrganizerDialog : public ModalDialog
497 : {
498 : VclContainer* m_pMenuBox;
499 : Edit* m_pMenuNameEdit;
500 : SvTreeListBox* m_pMenuListBox;
501 : PushButton* m_pMoveUpButton;
502 : PushButton* m_pMoveDownButton;
503 :
504 : SvxEntries* mpEntries;
505 : SvTreeListEntry* pNewMenuEntry;
506 : bool bModified;
507 :
508 : void UpdateButtonStates();
509 :
510 : DECL_LINK( MoveHdl, Button * );
511 : DECL_LINK( ModifyHdl, Edit * );
512 : DECL_LINK( SelectHdl, Control* );
513 :
514 : public:
515 : SvxMainMenuOrganizerDialog (
516 : vcl::Window*, SvxEntries*,
517 : SvxConfigEntry*, bool bCreateMenu = false );
518 :
519 : virtual ~SvxMainMenuOrganizerDialog ();
520 :
521 0 : SvxEntries* GetEntries() { return mpEntries;}
522 : void SetEntries( SvxEntries* );
523 : SvxConfigEntry* GetSelectedEntry();
524 : };
525 :
526 : class SvxToolbarEntriesListBox : public SvxMenuEntriesListBox
527 : {
528 : Size m_aCheckBoxImageSizePixel;
529 : Link m_aChangedListener;
530 : SvLBoxButtonData* m_pButtonData;
531 : SvxConfigPage* pPage;
532 :
533 : void ChangeVisibility( SvTreeListEntry* pEntry );
534 :
535 : protected:
536 :
537 : virtual void CheckButtonHdl() SAL_OVERRIDE;
538 : virtual void DataChanged( const DataChangedEvent& rDCEvt ) SAL_OVERRIDE;
539 : void BuildCheckBoxButtonImages( SvLBoxButtonData* );
540 : Image GetSizedImage(
541 : VirtualDevice& aDev, const Size& aNewSize, const Image& aImage );
542 :
543 : public:
544 :
545 : SvxToolbarEntriesListBox(vcl::Window* pParent, SvxToolbarConfigPage* pPg);
546 : virtual ~SvxToolbarEntriesListBox();
547 :
548 : void SetChangedListener( const Link& aChangedListener )
549 : { m_aChangedListener = aChangedListener; }
550 :
551 : const Link& GetChangedListener() const { return m_aChangedListener; }
552 :
553 : Size GetCheckBoxPixelSize() const
554 : { return m_aCheckBoxImageSizePixel; }
555 :
556 : virtual TriState NotifyMoving(
557 : SvTreeListEntry*, SvTreeListEntry*, SvTreeListEntry*&, sal_uLong& ) SAL_OVERRIDE;
558 :
559 : virtual TriState NotifyCopying(
560 : SvTreeListEntry*, SvTreeListEntry*, SvTreeListEntry*&, sal_uLong&) SAL_OVERRIDE;
561 :
562 : void KeyInput( const KeyEvent& rKeyEvent ) SAL_OVERRIDE;
563 : };
564 :
565 : class SvxToolbarConfigPage : public SvxConfigPage
566 : {
567 : private:
568 :
569 : DECL_LINK( SelectToolbar, ListBox * );
570 : DECL_LINK( SelectToolbarEntry, Control * );
571 : DECL_LINK( ToolbarSelectHdl, MenuButton * );
572 : DECL_LINK( EntrySelectHdl, MenuButton * );
573 : DECL_LINK( NewToolbarHdl, Button * );
574 : DECL_LINK( AddCommandsHdl, Button * );
575 : DECL_LINK( AddFunctionHdl, SvxScriptSelectorDialog * );
576 : DECL_LINK( MoveHdl, Button * );
577 :
578 : void UpdateButtonStates() SAL_OVERRIDE;
579 : short QueryReset() SAL_OVERRIDE;
580 : void Init() SAL_OVERRIDE;
581 : bool DeleteSelectedContent() SAL_OVERRIDE;
582 : void DeleteSelectedTopLevel() SAL_OVERRIDE;
583 :
584 : public:
585 : SvxToolbarConfigPage( vcl::Window *pParent, const SfxItemSet& rItemSet );
586 : virtual ~SvxToolbarConfigPage();
587 :
588 : SvTreeListEntry* AddFunction( SvTreeListEntry* pTarget = NULL,
589 : bool bFront = false,
590 : bool bAllowDuplicates = true );
591 :
592 : void MoveEntry( bool bMoveUp ) SAL_OVERRIDE;
593 :
594 : SaveInData* CreateSaveInData(
595 : const ::com::sun::star::uno::Reference <
596 : ::com::sun::star::ui::XUIConfigurationManager >&,
597 : const ::com::sun::star::uno::Reference <
598 : ::com::sun::star::ui::XUIConfigurationManager >&,
599 : const OUString& aModuleId,
600 : bool docConfig ) SAL_OVERRIDE;
601 : };
602 :
603 : class ToolbarSaveInData : public SaveInData
604 : {
605 : private:
606 :
607 : SvxConfigEntry* pRootEntry;
608 : OUString m_aDescriptorContainer;
609 :
610 : ::com::sun::star::uno::Reference
611 : < com::sun::star::container::XNameAccess > m_xPersistentWindowState;
612 :
613 : bool LoadToolbar(
614 : const ::com::sun::star::uno::Reference<
615 : com::sun::star::container::XIndexAccess >& xToolBarSettings,
616 : SvxConfigEntry* pParentData );
617 :
618 : void ApplyToolbar(
619 : com::sun::star::uno::Reference<
620 : com::sun::star::container::XIndexContainer >& rNewToolbarBar,
621 : com::sun::star::uno::Reference<
622 : com::sun::star::lang::XSingleComponentFactory >& rFactory,
623 : SvxConfigEntry *pToolbar = NULL );
624 :
625 : public:
626 :
627 : ToolbarSaveInData(
628 : const ::com::sun::star::uno::Reference <
629 : ::com::sun::star::ui::XUIConfigurationManager >&,
630 : const ::com::sun::star::uno::Reference <
631 : ::com::sun::star::ui::XUIConfigurationManager >&,
632 : const OUString& aModuleId,
633 : bool docConfig );
634 :
635 : virtual ~ToolbarSaveInData();
636 :
637 : void CreateToolbar( SvxConfigEntry* pToolbar );
638 : void RestoreToolbar( SvxConfigEntry* pToolbar );
639 : void RemoveToolbar( SvxConfigEntry* pToolbar );
640 : void ApplyToolbar( SvxConfigEntry* pToolbar );
641 :
642 : OUString GetSystemUIName( const OUString& rResourceURL );
643 :
644 : sal_Int32 GetSystemStyle( const OUString& rResourceURL );
645 :
646 : void SetSystemStyle(
647 : const OUString& rResourceURL, sal_Int32 nStyle );
648 :
649 : void SetSystemStyle(
650 : ::com::sun::star::uno::Reference
651 : < ::com::sun::star::frame::XFrame > xFrame,
652 : const OUString& rResourceURL, sal_Int32 nStyle );
653 :
654 : SvxEntries* GetEntries() SAL_OVERRIDE;
655 : void SetEntries( SvxEntries* ) SAL_OVERRIDE;
656 : bool HasSettings() SAL_OVERRIDE;
657 : bool HasURL( const OUString& rURL ) SAL_OVERRIDE;
658 : void Reset() SAL_OVERRIDE;
659 : bool Apply() SAL_OVERRIDE;
660 : };
661 :
662 0 : class SvxNewToolbarDialog : public ModalDialog
663 : {
664 : private:
665 : Edit* m_pEdtName;
666 : OKButton* m_pBtnOK;
667 :
668 : Link aCheckNameHdl;
669 :
670 : DECL_LINK(ModifyHdl, Edit*);
671 :
672 : public:
673 : SvxNewToolbarDialog(vcl::Window* pWindow, const OUString& rName);
674 :
675 : ListBox* m_pSaveInListBox;
676 :
677 0 : OUString GetName()
678 : {
679 0 : return m_pEdtName->GetText();
680 : }
681 :
682 : void SetCheckNameHdl( const Link& rLink, bool bCheckImmediately = false )
683 : {
684 : aCheckNameHdl = rLink;
685 : if ( bCheckImmediately )
686 : m_pBtnOK->Enable( rLink.Call( this ) > 0 );
687 : }
688 :
689 : void SetEditHelpId( const OString& aHelpId)
690 : {
691 : m_pEdtName->SetHelpId(aHelpId);
692 : }
693 : };
694 :
695 : struct SvxIconSelectorToolBoxItem
696 : {
697 : Image aImg;
698 : OUString aText;
699 : void* pData;
700 : };
701 :
702 : class SvxIconSelectorDialog : public ModalDialog
703 : {
704 : private:
705 : ToolBox* pTbSymbol;
706 : FixedText* pFtNote;
707 : PushButton* pBtnImport;
708 : PushButton* pBtnDelete;
709 : Size aTbSize;
710 : sal_uInt16 m_nNextId;
711 :
712 : sal_Int32 m_nExpectedSize;
713 :
714 : ::com::sun::star::uno::Reference<
715 : ::com::sun::star::ui::XImageManager > m_xImageManager;
716 :
717 : ::com::sun::star::uno::Reference<
718 : ::com::sun::star::ui::XImageManager > m_xParentImageManager;
719 :
720 : ::com::sun::star::uno::Reference<
721 : ::com::sun::star::ui::XImageManager > m_xImportedImageManager;
722 :
723 : ::com::sun::star::uno::Reference<
724 : ::com::sun::star::graphic::XGraphicProvider > m_xGraphProvider;
725 :
726 : bool ReplaceGraphicItem( const OUString& aURL );
727 :
728 : bool ImportGraphic( const OUString& aURL );
729 :
730 : void ImportGraphics(
731 : const com::sun::star::uno::Sequence< OUString >& aURLs );
732 :
733 : public:
734 :
735 : SvxIconSelectorDialog(
736 : vcl::Window *pWindow,
737 : const ::com::sun::star::uno::Reference<
738 : ::com::sun::star::ui::XImageManager >& rXImageManager,
739 : const ::com::sun::star::uno::Reference<
740 : ::com::sun::star::ui::XImageManager >& rXParentImageManager
741 : );
742 :
743 : virtual ~SvxIconSelectorDialog();
744 :
745 : ::com::sun::star::uno::Reference< ::com::sun::star::graphic::XGraphic >
746 : GetSelectedIcon();
747 :
748 : DECL_LINK( SelectHdl, ToolBox * );
749 : DECL_LINK( ImportHdl, PushButton * );
750 : DECL_LINK( DeleteHdl, PushButton * );
751 : };
752 :
753 0 : class SvxIconReplacementDialog : public MessBox
754 : {
755 : public:
756 : SvxIconReplacementDialog(
757 : vcl::Window *pWindow,
758 : const OUString& aMessage,
759 : bool aYestoAll);
760 :
761 : SvxIconReplacementDialog(
762 : vcl::Window *pWindow,
763 : const OUString& aMessage );
764 :
765 : OUString ReplaceIconName( const OUString& );
766 : sal_uInt16 ShowDialog();
767 : };
768 : //added for issue83555
769 0 : class SvxIconChangeDialog : public ModalDialog
770 : {
771 : private:
772 : FixedImage* pFImageInfo;
773 : VclMultiLineEdit* pLineEditDescription;
774 : public:
775 : SvxIconChangeDialog(vcl::Window *pWindow, const OUString& aMessage);
776 : };
777 : #endif // INCLUDED_CUI_SOURCE_INC_CFG_HXX
778 :
779 : /* vim:set shiftwidth=4 softtabstop=4 expandtab: */
|