--- a/src/hbservers/hbthemeserver/hbthemewatcher_symbian.cpp Fri Sep 17 08:32:10 2010 +0300
+++ b/src/hbservers/hbthemeserver/hbthemewatcher_symbian.cpp Mon Oct 04 00:38:12 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)
{