Ticket #6329: randomimage.2.diff

File randomimage.2.diff, 1.6 KB (added by robert.mcnamara@…, 12 years ago)

Fixes a crash if directory was relative path

  • libs/libmythui/mythuiimage.cpp

     
    33#include <QFile>
    44#include <QDir>
    55#include <QDomDocument>
     6#include <QImageReader>
    67
    78#include "mythverbose.h"
    89
     
    564565bool MythUIImage::ParseElement(QDomElement &element)
    565566{
    566567    if (element.tagName() == "filename")
     568    {
    567569        m_OrigFilename = m_Filename = getFirstText(element);
     570        if (m_Filename.endsWith("/"))
     571        {
     572            QDir imageDir(m_Filename);
     573            if (!imageDir.exists())
     574            {
     575                QString themeDir = GetMythUI()->GetThemeDir() + "/";
     576                imageDir = themeDir + m_Filename;
     577            }
     578            QStringList imageTypes;
     579
     580            QList< QByteArray > exts = QImageReader::supportedImageFormats();
     581            QList< QByteArray >::Iterator it = exts.begin();
     582            for (;it != exts.end();++it)
     583            {
     584                imageTypes.append( QString("*.").append(*it) );
     585            }
     586
     587            imageDir.setNameFilters(imageTypes);
     588
     589            QStringList imageList = imageDir.entryList();
     590            srand(time(NULL));
     591            QString randFile = QString("%1%2").arg(m_Filename)
     592                           .arg(imageList.takeAt(rand() % imageList.size()));
     593            m_OrigFilename = m_Filename = randFile;
     594        }     
     595    }
    568596    else if (element.tagName() == "filepattern")
    569597    {
    570598        m_OrigFilename = m_Filename = getFirstText(element);