src/hbcore/theme/hbthemeclient_symbian_p.cpp
changeset 1 f7ac710697a9
parent 0 16d8024aca5e
child 2 06ff229162e9
--- a/src/hbcore/theme/hbthemeclient_symbian_p.cpp	Mon Apr 19 14:02:13 2010 +0300
+++ b/src/hbcore/theme/hbthemeclient_symbian_p.cpp	Mon May 03 12:48:33 2010 +0300
@@ -41,9 +41,16 @@
 * constructor
 */
 HbThemeClientPrivate::HbThemeClientPrivate(): 
-    clientConnected(false), 
-    themelistener(new CThemeListenerPrivate(this))    
+    clientConnected(false) 
 {
+    if(THEME_SERVER_NAME != HbMemoryUtils::getCleanAppName()) {
+        themelistener = new CHbThemeListenerPrivate(this);
+    }
+
+
+#ifdef HB_SGIMAGE_ICON
+    sgDriverInit = false;    
+#endif
 }
 
 /**
@@ -54,7 +61,7 @@
 bool HbThemeClientPrivate::connectToServer()
 {
     TInt error(KErrNone);
-    for( int tries(0); tries < 2; tries++) {
+    for( int tries(0); tries < 100; tries++) {
         error = CreateSession(KThemeServerName, Version(), KDefaultMessageSlots);
         if(!error) {
             // connected to existing server - OK
@@ -72,8 +79,11 @@
         break; // server not launched : don't cycle round again.
     }
 #ifdef HB_SGIMAGE_ICON
-    if (!error) {
-        error = sgDriver.Open();       
+    if (!error && !sgDriverInit) {
+        error = sgDriver.Open();
+    	if (error == KErrNone) {
+            sgDriverInit = true;
+        }
     }
 #endif
     return ( clientConnected = (KErrNone == error) );
@@ -440,13 +450,13 @@
  *
  * Returns the layout definition for the given file name,layout name,section name
 */
-LayoutDefinition* HbThemeClientPrivate::getSharedLayoutDefs(const QString &fileName,const QString &layout,const QString &section)
+HbWidgetLoader::LayoutDefinition* HbThemeClientPrivate::getSharedLayoutDefs(const QString &fileName,const QString &layout,const QString &section)
 {
     if ( !clientConnected ) {
         return 0;
     }
 
-    LayoutDefinition* layoutDef(0);
+    HbWidgetLoader::LayoutDefinition* layoutDef(0);
 
     TBuf<256> fileDes(fileName.utf16());
     TBuf<256> layoutDes(layout.utf16());
@@ -461,7 +471,7 @@
    
     if (KErrNone == err) {
         if( widgetmlInfo.offset >=0){
-            layoutDef = HbMemoryUtils::getAddress<LayoutDefinition>(
+            layoutDef = HbMemoryUtils::getAddress<HbWidgetLoader::LayoutDefinition>(
                     HbMemoryManager::SharedMemory, widgetmlInfo.offset);
         }
     }
@@ -521,7 +531,7 @@
 #ifdef THEME_SERVER_TRACES
         qDebug() << Q_FUNC_INFO <<"themeChanged(): called";
 #endif
-        hbInstance->theme()->d_ptr->handleThemeChange();
+        hbInstance->theme()->d_ptr->handleThemeChange(themeName);
     }
 }
 
@@ -557,6 +567,12 @@
 HbThemeClientPrivate::~HbThemeClientPrivate()
 {
     RSessionBase::Close();
+#ifdef HB_SGIMAGE_ICON
+    if (sgDriverInit) {
+        sgDriver.Close();  
+        sgDriverInit = false;
+    }
+#endif
     delete themelistener;
 }
 
@@ -615,6 +631,8 @@
                                                             HbIconLoader::IconLoaderOptions options,
                                                             const QColor &color)
 {
+    Q_UNUSED(options)
+
     HbSharedIconInfoList sharedIconInfoList;
     
     if ( !clientConnected ) {
@@ -642,3 +660,67 @@
     return sharedIconInfoList;
 }
 
+/**
+ *  Notifies the server about the foreground lost event.
+ */
+void HbThemeClientPrivate::notifyForegroundLostToServer()
+{
+#if defined(HB_SGIMAGE_ICON) || defined(HB_NVG_CS_ICON)
+    TInt err = SendReceive(ENotifyForegroundLost);
+    if (KErrNone == err) {        
+        //ForegroundLostToServer Event is sent to server Successfully.
+    }
+#endif
+}
+
+/**
+ * HbThemeClientPrivate::freeSharedMemory()
+ */
+int HbThemeClientPrivate::freeSharedMemory()
+{
+    int freeSharedMem = -1;
+    if ( !clientConnected ) {
+        qWarning()<<"Theme client unable to connect to server in HbThemeClientPrivate::freeSharedMemory";
+        return freeSharedMem;
+    }
+
+    TPckg<int> freeInfo(freeSharedMem);
+    TIpcArgs args(0, &freeInfo);
+    TInt err = SendReceive(EFreeSharedMem, args);
+    qDebug() << "HbThemeClientPrivate::freeSharedMemory end";
+    return freeSharedMem;
+}
+
+/**
+ * HbThemeClientPrivate::allocatedSharedMemory()
+ */
+int HbThemeClientPrivate::allocatedSharedMemory()
+{
+    int allocatedSharedMem = -1;
+    if ( !clientConnected ) {
+        qWarning()<<"Theme client unable to connect to server in HbThemeClientPrivate::allocatedSharedMemory";
+        return allocatedSharedMem;
+    }
+
+    TPckg<int> allocatedInfo(allocatedSharedMem);
+    TIpcArgs args(0, &allocatedInfo);
+    TInt err = SendReceive(EAllocatedSharedMem, args);
+    return allocatedSharedMem;
+}
+
+/**
+ * HbThemeClientPrivate::allocatedHeapMemory()
+ */
+int HbThemeClientPrivate::allocatedHeapMemory()
+{
+    int allocatedHeapMem = -1;
+    if ( !clientConnected ) {
+        qWarning()<<"Theme client unable to connect to server in HbThemeClientPrivate::allocatedHeapMemory";
+        return allocatedHeapMem;
+    }
+
+    TPckg<int> allocatedInfo(allocatedHeapMem);
+    TIpcArgs args(0, &allocatedInfo);
+    TInt err = SendReceive(EAllocatedHeapMem, args);
+    return allocatedHeapMem;
+}