Ignore:
Timestamp:
Oct 9, 2014, 2:54:21 PM (11 years ago)
Author:
Silvan Scherrer
Message:

SMPlayer: updated trunk to 14.9.0

Location:
smplayer/trunk
Files:
2 edited

Legend:

Unmodified
Added
Removed
  • smplayer/trunk

  • smplayer/trunk/src/images.cpp

    r165 r170  
    1717*/
    1818
    19 #define COMPAT_WITH_OLD_ICONS 1
     19#include "images.h"
     20#include <QFile>
     21#include <QDebug>
    2022
    21 #include "images.h"
     23#ifdef USE_RESOURCES
     24#include <QResource>
     25#endif
     26
     27#ifdef SMCODE
    2228#include "global.h"
    2329#include "preferences.h"
    2430#include "paths.h"
     31using namespace Global;
     32#endif
    2533
    26 #include <QFile>
     34QString Images::current_theme;
     35QString Images::themes_path;
    2736
    28 using namespace Global;
     37#ifdef USE_RESOURCES
     38QString Images::last_resource_loaded;
    2939
    30 QString Images::filename(const QString & name, bool png) {
    31         QString filename = name;
     40QString Images::resourceFilename() {
     41        QString filename = QString::null;
    3242
    33         if (filename.endsWith("_small")) {
    34                 filename = filename.replace("_small", "");
     43        if ((!themes_path.isEmpty()) && (!current_theme.isEmpty())) {
     44                filename = themes_path +"/"+ current_theme +"/"+ current_theme +".rcc";
    3545        }
    3646
    37         if (png) filename += ".png";
     47        qDebug() << "Images::resourceFilename:" << filename;
    3848
    3949        return filename;
    4050}
     51#endif
    4152
    42 QString Images::file(const QString & icon_name) {
    43         bool ok = false;
    44         QString filename;
     53void Images::setTheme(const QString & name) {
     54        current_theme = name;
    4555
    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 
    64 QPixmap 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 
    82 QPixmap 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         //qDebug("%s", icon_name.toUtf8().constData());
    92 
    93         QPixmap p = Images::loadIcon( icon_name );
    94         bool ok = !p.isNull();
    95 
    96 #if COMPAT_WITH_OLD_ICONS
    97         if (!ok) {
    98                 if ( (name.startsWith("r")) ||
    99              (name.startsWith("t")) ||
    100                  (name.startsWith("n")) )
    101                 {
    102                         QString icon_name = Images::filename("x"+name,png);
    103                         p = Images::loadIcon( icon_name );
    104                         ok = !p.isNull();
    105                 }
     56#ifdef SMCODE
     57        QString dir = Paths::configPath() + "/themes/" + name;
     58        if (QFile::exists(dir)) {
     59                setThemesPath(Paths::configPath() + "/themes/");
     60        } else {
     61                setThemesPath(Paths::themesPath());
    10662        }
    10763#endif
    10864
    109         if (!ok) {
    110                 p = QPixmap(":/icons-png/" + icon_name);
    111                 ok = !p.isNull();
     65#ifdef USE_RESOURCES
     66        if (!last_resource_loaded.isEmpty()) {
     67                qDebug() << "Images::setTheme: unloading" << last_resource_loaded;
     68                QResource::unregisterResource(last_resource_loaded);
     69                last_resource_loaded = QString::null;
    11270        }
    11371
    114         if (ok) {
    115                 if (small) {
    116                         p = resize(&p);
     72        QString rs_file = resourceFilename();
     73        if (QFile::exists(rs_file)) {
     74                qDebug() << "Images::setTheme: loading" << rs_file;
     75                QResource::registerResource(rs_file);
     76                last_resource_loaded = rs_file;
     77        }
     78#endif
     79}
     80
     81void Images::setThemesPath(const QString & folder) {
     82        themes_path = folder;
     83        qDebug() << "Images::setThemesPath:" << themes_path;
     84}
     85
     86QString Images::file(const QString & name) {
     87#ifdef SMCODE
     88        if (current_theme != pref->iconset) {
     89                setTheme(pref->iconset);
     90        }
     91#endif
     92
     93#ifdef USE_RESOURCES
     94        QString icon_name = ":/" + current_theme + "/"+ name + ".png";
     95#else
     96        QString icon_name = themes_path +"/"+ current_theme + "/"+ name + ".png";
     97#endif
     98        if (!QFile::exists(icon_name)) {
     99                icon_name = ":/icons-png/" + name + ".png";
     100        }
     101
     102        //qDebug() << "Images::file:" << icon_name;
     103        return icon_name;
     104}
     105
     106
     107QPixmap Images::icon(QString name, int size) {
     108        QString icon_name = file(name);
     109        QPixmap p(icon_name);
     110
     111        if (!p.isNull()) {
     112                if (size != -1) {
     113                        p = resize(&p, size);
    117114                }
    118                 if (size!=-1) {
    119                         p = resize(&p,size);
    120                 }
    121         } else {
    122                 //qWarning("Images2::icon: icon '%s' not found", name.toUtf8().data());
    123115        }
    124116
     
    134126}
    135127
    136 QPixmap Images::flippedIcon(QString name, int size, bool png) {
    137         QPixmap p = icon(name, size, png);
     128QPixmap Images::flippedIcon(QString name, int size) {
     129        QPixmap p = icon(name, size);
    138130        p = flip(&p);
    139131        return p;
    140132}
    141133
    142 QIcon Images::multiIcon(QString name, QString fallback_icon) {
    143         QPixmap pix = Images::icon(name);
    144         if (pix.isNull()) return Images::icon(fallback_icon);
    145 
    146         QIcon icon;
    147         int w = pix.width();
    148         int h = pix.height();
    149         icon.addPixmap(pix.copy(0, 0, w, h/4 ), QIcon::Normal, QIcon::Off);
    150         //icon.setPixmap(pix.copy(0, h/4, w, h/4 ), MyIcon::MouseOver, MyIcon::Off);
    151         //icon.setPixmap(pix.copy(0, h/2, w, h/4 ), MyIcon::MouseDown, MyIcon::Off);
    152         icon.addPixmap(pix.copy(0, 3*h/4, w, h/4 ), QIcon::Disabled, QIcon::Off);
    153         return icon;
    154 }
    155 
     134#ifdef SMCODE
    156135QString Images::styleSheet(){
    157136        QString filename;
     
    178157        return dirname;
    179158}
    180 
     159#endif
Note: See TracChangeset for help on using the changeset viewer.