| /**************************************************************************** |
| ** |
| ** Copyright (C) 2011 Nokia Corporation and/or its subsidiary(-ies). |
| ** All rights reserved. |
| ** Contact: Nokia Corporation (qt-info@nokia.com) |
| ** |
| ** This file is part of the Qt Designer of the Qt Toolkit. |
| ** |
| ** $QT_BEGIN_LICENSE:LGPL$ |
| ** GNU Lesser General Public License Usage |
| ** This file may be used under the terms of the GNU Lesser General Public |
| ** License version 2.1 as published by the Free Software Foundation and |
| ** appearing in the file LICENSE.LGPL included in the packaging of this |
| ** file. Please review the following information to ensure the GNU Lesser |
| ** General Public License version 2.1 requirements will be met: |
| ** http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html. |
| ** |
| ** In addition, as a special exception, Nokia gives you certain additional |
| ** rights. These rights are described in the Nokia Qt LGPL Exception |
| ** version 1.1, included in the file LGPL_EXCEPTION.txt in this package. |
| ** |
| ** GNU General Public License Usage |
| ** Alternatively, this file may be used under the terms of the GNU General |
| ** Public License version 3.0 as published by the Free Software Foundation |
| ** and appearing in the file LICENSE.GPL included in the packaging of this |
| ** file. Please review the following information to ensure the GNU General |
| ** Public License version 3.0 requirements will be met: |
| ** http://www.gnu.org/copyleft/gpl.html. |
| ** |
| ** Other Usage |
| ** Alternatively, this file may be used in accordance with the terms and |
| ** conditions contained in a signed written agreement between you and Nokia. |
| ** |
| ** |
| ** |
| ** |
| ** |
| ** $QT_END_LICENSE$ |
| ** |
| ****************************************************************************/ |
| |
| #ifndef DESIGNERPROPERTYMANAGER_H |
| #define DESIGNERPROPERTYMANAGER_H |
| |
| #include "qtvariantproperty.h" |
| #include "brushpropertymanager.h" |
| #include "fontpropertymanager.h" |
| |
| #include <qdesigner_utils_p.h> |
| #include <shared_enums_p.h> |
| |
| #include <QtCore/QUrl> |
| #include <QtCore/QMap> |
| #include <QtGui/QFont> |
| #include <QtGui/QIcon> |
| |
| QT_BEGIN_NAMESPACE |
| |
| typedef QPair<QString, uint> DesignerIntPair; |
| typedef QList<DesignerIntPair> DesignerFlagList; |
| |
| class QDesignerFormEditorInterface; |
| class QLineEdit; |
| class QUrl; |
| class QtKeySequenceEdit; |
| |
| namespace qdesigner_internal |
| { |
| |
| class ResetWidget; |
| |
| class TextEditor; |
| class PaletteEditorButton; |
| class PixmapEditor; |
| class StringListEditorButton; |
| class FormWindowBase; |
| |
| class ResetDecorator : public QObject |
| { |
| Q_OBJECT |
| public: |
| ResetDecorator(QObject *parent = 0) : QObject(parent), m_spacing(-1) {} |
| ~ResetDecorator(); |
| |
| void connectPropertyManager(QtAbstractPropertyManager *manager); |
| QWidget *editor(QWidget *subEditor, bool resettable, QtAbstractPropertyManager *manager, QtProperty *property, |
| QWidget *parent); |
| void disconnectPropertyManager(QtAbstractPropertyManager *manager); |
| void setSpacing(int spacing); |
| signals: |
| void resetProperty(QtProperty *property); |
| private slots: |
| void slotPropertyChanged(QtProperty *property); |
| void slotEditorDestroyed(QObject *object); |
| private: |
| QMap<QtProperty *, QList<ResetWidget *> > m_createdResetWidgets; |
| QMap<ResetWidget *, QtProperty *> m_resetWidgetToProperty; |
| int m_spacing; |
| }; |
| |
| class DesignerPropertyManager : public QtVariantPropertyManager |
| { |
| Q_OBJECT |
| public: |
| explicit DesignerPropertyManager(QDesignerFormEditorInterface *core, QObject *parent = 0); |
| ~DesignerPropertyManager(); |
| |
| virtual QStringList attributes(int propertyType) const; |
| virtual int attributeType(int propertyType, const QString &attribute) const; |
| |
| virtual QVariant attributeValue(const QtProperty *property, const QString &attribute) const; |
| virtual bool isPropertyTypeSupported(int propertyType) const; |
| virtual QVariant value(const QtProperty *property) const; |
| virtual int valueType(int propertyType) const; |
| virtual QString valueText(const QtProperty *property) const; |
| virtual QIcon valueIcon(const QtProperty *property) const; |
| |
| bool resetFontSubProperty(QtProperty *property); |
| bool resetIconSubProperty(QtProperty *subProperty); |
| |
| void reloadResourceProperties(); |
| |
| static int designerFlagTypeId(); |
| static int designerFlagListTypeId(); |
| static int designerAlignmentTypeId(); |
| static int designerPixmapTypeId(); |
| static int designerIconTypeId(); |
| static int designerStringTypeId(); |
| static int designerKeySequenceTypeId(); |
| |
| void setObject(QObject *object) { m_object = object; } |
| |
| public Q_SLOTS: |
| virtual void setAttribute(QtProperty *property, |
| const QString &attribute, const QVariant &value); |
| virtual void setValue(QtProperty *property, const QVariant &value); |
| Q_SIGNALS: |
| // sourceOfChange - a subproperty (or just property) which caused a change |
| //void valueChanged(QtProperty *property, const QVariant &value, QtProperty *sourceOfChange); |
| void valueChanged(QtProperty *property, const QVariant &value, bool enableSubPropertyHandling); |
| protected: |
| virtual void initializeProperty(QtProperty *property); |
| virtual void uninitializeProperty(QtProperty *property); |
| private Q_SLOTS: |
| void slotValueChanged(QtProperty *property, const QVariant &value); |
| void slotPropertyDestroyed(QtProperty *property); |
| private: |
| void createIconSubProperty(QtProperty *iconProperty, QIcon::Mode mode, QIcon::State state, const QString &subName); |
| |
| typedef QMap<QtProperty *, bool> PropertyBoolMap; |
| PropertyBoolMap m_resetMap; |
| |
| int bitCount(int mask) const; |
| struct FlagData |
| { |
| FlagData() : val(0) {} |
| uint val; |
| DesignerFlagList flags; |
| QList<uint> values; |
| }; |
| typedef QMap<QtProperty *, FlagData> PropertyFlagDataMap; |
| PropertyFlagDataMap m_flagValues; |
| typedef QMap<QtProperty *, QList<QtProperty *> > PropertyToPropertyListMap; |
| PropertyToPropertyListMap m_propertyToFlags; |
| QMap<QtProperty *, QtProperty *> m_flagToProperty; |
| |
| int alignToIndexH(uint align) const; |
| int alignToIndexV(uint align) const; |
| uint indexHToAlign(int idx) const; |
| uint indexVToAlign(int idx) const; |
| QString indexHToString(int idx) const; |
| QString indexVToString(int idx) const; |
| QMap<QtProperty *, uint> m_alignValues; |
| typedef QMap<QtProperty *, QtProperty *> PropertyToPropertyMap; |
| PropertyToPropertyMap m_propertyToAlignH; |
| PropertyToPropertyMap m_propertyToAlignV; |
| PropertyToPropertyMap m_alignHToProperty; |
| PropertyToPropertyMap m_alignVToProperty; |
| |
| QMap<QtProperty *, QMap<QPair<QIcon::Mode, QIcon::State>, QtProperty *> > m_propertyToIconSubProperties; |
| QMap<QtProperty *, QPair<QIcon::Mode, QIcon::State> > m_iconSubPropertyToState; |
| PropertyToPropertyMap m_iconSubPropertyToProperty; |
| |
| QMap<QtProperty *, qdesigner_internal::PropertySheetStringValue> m_stringValues; |
| QMap<QtProperty *, QtProperty *> m_stringToComment; |
| QMap<QtProperty *, QtProperty *> m_stringToTranslatable; |
| QMap<QtProperty *, QtProperty *> m_stringToDisambiguation; |
| |
| QMap<QtProperty *, QtProperty *> m_commentToString; |
| QMap<QtProperty *, QtProperty *> m_translatableToString; |
| QMap<QtProperty *, QtProperty *> m_disambiguationToString; |
| |
| QMap<QtProperty *, qdesigner_internal::PropertySheetKeySequenceValue> m_keySequenceValues; |
| QMap<QtProperty *, QtProperty *> m_keySequenceToComment; |
| QMap<QtProperty *, QtProperty *> m_keySequenceToTranslatable; |
| QMap<QtProperty *, QtProperty *> m_keySequenceToDisambiguation; |
| |
| QMap<QtProperty *, QtProperty *> m_commentToKeySequence; |
| QMap<QtProperty *, QtProperty *> m_translatableToKeySequence; |
| QMap<QtProperty *, QtProperty *> m_disambiguationToKeySequence; |
| |
| struct PaletteData |
| { |
| QPalette val; |
| QPalette superPalette; |
| }; |
| typedef QMap<QtProperty *, PaletteData> PropertyPaletteDataMap; |
| PropertyPaletteDataMap m_paletteValues; |
| |
| QMap<QtProperty *, qdesigner_internal::PropertySheetPixmapValue> m_pixmapValues; |
| QMap<QtProperty *, qdesigner_internal::PropertySheetIconValue> m_iconValues; |
| |
| QMap<QtProperty *, uint> m_uintValues; |
| QMap<QtProperty *, qlonglong> m_longLongValues; |
| QMap<QtProperty *, qulonglong> m_uLongLongValues; |
| QMap<QtProperty *, QUrl> m_urlValues; |
| QMap<QtProperty *, QByteArray> m_byteArrayValues; |
| QMap<QtProperty *, QStringList> m_stringListValues; |
| |
| typedef QMap<QtProperty *, int> PropertyIntMap; |
| PropertyIntMap m_stringAttributes; |
| typedef QMap<QtProperty *, QFont> PropertyFontMap; |
| PropertyFontMap m_stringFontAttributes; |
| |
| BrushPropertyManager m_brushManager; |
| FontPropertyManager m_fontManager; |
| |
| QMap<QtProperty *, QPixmap> m_defaultPixmaps; |
| QMap<QtProperty *, QIcon> m_defaultIcons; |
| |
| bool m_changingSubValue; |
| QDesignerFormEditorInterface *m_core; |
| |
| QObject *m_object; |
| |
| QtProperty *m_sourceOfChange; |
| }; |
| |
| class DesignerEditorFactory : public QtVariantEditorFactory |
| { |
| Q_OBJECT |
| public: |
| explicit DesignerEditorFactory(QDesignerFormEditorInterface *core, QObject *parent = 0); |
| ~DesignerEditorFactory(); |
| void setSpacing(int spacing); |
| void setFormWindowBase(FormWindowBase *fwb); |
| signals: |
| void resetProperty(QtProperty *property); |
| protected: |
| void connectPropertyManager(QtVariantPropertyManager *manager); |
| QWidget *createEditor(QtVariantPropertyManager *manager, QtProperty *property, |
| QWidget *parent); |
| void disconnectPropertyManager(QtVariantPropertyManager *manager); |
| private slots: |
| void slotEditorDestroyed(QObject *object); |
| void slotAttributeChanged(QtProperty *property, const QString &attribute, const QVariant &value); |
| void slotPropertyChanged(QtProperty *property); |
| void slotValueChanged(QtProperty *property, const QVariant &value); |
| void slotStringTextChanged(const QString &value); |
| void slotKeySequenceChanged(const QKeySequence &value); |
| void slotPaletteChanged(const QPalette &value); |
| void slotPixmapChanged(const QString &value); |
| void slotIconChanged(const QString &value); |
| void slotUintChanged(const QString &value); |
| void slotLongLongChanged(const QString &value); |
| void slotULongLongChanged(const QString &value); |
| void slotUrlChanged(const QString &value); |
| void slotByteArrayChanged(const QString &value); |
| void slotStringListChanged(const QStringList &value); |
| private: |
| TextEditor *createTextEditor(QWidget *parent, TextPropertyValidationMode vm, const QString &value); |
| |
| ResetDecorator *m_resetDecorator; |
| bool m_changingPropertyValue; |
| QDesignerFormEditorInterface *m_core; |
| FormWindowBase *m_fwb; |
| |
| int m_spacing; |
| |
| QMap<QtProperty *, QList<TextEditor *> > m_stringPropertyToEditors; |
| QMap<TextEditor *, QtProperty *> m_editorToStringProperty; |
| QMap<QtProperty *, QList<QtKeySequenceEdit *> > m_keySequencePropertyToEditors; |
| QMap<QtKeySequenceEdit *, QtProperty *> m_editorToKeySequenceProperty; |
| QMap<QtProperty *, QList<PaletteEditorButton *> > m_palettePropertyToEditors; |
| QMap<PaletteEditorButton *, QtProperty *> m_editorToPaletteProperty; |
| QMap<QtProperty *, QList<PixmapEditor *> > m_pixmapPropertyToEditors; |
| QMap<PixmapEditor *, QtProperty *> m_editorToPixmapProperty; |
| QMap<QtProperty *, QList<PixmapEditor *> > m_iconPropertyToEditors; |
| QMap<PixmapEditor *, QtProperty *> m_editorToIconProperty; |
| QMap<QtProperty *, QList<QLineEdit *> > m_uintPropertyToEditors; |
| QMap<QLineEdit *, QtProperty *> m_editorToUintProperty; |
| QMap<QtProperty *, QList<QLineEdit *> > m_longLongPropertyToEditors; |
| QMap<QLineEdit *, QtProperty *> m_editorToLongLongProperty; |
| QMap<QtProperty *, QList<QLineEdit *> > m_uLongLongPropertyToEditors; |
| QMap<QLineEdit *, QtProperty *> m_editorToULongLongProperty; |
| QMap<QtProperty *, QList<TextEditor *> > m_urlPropertyToEditors; |
| QMap<TextEditor *, QtProperty *> m_editorToUrlProperty; |
| QMap<QtProperty *, QList<TextEditor *> > m_byteArrayPropertyToEditors; |
| QMap<TextEditor *, QtProperty *> m_editorToByteArrayProperty; |
| QMap<QtProperty *, QList<StringListEditorButton *> > m_stringListPropertyToEditors; |
| QMap<StringListEditorButton *, QtProperty *> m_editorToStringListProperty; |
| }; |
| |
| } |
| |
| QT_END_NAMESPACE |
| |
| Q_DECLARE_METATYPE(DesignerIntPair) |
| Q_DECLARE_METATYPE(DesignerFlagList) |
| |
| #endif |
| |