qtinternetradio/ui/src/main.cpp
changeset 3 ee64f059b8e1
parent 0 09774dfdd46b
child 5 0930554dc389
--- a/qtinternetradio/ui/src/main.cpp	Mon May 03 12:25:23 2010 +0300
+++ b/qtinternetradio/ui/src/main.cpp	Fri May 14 15:43:29 2010 +0300
@@ -17,37 +17,61 @@
 
 #include <hbapplication.h>
 #include <hbdevicemessagebox.h>
+#include <QLocalSocket>
+
 #include "irviewmanager.h"
 #include "irapplication.h"
-#include "irqdiskspacewatcher.h"
 #include "irmemorycollector.h"
-#include "irsymbianapplication.h"
 #include "irqlogger.h"
+#include "irqsystemeventhandler.h"
 
-bool isDiskSpaceLow();
+#ifdef LOCALIZATION 
+#include <QTranslator> 
+void initLanguage(QTranslator*& aTranslator);
+#endif
+
+bool isDiskSpaceLow(IRQSystemEventHandler* aEventHandler);
+bool isSecondInstance();
 
 int main(int argc, char* argv[])
 {
     INSTALL_MESSAGE_HANDLER;
+    HbApplication app(argc, argv);
     
-    QCoreApplication::setApplicationName("InternetRadioApplication");
-    HbApplication app(newS60Application, argc, argv);
-    if (IRSymbianApplication::getInstance()->getInstanceFlag())
+#ifdef LOCALIZATION    
+    QTranslator* translator = NULL;
+    initLanguage(translator);
+    Q_ASSERT( NULL != translator );
+#endif
+    
+    QCoreApplication::setApplicationName(hbTrId("txt_irad_title_internet_radio"));
+    if (isSecondInstance())
     {
         return 0;
     }
     
-    if(isDiskSpaceLow())
+    //for the note should be translated too     
+    IRQSystemEventHandler *systemEventHandler = new IRQSystemEventHandler();
+    if( isDiskSpaceLow(systemEventHandler) )
     {       
+#ifdef LOCALIZATION   
+        qApp->removeTranslator(translator);
+        delete translator;
+#endif
+        delete systemEventHandler;
         return 0;
-    }  
+    }
 
-    IRViewManager *mainWindow = new IRViewManager;
-    
+    IRViewManager *mainWindow = new IRViewManager;    
     mainWindow->show();
     
-    //when constructing irapp, OpenFileL() has already been called
-    IRApplication *irapp = new IRApplication(mainWindow);
+    //here, we transfer the ownership of the event handler to the irapp
+    IRApplication *irapp = new IRApplication(mainWindow, systemEventHandler);
+    
+#ifdef LOCALIZATION
+    //this function will transfer the ownership of translator to irapp
+    irapp->setTranslator(translator);
+#endif
     
     IRMemoryCollector mc(irapp);
     
@@ -58,10 +82,9 @@
 	return 0;
 }
 
-bool isDiskSpaceLow()
-{
-    IRQDiskSpaceWatcher diskSpaceWatcher;
-    bool ret = diskSpaceWatcher.isBelowCriticalLevel();
+bool isDiskSpaceLow(IRQSystemEventHandler* aEventHandler)
+{     
+    bool ret = aEventHandler->isBelowCriticalLevel();
     if(ret)
     {
         HbDeviceMessageBox messageBox(hbTrId("txt_irad_info_no_space_on_c_drive_internet_radio_closed"),
@@ -72,3 +95,29 @@
     return ret;
 }
 
+#ifdef LOCALIZATION 
+void initLanguage(QTranslator*& aTranslator)
+{
+    aTranslator = new QTranslator();    
+    QString lang = QLocale::system().name();
+    LOG_FORMAT( "Current language is %s", STRING2CHAR(lang) );
+    QString path = "z:/resource/qt/translations/";  //this will be changed to a micro in future
+    bool ret = aTranslator->load(path + "internet_radio_10_1_" + lang);        
+    qApp->installTranslator(aTranslator); 
+}
+#endif
+
+bool isSecondInstance()
+{
+    QLocalSocket socket;
+    QString serverName = QCoreApplication::applicationName();
+    socket.connectToServer(serverName);
+    if (socket.waitForConnected(500))
+    {
+        return true;
+    }
+    else
+    {
+        return false;
+    }
+}