source: smplayer/trunk/src/images.cpp@ 102

Last change on this file since 102 was 93, checked in by Silvan Scherrer, 15 years ago

smplayer: 0.6.9

File size: 3.5 KB
Line 
1/* smplayer, GUI front-end for mplayer.
2 Copyright (C) 2006-2010 Ricardo Villalba <rvm@escomposlinux.org>
3
4 This program is free software; you can redistribute it and/or modify
5 it under the terms of the GNU General Public License as published by
6 the Free Software Foundation; either version 2 of the License, or
7 (at your option) any later version.
8
9 This program is distributed in the hope that it will be useful,
10 but WITHOUT ANY WARRANTY; without even the implied warranty of
11 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
12 GNU General Public License for more details.
13
14 You should have received a copy of the GNU General Public License
15 along with this program; if not, write to the Free Software
16 Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
17*/
18
19#define COMPAT_WITH_OLD_ICONS 1
20
21#include "images.h"
22#include "global.h"
23#include "preferences.h"
24#include "paths.h"
25
26#include <QFile>
27
28using namespace Global;
29
30QString Images::filename(const QString & name, bool png) {
31 QString filename = name;
32
33 if (filename.endsWith("_small")) {
34 filename = filename.replace("_small", "");
35 }
36
37 if (png) filename += ".png";
38
39 return filename;
40}
41
42QString Images::file(const QString & icon_name) {
43 bool ok = false;
44 QString filename;
45
46 if (!pref->iconset.isEmpty()) {
47 filename = Paths::configPath() + "/themes/" + pref->iconset + "/" + icon_name;
48 if (!QFile::exists(filename)) {
49 filename = Paths::themesPath() + "/" + pref->iconset + "/" + icon_name;
50 }
51
52 ok = (QFile::exists(filename));
53 }
54
55 if (!ok) {
56 filename = ":/icons-png/" + icon_name;
57 }
58
59 qDebug("Images::file: icon_name: '%s', filename: '%s'", icon_name.toUtf8().constData(), filename.toUtf8().constData());
60
61 return filename;
62}
63
64QPixmap Images::loadIcon(const QString & icon_name) {
65 QPixmap p;
66
67 if (!pref->iconset.isEmpty()) {
68 QString filename = Paths::configPath() + "/themes/" + pref->iconset + "/" + icon_name;
69 if (!QFile::exists(filename)) {
70 filename = Paths::themesPath() + "/" + pref->iconset + "/" + icon_name;
71 }
72 //qDebug("Images::loadIcon: filename: '%s'", filename.toUtf8().data());
73
74 if (QFile::exists(filename)) {
75 p.load( filename );
76 }
77 }
78
79 return p;
80}
81
82QPixmap Images::icon(QString name, int size, bool png) {
83 bool small = false;
84
85 if (name.endsWith("_small")) {
86 small = true;
87 }
88
89 QString icon_name = Images::filename(name,png);
90
91 QPixmap p = Images::loadIcon( icon_name );
92 bool ok = !p.isNull();
93
94#if COMPAT_WITH_OLD_ICONS
95 if (!ok) {
96 if ( (name.startsWith("r")) ||
97 (name.startsWith("t")) ||
98 (name.startsWith("n")) )
99 {
100 QString icon_name = Images::filename("x"+name,png);
101 p = Images::loadIcon( icon_name );
102 ok = !p.isNull();
103 }
104 }
105#endif
106
107 if (!ok) {
108 p = QPixmap(":/icons-png/" + icon_name);
109 ok = !p.isNull();
110 }
111
112 if (ok) {
113 if (small) {
114 p = resize(&p);
115 }
116 if (size!=-1) {
117 p = resize(&p,size);
118 }
119 } else {
120 //qWarning("Images2::icon: icon '%s' not found", name.toUtf8().data());
121 }
122
123 return p;
124}
125
126QPixmap Images::resize(QPixmap *p, int size) {
127 return QPixmap::fromImage( (*p).toImage().scaled(size,size,Qt::IgnoreAspectRatio,Qt::SmoothTransformation) );
128}
129
130QPixmap Images::flip(QPixmap *p) {
131 return QPixmap::fromImage( (*p).toImage().mirrored(true, false) );
132}
133
134QPixmap Images::flippedIcon(QString name, int size, bool png) {
135 QPixmap p = icon(name, size, png);
136 p = flip(&p);
137 return p;
138}
Note: See TracBrowser for help on using the repository browser.