summaryrefslogtreecommitdiffstats
path: root/kbfxlib/common/kbfxthemesdata.cpp
blob: 2ebaa103544a931933ce918a16763fe0e958d1ed (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
/*
 *   Copyright (C) 2006
 *   Siraj Razick <siraj@kdemail.net>
 *   PhobosK <phobosk@mail.kbfx.org>
 *   see Also AUTHORS
 *
 *   This program is free software; you can redistribute it and/or modify
 *   it under the terms of the GNU Library General Public License version 2 as
 *   published by the Free Software Foundation
 *
 *   This program is distributed in the hope that it will be useful,
 *   but WITHOUT ANY WARRANTY; without even the implied warranty of
 *   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 *   GNU General Public License for more details
 *
 *   You should have received a copy of the GNU Library General Public
 *   License along with this program; if not, write to the
 *   Free Software Foundation, Inc.,
 *   51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.
 */

#include "kbfxthemesdata.h"

KbfxThemesData::KbfxThemesData()
{}

KbfxThemesData::~KbfxThemesData()
{
	m_themesMap.clear();
}

ThemesMap KbfxThemesData::setThemeList ( QString path )
{
	QString m_KbfxThemesVersion	= ConfigInit().m_KbfxThemesVersion;
	bool m_KbfxShowOldThemes	= ConfigInit().m_KbfxShowOldThemes;
	QFileInfo *fi=0, *f=0;

	m_themesMap.clear();

	KStandardDirs *tmp = new KStandardDirs();

	/* search themes in KDE Resource Folders and append user selected folder */
	QStringList skinsFolders = tmp->findDirs ( "data", "kbfx/skins" );
	if ( tmp->exists ( path ) )
	{
		skinsFolders.append ( path );
	}
	else
	{
		kdDebug() << "KbfxThemesData: Path doesn't exist! :" << path << endl;
	}

	for ( QStringList::Iterator skinsIt = skinsFolders.begin(); skinsIt != skinsFolders.end(); ++skinsIt )
	{
		QDir d ( *skinsIt );
		d.setFilter ( QDir::Dirs );

		const QFileInfoList *list = d.entryInfoList();
		QFileInfoListIterator it ( *list );

		while ( ( fi = it.current() ) != 0 )
		{
			if ( !fi->fileName().startsWith ( "." ) )
			{
				f = new QFileInfo ( d, fi->fileName() + "/" + m_KbfxThemesVersion );
				if ( m_KbfxShowOldThemes )
				{
					m_themesMap[fi->fileName() ] = ( fi->dirPath ( TRUE ) ).append ( "/" );
				}
				else
				{
					if ( f->exists () )
    					m_themesMap[fi->fileName() ] = ( fi->dirPath ( TRUE ) ).append ( "/" );
				}
			}
			++it;
		}
	}

	/* kdDebug() << "Available Themes - "
	 *           << m_themesMap.keys()
	 *           << m_themesMap.values()
	 *           << endl;
	 */

	delete fi;
	delete f;
	delete tmp;
	return m_themesMap;
}