src/hbservers/hbthemeserver/hbthemewatcher_symbian.cpp
changeset 34 ed14f46c0e55
parent 7 923ff622b8b9
--- a/src/hbservers/hbthemeserver/hbthemewatcher_symbian.cpp	Mon Oct 04 17:49:30 2010 +0300
+++ b/src/hbservers/hbthemeserver/hbthemewatcher_symbian.cpp	Mon Oct 18 18:23:13 2010 +0300
@@ -36,67 +36,40 @@
 static _LIT_SECURITY_POLICY_PASS(KAllowAllPolicy);
 static _LIT_SECURITY_POLICY_C1(KThemeChangerPolicy,ECapabilityWriteDeviceData);
 
-CHbThemeWatcher::CHbThemeWatcher(HbThemeServerPrivate& aObserver) : CActive(EPriorityStandard), 
-                                                                    iObserver(aObserver)
-{ 
-    CActiveScheduler::Add(this); 
+
+HbThemeWatcher::HbThemeWatcher(HbThemeServerPrivate &observer) :
+    mObserver(observer)
+{
 }
 
-void CHbThemeWatcher::ConstructL()
+HbThemeWatcher::~HbThemeWatcher()
 {
-    User::LeaveIfError(iFs.Connect());
-}
-
-CHbThemeWatcher* CHbThemeWatcher::NewL(HbThemeServerPrivate& aObserver)
-{
-    CHbThemeWatcher* self = new (ELeave) CHbThemeWatcher(aObserver);
-    CleanupStack::PushL(self);
-    self->ConstructL();
-    CleanupStack::Pop(self);
-    return self;
 }
 
-CHbThemeWatcher::~CHbThemeWatcher()
-{
-    Cancel();
-    iFs.Close();
+void HbThemeWatcher::startWatching(const QString &file)
+{ 
+    mWatcher.removePath(mFile);
+    mWatcher.addPath(file);
+    connect(&mWatcher, SIGNAL(fileChanged(const QString &)),
+            this, SLOT(fileChanged(const QString &)));
+    mFile = file;
 }
 
-void CHbThemeWatcher::startWatchingL(const QString &file)
-{ 
-    // Cancel ongoing watch
-    if (IsActive()) {
-        Cancel();
-    }
-    iFile = file;
-
-    TBuf<256> fileToWatch(iFile.utf16());
-    iFs.NotifyChange(ENotifyAll, iStatus, fileToWatch); 
-    SetActive();
-}
-
-void CHbThemeWatcher::RunL()
+void HbThemeWatcher::fileChanged(const QString &file)
 {
-    if (iStatus != KErrNone) {
+    Q_UNUSED(file);
+    if (QFile::exists(mFile)) {
+        // active theme still exists, continue watching
         return;
     }
     
-    if (QFile::exists(iFile)) {
-        // theme exists continue watching
-        TBuf<256> fileToWatch(iFile.utf16());
-        iFs.NotifyChange(ENotifyAll, iStatus, fileToWatch);
-        SetActive();
-        return;
-    }
+    // theme doesn't exist, change active theme to default
+    mObserver.HandleThemeSelection(
+        HbThemeUtils::getThemeSetting(HbThemeUtils::DefaultThemeSetting));
+}
 
-    // theme doesn't exist, change active theme to default
-    iObserver.HandleThemeSelection(HbThemeUtils::getThemeSetting(HbThemeUtils::DefaultThemeSetting));
-}
- 
-void CHbThemeWatcher::DoCancel()
-{
-    iFs.NotifyChangeCancel(iStatus);
-}
+
+
 
 CHbThemeChangeNotificationListener* CHbThemeChangeNotificationListener::NewL(HbThemeServerPrivate& aObserver)
 {
@@ -192,32 +165,22 @@
     TBuf<KThemeChangeDataBufferSize> requestData;
     TInt ret = themeRequestProp.Get(requestData);
     switch (ret) {
-        case KErrNone:
-            {
-                QString qrequestData((QChar*)requestData.Ptr(),requestData.Length());
-                HbThemeServerRequest etype = EInvalidServerRequest;
-                TBuf<KThemeChangeDataBufferSize> data;
-                ///Parse the data from the Publisher
-                bool bSuccess = parseData( requestData, etype, data);
-                if( bSuccess && EThemeSelection == etype) {
-                    QString str((QChar*)data.Ptr(), data.Length());
-                    str = str.trimmed();
-                    iObserver.HandleThemeSelection( str );
-                }
-            }
-            break;
-        case KErrPermissionDenied:
-            qDebug() << "KErrPermissionDenied";
-            break;
-        case KErrNotFound:
-            qDebug() << "KErrNotFound";
-            break;
-        case KErrArgument:
-            qDebug() << "KErrArgument";
-            break;
-        case KErrOverflow:
-            qDebug() << "KErrOverflow";
-            break;
+    case KErrNone: {
+        QString qrequestData((QChar*)requestData.Ptr(),requestData.Length());
+        HbThemeServerRequest etype = EInvalidServerRequest;
+        TBuf<KThemeChangeDataBufferSize> data;
+        ///Parse the data from the Publisher
+        bool bSuccess = parseData( requestData, etype, data);
+        if( bSuccess && EThemeSelection == etype) {
+            QString str((QChar*)data.Ptr(), data.Length());
+            str = str.trimmed();
+            iObserver.HandleThemeSelection( str );
+        }
+        break;
+    }
+    default:
+        THEME_GENERIC_DEBUG() << Q_FUNC_INFO << "Themechange request read failed. Error code: " << ret;
+        break;
     }
 }