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