/*
* Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
* All rights reserved.
* This component and the accompanying materials are made available
* under the terms of "Eclipse Public License v1.0"
* which accompanies this distribution, and is available
* at the URL "http://www.eclipse.org/legal/epl-v10.html".
*
* Initial Contributors:
* Nokia Corporation - initial contribution.
*
* Contributors:
*
* Description:main() for messaging application.
*
*/
#include <hbapplication.h>
#include <QTranslator>
#include <QLocale>
#include <QFile>
#include "debugtraces.h"
#include <QDateTime>
#include <QPointer>
#include <HbSplashScreen>
#include "msgmainwindow.h"
#include "msgactivityhandler.h"
//Localised constants
#define LOC_TITLE hbTrId("txt_messaging_title_messaging")
const QString debugFileName("c:/art2_app_log.txt");
const QString activityParam("-activity");
const int INVALID_MSGID = -1;
#ifdef _DEBUG_TRACES_
void debugInit(QtMsgType type, const char *msg)
{
QFile ofile(debugFileName);
if (!ofile.open(QIODevice::Append | QIODevice::Text))
{
qFatal("error opening results file");
return;
}
QDateTime dt = QDateTime::currentDateTime();
QTextStream out(&ofile);
switch (type)
{
case QtDebugMsg:
out << " DEBUG:";
out << msg;
break;
case QtWarningMsg:
out << " WARN:";
out << msg;
break;
case QtCriticalMsg:
out << "\n ";
out << dt.toString("dd/MM/yyyy hh:mm:ss.zzz:ap");
out << " CRITICAL:";
out << msg;
break;
case QtFatalMsg:
out << " FATAL:";
out << msg;
abort();
break;
default:
out << " No Log Selection Type:";
out << msg;
break;
}
}
#endif
int main(int argc, char *argv[])
{
QCRITICAL_WRITE("MsgApp start.");
QString firstArg(argv[1]);
bool serviceRequest = false;
// check for argc is greater than 1 and its not from activity
if(argc >1 && firstArg != activityParam )
{
serviceRequest = true;
HbSplashScreen::setScreenId("dummy");
}
else
{
HbSplashScreen::setScreenId("clv");
}
// Application
HbApplication app(argc, argv);
//TODO: Uncomment the lines when actual translation files are available in sdk and remove loading locally.
QString locale = QLocale::system().name();
QString path = "z:/resource/qt/translations/";
QTranslator translator;
QTranslator translator_comm;
translator.load(path + QString("messaging_") + locale);
translator_comm.load(path + QString("common_") + locale);
app.installTranslator(&translator);
app.installTranslator(&translator_comm);
app.setApplicationName(LOC_TITLE);
#ifdef _DEBUG_TRACES_
//Debug Logs
QFile ofile;
if (ofile.exists(debugFileName))
{
ofile.remove(debugFileName);
}
qInstallMsgHandler(debugInit);
#endif
MsgActivityHandler* activityHandler = new MsgActivityHandler(&app);
// connect to aboutToQuit signal to save activity
QObject::connect(&app, SIGNAL(aboutToQuit()),
activityHandler, SLOT(saveActivity()));
int activityMsgId = INVALID_MSGID;
if(app.activateReason() == Hb::ActivationReasonActivity) {
// restoring an activity, not a fresh startup or a service
QVariant data = app.activateData();
activityMsgId = activityHandler->parseActivityData(data);
// set service request to false , since its a activity launch
serviceRequest = false;
}
// clear the old activities
activityHandler->clearActivities();
// Main window
QPointer<MsgMainWindow> mainWindow = new MsgMainWindow(serviceRequest,activityMsgId);
// Set the main window pointer to activity handler.
activityHandler->setMainWindow(mainWindow);
mainWindow->show();
// Event loop
int error = app.exec();
HbApplication::processEvents();
// delete main window and return error
delete mainWindow;
return error;
}
// End of file