diff -r 90fe62538f66 -r 5f281e37a2f5 controlpanelplugins/themeplugin/src/cpthemeutil.cpp --- a/controlpanelplugins/themeplugin/src/cpthemeutil.cpp Tue Aug 31 15:15:28 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,217 +0,0 @@ -/* - * Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies). - * All rights reserved. - * This component and the accompanying materials are made available - * under the terms of "Eclipse Public License v1.0"" - * which accompanies this distribution, and is available - * at the URL "http://www.eclipse.org/legal/epl-v10.html". - * - * Initial Contributors: - * Nokia Corporation - initial contribution. - * - * Contributors: - * - * Description: - * - */ - -#include "cpthemeinfo.h" -#include "cpthemeutil.h" - -#include -#include -#include -#include -#include - -#include -#include -#include - -/*! - * This class provides utility function to get Theme information. - */ - -#if defined(Q_OS_SYMBIAN) -#include -#include - static const TUid KServerUid3={0x20022E82}; - static const TUint32 KDefaultThemeNameKey = 0x2; - -#endif - - - //Location of theme preview and background icons. - static const QString KPreviewThumbnailNVG = "/scalable/qtg_graf_theme_preview_thumbnail.nvg"; - static const QString KPreviewThumbnailSVG = "/scalable/qtg_graf_theme_preview_thumbnail.svg"; - - static const QString KBackgroundPrtNVG = "/scalable/qtg_graf_screen_bg_prt.nvg"; - static const QString KBackgroundLscNVG = "/scalable/qtg_graf_screen_bg_lsc.nvg"; - static const QString KBackgroundPrtSVG = "/scalable/qtg_graf_screen_bg_prt.svg"; - static const QString KBackgroundLscSVG = "/scalable/qtg_graf_screen_bg_lsc.svg"; - - - - - -/* - * Builds a CpThemeInfo object given theme path and theme name. It creates the name and - * preview icons for the object. Creates a new CpThemeInfo objects. Caller takes ownership. - * Returns NULL if can't build the object. - */ -CpThemeInfo* CpThemeUtil::buildThemeInfo(const QString& themePath, const QString& themeName) -{ - CpThemeInfo *themeInfo = new CpThemeInfo(); - QString iconPath; - - QString name = themeName; - QString hidden = ""; - - //first look into the index.theme file to get theme information. - - if(QFileInfo(themePath + "/index.theme").exists()) { - QSettings iniSetting(themePath + "/index.theme", QSettings::IniFormat); - iniSetting.beginGroup("Icon Theme"); - name = iniSetting.value("Name").toString(); - hidden = iniSetting.value("Hidden").toString(); - iconPath = iniSetting.value("PreviewThumbnailPath").toString(); - iniSetting.endGroup(); - - } - - if(name.isEmpty() || (hidden == "true") ||( hidden == "")) { - return NULL; - } - - themeInfo->setName(name); - themeInfo->setItemType(CpThemeInfo::ThemeListItemType_default); - themeInfo->setItemData(themePath); - - //Get the icons. Logic is as follow: - /* 1. If the icon path is in index.theme and the icon exist, use it. - * 2. Otherwise look for the icon in the theme folder. - * 2. If preview icon doesn't exist, use background icon. - * 3. If no icon exist (background or preview),use default theme icon. - */ - if(iconPath.isEmpty() || !QFileInfo(themePath + iconPath).exists()){ - //Set thumbnail - HbIcon themeIcon = getPreviewIcon(themePath); - if(themeIcon.isNull()){ - QString defaultThemePath = defaultTheme(); - if(!defaultThemePath.isEmpty()) { - themeIcon = getPreviewIcon(defaultThemePath); - } - } - themeInfo->setIcon(themeIcon); - } else { - themeInfo->setIcon(HbIcon(themePath + iconPath)); - } - - return themeInfo; - -} - -/*! - * given a path to the theme, returns the preview icon or just a Null icon - * if it doesn't exist. - */ -HbIcon CpThemeUtil::getPreviewIcon(const QString& themePath) -{ - HbIcon themeIcon; - if(QFileInfo(themePath + KPreviewThumbnailNVG).exists()){ - themeIcon = HbIcon(themePath + KPreviewThumbnailNVG); - }else if(QFileInfo(themePath + KPreviewThumbnailSVG).exists()){ - themeIcon = HbIcon(themePath + KPreviewThumbnailSVG); - }else if(QFileInfo(themePath + KBackgroundPrtNVG).exists()){ - themeIcon = HbIcon(themePath + KBackgroundPrtNVG); - }else if(QFileInfo(themePath + KBackgroundPrtSVG).exists()){ - themeIcon = HbIcon(themePath + KBackgroundPrtSVG); - } - return themeIcon; - -} - -/*! Creates a list of CpThemeInfo objects representing theme information. - * - */ -QList CpThemeUtil::buildThemeList() -{ - QList themeList; - - QList > mThemesPathList = availableThemes(); - QPairpair; - foreach (pair, mThemesPathList) { - QDir themeDir; - QString name = pair.first; - QString path = pair.second; - themeDir.setPath( path ) ; - CpThemeInfo* themeInfo; - if(themeDir.exists("index.theme") && - (themeDir.exists("scalable") || themeDir.exists("pixmap") )) { - themeInfo = buildThemeInfo(path, name); - if(themeInfo && !themeInfo->name().isEmpty()) { - themeList.append(*themeInfo); - } - } - } - qSort( themeList ); - return themeList; -} - -/*! - * Returns the default theme path. - */ -QString CpThemeUtil::defaultTheme() -{ - //static because default theme doesn't change. - static QString defaultThemePath(""); - - if(defaultThemePath.isEmpty()) { - - -#ifdef Q_OS_SYMBIAN - CRepository *repository = 0; - TRAP_IGNORE(repository = CRepository::NewL(KServerUid3)); - if (repository) { - TBuf<256> value; - if (KErrNone == repository->Get((TUint32)KDefaultThemeNameKey, value)) { - QString qvalue((QChar*)value.Ptr(), value.Length()); - defaultThemePath = qvalue.trimmed(); - } - value.Zero(); - delete repository; - } - -#endif - - } - return defaultThemePath; -} - - -const QStringList CpThemeUtil::themeDirectories(const QList& themeInfoList) -{ - QStringList themeDirs; - - foreach(const CpThemeInfo& themeInfo, themeInfoList) { - QDir themePath(themeInfo.itemData()); - QString topDir; - if(themePath.cdUp()) { - topDir = themePath.path(); - if(!themeDirs.contains(topDir)) { - themeDirs.append(topDir); - } - } - } - return themeDirs; -} - -const QList< QPair< QString, QString > > CpThemeUtil::availableThemes( ) -{ - - QList > result = HbThemeServices::availableThemes(); - return result; - -} - -