]> SALOME platform Git repositories - modules/gui.git/blob - src/Qtx/QtxPagePrefMgr.h
Salome HOME
[bos #35160][EDF](2023-T1) Keyboard shortcuts.
[modules/gui.git] / src / Qtx / QtxPagePrefMgr.h
1 // Copyright (C) 2007-2024  CEA, EDF, OPEN CASCADE
2 //
3 // This library is free software; you can redistribute it and/or
4 // modify it under the terms of the GNU Lesser General Public
5 // License as published by the Free Software Foundation; either
6 // version 2.1 of the License, or (at your option) any later version.
7 //
8 // This library is distributed in the hope that it will be useful,
9 // but WITHOUT ANY WARRANTY; without even the implied warranty of
10 // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
11 // Lesser General Public License for more details.
12 //
13 // You should have received a copy of the GNU Lesser General Public
14 // License along with this library; if not, write to the Free Software
15 // Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307 USA
16 //
17 // See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
18 //
19
20 // File:      QtxPagePrefMgr.h
21 // Author:    Sergey TELKOV
22 //
23 #ifndef QTXPAGEPREFMGR_H
24 #define QTXPAGEPREFMGR_H
25
26 #include "QtxPreferenceMgr.h"
27
28 #include "QtxPathEdit.h"
29 #include "QtxPathListEdit.h"
30
31 #include <QFrame>
32 #include <QLabel>
33 #include <QPointer>
34 #include <QIcon>
35
36 #include <map>
37 #include <memory>
38
39 class QtxGridBox;
40 class QtxFontEdit;
41 class QtxGroupBox;
42 class QtxComboBox;
43 class QtxColorButton;
44 class QtxBiColorTool;
45 class QtxShortcutTree;
46 class QtxBackgroundTool;
47
48 class QToolBox;
49 class QLineEdit;
50 class QTextEdit;
51 class QCheckBox;
52 class QTabWidget;
53 class QToolButton;
54 class QListWidget;
55 class QFileDialog;
56 class QDateTimeEdit;
57 class QStackedWidget;
58 class QSlider;
59 class QTreeWidget;
60
61 class QTX_EXPORT QtxPagePrefMgr : public QFrame, public QtxPreferenceMgr
62 {
63   Q_OBJECT
64
65 public:
66   QtxPagePrefMgr( QtxResourceMgr*, QWidget* = 0 );
67   virtual ~QtxPagePrefMgr();
68
69   virtual QSize    sizeHint() const;
70   virtual QSize    minimumSizeHint() const;
71
72   virtual void     updateContents();
73
74 signals:
75   void             resourceChanged( int );
76   void             resourceChanged( QString&, QString& );
77   void             resourcesChanged( const QMap<int, QString>& );
78
79 public slots:
80   virtual void     setVisible( bool );
81
82 protected:
83   virtual void     itemAdded( QtxPreferenceItem* );
84   virtual void     itemRemoved( QtxPreferenceItem* );
85   virtual void     itemChanged( QtxPreferenceItem* );
86
87   virtual QVariant optionValue( const QString& ) const;
88   virtual void     setOptionValue( const QString&, const QVariant& );
89
90 private:
91   void             initialize() const;
92   void             initialize( QtxPreferenceItem* );
93
94 private:
95   QtxGridBox*      myBox;
96   bool             myInit;
97 };
98
99 class QTX_EXPORT QtxPagePrefItem : public QtxPreferenceItem
100 {
101   class Listener;
102
103 public:
104   QtxPagePrefItem( const QString&, QtxPreferenceItem* = 0,
105                    const QString& = QString(), const QString& = QString() );
106   virtual ~QtxPagePrefItem();
107
108   QWidget*          widget() const;
109
110   virtual void      activate();
111
112 protected:
113   void              setWidget( QWidget* );
114
115   virtual void      itemAdded( QtxPreferenceItem* );
116   virtual void      itemRemoved( QtxPreferenceItem* );
117   virtual void      itemChanged( QtxPreferenceItem* );
118
119   void              pageChildItems( QList<QtxPagePrefItem*>&, const bool = false ) const;
120
121   virtual void      store();
122   virtual void      retrieve();
123
124   virtual void      widgetShown();
125   virtual void      widgetHided();
126
127   virtual void      ensureVisible( QtxPreferenceItem* );
128
129 private:
130   virtual void      contentChanged();
131
132 private:
133   QPointer<QWidget> myWidget;
134   Listener*         myListener;
135 };
136
137 class QTX_EXPORT QtxPageNamedPrefItem : public QtxPagePrefItem
138 {
139 public:
140   QtxPageNamedPrefItem( const QString&, QtxPreferenceItem* = 0,
141                         const QString& = QString(), const QString& = QString() );
142   virtual ~QtxPageNamedPrefItem();
143
144   virtual void      setTitle( const QString& );
145
146   static void       adjustLabels( QtxPagePrefItem* );
147
148 protected:
149   QLabel*           label() const;
150   QWidget*          control() const;
151
152   void              setControl( QWidget* );
153
154 private:
155   QPointer<QLabel>  myLabel;
156   QPointer<QWidget> myControl;
157 };
158
159 class QTX_EXPORT QtxPagePrefListItem : public QObject, public QtxPagePrefItem
160 {
161   Q_OBJECT
162
163 public:
164   QtxPagePrefListItem( const QString&, QtxPreferenceItem* = 0,
165                        const QString& = QString(), const QString& = QString() );
166   virtual ~QtxPagePrefListItem();
167
168   virtual void     updateContents();
169
170   QString          emptyInfo() const;
171   void             setEmptyInfo( const QString& );
172
173   bool             isFixedSize() const;
174   void             setFixedSize( const bool );
175
176 private slots:
177   void             onItemSelectionChanged();
178
179 protected:
180   virtual QVariant optionValue( const QString& ) const;
181   virtual void     setOptionValue( const QString&, const QVariant& );
182   virtual void     ensureVisible( QtxPreferenceItem* );
183
184   virtual void     widgetShown();
185
186 private:
187   void             updateInfo();
188   void             updateGeom();
189   void             updateState();
190   void             updateVisible();
191
192   int              selected() const;
193   QtxPagePrefItem* selectedItem() const;
194   void             setSelected( const int );
195
196 private:
197   bool             myFix;
198   QListWidget*     myList;
199   QStackedWidget*  myStack;
200
201   QString          myInfText;
202   QLabel*          myInfLabel;
203 };
204
205 class QTX_EXPORT QtxPagePrefToolBoxItem : public QtxPagePrefItem
206 {
207 public:
208   QtxPagePrefToolBoxItem( const QString&, QtxPreferenceItem* = 0,
209                           const QString& = QString(), const QString& = QString() );
210   virtual ~QtxPagePrefToolBoxItem();
211
212   virtual void     updateContents();
213
214 protected:
215   virtual void     ensureVisible( QtxPreferenceItem* );
216
217 private:
218   void             updateToolBox();
219
220 private:
221   QToolBox*        myToolBox;
222 };
223
224 class QTX_EXPORT QtxPagePrefTabsItem : public QtxPagePrefItem
225 {
226 public:
227   QtxPagePrefTabsItem( const QString&, QtxPreferenceItem* = 0,
228                        const QString& = QString(), const QString& = QString() );
229   virtual ~QtxPagePrefTabsItem();
230
231   virtual void     updateContents();
232
233   int              tabPosition() const;
234   void             setTabPosition( const int );
235
236   int              tabShape() const;
237   void             setTabShape( const int );
238
239   QSize            tabIconSize() const;
240   void             setTabIconSize( const QSize& );
241
242 protected:
243   virtual QVariant optionValue( const QString& ) const;
244   virtual void     setOptionValue( const QString&, const QVariant& );
245   virtual void     ensureVisible( QtxPreferenceItem* );
246
247 private:
248   void             updateTabs();
249
250 private:
251   QTabWidget*      myTabs;
252 };
253
254 class QTX_EXPORT QtxPagePrefFrameItem : public QtxPagePrefItem
255 {
256 public:
257   QtxPagePrefFrameItem( const QString&, QtxPreferenceItem* = 0,
258                         const QString& = QString(), const QString& = QString(), const bool = false );
259   virtual ~QtxPagePrefFrameItem();
260
261   virtual void     updateContents();
262
263   bool             stretch() const;
264   void             setStretch( const bool );
265
266   int              margin() const;
267   void             setMargin( const int );
268
269   int              spacing() const;
270   void             setSpacing( const int );
271
272   int              columns() const;
273   void             setColumns( const int );
274
275   Qt::Orientation  orientation() const;
276   void             setOrientation( const Qt::Orientation );
277
278 protected:
279   virtual QVariant optionValue( const QString& ) const;
280   virtual void     setOptionValue( const QString&, const QVariant& );
281
282   virtual void     widgetShown();
283
284 private:
285   void             updateFrame();
286
287 private:
288   QtxGridBox*      myBox;
289 };
290
291 class QTX_EXPORT QtxPagePrefGroupItem : public QtxPagePrefItem
292 {
293 public:
294   QtxPagePrefGroupItem( const QString&, QtxPreferenceItem* = 0,
295                         const QString& = QString(), const QString& = QString() );
296   QtxPagePrefGroupItem( const int, const QString&, QtxPreferenceItem* = 0,
297                         const QString& = QString(), const QString& = QString() );
298   virtual ~QtxPagePrefGroupItem();
299
300   virtual void     updateContents();
301
302   int              margin() const;
303   void             setMargin( const int );
304
305   int              spacing() const;
306   void             setSpacing( const int );
307
308   int              columns() const;
309   void             setColumns( const int );
310
311   Qt::Orientation  orientation() const;
312   void             setOrientation( const Qt::Orientation );
313
314   bool             isFlat() const;
315   void             setFlat( const bool );
316
317   virtual void     setResource( const QString&, const QString& );
318
319   virtual void     store();
320   virtual void     retrieve();
321
322   QtxGridBox*      gridBox() const;
323
324 protected:
325   virtual QVariant optionValue( const QString& ) const;
326   virtual void     setOptionValue( const QString&, const QVariant& );
327
328   virtual void     widgetShown();
329
330 private:
331   void             updateState();
332   void             updateGroup();
333
334 private:
335   QtxGridBox*      myBox;
336   QtxGroupBox*     myGroup;
337 };
338
339 class QTX_EXPORT QtxPagePrefLabelItem : public QtxPagePrefItem
340 {
341 public:
342   QtxPagePrefLabelItem( const QString&, QtxPreferenceItem* = 0 );
343   QtxPagePrefLabelItem( Qt::Alignment, const QString&, QtxPreferenceItem* = 0 );
344   virtual ~QtxPagePrefLabelItem();
345
346   virtual void      setTitle( const QString& );
347
348   Qt::Alignment     alignment() const;
349   void              setAlignment( Qt::Alignment );
350
351 protected:
352   virtual QVariant optionValue( const QString& ) const;
353   virtual void     setOptionValue( const QString&, const QVariant& );
354
355 private:
356   QPointer<QLabel>  myLabel;
357 };
358
359 class QTX_EXPORT QtxPagePrefSpaceItem : public QtxPagePrefItem
360 {
361 public:
362   QtxPagePrefSpaceItem( QtxPreferenceItem* = 0 );
363   QtxPagePrefSpaceItem( Qt::Orientation, QtxPreferenceItem* = 0 );
364   QtxPagePrefSpaceItem( const int, const int, QtxPreferenceItem* = 0 );
365   virtual ~QtxPagePrefSpaceItem();
366
367   int              size( Qt::Orientation ) const;
368   void             setSize( Qt::Orientation, const int );
369
370   int              stretch( Qt::Orientation ) const;
371   void             setStretch( Qt::Orientation, const int );
372
373 protected:
374   virtual QVariant optionValue( const QString& ) const;
375   virtual void     setOptionValue( const QString&, const QVariant& );
376
377 private:
378   void             initialize( const int, const int, const int, const int );
379 };
380
381 class QTX_EXPORT QtxPagePrefCheckItem : public QtxPagePrefItem
382 {
383 public:
384   QtxPagePrefCheckItem( const QString&, QtxPreferenceItem* = 0,
385                         const QString& = QString(), const QString& = QString() );
386   virtual ~QtxPagePrefCheckItem();
387
388   virtual void     setTitle( const QString& );
389
390   virtual void     store();
391   virtual void     retrieve();
392
393 private:
394   QCheckBox*       myCheck;
395 };
396
397 class QTX_EXPORT QtxPagePrefEditItem : public QtxPageNamedPrefItem
398 {
399 public:
400   typedef enum { String, Integer, Double } InputType;
401
402 public:
403   QtxPagePrefEditItem( const QString&, QtxPreferenceItem* = 0,
404                        const QString& = QString(), const QString& = QString() );
405   QtxPagePrefEditItem( const int, const QString&, QtxPreferenceItem* = 0,
406                        const QString& = QString(), const QString& = QString() );
407   virtual ~QtxPagePrefEditItem();
408
409   int              inputType() const;
410   void             setInputType( const int );
411
412   int              decimals() const;
413   void             setDecimals( const int );
414
415   int              echoMode() const;
416   void             setEchoMode( const int );
417
418   virtual void     store();
419   virtual void     retrieve();
420
421 protected:
422   virtual QVariant optionValue( const QString& ) const;
423   virtual void     setOptionValue( const QString&, const QVariant& );
424
425 private:
426   void             updateEditor();
427
428 private:
429   int              myType;
430   int              myDecimals;
431   int              myEchoMode;
432   QLineEdit*       myEditor;
433 };
434
435 class QTX_EXPORT QtxPagePrefSliderItem : public QObject,public QtxPageNamedPrefItem
436 {
437   Q_OBJECT
438
439 public:
440   QtxPagePrefSliderItem( const QString&, QtxPreferenceItem* = 0,
441                          const QString& = QString(), const QString& = QString() );
442   virtual ~QtxPagePrefSliderItem();
443
444   int              singleStep() const;
445   int              pageStep() const;
446   int              minimum() const;
447   int              maximum() const;
448   QList<QIcon>     icons() const;
449
450   void             setSingleStep( const int& );
451   void             setPageStep( const int& );
452   void             setMinimum( const int& );
453   void             setMaximum( const int& );
454   void             setIcons( const QList<QIcon>& );
455
456   virtual void     store();
457   virtual void     retrieve();
458
459 protected:
460   virtual QVariant optionValue( const QString& ) const;
461   virtual void     setOptionValue( const QString&, const QVariant& );
462
463 private slots:
464   void             setIcon( int );
465
466 private:
467   void             updateSlider();
468   void             setIcons( const QVariant& );
469
470 private:
471   QSlider*         mySlider;
472   QLabel*          myLabel;
473   QList<QIcon>     myIcons;
474 };
475
476 class QTX_EXPORT QtxPagePrefSelectItem : public QtxPageNamedPrefItem
477 {
478 public:
479   typedef enum { NoInput, String, Integer, Double } InputType;
480
481 public:
482   QtxPagePrefSelectItem( const QString&, QtxPreferenceItem* = 0,
483                          const QString& = QString(), const QString& = QString() );
484   QtxPagePrefSelectItem( const int, const QString&, QtxPreferenceItem* = 0,
485                          const QString& = QString(), const QString& = QString() );
486   virtual ~QtxPagePrefSelectItem();
487
488   int              inputType() const;
489   void             setInputType( const int );
490
491   QStringList      strings() const;
492   QList<QVariant>  numbers() const;
493   QList<QIcon>     icons() const;
494
495   void             setStrings( const QStringList& );
496   void             setNumbers( const QList<QVariant>& );
497   void             setIcons( const QList<QIcon>& );
498
499   virtual void     store();
500   virtual void     retrieve();
501
502 protected:
503   virtual QVariant optionValue( const QString& ) const;
504   virtual void     setOptionValue( const QString&, const QVariant& );
505
506 private:
507   void             updateSelector();
508   void             setStrings( const QVariant& );
509   void             setNumbers( const QVariant& );
510   void             setIcons( const QVariant& );
511
512 private:
513   int              myType;
514   QtxComboBox*     mySelector;
515 };
516
517 class QTX_EXPORT QtxPagePrefSpinItem : public QtxPageNamedPrefItem
518 {
519 public:
520   typedef enum { Integer, Double } InputType;
521
522 public:
523   QtxPagePrefSpinItem( const QString&, QtxPreferenceItem* = 0,
524                        const QString& = QString(), const QString& = QString() );
525   QtxPagePrefSpinItem( const int, const QString&, QtxPreferenceItem* = 0,
526                        const QString& = QString(), const QString& = QString() );
527   virtual ~QtxPagePrefSpinItem();
528
529   QVariant         step() const;
530   QVariant         precision() const;
531   QVariant         minimum() const;
532   QVariant         maximum() const;
533
534   QString          prefix() const;
535   QString          suffix() const;
536   QString          specialValueText() const;
537
538   void             setStep( const QVariant& );
539   void             setPrecision( const QVariant& );
540   void             setMinimum( const QVariant& );
541   void             setMaximum( const QVariant& );
542
543   void             setPrefix( const QString& );
544   void             setSuffix( const QString& );
545   void             setSpecialValueText( const QString& );
546
547   int              inputType() const;
548   void             setInputType( const int );
549
550   virtual void     store();
551   virtual void     retrieve();
552
553 protected:
554   virtual QVariant optionValue( const QString& ) const;
555   virtual void     setOptionValue( const QString&, const QVariant& );
556
557 private:
558   void             updateSpinBox();
559
560 private:
561   int              myType;
562 };
563
564 class QTX_EXPORT QtxPagePrefTextItem : public QtxPageNamedPrefItem
565 {
566 public:
567   QtxPagePrefTextItem( QtxPreferenceItem* = 0,
568                        const QString& = QString(), const QString& = QString() );
569   QtxPagePrefTextItem( const QString&, QtxPreferenceItem* = 0,
570                        const QString& = QString(), const QString& = QString() );
571   virtual ~QtxPagePrefTextItem();
572
573   virtual void     store();
574   virtual void     retrieve();
575
576 private:
577   QTextEdit*       myEditor;
578 };
579
580 class QTX_EXPORT QtxPagePrefColorItem : public QtxPageNamedPrefItem
581 {
582 public:
583   QtxPagePrefColorItem( const QString&, QtxPreferenceItem* = 0,
584                         const QString& = QString(), const QString& = QString() );
585   virtual ~QtxPagePrefColorItem();
586
587   virtual void     store();
588   virtual void     retrieve();
589
590 private:
591   QtxColorButton*  myColor;
592 };
593
594 class QTX_EXPORT QtxPagePrefBiColorItem : public QtxPageNamedPrefItem
595 {
596 public:
597   QtxPagePrefBiColorItem( const QString&, QtxPreferenceItem* = 0,
598                            const QString& = QString(), const QString& = QString() );
599   virtual ~QtxPagePrefBiColorItem();
600
601   virtual QString  text() const;
602   virtual void     setText( const QString& );
603
604   virtual void     store();
605   virtual void     retrieve();
606
607 protected:
608   virtual QVariant optionValue( const QString& ) const;
609   virtual void     setOptionValue( const QString&, const QVariant& );
610
611 private:
612   QtxBiColorTool*  myColors;
613 };
614
615 class QTX_EXPORT QtxPagePrefFontItem : public QObject, public QtxPageNamedPrefItem
616 {
617   Q_OBJECT
618
619 public:
620   QtxPagePrefFontItem( const int, const QString&, QtxPreferenceItem* = 0,
621                        const QString& = QString(), const QString& = QString() );
622   QtxPagePrefFontItem( const QString&, QtxPreferenceItem* = 0,
623                        const QString& = QString(), const QString& = QString() );
624   virtual ~QtxPagePrefFontItem();
625
626   int              features() const;
627   void             setFeatures( const int );
628
629   void             setMode( const int );
630   int              mode() const;
631
632   void             setFonts( const QStringList& );
633   QStringList      fonts() const;
634
635   void             setSizes( const QList<int>& = QList<int>() );
636   QList<int>       sizes() const;
637
638   virtual void     store();
639   virtual void     retrieve();
640
641 protected:
642   virtual QVariant optionValue( const QString& ) const;
643   virtual void     setOptionValue( const QString&, const QVariant& );
644
645 private:
646   QtxFontEdit*     myFont;
647 };
648
649 class QTX_EXPORT QtxPagePrefPathItem : public QtxPageNamedPrefItem
650 {
651 public:
652   QtxPagePrefPathItem( const Qtx::PathType, const QString&, QtxPreferenceItem* = 0,
653                        const QString& = QString(), const QString& = QString() );
654   QtxPagePrefPathItem( const QString&, QtxPreferenceItem* = 0,
655                        const QString& = QString(), const QString& = QString() );
656   virtual ~QtxPagePrefPathItem();
657
658   Qtx::PathType    pathType() const;
659   void             setPathType( const Qtx::PathType );
660
661   QString          pathFilter() const;
662   void             setPathFilter( const QString& );
663  
664   QFileDialog::Options pathOptions() const;
665   void setPathOptions(const QFileDialog::Options);
666
667   virtual void     store();
668   virtual void     retrieve();
669
670 protected:
671   virtual QVariant optionValue( const QString& ) const;
672   virtual void     setOptionValue( const QString&, const QVariant& );
673
674 private:
675   QtxPathEdit*     myPath;
676 };
677
678 class QTX_EXPORT QtxPagePrefPathListItem : public QtxPageNamedPrefItem
679 {
680 public:
681   QtxPagePrefPathListItem( QtxPreferenceItem* = 0,
682                            const QString& = QString(), const QString& = QString() );
683   QtxPagePrefPathListItem( const QString&, QtxPreferenceItem* = 0,
684                            const QString& = QString(), const QString& = QString() );
685   QtxPagePrefPathListItem( const Qtx::PathType, const QString&, QtxPreferenceItem* = 0,
686                            const QString& = QString(), const QString& = QString() );
687   virtual ~QtxPagePrefPathListItem();
688
689   Qtx::PathType    pathType() const;
690   void             setPathType( const Qtx::PathType );
691
692   virtual void     store();
693   virtual void     retrieve();
694
695 protected:
696   virtual QVariant optionValue( const QString& ) const;
697   virtual void     setOptionValue( const QString&, const QVariant& );
698
699 private:
700   QtxPathListEdit* myPaths;
701 };
702
703 class QTX_EXPORT QtxPagePrefDateTimeItem : public QtxPageNamedPrefItem
704 {
705 public:
706   typedef enum { Date, Time, DateTime } InputType;
707
708 public:
709   QtxPagePrefDateTimeItem( const QString&, QtxPreferenceItem* = 0,
710                            const QString& = QString(), const QString& = QString() );
711   QtxPagePrefDateTimeItem( const int, const QString&, QtxPreferenceItem* = 0,
712                            const QString& = QString(), const QString& = QString() );
713   virtual ~QtxPagePrefDateTimeItem();
714
715   int              inputType() const;
716   void             setInputType( const int );
717
718   bool             calendar() const;
719   void             setCalendar( const bool );
720
721   QDate            maximumDate() const;
722   QTime            maximumTime() const;
723   QDate            minimumDate() const;
724   QTime            minimumTime() const;
725
726   void             setMaximumDate( const QDate& );
727   void             setMaximumTime( const QTime& );
728   void             setMinimumDate( const QDate& );
729   void             setMinimumTime( const QTime& );
730
731   virtual void     store();
732   virtual void     retrieve();
733
734 protected:
735   virtual QVariant optionValue( const QString& ) const;
736   virtual void     setOptionValue( const QString&, const QVariant& );
737
738 private:
739   void             updateDateTime();
740
741 private:
742   int              myType;
743   QDateTimeEdit*   myDateTime;
744 };
745
746
747 class SUIT_ShortcutContainer;
748
749
750 class QTX_EXPORT QtxPagePrefShortcutTreeItem : public QtxPagePrefItem
751 {
752 public:
753   QtxPagePrefShortcutTreeItem(QtxPreferenceItem* theParent);
754   virtual ~QtxPagePrefShortcutTreeItem() = default;
755
756   virtual void     retrieve();
757   virtual void     retrieveDefault();
758   virtual void     store();
759
760 private:
761   QtxShortcutTree* myShortcutTree;
762
763   // { root item (preference window), shortcut container of synchronized trees (widgets within the same window) }
764   static std::map<QtxPreferenceItem*, std::weak_ptr<SUIT_ShortcutContainer>> shortcutContainers;
765   /** Why is this?
766    * Every QtxPagePrefMgr is eventually a preference window. Each preference window has button "Apply".
767    * When the button is pressed, all descendants of the QtxPagePrefMgr store changes they carry into preferences.
768    * The pitfall with shortcut trees is as follows: made in independent shortcut trees, changes may conflict,
769    * and merge of such changes is ambiguous. And the solution is to keep shortcut trees within the same window
770    * synchronized - all changes being made in a tree of a synchronized bundle are projected to other trees from the bundle
771    * without interacting with SUIT_ShortcutMgr.
772    *
773    * Every time shortcut preferences stored to the ShortcutMgr, all instances of QtxShortcutTree are updated.
774   */
775 };
776
777 class QTX_EXPORT QtxPagePrefBackgroundItem : public QObject, public QtxPageNamedPrefItem
778 {
779   Q_OBJECT
780
781 public:
782   QtxPagePrefBackgroundItem( const QString&, QtxPreferenceItem* = 0,
783                              const QString& = QString(), const QString& = QString() );
784   virtual ~QtxPagePrefBackgroundItem();
785
786   void               gradients( QStringList&, QIntList& ) const;
787   void               setGradients( const QStringList&, const QIntList& = QIntList() );
788
789   bool               isModeAllowed( Qtx::BackgroundMode ) const;
790   void               setModeAllowed( Qtx::BackgroundMode, bool );
791
792   bool               isTextureModeAllowed( Qtx::TextureMode ) const;
793   void               setTextureModeAllowed( Qtx::TextureMode, bool );
794
795   bool               isTextureAllowed() const;
796   void               setTextureAllowed( bool );
797
798   QString            imageFormats() const;
799   void               setImageFormats( const QString& );
800
801   Qt::Orientation    orientation() const;
802   void               setOrientation( Qt::Orientation );
803
804   virtual void       store();
805   virtual void       retrieve();
806
807 protected:
808   virtual QVariant   optionValue( const QString& ) const;
809   virtual void       setOptionValue( const QString&, const QVariant& );
810
811 private:
812   QtxBackgroundTool* myBgTool;
813 };
814
815 class QtxUserDefinedContent: public QWidget
816 {
817  public:
818   QtxUserDefinedContent(QWidget* parent = 0, Qt::WindowFlags f = 0 ):QWidget(parent, f) {};
819   virtual void store(QtxResourceMgr* theRes, QtxPreferenceMgr* thePref) = 0;
820   virtual void retrieve(QtxResourceMgr* theRes, QtxPreferenceMgr* thePref) = 0;
821 };
822
823
824 class QTX_EXPORT QtxUserDefinedItem : public QtxPageNamedPrefItem
825 {
826 public:
827   QtxUserDefinedItem( QtxPreferenceItem* parent );
828
829   void setContent( QtxUserDefinedContent* theContent );
830
831   virtual void store();
832   virtual void retrieve();
833
834 protected:
835   virtual QVariant optionValue( const QString& theName ) const;
836   virtual void     setOptionValue( const QString& theName, const QVariant& theVal );
837
838 private:
839   QtxUserDefinedContent* myContent;
840 };
841
842 #endif