--- a/controlpanelplugins/themeplugin/src/cpthemecontrol.cpp Tue Aug 31 15:15:28 2010 +0300
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,317 +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:
- *
- */
-
-/*!
- \class CpThemeControl
- \brief CpThemeControl creates and controls views for Theme Changer plugin and handles
- user interaction to preview and change the themes.
-
- This class also connects to the theme server using the HbThemeChanger and sets the theme
- based on user interaction with the views.
-
- */
-
-#include <QString>
-#include <QModelIndex>
-#include <QTranslator>
-#include <QSortFilterProxyModel>
-#include <QThread>
-#include <QTimer>
-#include <QDesktopServices>
-#include <QUrl>
-
-#include <hbmainwindow.h>
-#include <hbinstance.h>
-#include "cpthemechanger.h"
-
-#include "cpthemecontrol.h"
-#include "cpthemelistview.h"
-#include "cpthemeinfo.h"
-#include "cpthemelistmodel.h"
-
-#include <hbdialog.h>
-#include <hblabel.h>
-
-//time out time before showing a processing dialog.
-static const int KThemeChangeTimeOutMilliSeconds = 2000;
-
-/*!
- Helper function to fetch the main window.
-*/
-static HbMainWindow *mainWindow()
-{
- QList< HbMainWindow* > mainWindows = hbInstance->allMainWindows();
- if (!mainWindows.isEmpty()) {
- return mainWindows.front();
- }
- return 0;
-}
-
-/*!
- constructor.
-*/
-CpThemeControl::CpThemeControl(): mThemeListView(0),
- mThemeChanger(0),
- mListModel(0),
- mThemeChangeFinished(false),
- mWaitDialog(0)
-{
- mThemeChanger = new CpThemeChanger();
-
- QTranslator *translator = new QTranslator(this);
- QString lang = QLocale::system().name();
- QString path = "Z:/resource/qt/translations/";
- translator->load("control_panel_" + lang, path);
- qApp->installTranslator(translator);
-
- connect(mThemeChanger,SIGNAL(themeChangeFinished()), this, SLOT(themeChangeFinished()));
-
-}
-
-
-/*!
- destorys the list view and theme changer objects.
-*/
-CpThemeControl::~CpThemeControl()
-{
- delete mThemeListView;
- mThemeListView = 0;
-
- delete mThemeChanger;
- mThemeChanger = 0;
-
- delete mWaitDialog;
- mWaitDialog = 0;
-}
-
-/*!
- Creates the theme list view. Gets the themes, creates a model and sets the list model.
-*/
-void CpThemeControl::createThemeList()
-{
-
- mThemeListView = new CpThemeListView();
-
- if(!mListModel) {
- mListModel = new CpThemeListModel(this);
- }
-
- // Set the model for theme list.
- mThemeListView->setModel(mListModel);
-
- setActiveThemeIndex();
-
- //connect to signal for selecting a list item.
- connect(mThemeListView,SIGNAL(newThemeSelected(QModelIndex)),
- this,SLOT(newThemeSelected(QModelIndex)));
-
- connect(mThemeListView, SIGNAL(oviClicked()), this, SLOT(getOviTheme()));
-
- //handle signal for list view closing. (e.g Back softkey pressed)
- connect(mThemeListView,SIGNAL(aboutToClose()),
- this,SLOT(themeListClosed()));
-}
-
-/*!
- returns the instance of themelist view. Used by control panel to set
- the view.
-*/
-CpBaseSettingView* CpThemeControl::themeListView()
-{
- //If the view was removed before by control panel app, create it again.
- if(!mThemeListView) {
- createThemeList();
- }
-
- return mThemeListView;
-}
-
-/*!
- returns the name of the current theme.
-*/
-QString CpThemeControl::currentThemeName() const
-{
- QString name = "";
- if(mThemeChanger->currentTheme()) {
- name = mThemeChanger->currentTheme()->name();
- }
- return name;
-}
-
-/*!
- returns the repersenatative icon of the current theme.
-*/
-HbIcon CpThemeControl::currentThemeIcon() const
-{
- HbIcon icon;
- if(mThemeChanger->currentTheme()) {
- icon = mThemeChanger->currentTheme()->icon();
- }
- return icon;
-}
-
-/*!
- Slot called when a list item of the theme list is selected.
-*/
-void CpThemeControl::newThemeSelected(const QModelIndex& index)
-{
- if(!index.isValid()) {
- return;
- }
-
- CpThemeInfo themeInfo;
- QVariant data;
-
- //reset the current index to active theme, so that the selection remains on current
- //theme even though another list item is selected.
- setActiveThemeIndex();
-
- //get the theme name.
- data = index.data(Qt::DisplayRole);
- if(data.isValid()) {
- themeInfo.setName(data.toString());
- }
-
- //get theme path
- data = index.data(CpThemeListModel::ItemDataRole);
- if(data.isValid()) {
- themeInfo.setItemData(data.toString());
- }
-
- applyTheme(themeInfo);
-
-}
-
-void CpThemeControl::getOviTheme()
-{
- QString url = QString("http://lr.ovi.mobi/store/themes");
- // Launch the URL in the browser and
- // continue to Preview if not successful
- QDesktopServices::openUrl(QUrl(url, QUrl::TolerantMode));
-
-}
-
-/*!
- Slot called when a Select key is pressed in theme preview view.
-*/
-void CpThemeControl::applyTheme(const CpThemeInfo& theme)
-{
- QThread::currentThread()->setPriority(QThread::HighPriority);
-
- if(mThemeChanger->changeTheme(theme)) {
-
- //Start a timer. If theme change takes more than 1 seconds,
- //we will show a dialog (mWaitDialog) until theme change
- //is done (themeChangeFinished is called).
- QTimer::singleShot(KThemeChangeTimeOutMilliSeconds, this, SLOT(themeWaitTimeout()));
-
- mThemeChangeFinished = false;
- } else {
- //theme change failed, go back to control panel.
- setActiveThemeIndex();
- }
-
-}
-
-/*!
- Slot for when the theme list view is closed. Ownership of the theme list was given to
- control panel, so the class won't delete it.
-
-*/
-void CpThemeControl::themeListClosed()
-{
- mThemeListView = 0;
-}
-
-/*!
- asks the theme list view to close.
-*/
-void CpThemeControl::triggerThemeListClose()
-{
- mThemeListView->closeView();
-}
-
-void CpThemeControl::themeChangeTimeout()
-{
- //Theme change is finished and idle timer has timed out,
- //so revert back the application priority to normal
- //and go back to control panel view.
- if(mWaitDialog && mWaitDialog->isVisible()) {
- mWaitDialog->hide();
- }
- setActiveThemeIndex();
- QThread::currentThread()->setPriority(QThread::NormalPriority);
-}
-
-void CpThemeControl::themeWaitTimeout()
-{
- //If after this timeOut, theme change is still in progress,
- //show a processing dialog.
- if(!mThemeChangeFinished){
- if(!mWaitDialog) {
- mWaitDialog = new HbDialog();
- mWaitDialog->setDismissPolicy(HbPopup::NoDismiss);
- mWaitDialog->setModal(false);
- mWaitDialog->setTimeout(HbPopup::NoTimeout);
- // Create and set HbLabel as content widget.
- QString processingText = hbTrId("txt_common_info_processing") + QString("...");
- HbLabel *label = new HbLabel(processingText);
- label->setAlignment(Qt::AlignCenter);
- mWaitDialog->setContentWidget(label);
- }
- // as we do not need any signals, calling show() instead of open()
- mWaitDialog->show();
- }
-}
-
-void CpThemeControl::themeChangeFinished()
-{
- //Theme change is done. Start an idle timer to let the UI
- //finish remaining tasks.
- QTimer::singleShot(0, this, SLOT(themeChangeTimeout()));
- mThemeChangeFinished = true;
-
- if(mThemeChanger->currentTheme()) {
- emit themeUpdated(mThemeChanger->currentTheme()->name(), mThemeChanger->currentTheme()->icon());
- }
-
-}
-
-/*!
- * Private function that sets the current index of theme list view to indicate
- * the active theme.
- */
-void CpThemeControl::setActiveThemeIndex()
-{
- //Get the index of current theme.
- CpThemeListModel* themeListModel = dynamic_cast<CpThemeListModel*>(mListModel);
- const CpThemeInfo* currentTheme = mThemeChanger->currentTheme();
- if(themeListModel && currentTheme) {
- QModelIndex sourceIndex = mListModel->index(themeListModel->indexOf(*currentTheme),0);
- //set current index.
- mThemeListView->themeList()->setCurrentIndex(sourceIndex, QItemSelectionModel::SelectCurrent);
- }
- else {
- mThemeListView->themeList()->setCurrentIndex(QModelIndex(), QItemSelectionModel::Clear);
- }
-}
-
-
-
-
-
-