/src/VBox/Frontends/VirtualBox/src/settings/VBoxSettingsSelector.h

https://gitlab.com/ufo/virtualbox-ose-3-1-8 · C Header · 178 lines · 99 code · 56 blank · 23 comment · 0 complexity · da4c9ce4e5ea1d8b1ca6a2d930dc9006 MD5 · raw file

  1. /** @file
  2. *
  3. * VBox frontends: Qt4 GUI ("VirtualBox"):
  4. * VBoxSettingsSelector class declaration
  5. */
  6. /*
  7. * Copyright (C) 2008 Sun Microsystems, Inc.
  8. *
  9. * This file is part of VirtualBox Open Source Edition (OSE), as
  10. * available from http://www.virtualbox.org. This file is free software;
  11. * you can redistribute it and/or modify it under the terms of the GNU
  12. * General Public License (GPL) as published by the Free Software
  13. * Foundation, in version 2 as it comes in the "COPYING" file of the
  14. * VirtualBox OSE distribution. VirtualBox OSE is distributed in the
  15. * hope that it will be useful, but WITHOUT ANY WARRANTY of any kind.
  16. *
  17. * Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa
  18. * Clara, CA 95054 USA or visit http://www.sun.com if you need
  19. * additional information or have any questions.
  20. */
  21. #ifndef __VBoxSettingsSelector_h__
  22. #define __VBoxSettingsSelector_h__
  23. /* Qt includes */
  24. #include <QObject>
  25. class QITreeWidget;
  26. class VBoxToolBar;
  27. class VBoxSettingsPage;
  28. class SelectorItem;
  29. class SelectorActionItem;
  30. class QTreeWidget;
  31. class QTreeWidgetItem;
  32. class QIcon;
  33. class QAction;
  34. class QActionGroup;
  35. template <class Key, class T> class QMap;
  36. class QTabWidget;
  37. class VBoxSettingsSelector: public QObject
  38. {
  39. Q_OBJECT;
  40. public:
  41. VBoxSettingsSelector (QWidget *aParent = NULL);
  42. ~VBoxSettingsSelector();
  43. virtual QWidget *widget() const = 0;
  44. virtual QWidget *addItem (const QString &aBigIcon, const QString &aBigIconDisabled, const QString &aSmallIcon, const QString &aSmallIconDisabled, int aId, const QString &aLink, VBoxSettingsPage* aPage = NULL, int aParentId = -1) = 0;
  45. virtual void setItemText (int aId, const QString &aText);
  46. virtual QString itemText (int aId) const = 0;
  47. virtual QString itemTextByPage (VBoxSettingsPage *aPage) const;
  48. virtual int currentId () const = 0;
  49. virtual int linkToId (const QString &aLink) const = 0;
  50. virtual QWidget *idToPage (int aId) const;
  51. virtual QWidget *rootPage (int aId) const { return idToPage (aId); }
  52. virtual void selectById (int aId) = 0;
  53. virtual void selectByLink (const QString &aLink) { selectById (linkToId (aLink)); }
  54. virtual void setVisibleById (int aId, bool aShow) = 0;
  55. virtual QList<VBoxSettingsPage*> settingPages() const;
  56. virtual QList<QWidget*> rootPages() const;
  57. virtual void polish() {};
  58. virtual int minWidth () const { return 0; }
  59. signals:
  60. void categoryChanged (int);
  61. protected:
  62. virtual void clear() = 0;
  63. SelectorItem* findItem (int aId) const;
  64. SelectorItem* findItemByLink (const QString &aLink) const;
  65. SelectorItem* findItemByPage (VBoxSettingsPage* aPage) const;
  66. QList<SelectorItem*> mItemList;
  67. };
  68. class VBoxSettingsTreeViewSelector: public VBoxSettingsSelector
  69. {
  70. Q_OBJECT;
  71. public:
  72. VBoxSettingsTreeViewSelector (QWidget *aParent = NULL);
  73. virtual QWidget *widget() const;
  74. virtual QWidget *addItem (const QString &aBigIcon, const QString &aBigIconDisabled, const QString &aSmallIcon, const QString &aSmallIconDisabled, int aId, const QString &aLink, VBoxSettingsPage* aPage = NULL, int aParentId = -1);
  75. virtual void setItemText (int aId, const QString &aText);
  76. virtual QString itemText (int aId) const;
  77. virtual int currentId() const;
  78. virtual int linkToId (const QString &aLink) const;
  79. virtual void selectById (int aId);
  80. virtual void setVisibleById (int aId, bool aShow);
  81. virtual void polish();
  82. private slots:
  83. void settingsGroupChanged (QTreeWidgetItem *aItem, QTreeWidgetItem *aPrevItem);
  84. private:
  85. virtual void clear();
  86. QString pagePath (const QString &aMatch) const;
  87. QTreeWidgetItem* findItem (QTreeWidget *aView, const QString &aMatch, int aColumn) const;
  88. QString idToString (int aId) const;
  89. /* Private member vars */
  90. QITreeWidget *mTwSelector;
  91. };
  92. class VBoxSettingsToolBarSelector: public VBoxSettingsSelector
  93. {
  94. Q_OBJECT;
  95. public:
  96. VBoxSettingsToolBarSelector (QWidget *aParent = NULL);
  97. ~VBoxSettingsToolBarSelector();
  98. virtual QWidget *widget() const;
  99. virtual QWidget *addItem (const QString &aBigIcon, const QString &aBigIconDisabled, const QString &aSmallIcon, const QString &aSmallIconDisabled, int aId, const QString &aLink, VBoxSettingsPage* aPage = NULL, int aParentId = -1);
  100. virtual void setItemText (int aId, const QString &aText);
  101. virtual QString itemText (int aId) const;
  102. virtual int currentId() const;
  103. virtual int linkToId (const QString &aLink) const;
  104. virtual QWidget *idToPage (int aId) const;
  105. virtual QWidget *rootPage (int aId) const;
  106. virtual void selectById (int aId);
  107. virtual void setVisibleById (int aId, bool aShow);
  108. virtual int minWidth() const;
  109. virtual QList<QWidget*> rootPages() const;
  110. private slots:
  111. void settingsGroupChanged (QAction *aAction);
  112. void settingsGroupChanged (int aIndex);
  113. private:
  114. virtual void clear();
  115. SelectorActionItem *findActionItem (int aId) const;
  116. SelectorActionItem *findActionItemByAction (QAction *aAction) const;
  117. SelectorActionItem *findActionItemByTabWidget (QTabWidget* aTabWidget, int aIndex) const;
  118. /* Private member vars */
  119. VBoxToolBar *mTbSelector;
  120. QActionGroup *mActionGroup;
  121. };
  122. #endif /* __VBoxSettingsSelector_h__ */