parse the stylesheet in an extra class
[duncan/yast2-qt4.git] / src / QY2Styler.cc
1 #include "QY2Styler.h"
2 #include <QFile>
3 #include <QString>
4 #include <QStringList>
5 #include <QApplication>
6
7 QY2Styler::QY2Styler( QObject *parent )
8     : QObject( parent )
9 {
10 }
11
12 void QY2Styler::setStyleSheet( const QString &filename )
13 {
14     QFile file( themeDir() + filename );
15     if ( file.open( QIODevice::ReadOnly ) )
16     {
17         QString content = file.readAll();
18         processUrls( content );
19         qApp->setStyleSheet( content );
20     }
21 }
22
23 void QY2Styler::processUrls(QString &text) const
24 {
25     QString result;
26     QStringList lines = text.split( '\n' );
27     QRegExp urlx( ": *url\\((.*)\\)" );
28     QRegExp backgroundx( "^ */\\* *Background: *([^ ]*) *([^ ]*) *\\*/$" );
29     for ( QStringList::const_iterator it = lines.begin(); it != lines.end(); ++it )
30     {
31         QString line = *it;
32         if ( urlx.indexIn( line ) >= 0 )
33             line.replace( urlx, ": url(" + themeDir() + urlx.cap( 1 ) + ")");
34
35         if ( backgroundx.exactMatch( line ) )
36             _backgrounds[backgroundx.cap( 1 )] = backgroundx.cap( 2 );
37
38         result += line;
39     }
40     text = result;
41 }
42
43 QString QY2Styler::themeDir() const
44 {
45     return THEMEDIR "/openSUSE/wizard/";
46 }
47
48 #include "QY2Styler.moc"