diff -r 7516d6d86cf5 -r ed14f46c0e55 src/hbservers/hbthemeserver/hbthemewatcher_symbian.cpp --- 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 requestData; TInt ret = themeRequestProp.Get(requestData); switch (ret) { - case KErrNone: - { - QString qrequestData((QChar*)requestData.Ptr(),requestData.Length()); - HbThemeServerRequest etype = EInvalidServerRequest; - TBuf 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 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; } }