-
Notifications
You must be signed in to change notification settings - Fork 12
/
patternDockWidget.h
84 lines (70 loc) · 2.65 KB
/
patternDockWidget.h
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
//
// Copyright 2010, 2011 Tom Klein.
//
// This file is part of cstitch.
//
// cstitch is free software: you can redistribute it and/or modify
// it under the terms of the GNU General Public License as published by
// the Free Software Foundation, either version 3 of the License, or
// (at your option) any later version.
//
// This program is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
// GNU General Public License for more details.
//
// You should have received a copy of the GNU General Public License
// along with this program. If not, see <http://www.gnu.org/licenses/>.
//
#ifndef PATTERNDOCKWIDGET_H
#define PATTERNDOCKWIDGET_H
#include <QtWidgets/QWidget>
#include "triC.h"
#include "constWidthDock.h"
template<class T1, class T2> struct QPair;
class QPixmap;
class QListWidget;
class QLabel;
class QVBoxLayout;
typedef QPair<QRgb, QPixmap> symbolPair;
// the symbol list dock widget for patternWindow: provides a list of
// symbols and a label giving the number of symbols
class patternDockWidget : public constWidthDock {
Q_OBJECT
public:
// <patternSymbolSize> is the size of the symbol icons displayed
// on the list
patternDockWidget(int patternSymbolSize, QWidget* parent);
void setSymbolList(const QHash<QRgb, QPixmap>& colorSymbols);
public slots:
// change the symbol for <color> to <symbol>
void changeSymbol(QRgb color, const QPixmap& symbol);
private:
// create and return the list item icon for <color>, using <symbol>
QIcon createIcon(QRgb color, const QPixmap& symbol) const;
// update the symbol count label to indicate <numSymbols> symbols
void setSymbolCountLabel(int numSymbols);
// return a list of (color, symbol) pairs, sorted by color intensity and
// coming from <hash>
QVector<symbolPair>
sortHashByIntensity(const QHash<QRgb, QPixmap>& hash) const;
// generate the number of symbols string from <numSymbols>
QString numSymbolsStringFromInt(int numSymbols) const;
// return the size of the list item icons
QSize listIconSize() const {
return QSize(dockWidth(), symbolSize_);
}
private slots:
void processContextRequest(const QPoint& point);
signals:
// emitted when the user makes a change symbol context request on an item
void changeSymbol(const triC& color);
private:
int symbolSize_; // size of the symbol icon for list items
QListWidget* symbolList_;
QLabel* numSymbolsLabel_; // displays the number of symbols in the list
QVBoxLayout* dockLayout_;
// context action to change the symbol for a list item
QAction* changeSymbolAction_;
};
#endif