Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Support
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in
Toggle navigation
V
vlc-2-2
Project overview
Project overview
Details
Activity
Releases
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Issues
0
Issues
0
List
Boards
Labels
Milestones
Redmine
Redmine
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Operations
Operations
Metrics
Environments
Analytics
Analytics
CI / CD
Repository
Value Stream
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
videolan
vlc-2-2
Commits
7bfa5717
Commit
7bfa5717
authored
Mar 20, 2010
by
Francois Cartegnie
Committed by
Jean-Baptiste Kempf
Mar 20, 2010
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Qt: New BackgroundWiget
Signed-off-by:
Jean-Baptiste Kempf
<
jb@videolan.org
>
parent
e7da2d0a
Changes
2
Hide whitespace changes
Inline
Side-by-side
Showing
2 changed files
with
59 additions
and
41 deletions
+59
-41
modules/gui/qt4/components/interface_widgets.cpp
modules/gui/qt4/components/interface_widgets.cpp
+53
-38
modules/gui/qt4/components/interface_widgets.hpp
modules/gui/qt4/components/interface_widgets.hpp
+6
-3
No files found.
modules/gui/qt4/components/interface_widgets.cpp
View file @
7bfa5717
...
...
@@ -45,6 +45,7 @@
#include <QPainter>
#include <QTimer>
#include <QSlider>
#include <QBitmap>
#ifdef Q_WS_X11
# include <X11/Xlib.h>
...
...
@@ -272,17 +273,10 @@ void VideoWidget::release( void )
* Background Widget. Show a simple image background. Currently,
* it's album art if present or cone.
**********************************************************************/
#define ICON_SIZE 128
#define MAX_BG_SIZE 400
#define MIN_BG_SIZE 128
#define MARGIN 5
BackgroundWidget
::
BackgroundWidget
(
intf_thread_t
*
_p_i
)
:
QWidget
(
NULL
),
p_intf
(
_p_i
)
:
QWidget
(
NULL
),
p_intf
(
_p_i
)
,
b_expandPixmap
(
false
)
{
/* We should use that one to take the more size it can */
//setSizePolicy( QSizePolicy::Expanding, QSizePolicy::Expanding);
/* A dark background */
setAutoFillBackground
(
true
);
QPalette
plt
=
palette
();
...
...
@@ -290,58 +284,79 @@ BackgroundWidget::BackgroundWidget( intf_thread_t *_p_i )
plt
.
setColor
(
QPalette
::
Inactive
,
QPalette
::
Window
,
Qt
::
black
);
setPalette
(
plt
);
/* A cone in the middle */
label
=
new
QLabel
;
label
->
setMargin
(
MARGIN
);
label
->
setAlignment
(
Qt
::
AlignCenter
);
/* Init the cone art */
updateArt
(
""
);
/* Grid, because of the visual selector */
QGridLayout
*
backgroundLayout
=
new
QGridLayout
(
this
);
backgroundLayout
->
setMargin
(
0
);
backgroundLayout
->
addWidget
(
label
,
0
,
1
);
backgroundLayout
->
setColumnStretch
(
0
,
1
);
backgroundLayout
->
setColumnStretch
(
2
,
1
);
CONNECT
(
THEMIM
->
getIM
(),
artChanged
(
QString
),
this
,
updateArt
(
const
QString
&
)
);
/* Start Hidden */
label
->
hide
();
}
void
BackgroundWidget
::
resizeEvent
(
QResizeEvent
*
event
)
{
if
(
event
->
size
().
height
()
<=
MIN_BG_SIZE
+
MARGIN
*
2
+
2
)
label
->
hide
();
else
label
->
show
();
updateArt
(
""
);
QWidget
::
resizeEvent
(
event
);
}
void
BackgroundWidget
::
updateArt
(
const
QString
&
url
)
{
if
(
url
.
isEmpty
()
)
if
(
!
url
.
isEmpty
()
)
{
/* Xmas joke */
pixmapUrl
=
url
;
}
else
{
/* Xmas joke */
if
(
QDate
::
currentDate
().
dayOfYear
()
>=
354
)
label
->
setPixmap
(
QPixmap
(
":/logo/vlc128-christmas.png"
)
);
pixmapUrl
=
QString
(
":/logo/vlc128-christmas.png"
);
else
label
->
setPixmap
(
QPixmap
(
":/logo/vlc128.png"
)
);
pixmapUrl
=
QString
(
":/logo/vlc128.png"
);
}
else
}
void
BackgroundWidget
::
paintEvent
(
QPaintEvent
*
e
)
{
int
i_maxwidth
,
i_maxheight
;
QPixmap
pixmap
=
QPixmap
(
pixmapUrl
);
QPainter
painter
(
this
);
QBitmap
pMask
;
float
f_alpha
=
1.0
;
i_maxwidth
=
std
::
min
(
maximumWidth
(),
width
()
)
-
MARGIN
*
2
;
i_maxheight
=
std
::
min
(
maximumHeight
(),
height
()
)
-
MARGIN
*
2
;
if
(
height
()
>
MARGIN
*
2
)
{
QPixmap
pixmap
(
url
);
if
(
pixmap
.
width
()
>
label
->
maximumWidth
()
||
pixmap
.
height
()
>
label
->
maximumHeight
()
)
/* Scale down the pixmap if the widget is too small */
if
(
pixmap
.
width
()
>
i_maxwidth
||
pixmap
.
height
()
>
i_maxheight
)
{
pixmap
=
pixmap
.
scaled
(
i_maxwidth
,
i_maxheight
,
Qt
::
KeepAspectRatio
,
Qt
::
SmoothTransformation
);
}
else
if
(
b_expandPixmap
&&
pixmap
.
width
()
<
width
()
&&
pixmap
.
height
()
<
height
()
)
{
pixmap
=
pixmap
.
scaled
(
label
->
maximumWidth
(),
label
->
maximumHeight
(),
Qt
::
KeepAspectRatio
);
/* Scale up the pixmap to fill widget's size */
f_alpha
=
(
(
float
)
pixmap
.
height
()
/
(
float
)
height
()
);
pixmap
=
pixmap
.
scaled
(
width
()
-
MARGIN
*
2
,
height
()
-
MARGIN
*
2
,
Qt
::
KeepAspectRatio
,
(
f_alpha
<
.2
)
?
/* Don't waste cpu when not visible */
Qt
::
SmoothTransformation
:
Qt
::
FastTransformation
);
/* Non agressive alpha compositing when sizing up */
pMask
=
QBitmap
(
pixmap
.
width
(),
pixmap
.
height
()
);
pMask
.
fill
(
QColor
::
fromRgbF
(
1.0
,
1.0
,
1.0
,
f_alpha
)
);
pixmap
.
setMask
(
pMask
);
}
label
->
setPixmap
(
pixmap
);
painter
.
drawPixmap
(
MARGIN
+
(
i_maxwidth
-
pixmap
.
width
()
)
/
2
,
MARGIN
+
(
i_maxheight
-
pixmap
.
height
()
)
/
2
,
pixmap
);
}
QWidget
::
paintEvent
(
e
);
}
void
BackgroundWidget
::
contextMenuEvent
(
QContextMenuEvent
*
event
)
...
...
modules/gui/qt4/components/interface_widgets.hpp
View file @
7bfa5717
...
...
@@ -89,13 +89,16 @@ class BackgroundWidget : public QWidget
Q_OBJECT
public:
BackgroundWidget
(
intf_thread_t
*
);
void
setExpandstoHeight
(
bool
b_expand
)
{
b_expandPixmap
=
b_expand
;
}
private:
QLabel
*
label
;
QString
pixmapUrl
;
bool
b_expandPixmap
;
virtual
void
contextMenuEvent
(
QContextMenuEvent
*
event
);
intf_thread_t
*
p_intf
;
virtual
void
resizeEvent
(
QResizeEvent
*
event
);
protected:
void
paintEvent
(
QPaintEvent
*
e
);
static
const
int
MARGIN
=
5
;
public
slots
:
void
toggle
(){
TOGGLEV
(
this
);
}
void
updateArt
(
const
QString
&
);
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment