diff -r ecc8def7944a -r 2dc6caa42ec3 emailservices/nmregister/src/nmmailboxregisterinterface.cpp --- a/emailservices/nmregister/src/nmmailboxregisterinterface.cpp Mon May 03 12:23:15 2010 +0300 +++ b/emailservices/nmregister/src/nmmailboxregisterinterface.cpp Fri May 14 15:41:10 2010 +0300 @@ -17,6 +17,10 @@ #include #include +#include +#include +#include +#include "nmicons.h" #include "nmmailboxregisterinterface.h" #include "nmmailboxregisterinterface_p.h" @@ -33,21 +37,28 @@ const QString hsIconApplicationId ("icon:applicationid"); // icon from associated application //Custom for nmHsWidgets -//NmHsWidgetParam is used to identify what email account will be monitored by +//NmHsWidgetParamAccountId is used to identify what email account will be monitored by //the registered hs widget -const QString NmHsWidgetParam ("widgetparam:accountId"); +const QString NmHsWidgetParamAccountId ("widgetparam:accountId"); //same as above but for pushing the widget to homescreen const QString NmHsAccountId ("accountId"); +//NmHsWidgetParamAccountIconName is used to identify mailbox icon in application library +const QString NmHsWidgetParamAccountIconName ("widgetparam:accountIconName"); +//same as above but for pushing the widget to homescreen +const QString NmHsAccountIconName ("accountIconName"); //This is used to identify nmhswidget in homescreen const QString NmHsWidget ("nmhswidget"); //parameter values const QString NmPublisherName ("NmMailboxRegisterInterface"); -const QString NmLaunchUri ("application://0x2002DD17"); +const QString NmLaunchUri ("appto://0x200255BA?activityname=EmailInboxView&accountId="); //URI for the defined service const QLatin1String interfaceUri("com.nokia.symbian.IEmailRegisterAccount"); - +/** Localization file name*/ +const QString KNmRegisterLocFileName = "nmregister_"; +/** Localization file location*/ +const QString KNmRegisterLocLocation = "z:/resource/qt/translations/"; /*! Constructor @@ -102,8 +113,16 @@ NmMailboxRegisterInterfacePrivate::NmMailboxRegisterInterfacePrivate(QObject *parent) : XQServiceProvider(interfaceUri, parent ), mManager(0), - mService(0) + mService(0), + mTranslator(0) { + //commented out until MCL has nmregister files in place here: epoc32/include/platform/qt/translations/ + /*mTranslator = new QTranslator(); + QString lang = QLocale::system().name(); + bool loadSucceed = mTranslator->load(KNmRegisterLocFileName + lang, KNmRegisterLocLocation); + qDebug() << "NmMailboxRegisterInterfacePrivate mTranslator->load loadSucceed:"< interfaces = mManager->findInterfaces(filter); @@ -115,6 +134,10 @@ */ NmMailboxRegisterInterfacePrivate::~NmMailboxRegisterInterfacePrivate() { + if(mTranslator){ + delete mTranslator; + mTranslator = NULL; + } if (mService) { delete mService; @@ -129,16 +152,26 @@ bool NmMailboxRegisterInterfacePrivate::registerNewMailbox(quint64 accountId, QString accountName, QString accountIconName) { + //check that accountIconName is valid otherwise pass default mailbox icon + HbIcon mailBoxIcon(accountIconName); + if(mailBoxIcon.pixmap().height() == 0){ + mailBoxIcon = NmIcons::getIcon(NmIcons::NmIconDefaultMailbox); + accountIconName = mailBoxIcon.iconName(); + } + QMap map; //------------------------------ map[hsItemName] = accountName; - map[hsitemLaunchUri] = NmLaunchUri; + map[hsitemLaunchUri] = formLaunchUri(accountId); map[hsitemPublisherId] = NmPublisherName; map[hsItemWidgetUri] = NmHsWidget; - map[hsItemDescription] = "test description for widget"; //TODO: Localization + //commented out until MCL has nmregister files in place here: epoc32/include/platform/qt/translations/ + //map[hsItemDescription] = hbTrId("txt_mail_widget_dblist_preview_of_recent_mail"); + map[hsItemDescription] = "test description for widget"; map[hsIconFileName] = accountIconName; // to add widget params that are mapped to widgets properties - map[NmHsWidgetParam] = QString::number(accountId); + map[NmHsWidgetParamAccountId] = QString::number(accountId); + map[NmHsWidgetParamAccountIconName] = accountIconName; //------------------------------ bool retVal(false); @@ -149,7 +182,7 @@ Q_ARG(QVariantMap, map)); //Push the registered widget also to homescreen right away - bool pushRetVal = pushWidgetToHomescreen(accountId); + bool pushRetVal = pushWidgetToHomescreen(accountId, accountIconName); return (retVal && ret && pushRetVal); } @@ -159,10 +192,10 @@ { QMap map; //------------------------------ - map[hsitemLaunchUri] = NmLaunchUri; + map[hsitemLaunchUri] = formLaunchUri(accountId); map[hsitemPublisherId] = NmPublisherName; map[hsItemWidgetUri] = NmHsWidget; - map[NmHsWidgetParam] = QString::number(accountId); + map[NmHsWidgetParamAccountId] = QString::number(accountId); //------------------------------ QList list; //list of items that mach the query @@ -194,10 +227,10 @@ QMap map; //------------------------------ - map[hsitemLaunchUri] = NmLaunchUri; + map[hsitemLaunchUri] = formLaunchUri(accountId); map[hsitemPublisherId] = NmPublisherName; map[hsItemWidgetUri] = NmHsWidget; - map[NmHsWidgetParam] = QString::number(accountId); + map[NmHsWidgetParamAccountId] = QString::number(accountId); //------------------------------ QList list; //list of items that mach the query @@ -224,7 +257,7 @@ return (retVal && ret); } -bool NmMailboxRegisterInterfacePrivate::pushWidgetToHomescreen( quint64 accountId ) +bool NmMailboxRegisterInterfacePrivate::pushWidgetToHomescreen( quint64 accountId, QString accountIconName ) { // load plugin QServiceManager manager; @@ -243,6 +276,7 @@ //-------------------------------- QVariantHash map; map[NmHsAccountId] = QString::number(accountId); + map[NmHsAccountIconName] = accountIconName; //-------------------------------- // invoke function synchronously @@ -268,3 +302,7 @@ return (retVal && ret); } +QString NmMailboxRegisterInterfacePrivate::formLaunchUri(quint64 accountId) const + { + return NmLaunchUri + QString::number(accountId); + }