emailservices/nmregister/src/nmmailboxregisterinterface.cpp
changeset 23 2dc6caa42ec3
parent 20 ecc8def7944a
child 30 759dc5235cdb
equal deleted inserted replaced
20:ecc8def7944a 23:2dc6caa42ec3
    15  *
    15  *
    16  */
    16  */
    17 
    17 
    18 #include <qservicemanager.h>
    18 #include <qservicemanager.h>
    19 #include <qserviceinterfacedescriptor.h>
    19 #include <qserviceinterfacedescriptor.h>
       
    20 #include <HbIcon>
       
    21 #include <HbApplication>
       
    22 #include <QTranslator>
       
    23 #include "nmicons.h"
    20 #include "nmmailboxregisterinterface.h" 
    24 #include "nmmailboxregisterinterface.h" 
    21 #include "nmmailboxregisterinterface_p.h" 
    25 #include "nmmailboxregisterinterface_p.h" 
    22 
    26 
    23 //mandatory keys 
    27 //mandatory keys 
    24 const QString hsItemName          ("item:name"); 
    28 const QString hsItemName          ("item:name"); 
    31 const QString hsIconFileName      ("icon:filename");//to display specific icon from file 
    35 const QString hsIconFileName      ("icon:filename");//to display specific icon from file 
    32 const QString hsIconName          ("icon:name");// HbIcon 
    36 const QString hsIconName          ("icon:name");// HbIcon 
    33 const QString hsIconApplicationId ("icon:applicationid"); // icon from associated application 
    37 const QString hsIconApplicationId ("icon:applicationid"); // icon from associated application 
    34 
    38 
    35 //Custom for nmHsWidgets
    39 //Custom for nmHsWidgets
    36 //NmHsWidgetParam is used to identify what email account will be monitored by 
    40 //NmHsWidgetParamAccountId is used to identify what email account will be monitored by 
    37 //the registered hs widget
    41 //the registered hs widget
    38 const QString NmHsWidgetParam     ("widgetparam:accountId");
    42 const QString NmHsWidgetParamAccountId     ("widgetparam:accountId");
    39 //same as above but for pushing the widget to homescreen
    43 //same as above but for pushing the widget to homescreen
    40 const QString NmHsAccountId       ("accountId");
    44 const QString NmHsAccountId       ("accountId");
       
    45 //NmHsWidgetParamAccountIconName is used to identify mailbox icon in application library
       
    46 const QString NmHsWidgetParamAccountIconName     ("widgetparam:accountIconName");
       
    47 //same as above but for pushing the widget to homescreen
       
    48 const QString NmHsAccountIconName  ("accountIconName");
    41 //This is used to identify nmhswidget in homescreen
    49 //This is used to identify nmhswidget in homescreen
    42 const QString NmHsWidget          ("nmhswidget");
    50 const QString NmHsWidget          ("nmhswidget");
    43 
    51 
    44 //parameter values
    52 //parameter values
    45 const QString NmPublisherName     ("NmMailboxRegisterInterface");
    53 const QString NmPublisherName     ("NmMailboxRegisterInterface");
    46 const QString NmLaunchUri         ("application://0x2002DD17");
    54 const QString NmLaunchUri         ("appto://0x200255BA?activityname=EmailInboxView&accountId=");
    47 //URI for the defined service
    55 //URI for the defined service
    48 const QLatin1String interfaceUri("com.nokia.symbian.IEmailRegisterAccount");
    56 const QLatin1String interfaceUri("com.nokia.symbian.IEmailRegisterAccount");
    49 
    57 
    50 
    58 /** Localization file name*/
       
    59 const QString KNmRegisterLocFileName = "nmregister_";
       
    60 /** Localization file location*/
       
    61 const QString KNmRegisterLocLocation = "z:/resource/qt/translations/";
    51 
    62 
    52 /*!
    63 /*!
    53     Constructor
    64     Constructor
    54 */
    65 */
    55 NmMailboxRegisterInterface::NmMailboxRegisterInterface(QObject *parent) :
    66 NmMailboxRegisterInterface::NmMailboxRegisterInterface(QObject *parent) :
   100     Constructor
   111     Constructor
   101 */
   112 */
   102 NmMailboxRegisterInterfacePrivate::NmMailboxRegisterInterfacePrivate(QObject *parent) :
   113 NmMailboxRegisterInterfacePrivate::NmMailboxRegisterInterfacePrivate(QObject *parent) :
   103     XQServiceProvider(interfaceUri, parent ), 
   114     XQServiceProvider(interfaceUri, parent ), 
   104     mManager(0),
   115     mManager(0),
   105     mService(0)
   116     mService(0),
   106     {
   117     mTranslator(0)
       
   118     {
       
   119     //commented out until MCL has nmregister files in place here: epoc32/include/platform/qt/translations/
       
   120     /*mTranslator = new QTranslator();
       
   121     QString lang = QLocale::system().name();
       
   122     bool loadSucceed = mTranslator->load(KNmRegisterLocFileName + lang, KNmRegisterLocLocation);
       
   123     qDebug() << "NmMailboxRegisterInterfacePrivate mTranslator->load loadSucceed:"<<loadSucceed;
       
   124     QCoreApplication::installTranslator(mTranslator);*/
       
   125     
   107     mManager = new QServiceManager();
   126     mManager = new QServiceManager();
   108     QServiceFilter filter("com.nokia.symbian.IMenuClient");
   127     QServiceFilter filter("com.nokia.symbian.IMenuClient");
   109     QList<QServiceInterfaceDescriptor> interfaces = mManager->findInterfaces(filter);
   128     QList<QServiceInterfaceDescriptor> interfaces = mManager->findInterfaces(filter);
   110     mService = mManager->loadInterface(interfaces.first()); 
   129     mService = mManager->loadInterface(interfaces.first()); 
   111     }
   130     }
   113 /*!
   132 /*!
   114     Destructor
   133     Destructor
   115 */
   134 */
   116 NmMailboxRegisterInterfacePrivate::~NmMailboxRegisterInterfacePrivate()
   135 NmMailboxRegisterInterfacePrivate::~NmMailboxRegisterInterfacePrivate()
   117     {
   136     {
       
   137     if(mTranslator){
       
   138         delete mTranslator;
       
   139         mTranslator = NULL;
       
   140     }
   118     if (mService) 
   141     if (mService) 
   119         {
   142         {
   120         delete mService;
   143         delete mService;
   121         }
   144         }
   122     if (mManager) 
   145     if (mManager) 
   127 
   150 
   128 
   151 
   129 bool NmMailboxRegisterInterfacePrivate::registerNewMailbox(quint64 accountId,
   152 bool NmMailboxRegisterInterfacePrivate::registerNewMailbox(quint64 accountId,
   130         QString accountName, QString accountIconName)
   153         QString accountName, QString accountIconName)
   131     {
   154     {
       
   155     //check that accountIconName is valid otherwise pass default mailbox icon
       
   156     HbIcon mailBoxIcon(accountIconName);
       
   157     if(mailBoxIcon.pixmap().height() == 0){
       
   158         mailBoxIcon = NmIcons::getIcon(NmIcons::NmIconDefaultMailbox);
       
   159         accountIconName = mailBoxIcon.iconName();
       
   160     }
       
   161     
   132     QMap<QString, QVariant> map;
   162     QMap<QString, QVariant> map;
   133     //------------------------------
   163     //------------------------------
   134     map[hsItemName]        = accountName;
   164     map[hsItemName]        = accountName;
   135     map[hsitemLaunchUri]   = NmLaunchUri;
   165     map[hsitemLaunchUri]   = formLaunchUri(accountId);
   136     map[hsitemPublisherId] = NmPublisherName;
   166     map[hsitemPublisherId] = NmPublisherName;
   137     map[hsItemWidgetUri]   = NmHsWidget;
   167     map[hsItemWidgetUri]   = NmHsWidget;
   138     map[hsItemDescription] = "test description for widget"; //TODO: Localization
   168     //commented out until MCL has nmregister files in place here: epoc32/include/platform/qt/translations/
       
   169     //map[hsItemDescription] = hbTrId("txt_mail_widget_dblist_preview_of_recent_mail");
       
   170     map[hsItemDescription] = "test description for widget";
   139     map[hsIconFileName]    = accountIconName;
   171     map[hsIconFileName]    = accountIconName;
   140     // to add widget params that are mapped to widgets properties
   172     // to add widget params that are mapped to widgets properties
   141     map[NmHsWidgetParam]   = QString::number(accountId);
   173     map[NmHsWidgetParamAccountId]   = QString::number(accountId);
       
   174     map[NmHsWidgetParamAccountIconName]   = accountIconName;
   142     //------------------------------
   175     //------------------------------
   143     
   176     
   144     bool retVal(false);
   177     bool retVal(false);
   145     
   178     
   146     bool ret = QMetaObject::invokeMethod(  mService,"add",
   179     bool ret = QMetaObject::invokeMethod(  mService,"add",
   147                     Qt::DirectConnection,
   180                     Qt::DirectConnection,
   148                     Q_RETURN_ARG(bool, retVal),
   181                     Q_RETURN_ARG(bool, retVal),
   149                     Q_ARG(QVariantMap, map)); 
   182                     Q_ARG(QVariantMap, map)); 
   150 
   183 
   151     //Push the registered widget also to homescreen right away
   184     //Push the registered widget also to homescreen right away
   152     bool pushRetVal = pushWidgetToHomescreen(accountId);
   185     bool pushRetVal = pushWidgetToHomescreen(accountId, accountIconName);
   153     
   186     
   154     return (retVal && ret && pushRetVal);
   187     return (retVal && ret && pushRetVal);
   155     }
   188     }
   156 
   189 
   157 bool NmMailboxRegisterInterfacePrivate::updateMailboxName(quint64 accountId,
   190 bool NmMailboxRegisterInterfacePrivate::updateMailboxName(quint64 accountId,
   158         QString newName)
   191         QString newName)
   159     {
   192     {
   160     QMap<QString, QVariant> map;
   193     QMap<QString, QVariant> map;
   161      //------------------------------
   194      //------------------------------
   162      map[hsitemLaunchUri]   = NmLaunchUri;
   195      map[hsitemLaunchUri]   = formLaunchUri(accountId);
   163      map[hsitemPublisherId] = NmPublisherName;
   196      map[hsitemPublisherId] = NmPublisherName;
   164      map[hsItemWidgetUri]   = NmHsWidget;
   197      map[hsItemWidgetUri]   = NmHsWidget;
   165      map[NmHsWidgetParam]   = QString::number(accountId);
   198      map[NmHsWidgetParamAccountId]   = QString::number(accountId);
   166      //------------------------------
   199      //------------------------------
   167      
   200      
   168      QList<QVariantMap> list; //list of items that mach the query
   201      QList<QVariantMap> list; //list of items that mach the query
   169      bool retVal(false);
   202      bool retVal(false);
   170      bool ret = QMetaObject::invokeMethod(  mService,"getList",
   203      bool ret = QMetaObject::invokeMethod(  mService,"getList",
   192 bool NmMailboxRegisterInterfacePrivate::unregisterMailbox(quint64 accountId)
   225 bool NmMailboxRegisterInterfacePrivate::unregisterMailbox(quint64 accountId)
   193     {
   226     {
   194     
   227     
   195     QMap<QString, QVariant> map;
   228     QMap<QString, QVariant> map;
   196      //------------------------------
   229      //------------------------------
   197      map[hsitemLaunchUri]   = NmLaunchUri;
   230      map[hsitemLaunchUri]   = formLaunchUri(accountId);
   198      map[hsitemPublisherId] = NmPublisherName;
   231      map[hsitemPublisherId] = NmPublisherName;
   199      map[hsItemWidgetUri]   = NmHsWidget;
   232      map[hsItemWidgetUri]   = NmHsWidget;
   200      map[NmHsWidgetParam]     = QString::number(accountId);
   233      map[NmHsWidgetParamAccountId]     = QString::number(accountId);
   201      //------------------------------
   234      //------------------------------
   202      
   235      
   203      QList<QVariantMap> list; //list of items that mach the query
   236      QList<QVariantMap> list; //list of items that mach the query
   204      bool retVal(false);
   237      bool retVal(false);
   205      bool ret = QMetaObject::invokeMethod(  mService,"getList",
   238      bool ret = QMetaObject::invokeMethod(  mService,"getList",
   222          }
   255          }
   223 
   256 
   224      return (retVal && ret);
   257      return (retVal && ret);
   225     }
   258     }
   226 
   259 
   227 bool NmMailboxRegisterInterfacePrivate::pushWidgetToHomescreen( quint64 accountId )
   260 bool NmMailboxRegisterInterfacePrivate::pushWidgetToHomescreen( quint64 accountId, QString accountIconName )
   228     {
   261     {
   229     // load plugin
   262     // load plugin
   230     QServiceManager manager;
   263     QServiceManager manager;
   231     QServiceFilter filter("com.nokia.symbian.IHomeScreenClient");
   264     QServiceFilter filter("com.nokia.symbian.IHomeScreenClient");
   232     filter.setServiceName("hshomescreenclientplugin");
   265     filter.setServiceName("hshomescreenclientplugin");
   241     if(!service){qDebug() << "service is null ";}
   274     if(!service){qDebug() << "service is null ";}
   242     
   275     
   243     //--------------------------------
   276     //--------------------------------
   244     QVariantHash map;
   277     QVariantHash map;
   245     map[NmHsAccountId] = QString::number(accountId);
   278     map[NmHsAccountId] = QString::number(accountId);
       
   279     map[NmHsAccountIconName] = accountIconName;
   246     //--------------------------------
   280     //--------------------------------
   247     
   281     
   248     // invoke function synchronously
   282     // invoke function synchronously
   249     bool retVal(false);
   283     bool retVal(false);
   250     bool ret = QMetaObject::invokeMethod(  service, "addWidget",
   284     bool ret = QMetaObject::invokeMethod(  service, "addWidget",
   266         }
   300         }
   267     
   301     
   268     return (retVal && ret);
   302     return (retVal && ret);
   269     }
   303     }
   270 
   304 
       
   305 QString NmMailboxRegisterInterfacePrivate::formLaunchUri(quint64 accountId) const
       
   306     {
       
   307     return NmLaunchUri + QString::number(accountId);
       
   308     }