homescreenapp/hsapplication/src/main.cpp
changeset 39 4e8ebe173323
parent 36 cdae8c6c3876
child 46 23b5d6a29cce
equal deleted inserted replaced
36:cdae8c6c3876 39:4e8ebe173323
    18 #include <QTranslator>
    18 #include <QTranslator>
    19 #include <QMessageBox>
    19 #include <QMessageBox>
    20 #include <hbapplication.h>
    20 #include <hbapplication.h>
    21 #include <hbmainwindow.h>
    21 #include <hbmainwindow.h>
    22 #include "hshomescreen.h"
    22 #include "hshomescreen.h"
    23 #include "hsapptranslator.h"
       
    24 #include "hstest_global.h"
    23 #include "hstest_global.h"
    25 
    24 
    26 namespace
    25 namespace
    27 {
    26 {
    28     const char TR_FILE_PATH[] = "resource/qt/translations";
    27     const char TR_FILE_PATH[] = "resource/qt/translations";
    36 #include <eikenv.h>
    35 #include <eikenv.h>
    37 #include <e32debug.h>
    36 #include <e32debug.h>
    38 #include <apgwgnam.h>
    37 #include <apgwgnam.h>
    39 
    38 
    40 
    39 
    41 void loadTranslationFilesOnSymbian(QTranslator &hsTranslator, QTranslator &alTranslator);
    40 void loadTranslationFilesOnSymbian(QTranslator &commonTranslator, 
       
    41                                     QTranslator &hsTranslator, 
       
    42                                     QTranslator &alTranslator);
    42 void copyWallpapersFromRom();
    43 void copyWallpapersFromRom();
    43 void copyHsDatabaseFileFromRom();
    44 void copyHsDatabaseFileFromRom();
    44 void createPrivateFolder();
    45 void createPrivateFolder();
    45 
       
    46 // it is temporary class used for getting notifcation about APA messages
       
    47 // it is used for processing message send by AVKON to activate Menu
       
    48 class HsMessageObserver: public MCoeMessageObserver {
       
    49 
       
    50 TMessageResponse HandleMessageL(TUint32 /*aClientHandleOfTargetWindowGroup*/,
       
    51                                 TUid /*aMessageUid*/,
       
    52                                 const TDesC8& /*aMessageParameters*/)
       
    53     {
       
    54     // move application to foreground
       
    55     QApplication::topLevelAt(0,0)->raise();
       
    56     return EMessageHandled;
       
    57     }
       
    58 };
       
    59 
    46 
    60 void setHomescreenAsSystemAppL(CEikonEnv* eikonEnv)
    47 void setHomescreenAsSystemAppL(CEikonEnv* eikonEnv)
    61 {
    48 {
    62     CApaWindowGroupName* wgName = CApaWindowGroupName::NewLC(eikonEnv->WsSession());
    49     CApaWindowGroupName* wgName = CApaWindowGroupName::NewLC(eikonEnv->WsSession());
    63     wgName->SetSystem(ETrue); // Allow only application with PowerManagement cap to shut us down
    50     wgName->SetSystem(ETrue); // Allow only application with PowerManagement cap to shut us down
   109     QDir::setCurrent(currentPath);
    96     QDir::setCurrent(currentPath);
   110     QString debugMsg = "HS::main() - HsApplication's current dir set to: " + currentPath;
    97     QString debugMsg = "HS::main() - HsApplication's current dir set to: " + currentPath;
   111     HSDEBUG(debugMsg);
    98     HSDEBUG(debugMsg);
   112 #endif //Q_OS_SYMBIAN
    99 #endif //Q_OS_SYMBIAN
   113 
   100 
   114     HsAppTranslator *appTranslator = HsAppTranslator::instance();
       
   115     appTranslator->setLanguage();
       
   116     
       
   117     // add translator for homescreen and application library
   101     // add translator for homescreen and application library
   118     QTranslator hsTranslator;
   102     QTranslator hsTranslator;
   119     QTranslator alTranslator;
   103     QTranslator alTranslator;
       
   104     QTranslator commonTranslator;
   120 #ifdef Q_OS_SYMBIAN
   105 #ifdef Q_OS_SYMBIAN
   121     // TRAP is must here, otherwise it crashes
   106     // TRAP is must here, otherwise it crashes
   122     TRAP_IGNORE( loadTranslationFilesOnSymbian(hsTranslator, alTranslator) );
   107     TRAP_IGNORE( loadTranslationFilesOnSymbian(commonTranslator, hsTranslator, alTranslator) );
   123 #else
   108 #else
   124     QString locale = QLocale::system().name();
   109     QString locale = QLocale::system().name();
   125     QString hsTrFile = QString("homescreen_") + locale;
   110     QString hsTrFile = QString("homescreen_") + locale;
   126     hsTranslator.load(hsTrFile, QString(TR_FILE_PATH) );
   111     hsTranslator.load(hsTrFile, QString(TR_FILE_PATH) );
   127     QString alTrFile = QString("hsapplibrary_") + locale;
   112     QString alTrFile = QString("hsapplibrary_") + locale;
   128     alTranslator.load(alTrFile, QString(TR_FILE_PATH) );
   113     alTranslator.load(alTrFile, QString(TR_FILE_PATH) );
   129 #endif //Q_OS_SYMBIAN
   114 #endif //Q_OS_SYMBIAN
       
   115     qApp->installTranslator(&commonTranslator);
   130     qApp->installTranslator(&hsTranslator);
   116     qApp->installTranslator(&hsTranslator);
   131     qApp->installTranslator(&alTranslator);
   117     qApp->installTranslator(&alTranslator);
   132     
   118     
   133 #ifdef Q_OS_SYMBIAN
   119 #ifdef Q_OS_SYMBIAN
   134     copyHsDatabaseFileFromRom();
   120     copyHsDatabaseFileFromRom();
   141     HsHomeScreen hs;
   127     HsHomeScreen hs;
   142     QObject::connect(&app, SIGNAL(aboutToQuit()) ,&hs, SLOT(stop()));
   128     QObject::connect(&app, SIGNAL(aboutToQuit()) ,&hs, SLOT(stop()));
   143     QObject::connect(&hs, SIGNAL(exit()), &app, SLOT(quit()),Qt::QueuedConnection);
   129     QObject::connect(&hs, SIGNAL(exit()), &app, SLOT(quit()),Qt::QueuedConnection);
   144     hs.start();
   130     hs.start();
   145 
   131 
   146     app.installEventFilter(appTranslator);
       
   147 
       
   148 #ifdef Q_OS_SYMBIAN
   132 #ifdef Q_OS_SYMBIAN
   149     CEikonEnv * env = CEikonEnv::Static();
   133     CEikonEnv * env = CEikonEnv::Static();
   150 #ifdef S60APP_KEY
       
   151     env->RootWin().CaptureKeyUpAndDowns( EStdKeyApplication0, 0, 0 );
       
   152 #endif //S60APP_KEY
       
   153     TRAP_IGNORE(setHomescreenAsSystemAppL(env));
   134     TRAP_IGNORE(setHomescreenAsSystemAppL(env));
   154     HsMessageObserver observer;
       
   155     TRAP_IGNORE( env->AddMessageObserverL(observer));
       
   156 #endif //Q_OS_SYMBIAN
   135 #endif //Q_OS_SYMBIAN
   157 
   136 
   158     HSTEST("HS::main() call app.exec");
   137     HSTEST("HS::main() call app.exec");
   159     try {
   138     try {
   160         app.exec();
   139         app.exec();
   249 }
   228 }
   250 
   229 
   251 /*!
   230 /*!
   252  * Load translation files.
   231  * Load translation files.
   253  */
   232  */
   254 void loadTranslationFilesOnSymbian(QTranslator &hsTranslator, QTranslator &alTranslator)
   233 void loadTranslationFilesOnSymbian(QTranslator &commonTranslator, 
   255 {
   234                                    QTranslator &hsTranslator, 
       
   235                                    QTranslator &alTranslator)
       
   236 {
       
   237     QString locale = QLocale::system().name();
       
   238     bool commonLoaded(false);
       
   239     QString commonTrFile = QString("common_") + locale;
       
   240     commonLoaded = commonTranslator.load(commonTrFile, QString("z:/") + TR_FILE_PATH);
       
   241     if (!commonLoaded) {
       
   242         commonTranslator.load(commonTrFile, QString("c:/") + TR_FILE_PATH);
       
   243     }
   256     bool hsLoaded(false);
   244     bool hsLoaded(false);
   257     QString locale = QLocale::system().name();
       
   258     QString hsTrFile = QString("homescreen_") + locale;
   245     QString hsTrFile = QString("homescreen_") + locale;
   259     hsLoaded = hsTranslator.load(hsTrFile, QString("z:/") + TR_FILE_PATH);
   246     hsLoaded = hsTranslator.load(hsTrFile, QString("z:/") + TR_FILE_PATH);
   260     if (!hsLoaded) {
   247     if (!hsLoaded) {
   261         hsTranslator.load(hsTrFile, QString("c:/") + TR_FILE_PATH);
   248         hsTranslator.load(hsTrFile, QString("c:/") + TR_FILE_PATH);
   262     }
   249     }