--- a/emailuis/nmailui/src/nmapplication.cpp Thu Sep 02 20:15:00 2010 +0300
+++ b/emailuis/nmailui/src/nmapplication.cpp Fri Sep 17 08:27:21 2010 +0300
@@ -16,12 +16,11 @@
*/
#include "nmuiheaders.h"
-#include <email_services_api.h>
#include <e32base.h>
static const QString NmSendServiceName = "nmail.com.nokia.symbian.IFileShare";
-
static const QString NmActivityName = "EmailInboxView";
+static const int NmErrorNoteDelay = 300000;
/*!
\class NmApplication
@@ -32,8 +31,8 @@
/*!
Constructor.
*/
-NmApplication::NmApplication(QObject *parent, quint64 accountId)
-: QObject(parent),
+NmApplication::NmApplication(int &argc, char *argv[], Hb::ApplicationFlags flags)
+: HbApplication(argc,argv,flags),
mMainWindow(NULL),
mViewStack(NULL),
mActiveViewId(NmUiViewNone),
@@ -49,10 +48,28 @@
mViewReady(false),
mQueryDialog(NULL),
mBackButtonPressed(false),
- mApplicationHidden(false)
+ mApplicationHidden(false),
+ mErrorNoteTimer(NULL)
{
+ // Load the translation file.
+ QTranslator *translator = new QTranslator(this);
+ QString lang = QLocale::system().name();
+ QString appName = "mail_";
+ QString path = "Z:/resource/qt/translations/";
+ translator->load(appName + lang, path);
+ installTranslator(translator);
+ setApplicationName(hbTrId("txt_mail_title_mail"));
+
+ quint64 accountId = 0;
+ QString activateId = this->activateId();
+ if (activateReason() == Hb::ActivationReasonActivity &&
+ activateId.startsWith(NmActivityName) ) {
+ QString accountIdString = activateId.mid(NmActivityName.length());
+ accountId = accountIdString.toULongLong();
+ }
+
TRAP_IGNORE(mUiEngine = NmUiEngine::instance());
-
+
// Create network access manager and cache for application use.
mNetManager = new NmViewerViewNetManager(*mUiEngine);
QNetworkDiskCache *cache = new QNetworkDiskCache();
@@ -85,7 +102,7 @@
mEffects = new NmUiEffects(*mMainWindow);
- QObject::connect(parent, SIGNAL(activate()), this, SLOT(activityActivated()));
+ QObject::connect(this, SIGNAL(activate()), this, SLOT(activityActivated()));
}
@@ -377,10 +394,7 @@
taskSettings.setVisibility(false);
// Remove also the mailbox item from the task switcher
- HbApplication* hbApp = dynamic_cast<HbApplication*>(parent());
- if (hbApp) {
- hbApp->activityManager()->removeActivity(NmActivityName);
- }
+ activityManager()->removeActivity(NmActivityName);
}
@@ -408,8 +422,13 @@
// Move the application to background if closing the message list view
if (topViewId == NmUiViewMessageList && mViewStack->size() == 1) {
- hideApplication();
- return;
+
+ // if the application has been started as embedded service,
+ // we must close it. Otherwise we cannot return back to the calling application.
+ if (!XQServiceUtil::isEmbedded()) {
+ hideApplication();
+ return;
+ }
}
mViewStack->pop();
@@ -626,8 +645,7 @@
{
NM_FUNCTION;
- HbApplication* hbApp = dynamic_cast<HbApplication*>(parent());
- hbApp->activityManager()->removeActivity("EmailInboxView");
+ activityManager()->removeActivity(NmActivityName);
delete mSendServiceInterface;
mSendServiceInterface = NULL;
@@ -741,7 +759,25 @@
}
// Following applies to all operation/event types.
if (event.mCompletionCode == NmConnectionError) {
- NmUtilities::displayWarningNote(hbTrId("txt_mail_dialog_mail_connection_error"));
+ // Create error note delayer timer when used for the first time
+ if (!mErrorNoteTimer) {
+ mErrorNoteTimer = new QTimer(this);
+ }
+ // Check whether mailbox id has changed, stop
+ // timer in that case and note will be displayed even
+ // before 5min delay has passed
+ if (mLastErrorMailboxId != event.mMailboxId) {
+ mErrorNoteTimer->stop();
+ }
+ // Store mailbox id
+ mLastErrorMailboxId = event.mMailboxId;
+ // Show error note if timer is not active, e.g 5 minutes
+ // have passed since last "mail connection error".
+ if (!mErrorNoteTimer->isActive()) {
+ NmUtilities::displayErrorNote(hbTrId("txt_mail_dialog_mail_connection_error"));
+ // Start timer with 5 min timeout
+ mErrorNoteTimer->start(NmErrorNoteDelay);
+ }
}
}
}
@@ -797,28 +833,25 @@
void NmApplication::updateActivity()
{
NmMailboxMetaData *meta = mUiEngine->mailboxById(mCurrentMailboxId);
- HbApplication* hbApp = dynamic_cast<HbApplication*>(parent());
-
- if (hbApp) {
- // This will ensure that when service is started as a embedded service and a mail
- // process already exists the task activity will show the embedded service inside the
- // calling processes activity and the already running mail process in its own activity.
- if(!XQServiceUtil::isService() || !XQServiceUtil::isEmbedded()) {
- if (meta) {
- TsTaskSettings tasksettings;
- tasksettings.setVisibility(false);
- QVariantHash metadata;
- metadata.insert(ActivityScreenshotKeyword, QPixmap::grabWidget(mainWindow(), mainWindow()->rect()));
- metadata.insert(ActivityApplicationName, meta->name());
- metadata.insert(ActivityVisibility, true);
- hbApp->activityManager()->removeActivity(NmActivityName);
- hbApp->activityManager()->addActivity(NmActivityName, QVariant(), metadata);
- }
- else {
- hbApp->activityManager()->removeActivity(NmActivityName);
- TsTaskSettings tasksettings;
- tasksettings.setVisibility(true);
- }
+
+ // This will ensure that when service is started as a embedded service and a mail
+ // process already exists the task activity will show the embedded service inside the
+ // calling processes activity and the already running mail process in its own activity.
+ if(!XQServiceUtil::isService() || !XQServiceUtil::isEmbedded()) {
+ if (meta) {
+ TsTaskSettings tasksettings;
+ tasksettings.setVisibility(false);
+ QVariantHash metadata;
+ metadata.insert(ActivityScreenshotKeyword, QPixmap::grabWidget(mainWindow(), mainWindow()->rect()));
+ metadata.insert(ActivityApplicationName, meta->name());
+ metadata.insert(ActivityVisibility, true);
+ activityManager()->removeActivity(NmActivityName);
+ activityManager()->addActivity(NmActivityName, QVariant(), metadata);
+ }
+ else {
+ activityManager()->removeActivity(NmActivityName);
+ TsTaskSettings tasksettings;
+ tasksettings.setVisibility(true);
}
}
}
@@ -828,18 +861,15 @@
*/
void NmApplication::activityActivated()
{
- HbApplication* hbApp = dynamic_cast<HbApplication*>(parent());
- if (hbApp) {
- quint64 accountId(0);
- QString activateId = hbApp->activateId();
- if (hbApp->activateReason() == Hb::ActivationReasonActivity &&
- activateId.startsWith(NmActivityName) ) {
- QString accountIdString = activateId.mid(NmActivityName.length());
- accountId = accountIdString.toULongLong();
- QVariant mailbox;
- mailbox.setValue(accountId);
- mMailboxServiceInterface->displayInboxByMailboxId(mailbox);
- }
+ quint64 accountId(0);
+ QString activateId = this->activateId();
+ if (activateReason() == Hb::ActivationReasonActivity &&
+ activateId.startsWith(NmActivityName) ) {
+ QString accountIdString = activateId.mid(NmActivityName.length());
+ accountId = accountIdString.toULongLong();
+ QVariant mailbox;
+ mailbox.setValue(accountId);
+ mMailboxServiceInterface->displayInboxByMailboxId(mailbox);
}
}