/[svn]/qsampler/trunk/src/qsamplerPaletteForm.h
ViewVC logotype

Annotation of /qsampler/trunk/src/qsamplerPaletteForm.h

Parent Directory Parent Directory | Revision Log Revision Log


Revision 3761 - (hide annotations) (download) (as text)
Tue Mar 31 11:06:16 2020 UTC (4 years, 1 month ago) by capela
File MIME type: text/x-c++hdr
File size: 7094 byte(s)
- More fixing to build for Qt >= 5.15.0 (re. custom styles and
  color themes/palette editor). (REGRESSION)
1 capela 3648 // qsamplerPaletteForm.h
2     //
3     /****************************************************************************
4 capela 3760 Copyright (C) 2004-2020, rncbc aka Rui Nuno Capela. All rights reserved.
5 capela 3648 Copyright (C) 2007, Christian Schoenebeck
6    
7     This program is free software; you can redistribute it and/or
8     modify it under the terms of the GNU General Public License
9     as published by the Free Software Foundation; either version 2
10     of the License, or (at your option) any later version.
11    
12     This program is distributed in the hope that it will be useful,
13     but WITHOUT ANY WARRANTY; without even the implied warranty of
14     MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
15     GNU General Public License for more details.
16    
17     You should have received a copy of the GNU General Public License along
18     with this program; if not, write to the Free Software Foundation, Inc.,
19     51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
20    
21     *****************************************************************************/
22    
23     #ifndef __qsamplerPaletteForm_h
24     #define __qsamplerPaletteForm_h
25    
26     #include <QDialog>
27     #include <QPushButton>
28     #include <QAbstractTableModel>
29     #include <QItemDelegate>
30     #include <QSettings>
31     #include <QMap>
32    
33    
34     // Forward decls.
35     class QListView;
36     class QLabel;
37     class QToolButton;
38    
39     namespace Ui { class qsamplerPaletteForm; }
40    
41    
42     namespace QSampler {
43    
44     //-------------------------------------------------------------------------
45     // QSampler::PaletteForm
46    
47     class PaletteForm: public QDialog
48     {
49     Q_OBJECT
50    
51     public:
52    
53     PaletteForm(QWidget *parent = nullptr,
54     const QPalette& pal = QPalette());
55    
56     virtual ~PaletteForm();
57    
58     void setPalette(const QPalette& pal);
59     const QPalette& palette() const;
60    
61     void setSettings(QSettings *settings, bool owner = false);
62     QSettings *settings() const;
63    
64     void setPaletteName(const QString& name);
65     QString paletteName() const;
66    
67     bool isDirty() const;
68    
69     static QStringList namedPaletteList(QSettings *settings);
70     static bool namedPalette(QSettings *settings,
71     const QString& name, QPalette& pal, bool fixup = false);
72    
73     static QPalette::ColorRole colorRole(const QString& name);
74    
75     class PaletteModel;
76     class ColorDelegate;
77     class ColorButton;
78     class ColorEditor;
79     class RoleEditor;
80    
81     protected slots:
82    
83     void nameComboChanged(const QString& name);
84     void saveButtonClicked();
85     void deleteButtonClicked();
86    
87     void generateButtonChanged();
88     void resetButtonClicked();
89     void detailsCheckClicked();
90     void importButtonClicked();
91     void exportButtonClicked();
92    
93     void paletteChanged(const QPalette& pal);
94    
95     void accept();
96     void reject();
97    
98     protected:
99    
100     void setPalette(const QPalette& pal, const QPalette& parentPal);
101    
102     bool namedPalette(const QString& name, QPalette& pal);
103     void saveNamedPalette(const QString& name, const QPalette& pal);
104     void deleteNamedPalette(const QString& name);
105     QStringList namedPaletteList();
106    
107     void updateNamedPaletteList();
108     void updateGenerateButton();
109     void updateDialogButtons();
110    
111     void setDefaultDir(const QString& dir);
112     QString defaultDir() const;
113    
114     void setShowDetails(bool on);
115     bool isShowDetails() const;
116    
117     void showEvent(QShowEvent *event);
118     void resizeEvent(QResizeEvent *event);
119    
120     private:
121    
122     Ui::qsamplerPaletteForm *p_ui;
123     Ui::qsamplerPaletteForm& m_ui;
124    
125     QSettings *m_settings;
126     bool m_owner;
127    
128     QPalette m_palette;
129     QPalette m_parentPalette;
130     PaletteModel *m_paletteModel;
131     bool m_modelUpdated;
132     bool m_paletteUpdated;
133     int m_dirtyCount;
134     int m_dirtyTotal;
135     };
136    
137    
138     //-------------------------------------------------------------------------
139     // QSampler::PaletteForm::PaletteModel
140    
141     class PaletteForm::PaletteModel : public QAbstractTableModel
142     {
143     Q_OBJECT
144     Q_PROPERTY(QPalette::ColorRole colorRole READ colorRole)
145    
146     public:
147    
148     PaletteModel(QObject *parent = nullptr);
149    
150     int rowCount(const QModelIndex &parent = QModelIndex()) const;
151     int columnCount(const QModelIndex &parent = QModelIndex()) const;
152     QVariant data(const QModelIndex &index, int role) const;
153     bool setData(const QModelIndex &index, const QVariant &value, int role);
154     Qt::ItemFlags flags(const QModelIndex &index) const;
155     QVariant headerData(int section, Qt::Orientation orientation,
156     int role = Qt::DisplayRole) const;
157    
158     void setPalette(const QPalette &palette, const QPalette &parentPalette);
159     const QPalette& palette() const;
160    
161     void setGenerate(bool on) { m_generate = on; }
162    
163     QPalette::ColorRole colorRole() const { return QPalette::NoRole; }
164    
165     signals:
166    
167     void paletteChanged(const QPalette &palette);
168    
169     protected:
170    
171     QPalette::ColorGroup columnToGroup(int index) const;
172     int groupToColumn(QPalette::ColorGroup group) const;
173    
174     private:
175    
176     QPalette m_palette;
177     QPalette m_parentPalette;
178     QMap<QPalette::ColorRole, QString> m_roleNames;
179     int m_nrows;
180     bool m_generate;
181     };
182    
183    
184     //-------------------------------------------------------------------------
185     // QSampler::PaletteForm::ColorDelegate
186    
187     class PaletteForm::ColorDelegate : public QItemDelegate
188     {
189     public:
190    
191     ColorDelegate(QObject *parent = nullptr)
192     : QItemDelegate(parent) {}
193    
194     QWidget *createEditor(QWidget *parent,
195     const QStyleOptionViewItem& option,
196     const QModelIndex& index) const;
197    
198     void setEditorData(QWidget *editor,
199     const QModelIndex& index) const;
200     void setModelData(QWidget *editor,
201     QAbstractItemModel *model,
202     const QModelIndex& index) const;
203    
204     void updateEditorGeometry(QWidget *editor,
205     const QStyleOptionViewItem& option,
206     const QModelIndex &index) const;
207    
208     virtual void paint(QPainter *painter,
209     const QStyleOptionViewItem& option,
210     const QModelIndex& index) const;
211    
212     virtual QSize sizeHint(const QStyleOptionViewItem& option,
213     const QModelIndex& index) const;
214     };
215    
216    
217     //-------------------------------------------------------------------------
218     // QSampler::PaletteForm::ColorButton
219    
220     class PaletteForm::ColorButton : public QPushButton
221     {
222     Q_OBJECT
223     Q_PROPERTY(QBrush brush READ brush WRITE setBrush)
224    
225     public:
226    
227     ColorButton (QWidget *parent = nullptr);
228    
229     const QBrush& brush() const;
230     void setBrush(const QBrush& b);
231    
232     signals:
233    
234     void changed();
235    
236     protected slots:
237    
238     void chooseColor();
239    
240     protected:
241    
242     void paintEvent(QPaintEvent *event);
243    
244     private:
245    
246     QBrush m_brush;
247     };
248    
249    
250     //-------------------------------------------------------------------------
251     // QSampler::PaleteEditor::ColorEditor
252    
253     class PaletteForm::ColorEditor : public QWidget
254     {
255     Q_OBJECT
256    
257     public:
258    
259     ColorEditor(QWidget *parent = nullptr);
260    
261     void setColor(const QColor &color);
262     QColor color() const;
263     bool changed() const;
264    
265     signals:
266    
267     void changed(QWidget *widget);
268    
269     protected slots:
270    
271     void colorChanged();
272    
273     private:
274    
275     PaletteForm::ColorButton *m_button;
276     bool m_changed;
277     };
278    
279    
280     //-------------------------------------------------------------------------
281     // QSampler::PaleteEditor::RoleEditor
282    
283     class PaletteForm::RoleEditor : public QWidget
284     {
285     Q_OBJECT
286    
287     public:
288    
289     RoleEditor(QWidget *parent = nullptr);
290    
291     void setLabel(const QString &label);
292     void setEdited(bool on);
293     bool edited() const;
294    
295     signals:
296    
297     void changed(QWidget *widget);
298    
299     protected slots:
300    
301     void resetProperty();
302    
303     private:
304    
305     QLabel *m_label;
306     QToolButton *m_button;
307     bool m_edited;
308     };
309    
310     } // namespace QSampler
311    
312     #endif // __qsamplerPaletteForm_h
313    
314     // end of qsamplerPaletteForm.h

  ViewVC Help
Powered by ViewVC