controlpanelui/src/cpplugins/ringtoneplugin/src/cppersonalizationentryitemdata.cpp
changeset 40 593f946f4fec
parent 22 a5692c68d772
--- a/controlpanelui/src/cpplugins/ringtoneplugin/src/cppersonalizationentryitemdata.cpp	Fri Jun 25 17:12:20 2010 +0800
+++ b/controlpanelui/src/cpplugins/ringtoneplugin/src/cppersonalizationentryitemdata.cpp	Wed Sep 29 10:09:58 2010 +0800
@@ -47,13 +47,13 @@
     if( mProfileModel )
     {
         QString strRing = loadStringValue();
-        if( strRing.contains( "No_Sound.wav", Qt::CaseInsensitive) )
+        if( QFileInfo(strRing) == QFileInfo(g_strNoTone) )
         {
             setDescription( hbTrId("txt_cp_list_no_tone" ) );   //sepcial handling about NoTone
         }
         else
         {
-            setDescription( strRing.section(QDir::separator (),-1) );
+		    setDescription( QFileInfo(strRing).baseName() );
         }
     }
     else
@@ -62,18 +62,43 @@
     }
     mSettingManager = new XQSettingsManager();
     XQCentralRepositorySettingsKey key(KCRUidProfileEngine.iUid,KProEngSilenceMode);
-
+    
+    //Monitoring the active ring tone
+    XQCentralRepositorySettingsKey keyForActiveRingTone(KCRUidProfileEngine.iUid,KProEngActiveRingTone);
+    
     QVariant silenceMode = mSettingManager->readItemValue( key,XQSettingsManager::TypeInt );
     setEnabled( !silenceMode.toInt() );
     mSettingManager->startMonitoring( key,XQSettingsManager::TypeInt );
+    mSettingManager->startMonitoring(keyForActiveRingTone, XQSettingsManager::TypeString);
     connect(mSettingManager, SIGNAL(valueChanged (XQSettingsKey, QVariant)),
             this, SLOT(settingValueChanged(XQSettingsKey, QVariant)));
 
 }
 void CpPersonalizationEntryItemData::settingValueChanged( const XQSettingsKey& key, const QVariant& value )
 {
-    Q_UNUSED(key);
-    setEnabled( !value.toInt() );
+    switch (key.key()) {
+        case KProEngActiveRingTone:
+        {
+            QString strRing = loadStringValue();
+            if( QFileInfo(strRing) == QFileInfo(g_strNoTone) )
+            {
+                setDescription( hbTrId("txt_cp_list_no_tone" ) );   //sepcial handling about NoTone
+            }
+            else
+            {
+                setDescription( QFileInfo(strRing).baseName() );
+            }
+            break;
+        }
+        case KProEngSilenceMode:
+        {
+            setEnabled( !value.toInt() );
+            break;
+            
+        }
+        default:
+            break;
+    }    
 }
 
 CpPersonalizationEntryItemData::~CpPersonalizationEntryItemData()
@@ -116,6 +141,7 @@
     default:
         if( m_profileID <0 )
         {
+            
             strRing = mProfileModel->ringTone();
         }
         else
@@ -171,8 +197,10 @@
 void CpPersonalizationEntryItemData::handleOk(const QString &strFname)
 {
     if(strFname.length())
-    {
-        setDescription( strFname.section(QDir::separator (),-1) );
+    {   
+        //lower level services(tone fetcher or music fetcher)
+        //will guarantee strFname is a valid absolute file path.
+        setDescription(QFileInfo(strFname).baseName());
     }
     else
     {