controlpanelplugins/themeplugin/src/cpthemecontrol.cpp
changeset 37 cb294e641644
parent 31 e79ce701c376
child 42 3487b2ea501a
--- a/controlpanelplugins/themeplugin/src/cpthemecontrol.cpp	Wed Aug 18 09:49:35 2010 +0300
+++ b/controlpanelplugins/themeplugin/src/cpthemecontrol.cpp	Thu Sep 02 20:27:31 2010 +0300
@@ -17,12 +17,9 @@
 
 /*!
     \class CpThemeControl
-    \brief CpThemeControl creates and controls two views for Theme Changer plugin and handles
+    \brief CpThemeControl creates and controls views for Theme Changer plugin and handles
 	user interaction to preview and change the themes.
 
-	It creates a list view of the themes.  When a list item is selected, it creates a preview
-	of the theme icon using a CpThemePreview class.  
-
 	This class also connects to the theme server using the HbThemeChanger and sets the theme
 	based on user interaction with the views.  
 
@@ -43,7 +40,6 @@
 
 #include "cpthemecontrol.h"
 #include "cpthemelistview.h"
-#include "cpthemepreview.h"
 #include "cpthemeinfo.h"
 #include "cpthemelistmodel.h"
 
@@ -56,7 +52,6 @@
 /*!
 	Helper function to fetch the main window.
 */
-
 static HbMainWindow *mainWindow() 
 {
     QList< HbMainWindow* > mainWindows = hbInstance->allMainWindows();
@@ -70,7 +65,6 @@
 	constructor.
 */
 CpThemeControl::CpThemeControl(): mThemeListView(0), 
-    mThemePreview(0), 
     mThemeChanger(0),
     mListModel(0),
     mThemeChangeFinished(false),
@@ -90,7 +84,7 @@
 
 
 /*!
-	destorys the list view, preview and theme changer objects.
+	destorys the list view and theme changer objects.
 */
 CpThemeControl::~CpThemeControl()
 {
@@ -100,16 +94,12 @@
     delete mThemeChanger;
     mThemeChanger = 0;
 
-    delete mThemePreview;
-    mThemePreview = 0;
-    
     delete mWaitDialog;
     mWaitDialog = 0;
 }
 
 /*!
-	Creates the theme list view.  Gets the themes, creates a model based on
-	theme names, icons, and icon paths and sets the list model.
+	Creates the theme list view.  Gets the themes, creates a model  and sets the list model.
 */
 void CpThemeControl::createThemeList()
 {
@@ -122,14 +112,14 @@
     
     // Set the model for theme list.
     mThemeListView->setModel(mListModel);
-    mThemeListView->themeList()->setSelectionMode(HbAbstractItemView::SingleSelection);
     
     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()),
@@ -190,95 +180,35 @@
     //theme even though another list item is selected.
     setActiveThemeIndex();
     
-    // Figure out whether this is a URI and appropriately delegate
-    data = index.data(CpThemeListModel::ItemTypeRole);
-    if(data.isValid() && data.canConvert<CpThemeInfo::ThemeListItemType>()) {
-
-        CpThemeInfo::ThemeListItemType type = data.value<CpThemeInfo::ThemeListItemType>();
-
-        switch (type) {
-            case CpThemeInfo::ThemeListItemType_URL:
-                //get the URL
-                data = index.data(CpThemeListModel::ItemDataRole);
-                if(data.isValid()) {
-                    QString url = data.toString();
-                    // Launch the URL in the browser and 
-                    // continue to Preview if not successful
-                    if (QDesktopServices::openUrl(QUrl(url, QUrl::TolerantMode))) {
-                        return;
-                    }
-                }
-                break;
-    
-            case CpThemeInfo::ThemeListItemType_APP:
-                break;
-
-            default:
-                // do nothing
-                qt_noop();
-        }
-    }
-    
     //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());
     }
     
-    //get theme icon.
-    data = index.data(Qt::DecorationRole);
-    if(data.isValid()) {
-        themeInfo.setIcon(data.value<HbIcon>());
-    }
-    
-    data = index.data(CpThemeListModel::PortraitPreviewRole);
-    if(data.isValid()) {
-        themeInfo.setPortraitPreviewIcon(data.value<HbIcon>());
-    }
-    
-    data = index.data(CpThemeListModel::LandscapePreviewRole);
-    if(data.isValid()) {
-        themeInfo.setLandscapePreviewIcon(data.value<HbIcon>());
-    }
-    
-    
-#ifdef CP_THEME_PREVIEW_DEFINED    
-    
-   //Set up the theme preview and set it to
-    //the current view of main window.
+    applyTheme(themeInfo);
+
+}
 
-    HbMainWindow*  mWindow = ::mainWindow();
-   
-    if(!mThemePreview){
-        mThemePreview = new CpThemePreview(themeInfo);
-        mWindow->addView(mThemePreview);
-        
-        connect(mThemePreview,SIGNAL(aboutToClose()),
-            this, SLOT(previewClosed()));
-
-        connect(mThemePreview, SIGNAL(applyTheme(CpThemeInfo)),
-                this, SLOT(themeApplied(CpThemeInfo)));
-    } else {
-        mThemePreview->setThemeInfo(themeInfo);
-    }
-    mThemePreview->setTitle(hbTrId("txt_cp_title_control_panel"));
-
-    mWindow->setCurrentView(mThemePreview);
-#else
-    themeApplied(themeInfo);
-#endif
-
+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::themeApplied(const CpThemeInfo& theme)
+void CpThemeControl::applyTheme(const CpThemeInfo& theme)
 {
     QThread::currentThread()->setPriority(QThread::HighPriority);  
     
@@ -292,38 +222,12 @@
         mThemeChangeFinished = false;
     } else {
         //theme change failed, go back to control panel.
-#ifdef CP_THEME_PREVIEW_DEFINED
-        previewClosed();
-        triggerThemeListClose();
-#else
         setActiveThemeIndex();
-#endif
-   
     }
    
 }
 
 /*!
-	Slot called when the theme preview view is closed.
-*/
-void CpThemeControl::previewClosed()
-{
-    //The theme preview closed, go back
-    //to theme list view.
-    HbMainWindow*  mainWindow = ::mainWindow();
-    if(mThemePreview){
-        mainWindow->removeView(mThemePreview);
-        mThemePreview->deleteLater();
-        mThemePreview = 0;
-    }
-  
-    //reset the current index to active theme, so that the selection remains on current
-    //theme even though another list item is selected.
-    setActiveThemeIndex();
-	mainWindow->setCurrentView(mThemeListView);   
-}
-
-/*!
     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.
     
@@ -331,9 +235,6 @@
 void CpThemeControl::themeListClosed()
 {
     mThemeListView = 0;
-
-    delete mThemePreview;
-    mThemePreview = 0;
 }
 
 /*!
@@ -352,19 +253,7 @@
     if(mWaitDialog && mWaitDialog->isVisible()) {
         mWaitDialog->hide();
     }
-   
-#ifdef CP_THEME_PREVIEW_DEFINED
-        previewClosed();
-        //ask the themelistview to close.  Control Panel will
-        //take care of removing it from window.
-        triggerThemeListClose();
-#else
-        setActiveThemeIndex();
-       
-#endif
-       
-
-  
+    setActiveThemeIndex();
     QThread::currentThread()->setPriority(QThread::NormalPriority); 
 }