Freeciv21
Develop your civilization from humble roots to a global empire
decorations.h
Go to the documentation of this file.
1
/* .' '. Copyright (c) 1996-2023 Freeciv21 and Freeciv ********
2
\\ . . \ \ contributors. This file is part of Freeciv21.
3
\ \ o o \ \ Freeciv21 is free software: you can redistribute it
4
\ . \/ \/ \ \ and/or modify it under the terms of the GNU
5
\/ , . \\ General Public License as published by the Free
6
' ,. '( .\\ Software Foundation, either version 3 of the License,
7
//``\\ . | \ or (at your option) any later version.
8
~~~~~'''''~''''''~~~\~ You should have received a copy of the
9
(( GNU General Public License along with Freeciv21.
10
\\ If not, see https://www.gnu.org/licenses/.
11
))
12
************* V ******************************************************/
13
#pragma once
14
15
#include <QFlags>
16
#include <QFrame>
17
#include <QLabel>
18
#include <QRubberBand>
19
20
/**************************************************************************
21
Widget allowing moving other widgets
22
**************************************************************************/
23
class
move_widget
:
public
QLabel {
24
Q_OBJECT
25
public
:
26
move_widget
(QWidget *parent);
27
void
put_to_corner
();
28
29
protected
:
30
void
mouseMoveEvent
(QMouseEvent *
event
)
override
;
31
void
mousePressEvent
(QMouseEvent *
event
)
override
;
32
33
private
:
34
QPoint
point
;
35
};
36
37
/****************************************************************************
38
Widget for resizing other widgets
39
****************************************************************************/
40
class
scale_widget
:
public
QRubberBand {
41
Q_OBJECT
42
43
public
:
44
scale_widget
(Shape s, QWidget *p = 0);
45
float
scale
;
46
47
protected
:
48
void
paintEvent
(QPaintEvent *
event
)
override
;
49
void
mousePressEvent
(QMouseEvent *
event
)
override
;
50
51
private
:
52
int
size
;
53
QPixmap
plus
;
54
QPixmap
minus
;
55
};
56
57
/**************************************************************************
58
Abstract class for widgets wanting to do custom action
59
when closing widgets is called (eg. update menu)
60
**************************************************************************/
61
class
fcwidget
:
public
QFrame {
62
Q_OBJECT
63
64
public
:
66
explicit
fcwidget
(QWidget *parent =
nullptr
) : QFrame(parent) {}
67
68
virtual
void
update_menu
() = 0;
69
};
70
71
/**************************************************************************
72
Abstract class for widgets that can be resized by dragging the edges.
73
**************************************************************************/
74
class
resizable_widget
:
public
fcwidget
{
75
Q_OBJECT
76
77
static
constexpr
int
event_width
= 25;
78
static
constexpr
int
margin_width
= 3;
79
80
signals:
81
void
resized
(QRect rect);
82
83
public
:
84
// make widget resizable (multiple flags supported)
85
void
setResizable
(Qt::Edges edges);
86
87
// get resizable flags
88
Qt::Edges
getResizable
()
const
;
89
90
private
:
91
Qt::Edges
get_in_event_mouse
(
const
QMouseEvent *
event
)
const
;
92
93
Qt::Edges
eventFlags
{};
94
Qt::Edges
resizeFlags
{};
95
96
protected
:
97
void
mousePressEvent
(QMouseEvent *
event
)
override
;
98
void
mouseMoveEvent
(QMouseEvent *
event
)
override
;
99
void
mouseReleaseEvent
(QMouseEvent *
event
)
override
;
100
};
101
102
/**************************************************************************
103
Widget allowing closing other widgets
104
**************************************************************************/
105
class
close_widget
:
public
QLabel {
106
Q_OBJECT
107
108
public
:
109
close_widget
(QWidget *parent);
110
void
put_to_corner
();
111
112
protected
:
113
void
hideEvent
(QHideEvent *
event
)
override
;
114
void
mousePressEvent
(QMouseEvent *
event
)
override
;
115
};
close_widget
Definition:
decorations.h:105
close_widget::mousePressEvent
void mousePressEvent(QMouseEvent *event) override
Mouse handler for close widget, hides parent widget.
Definition:
decorations.cpp:158
close_widget::put_to_corner
void put_to_corner()
Puts close widget to right top corner.
Definition:
decorations.cpp:153
close_widget::close_widget
close_widget(QWidget *parent)
Constructor for close widget.
Definition:
decorations.cpp:138
close_widget::hideEvent
void hideEvent(QHideEvent *event) override
Hide event handler for close widget.
Definition:
decorations.cpp:171
fcwidget
Definition:
decorations.h:61
fcwidget::update_menu
virtual void update_menu()=0
fcwidget::fcwidget
fcwidget(QWidget *parent=nullptr)
Constructor.
Definition:
decorations.h:66
move_widget
Definition:
decorations.h:23
move_widget::put_to_corner
void put_to_corner()
Puts move widget to left top corner.
Definition:
decorations.cpp:99
move_widget::mousePressEvent
void mousePressEvent(QMouseEvent *event) override
Sets moving point for move widget;.
Definition:
decorations.cpp:127
move_widget::point
QPoint point
Definition:
decorations.h:34
move_widget::mouseMoveEvent
void mouseMoveEvent(QMouseEvent *event) override
Mouse handler for move widget (moves parent widget)
Definition:
decorations.cpp:104
move_widget::move_widget
move_widget(QWidget *parent)
Constructor for move widget.
Definition:
decorations.cpp:84
resizable_widget
Definition:
decorations.h:74
resizable_widget::eventFlags
Qt::Edges eventFlags
Definition:
decorations.h:93
resizable_widget::get_in_event_mouse
Qt::Edges get_in_event_mouse(const QMouseEvent *event) const
Get resizable_flag from mouse position.
Definition:
decorations.cpp:225
resizable_widget::setResizable
void setResizable(Qt::Edges edges)
Set resizable flags.
Definition:
decorations.cpp:182
resizable_widget::getResizable
Qt::Edges getResizable() const
Get resizable flags of wdiget.
Definition:
decorations.cpp:204
resizable_widget::mousePressEvent
void mousePressEvent(QMouseEvent *event) override
Checks if info_tab can be moved.
Definition:
decorations.cpp:209
resizable_widget::resized
void resized(QRect rect)
resizable_widget::resizeFlags
Qt::Edges resizeFlags
Definition:
decorations.h:94
resizable_widget::event_width
static constexpr int event_width
Definition:
decorations.h:77
resizable_widget::mouseMoveEvent
void mouseMoveEvent(QMouseEvent *event) override
Called when mouse moved (mouse track is enabled).
Definition:
decorations.cpp:267
resizable_widget::margin_width
static constexpr int margin_width
Definition:
decorations.h:78
resizable_widget::mouseReleaseEvent
void mouseReleaseEvent(QMouseEvent *event) override
Restores cursor when resizing is done.
Definition:
decorations.cpp:249
scale_widget
Definition:
decorations.h:40
scale_widget::minus
QPixmap minus
Definition:
decorations.h:54
scale_widget::plus
QPixmap plus
Definition:
decorations.h:53
scale_widget::scale_widget
scale_widget(Shape s, QWidget *p=0)
Scale widget allowing scaling other widgets, shown in right top corner.
Definition:
decorations.cpp:36
scale_widget::paintEvent
void paintEvent(QPaintEvent *event) override
Draws 2 icons for resizing.
Definition:
decorations.cpp:56
scale_widget::mousePressEvent
void mousePressEvent(QMouseEvent *event) override
Mouse press event for scale widget.
Definition:
decorations.cpp:69
scale_widget::scale
float scale
Definition:
decorations.h:45
scale_widget::size
int size
Definition:
decorations.h:52
event
enum event_type event
Definition:
events.cpp:68
client
widgets
decorations.h
Generated by
1.9.1