/**************************************************************************** ** ** Qtitan Library by Developer Machines (Microsoft-Ribbon implementation for Qt.C++) ** ** Copyright (c) 2009-2015 Developer Machines (http://www.devmachines.com) ** ALL RIGHTS RESERVED ** ** The entire contents of this file is protected by copyright law and ** international treaties. Unauthorized reproduction, reverse-engineering ** and distribution of all or any portion of the code contained in this ** file is strictly prohibited and may result in severe civil and ** criminal penalties and will be prosecuted to the maximum extent ** possible under the law. ** ** RESTRICTIONS ** ** THE SOURCE CODE CONTAINED WITHIN THIS FILE AND ALL RELATED ** FILES OR ANY PORTION OF ITS CONTENTS SHALL AT NO TIME BE ** COPIED, TRANSFERRED, SOLD, DISTRIBUTED, OR OTHERWISE MADE ** AVAILABLE TO OTHER INDIVIDUALS WITHOUT WRITTEN CONSENT ** AND PERMISSION FROM DEVELOPER MACHINES ** ** CONSULT THE END USER LICENSE AGREEMENT FOR INFORMATION ON ** ADDITIONAL RESTRICTIONS. ** ****************************************************************************/ #ifndef QTN_RIBBONGROUPPRIVATE_H #define QTN_RIBBONGROUPPRIVATE_H #include #include "QtnRibbonGroup.h" #include "QtnRibbonControls.h" #include "QtitanDef.h" class QAction; class QToolButton; class QStyleOptionGroupBox; QTITAN_BEGIN_NAMESPACE class RibbonGroupOption; class RibbonGroupScroll; class RibbonControl; class RibbonGroupPopup; /* RibbonGroupPrivate */ class RibbonGroupPrivate : public QObject { Q_OBJECT public: QTN_DECLARE_PUBLIC(RibbonGroup) public: explicit RibbonGroupPrivate(); virtual ~RibbonGroupPrivate(); public: void init(); void clear(bool deleteControls); void enableGroupScroll(bool scrollLeft, bool scrollRight); void showGroupScroll(); void initStyleOption(QStyleOptionGroupBox& opt) const; int calcMinimumWidth(RibbonControlSizeDefinition::GroupSize size) const; int arrangeRowContent(QList& row, int leftOffset, int rowItemHeight, int rowItemCount, QWidget* parent) const; void reposition(const QRect& rect); void updateOptionButtonLayout(); QSize updateControlsLayout(QWidget* parent, int leftOffset = 0) const; void adjustCurrentSize(bool expand); void updateLayoutParent(bool first); QSize sizeHint() const; void setReductionSize(RibbonControlSizeDefinition::GroupSize size); void reduce(); void expand(); bool canReduce(); bool canExpand(); public Q_SLOTS: void pressLeftScrollButton(); void pressRightScrollButton(); void hidePopupMode(QAction* action); public: static bool visualIndexLessThan(RibbonControl* first, RibbonControl* second); RibbonGroupOption* m_optionButton; RibbonGroupScroll* m_buttonScrollGroupLeft; // Button to draw left scroll RibbonGroupScroll* m_buttonScrollGroupRight; // Button to draw right scroll RibbonGroupPopup* m_groupPopup; RibbonToolBarControl* m_toolBar; QList m_controls; RibbonControlSizeDefinition::GroupSize m_currentSize; Qt::Alignment m_contentAlignment; Qt::Alignment m_controlsAlignment; bool m_butOptionVisible; bool m_dirty; QAction* m_actOption; QString m_title; QIcon m_icon; QFont* m_font; QColor m_color; int m_pageScrollPos; int m_groupScrollPos; // Scroll position Qt::TextElideMode m_titleElideMode; private: Q_DISABLE_COPY(RibbonGroupPrivate) }; QTITAN_END_NAMESPACE #endif // QTN_RIBBONGROUPPRIVATE_H