LunaSysMgr
Main Page
Related Pages
Namespaces
Classes
Files
File List
File Members
All
Classes
Namespaces
Files
Functions
Variables
Typedefs
Enumerations
Enumerator
Properties
Friends
Macros
Pages
labeledbutton.h
Go to the documentation of this file.
1
/* @@@LICENSE
2
*
3
* Copyright (c) 2011-2012 Hewlett-Packard Development Company, L.P.
4
*
5
* Licensed under the Apache License, Version 2.0 (the "License");
6
* you may not use this file except in compliance with the License.
7
* You may obtain a copy of the License at
8
*
9
* http://www.apache.org/licenses/LICENSE-2.0
10
*
11
* Unless required by applicable law or agreed to in writing, software
12
* distributed under the License is distributed on an "AS IS" BASIS,
13
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14
* See the License for the specific language governing permissions and
15
* limitations under the License.
16
*
17
* LICENSE@@@ */
18
19
20
21
22
#ifndef LABELEDBUTTON_H_
23
#define LABELEDBUTTON_H_
24
25
#include "
thingpaintable.h
"
26
#include <QRectF>
27
#include <QRect>
28
#include <QString>
29
#include <QColor>
30
#include <QPointF>
31
#include <QFont>
32
#include <QTextLayout>
33
34
class
PixmapObject
;
35
class
LabeledButton
:
public
ThingPaintable
36
{
37
Q_OBJECT
38
Q_INTERFACES(
QGraphicsItem
)
39
40
public
:
41
LabeledButton
(
const
QRectF& buttonGeometry);
42
virtual
~LabeledButton
();
43
44
virtual
bool
resize
(
const
QSize& newSize);
45
virtual
bool
resize
(quint32 newWidth,quint32 newHeight);
46
47
virtual
void
paint
(QPainter *painter,
const
QStyleOptionGraphicsItem *option=0,QWidget *widget=0) = 0;
48
virtual
void
paintOffscreen
(QPainter * painter) = 0;
49
50
virtual
void
setLabel
(
const
QString& v);
51
52
protected
:
53
54
// PREREQUISITE: m_geom is valid
55
// RESULT: m_labelMaxGeom is set
56
virtual
void
recalculateLabelBoundsForCurrentGeom
();
57
58
// PREREQUISITE: m_labelMaxGeom must be valid, at least its size()
59
// RESULT: m_textLayoutObject will have the correct layout, m_labelGeom will be set correctly for the current label,
60
virtual
void
redoLabelTextLayout
();
//run this after the geometry changes. This is absolutely necessary
61
// ALSO run this after the label changes. don't ask, just do it. Not necessary now, but it most likely will be later
62
63
// PREREQUISITE: m_geom , m_labelMaxGeom and m_labelGeom are set
64
// RESULT: m_labelPosICS and m_labelPosPntCS are set
65
virtual
void
recalculateLabelPosition
();
66
67
static
QFont
staticLabelFontForButtons
();
68
69
protected
:
70
71
QString
m_label
;
72
QFont
m_textFont
;
73
QColor
m_selectedColor
;
74
QColor
m_unselectedColor
;
75
QTextLayout
m_textLayoutObject
;
76
QPointF
m_labelPosICS
;
// position in ICS, and corresponds to m_labelGeom
77
QPoint
m_labelPosPntCS
;
// same, but precomputed to offscreen painter coords relative to 0,0 at top left
78
QRect
m_labelMaxGeom
;
// precomputed by recalculateLabelBoundsForCurrentGeom()
79
QRect
m_labelGeom
;
//precomputed by redoLabelTextLayout(); this one is the CURRENT label's box (always <= m_labelMaxGeom)
80
};
81
82
#endif
/* LABELEDBUTTON_H_ */
luna-sysmgr
Src
lunaui
launcher
elements
buttons
labeledbutton.h
Generated on Fri Jun 21 2013 00:53:53 for LunaSysMgr by
1.8.3.1