src/hbservers/themechanger/themeselectionlist.cpp
changeset 2 06ff229162e9
parent 1 f7ac710697a9
child 3 11d3954df52a
child 4 ae1717029441
--- a/src/hbservers/themechanger/themeselectionlist.cpp	Mon May 03 12:48:33 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,289 +0,0 @@
-/****************************************************************************
-**
-** Copyright (C) 2008-2010 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (developer.feedback@nokia.com)
-**
-** This file is part of the HbServers module of the UI Extensions for Mobile.
-**
-** GNU Lesser General Public License Usage
-** This file may be used under the terms of the GNU Lesser General Public
-** License version 2.1 as published by the Free Software Foundation and
-** appearing in the file LICENSE.LGPL included in the packaging of this file.
-** Please review the following information to ensure the GNU Lesser General
-** Public License version 2.1 requirements will be met:
-** http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
-**
-** In addition, as a special exception, Nokia gives you certain additional
-** rights.  These rights are described in the Nokia Qt LGPL Exception
-** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
-**
-** If you have questions regarding the use of this file, please contact
-** Nokia at developer.feedback@nokia.com.
-**
-****************************************************************************/
-#include <QSettings>
-#include <QStringList>
-#include <QDir>
-#include <QTimer>
-#include <hbinstance.h>
-#include <hbmenu.h>
-#include <hbaction.h>
-#include <hbicon.h>
-#include <hblistwidgetitem.h>
-#include <QDebug>
-#include <QTime>
-
-#include "themeselectionlist.h"
-#include "themechangerdefs.h"
-
-/**
- * Constructor
- */
-ThemeSelectionList::ThemeSelectionList(
-#ifdef Q_OS_SYMBIAN
-    ThemeClientSymbian* client
-#else
-    ThemeClientQt* client
-#endif
-                        ): 
-                        oldItemIndex(-1),
-                        themelist(new HbListWidget(this)),
-                        rightMark(new HbIcon(QString("qtg_small_tick"))),
-                        noMark(new HbIcon(QString(""))),
-                        client(client)
-{
-    connect(themelist, SIGNAL(activated(HbListWidgetItem *)),this, SLOT(setChosen(HbListWidgetItem *)));
-    setWidget(themelist);
-
-    // Automatic updation of the themelist when some theme is installed or uninstalled
-    // when the themechanger app is open
-    watcher=new QFileSystemWatcher();
-    foreach(const QString &KThemeRootPath, rootPaths()) {
-        if(!KThemeRootPath.contains("/romthemes")){
-        watcher->addPath(KThemeRootPath+"/themes/icons/");
-        }
-    }
-    connect(watcher,SIGNAL(directoryChanged(const QString &)),this,SLOT(updateThemeList(const QString &)));
-    QObject::connect(this,SIGNAL(newThemeSelected(QString)),this,SLOT(sendThemeName(QString)));    
-#ifdef THEME_CHANGER_TIMER_LOG
-    idleTimer = new QTimer(this);
-    connect(idleTimer, SIGNAL(timeout()), this, SLOT(processWhenIdle()));
-    connect(hbInstance->theme(),SIGNAL(changeFinished()), this, SLOT(themeChanged()));
-    idleTimer->start(0); // to make a connection to server
-#endif
-}
-
-/**
- * Destructor
- */
-ThemeSelectionList::~ThemeSelectionList()
-{
-    // Set the theme to the applied theme before exiting.
-    setChosen(themelist->item(oldItemIndex));
-    delete noMark;
-
-    noMark=NULL;
-    delete rightMark;
-    rightMark=NULL;
-
-    // Reset the item view
-    themelist->reset();
-    delete themelist;
-    themelist=NULL;
-}
-
-
-/**
- * displayThemes
- */
-void ThemeSelectionList::displayThemes()
-{
-    bool entryAdded = false;
-    bool themePresent = false;
-    foreach(const QString &KThemeRootPath, rootPaths()){
-        dir.setPath(KThemeRootPath) ;
-        QStringList list = dir.entryList(QDir::AllDirs|QDir::NoDotAndDotDot,QDir::Name);
-        if(list.contains("themes",Qt::CaseInsensitive )) {
-            themePresent = true;
-            QDir root = KThemeRootPath;
-            dir.setPath(root.path()+"/themes/icons/") ;
-            QStringList iconthemeslist=dir.entryList(QDir::AllDirs|QDir::NoDotAndDotDot,QDir::Name);
-            foreach(QString themefolder, iconthemeslist) {
-                QDir iconThemePath(root.path()+"/themes/icons/"+themefolder);
-                if(iconThemePath.exists("index.theme")) {
-                    QSettings iniSetting(iconThemePath.path()+"/index.theme",QSettings::IniFormat);
-                    iniSetting.beginGroup("Icon Theme");
-                    QString hidden = iniSetting.value("Hidden").toString();
-                    QString name = iniSetting.value("Name").toString();
-                    iniSetting.endGroup();
-                    if((hidden == "true") ||( hidden == "")||(name!=themefolder) ) {
-                        iconthemeslist.removeOne(themefolder);
-                    }
-                }
-                else {
-                     iconthemeslist.removeOne(themefolder);
-                }
-            
-            }
-            if(!entryAdded){
-                iconthemeslist.insert(0,"hbdefault"); //adding one default entry
-                entryAdded = true;
-            }
-            list=iconthemeslist;
-            for (int i=0; i <list.count();i++) {
-                // populate theme list with existing themes
-                if((HbInstance::instance()->theme()->name())==(list.at(i))) { 
-                    themelist->addItem(*rightMark,list.at(i));
-                    oldItemIndex=themelist->count()-1;
-                    themelist->setCurrentRow(oldItemIndex);
-                }
-                else {
-                    themelist->addItem(*noMark,list.at(i));
-                }
-            }
-        }
-    }
-    //    else{//add a case for no theme ,make hbdefault entry
-    if(!themePresent) {
-            QStringList defaultList;
-            defaultList.insert(0,"hbdefault"); //adding one default entry
-            themelist->addItem(*rightMark,defaultList.at(0));
-            QString themeName=HbInstance::instance()->theme()->name();
-            if (themeName != "hbdefault")
-            {
-                if (!client->isConnected()) {
-                    bool success = client->connectToServer();
-                    if (success) {
-                        emit newThemeSelected("hbdefault");
-                    }
-                }
-                else {
-                    emit newThemeSelected("hbdefault");
-                }
-            }
-
-        }
-}
-
-/**
- * setChosen
- */
-void ThemeSelectionList::setChosen(HbListWidgetItem *item)
-{
-    QString str=item->text();
-
-#ifdef THEME_CHANGER_TRACES
-    qDebug() << "ThemeSelectionList::Setchosen with ThemeName: "<<str;
-#endif
-    if(iCurrentTheme != str ) {
-#ifdef THEME_CHANGER_TIMER_LOG
-        timer.start();
-        qDebug() << "Selected theme: " << str;
-#endif
-        iCurrentTheme = str;
-        if (!client->isConnected()) {
-            bool success = client->connectToServer();
-            if (success) {
-                emit newThemeSelected(str); 
-            }
-        }
-        else {
-            emit newThemeSelected(str); 
-        }
-    }
-    else
-    {
-        applySelection(); //double tap //put a tick
-    }
-}
-
-
-/**
- * applySelection
- */
-void ThemeSelectionList::applySelection()
-{
-    if(oldItemIndex!=themelist->currentRow()) {
-        themelist->setIcon(themelist->currentRow(),*rightMark);
-        if(oldItemIndex >= 0) {
-            themelist->setIcon(oldItemIndex,*noMark);
-        }
-        oldItemIndex = themelist->currentRow();
-    }
-}
-
-
-/**
- * event
- */
-bool ThemeSelectionList::event(QEvent *e)
-{
-    if((e->type()==QEvent::ShortcutOverride)||(e->type()==QEvent::WindowDeactivate)) {        
-        // save old applied theme
-        themelist->setCurrentRow(oldItemIndex);
-        themelist->setFocus();
-        setChosen(themelist->item(oldItemIndex));
-        return true;
-    }
-    return (HbView::event(e));
-}
-
-/**
- * updateThemeList
- */
-void ThemeSelectionList::updateThemeList(const QString &path)
-{
-    Q_UNUSED(path);
-    themelist->clear();
-    this->displayThemes();
-}
-
-
-/**
- * sendThemeName
- */
-void ThemeSelectionList::sendThemeName(const QString& name)
-{
-    client->changeTheme(name);
-}
-
-/**
- * \internal
- */
-QStringList ThemeSelectionList::rootPaths()
-{
-    QStringList rootDirs;
-#if defined(Q_OS_SYMBIAN)
-    rootDirs << "c:/resource/hb"
-             << "z:/resource/hb"
-             << "e:/resource/hb"
-             << "f:/resource/hb";
-#else
-    QString envDir = qgetenv("HB_THEMES_DIR");
-    if (!envDir.isEmpty())
-        rootDirs << envDir;
-#endif
-#if defined(Q_OS_MAC)
-    rootDirs << QDir::homePath() + "/Library/UI Extensions for Mobile";
-#elif !defined(Q_OS_SYMBIAN)
-    rootDirs << HB_RESOURCES_DIR;
-#endif
-    return rootDirs;
-}
-
-#ifdef THEME_CHANGER_TIMER_LOG
-void ThemeSelectionList::processWhenIdle()
-{    
-    qDebug() << "Theme changed applied in " << timer.elapsed() << " msec";
-    idleTimer->stop();
-    if (!client->isConnected()) {
-        client->connectToServer();
-    }
-}
-
-void ThemeSelectionList::themeChanged()
-{
-    idleTimer->start(0);
-}
-#endif //THEME_CHANGER_TIMER_LOG