commondrm/drmui/drmuinotifications/src/drmuidialogsbuilder.cpp
branchRCL_3
changeset 71 1221b68b8a5f
equal deleted inserted replaced
67:50c53e893c3f 71:1221b68b8a5f
       
     1 /*
       
     2  * Copyright (c) 2010 Nokia Corporation and/or its subsidiary(-ies).
       
     3  * All rights reserved.
       
     4  * This component and the accompanying materials are made available
       
     5  * under the terms of "Eclipse Public License v1.0""
       
     6  * which accompanies this distribution, and is available
       
     7  * at the URL "http://www.eclipse.org/legal/epl-v10.html".
       
     8  *
       
     9  * Initial Contributors:
       
    10  * Nokia Corporation - initial contribution.
       
    11  *
       
    12  * Contributors:
       
    13  *
       
    14  * Description:  
       
    15  *
       
    16  */
       
    17 #include "drmuidialogsbuilder.h"
       
    18 #include <hbdocumentloader.h>
       
    19 #include "drmuidialogpluginkeys.h"
       
    20 #include <drmuidialogids.h> 
       
    21 #include <hbaction.h>
       
    22 #include <hbdialog.h>
       
    23 #include <hblabel.h>
       
    24 #include <QString>
       
    25 #include <HbPopup.h>
       
    26 
       
    27 static const QString DOCML_NO_RIGHTS_OBJECT_DIALOG_QUERY =
       
    28         ":/xml/norightsobjectquery.docml";
       
    29 static const QString DOCML_SIM_NOT_ALLOWED_QUERY =
       
    30         ":/xml/simnotallowedquery.docml";
       
    31 static const QString DOCML_RIGHTS_OBJECT_EXPIRED_QUERY =
       
    32         ":/xml/rightsobjectexpiredquery.docml";
       
    33 static const QString DOCML_WAITING_FOR_RIGHTS_OBJECT_CONF =
       
    34         ":/xml/waitingforrightsobjconf.docml";
       
    35 static const QString DOCML_COPY_OBJECTS_QUERY =
       
    36         ":/xml/copyobjectsquery.docml";
       
    37 static const QString DOCML_DELETED_CONF = ":/xml/filedeletedconf.docml";
       
    38 static const QString DOCML_DELETED_DRM_FILE_QUERY =
       
    39         ":/xml/deletedrmfilequery.docml";
       
    40 static const QString DOCML_MOVE_OBJECTS_QUERY =
       
    41         ":/xml/moveobjectsquery.docml";
       
    42 static const QString DOCML_NO_COUNT_QUERY = ":/xml/nocountquery.docml";
       
    43 static const QString DOCML_NO_USAGE_QUERY = ":/xml/nousagequery.docml";
       
    44 static const QString DOCML_OBJECT_LOCKED_CONF =
       
    45         ":/xml/objectlockedconf.docml";
       
    46 static const QString DOCML_UNABLE_TO_COPY_CONF =
       
    47         ":/xml/unabletocopyconf.docml";
       
    48 static const QString DOCML_UNABLE_TO_MOVE_CONF =
       
    49         ":/xml/unabletomoveconf.docml";
       
    50 static const QString DOCML_UNSUPPORTED_CONF = ":/xml/unsupportedconf.docml";
       
    51 static const QString DOCML_DEREGISTERED_CONF = ":/xml/deregisteredconf.docml";
       
    52 static const QString DOCML_FILEDELETED_CONF = ":/xml/filedeletedconf.docml";
       
    53 static const QString DOCML_FORWARD_PROTECTED_CONF =
       
    54         ":/xml/forwardprotectedconf.docml";
       
    55 static const QString DOCML_LICENCE_EXPIRED_CONF =
       
    56         ":/xml/licenceexpiredconf.docml";
       
    57 static const QString DOCML_NOT_RECOGNIZED_CONF =
       
    58         ":/xml/notrecognizedconf.docml";
       
    59 static const QString DOCML_REGISTERED_CONF = ":/xml/registeredconf.docml";
       
    60 static const QString DOCML_REGISTER_FAILURE_CONF =
       
    61         ":/xml/registerfailureconf.docml";
       
    62 static const QString DOCML_UNABLE_TO_DEREGISTER_CONF =
       
    63         ":/xml/unabletoderegisterconf.docml";
       
    64 static const QString DOCML_UNABLE_TO_SEND_CONF =
       
    65         ":/xml/unabletosendconf.docml";
       
    66 static const QString DOCML_UPDATED_CONF = ":/xml/updatedconf.docml";
       
    67 static const QString DOCML_UPDATE_FAILURE_CONF =
       
    68         ":/xml/updatefailureconf.docml";
       
    69 static const QString DOCML_VIEW_RESTRICTION_CONF =
       
    70         ":/xml/viewrestrictionconf.docml";
       
    71 static const QString DOCML_ACCOUNT_UPDATE_QUERY =
       
    72         ":/xml/accountupdatequery.docml";
       
    73 static const QString DOCML_GET_LICENCE_QUERY =
       
    74         ":/xml/getnewlicencequery.docml";
       
    75 static const QString DOCML_RETRY_FOR_LICENCE_QUERY =
       
    76         ":/xml/retryforlicencequery.docml";
       
    77 static const QString DOCML_UNABLE_TO_SEND_QUERY =
       
    78         ":/xml/unabletosendquery.docml";
       
    79 static const QString DOCML_RIGHTS_OBJECTS_RECIEVED_NOTE =
       
    80         ":/xml/rightsobjectsrecievednote.docml";
       
    81 static const QString DOCML_WAITING_FOR_LICENCE_CONF =
       
    82         ":/xml/waitingforlicenceconf.docml";
       
    83 static const QString DOCML_ACQUIRING_LICENCE_PROG =
       
    84         ":/xml/acquiringlicenceprog.docml";
       
    85 static const QString DOCML_REGISTERING_PROG =
       
    86         ":/xml/Registeringprog.docml";
       
    87 static const QString DOCML_UPDATING_PROG =
       
    88         ":/xml/updatingprog.docml";
       
    89 static const QString DOCML_DEREGISTERING_PROG =
       
    90         ":/xml/deregisteringprog.docml";
       
    91 
       
    92 // Notes have not been defined in the XLS document yet hence commented out
       
    93 /*
       
    94  static const QString DOCML_NO_CONNECTION_DEFINED =
       
    95  ":/xml/noconnectiondefined.docml";
       
    96  static const QString DOCML_INVALID_OR_NO_AP = ":/xml/invalidornoap.docml";
       
    97  static const QString DOCML_OPENING_FAIL_PERM = ":/xml/openingfailperm.docml";
       
    98  */
       
    99 
       
   100 /*!
       
   101  class Constructor
       
   102  */
       
   103 DrmUiDialogsBuilder::DrmUiDialogsBuilder(const QVariantMap &parameters) :
       
   104     QObject()
       
   105     {
       
   106     constructDialog(parameters);
       
   107     }
       
   108 
       
   109 DrmUiDialogsBuilder::~DrmUiDialogsBuilder()
       
   110     {
       
   111     delete mLoader;
       
   112     mLoader = NULL;
       
   113     }
       
   114 
       
   115 /*!
       
   116  Get error, implementation of interface
       
   117  */
       
   118 int DrmUiDialogsBuilder::deviceDialogError() const
       
   119     {
       
   120     return 0;
       
   121     }
       
   122 
       
   123 /*!
       
   124  Set parameters, implementation of interface
       
   125  Invoked when HbDeviceDialog::update calls.
       
   126  */
       
   127 bool DrmUiDialogsBuilder::setDeviceDialogParameters(
       
   128         const QVariantMap &parameters)
       
   129     {
       
   130     constructDialog(parameters);
       
   131     return true;
       
   132     }
       
   133 
       
   134 /*!
       
   135  Close notification, implementation of interface
       
   136  */
       
   137 void DrmUiDialogsBuilder::closeDeviceDialog(bool byClient)
       
   138     {
       
   139     Q_UNUSED(byClient);
       
   140     emit deviceDialogClosed();
       
   141     }
       
   142 /*!
       
   143  Return display widget, implementation of interface
       
   144  */
       
   145 QObject *DrmUiDialogsBuilder::signalSender() const
       
   146     {
       
   147     return const_cast<DrmUiDialogsBuilder*> (this);
       
   148     }
       
   149 
       
   150 /*!
       
   151  Return display widget, implementation of interface
       
   152  */
       
   153 HbPopup* DrmUiDialogsBuilder::deviceDialogWidget() const
       
   154     {
       
   155     return mDialog;
       
   156     }
       
   157 
       
   158 /*!
       
   159  Construct display widget
       
   160  */
       
   161 bool DrmUiDialogsBuilder::constructDialog(const QVariantMap &parameters)
       
   162     {
       
   163     if (mLoader == 0)
       
   164         {
       
   165         mLoader = new HbDocumentLoader();
       
   166         }
       
   167     bool ok = false;
       
   168     int mQueryType;
       
   169     if (parameters.contains(KDrmUIDialogId))
       
   170         {
       
   171 
       
   172         mQueryType = parameters.value(KDrmUIDialogId).toInt();
       
   173         //switch cases to set load docml files for the parameters
       
   174         switch (mQueryType)
       
   175             {
       
   176             case EQueryNoRightsObj:
       
   177                 mLoader->load(DOCML_NO_RIGHTS_OBJECT_DIALOG_QUERY, &ok);
       
   178                 break;
       
   179 
       
   180             case EQueryFileLockedForSim:
       
   181                 mLoader->load(DOCML_SIM_NOT_ALLOWED_QUERY, &ok);
       
   182                 break;
       
   183 
       
   184             case EQueryRightsObjExpired:
       
   185                 mLoader->load(DOCML_RIGHTS_OBJECT_EXPIRED_QUERY, &ok);
       
   186                 break;
       
   187 
       
   188             case EConfWaitingForLicence:
       
   189                 mLoader->load(DOCML_WAITING_FOR_LICENCE_CONF, &ok);
       
   190                 break;
       
   191 
       
   192             case EConfDeleted:
       
   193                 mLoader->load(DOCML_DELETED_CONF, &ok);
       
   194                 break;
       
   195 
       
   196             case EConfObjLocked:
       
   197                 mLoader->load(DOCML_OBJECT_LOCKED_CONF, &ok);
       
   198                 break;
       
   199 
       
   200             case EConfUnableToCopy:
       
   201                 mLoader->load(DOCML_UNABLE_TO_COPY_CONF, &ok);
       
   202                 break;
       
   203             case EConfUnableToMove:
       
   204                 mLoader->load(DOCML_UNABLE_TO_MOVE_CONF, &ok);
       
   205                 break;
       
   206 
       
   207             case EConfUnsupportedObj:
       
   208                 mLoader->load(DOCML_UNSUPPORTED_CONF, &ok);
       
   209                 break;
       
   210 
       
   211             case EQueryCopyObjects:
       
   212                 mLoader->load(DOCML_COPY_OBJECTS_QUERY, &ok);
       
   213                 break;
       
   214 
       
   215             case EQueryDeleteDRMFile:
       
   216                 mLoader->load(DOCML_DELETED_DRM_FILE_QUERY, &ok);
       
   217                 break;
       
   218 
       
   219             case EQueryMoveObjects:
       
   220                 mLoader->load(DOCML_MOVE_OBJECTS_QUERY, &ok);
       
   221                 break;
       
   222 
       
   223             case EQueryNoCount:
       
   224                 mLoader->load(DOCML_NO_COUNT_QUERY, &ok);
       
   225                 break;
       
   226 
       
   227             case EQueryNoUsage:
       
   228                 mLoader->load(DOCML_NO_USAGE_QUERY, &ok);
       
   229                 break;
       
   230 
       
   231             case EQuerySendUnprotectedObjs:
       
   232                 mLoader->load(DOCML_UNABLE_TO_SEND_QUERY, &ok);
       
   233                 break;
       
   234 
       
   235             case EQueryAccountUpdate:
       
   236                 mLoader->load(DOCML_ACCOUNT_UPDATE_QUERY, &ok);
       
   237                 break;
       
   238 
       
   239             case EQueryRetryForLicence:
       
   240                 mLoader->load(DOCML_RETRY_FOR_LICENCE_QUERY, &ok);
       
   241                 break;
       
   242 
       
   243             case EQueryGetNewLicence:
       
   244                 mLoader->load(DOCML_GET_LICENCE_QUERY, &ok);
       
   245                 break;
       
   246 
       
   247             case EConfLicenceExpired:
       
   248                 mLoader->load(DOCML_LICENCE_EXPIRED_CONF, &ok);
       
   249                 break;
       
   250 
       
   251             case EConfForwardProtected:
       
   252                 mLoader->load(DOCML_FORWARD_PROTECTED_CONF, &ok);
       
   253                 break;
       
   254 
       
   255             case EConfUnableToSend:
       
   256                 mLoader->load(DOCML_UNABLE_TO_SEND_CONF, &ok);
       
   257                 break;
       
   258 
       
   259             case EConfViewRestriction:
       
   260                 mLoader->load(DOCML_VIEW_RESTRICTION_CONF, &ok);
       
   261                 break;
       
   262 
       
   263             case EConfUnableToDeregister:
       
   264                 mLoader->load(DOCML_UNABLE_TO_DEREGISTER_CONF, &ok);
       
   265                 break;
       
   266 
       
   267             case EConfPhoneDeregistered:
       
   268                 mLoader->load(DOCML_DEREGISTERED_CONF, &ok);
       
   269                 break;
       
   270 
       
   271             case EConfRegUpdateFailure:
       
   272                 mLoader->load(DOCML_UPDATE_FAILURE_CONF, &ok);
       
   273                 break;
       
   274 
       
   275             case EConfAccountNotRecognized:
       
   276                 mLoader->load(DOCML_NOT_RECOGNIZED_CONF, &ok);
       
   277                 break;
       
   278 
       
   279             case EConfPhoneRegistered:
       
   280                 mLoader->load(DOCML_REGISTERED_CONF, &ok);
       
   281                 break;
       
   282 
       
   283             case EConfRegistrationUpdated:
       
   284                 mLoader->load(DOCML_UPDATED_CONF, &ok);
       
   285                 break;
       
   286                 
       
   287             case EConfRegistrationFailure:
       
   288                 mLoader->load(DOCML_REGISTER_FAILURE_CONF, &ok);
       
   289                 break;
       
   290 
       
   291             case ENoteRightsObjReceived:
       
   292                 mLoader->load(DOCML_RIGHTS_OBJECTS_RECIEVED_NOTE, &ok);
       
   293                 break;
       
   294 
       
   295             case EProgDeregisteringPhone:
       
   296                 mLoader->load(DOCML_DEREGISTERING_PROG, &ok);
       
   297                 break;
       
   298 
       
   299             case EProgAcquiringLicence:
       
   300                 mLoader->load(DOCML_ACQUIRING_LICENCE_PROG, &ok);
       
   301                 break;
       
   302 
       
   303             case EProgRegisteringPhone:
       
   304                 mLoader->load(DOCML_REGISTERING_PROG, &ok);
       
   305                 break;
       
   306             case EProgUpdatingRegistration:
       
   307                 mLoader->load(DOCML_UPDATING_PROG, &ok);
       
   308                 break;
       
   309                            
       
   310             //Notes are not defined in the locatization xls hence commented out
       
   311             /*case ENoteNoConnectionDefined:
       
   312                 mLoader->load(DOCML_NO_CONNECTION_DEFINED, &ok);
       
   313                 break;
       
   314 
       
   315             case ENoteInvalidOrNoAP:
       
   316                 mLoader->load(DOCML_INVALID_OR_NO_AP, &ok);
       
   317                 break;
       
   318 
       
   319             case ENoteOpeningFailPerm:
       
   320                 mLoader->load(DOCML_OPENING_FAIL_PERM, &ok);
       
   321                 break;*/
       
   322             default:
       
   323                 break;
       
   324 
       
   325             }
       
   326         if (ok)
       
   327             {
       
   328             QGraphicsWidget *widget = mLoader->findWidget(QString("dialog"));
       
   329             mDialog = qobject_cast<HbDialog*> (widget);
       
   330             switch (mQueryType)
       
   331                 {
       
   332                 //Cases for two push button dialogs  
       
   333                 case EQueryNoRightsObj:
       
   334                 case EQueryFileLockedForSim:
       
   335                 case EQueryRightsObjExpired:
       
   336                 case EQueryCopyObjects:
       
   337                 case EQueryDeleteDRMFile:
       
   338                 case EQueryMoveObjects:
       
   339                 case EQueryNoCount:
       
   340                 case EQueryNoUsage: 
       
   341                 case EQuerySendUnprotectedObjs:
       
   342                 case EQueryAccountUpdate:
       
   343                 case EQueryRetryForLicence:
       
   344                 case EQueryGetNewLicence:
       
   345                     connect(qobject_cast<HbAction*> (mLoader->findObject(
       
   346                             "secondary")), SIGNAL(
       
   347                             triggered()), this, SLOT(cancelDialog()));
       
   348                     connect(qobject_cast<HbAction*> (mLoader->findObject(
       
   349                             "primary")), SIGNAL(
       
   350                             triggered()), this, SLOT(confirmDialog()));
       
   351                     mDialog->setTimeout(HbPopup::NoTimeout);
       
   352                     mDialog->setDismissPolicy(HbPopup::NoDismiss);
       
   353                     mDialog->setModal(true);
       
   354                     break;
       
   355                     
       
   356                  //Cases single push button dialogs    
       
   357                 case EConfWaitingForLicence:
       
   358                 case EConfDeleted:
       
   359                 case EConfObjLocked:
       
   360                 case EConfUnableToCopy:
       
   361                 case EConfUnableToMove:
       
   362                 case EConfUnsupportedObj: 
       
   363                 case EConfLicenceExpired:
       
   364                 case EConfForwardProtected:
       
   365                 case EConfUnableToSend:
       
   366                 case EConfViewRestriction:
       
   367                 case EConfUnableToDeregister:
       
   368                 case EConfPhoneDeregistered:
       
   369                 case EConfRegUpdateFailure:
       
   370                 case EConfAccountNotRecognized:
       
   371                 case EConfPhoneRegistered:
       
   372                 case EConfRegistrationUpdated:
       
   373                 case EConfRegistrationFailure:
       
   374                     connect(qobject_cast<HbAction*> (mLoader->findObject(
       
   375                             "primary")), SIGNAL(
       
   376                             triggered()), this, SLOT(confirmDialog()));
       
   377                     mDialog->setTimeout(HbPopup::NoTimeout);
       
   378                     mDialog->setDismissPolicy(HbPopup::NoDismiss);
       
   379                     mDialog->setModal(true);
       
   380                     break;
       
   381 
       
   382                     // Cases for progress bar or wait notes
       
   383                 case EProgDeregisteringPhone:
       
   384                 case EProgAcquiringLicence:
       
   385                 case EProgRegisteringPhone:
       
   386                 case EProgUpdatingRegistration:
       
   387                     connect(qobject_cast<HbAction*> (mLoader->findObject(
       
   388                             "primary")), SIGNAL(
       
   389                             triggered()), this, SLOT(cancelDialog()));
       
   390                     mDialog->setTimeout(HbPopup::NoTimeout);
       
   391                     mDialog->setDismissPolicy(HbPopup::NoDismiss);
       
   392                     mDialog->setModal(true);
       
   393                     break;
       
   394                     
       
   395                 //DrmUi Notes
       
   396                //Notes are not defined in the locatization xls hence commented out
       
   397               // case ENoteNoConnectionDefined:
       
   398               // case ENoteInvalidOrNoAP:
       
   399               // case ENoteOpeningFailPerm:
       
   400                 case ENoteRightsObjReceived:
       
   401                     mDialog->setTimeout(HbPopup::StandardTimeout);
       
   402                     mDialog->setDismissPolicy(HbPopup::NoDismiss);
       
   403                     break;
       
   404                 default:
       
   405                     break;
       
   406                   
       
   407                 }
       
   408             }
       
   409         else
       
   410             {
       
   411             qFatal("Unable to load %S");
       
   412             return EFalse;
       
   413             }
       
   414         }
       
   415 
       
   416     return ETrue;
       
   417     }
       
   418 /*!
       
   419  Handle secondary push button triggered
       
   420  */
       
   421 void DrmUiDialogsBuilder::cancelDialog()
       
   422     {
       
   423     QVariantMap val;
       
   424     QVariant index(ECancelled);
       
   425     val.insert("result", index);
       
   426     emit deviceDialogData(val);
       
   427     emit deviceDialogClosed();
       
   428     }
       
   429 /*!
       
   430  Handle Primary push button triggered
       
   431  */
       
   432 void DrmUiDialogsBuilder::confirmDialog()
       
   433     {
       
   434     QVariantMap val;
       
   435     QVariant index(EOk);
       
   436     val.insert("result", index);
       
   437     emit deviceDialogData(val);
       
   438     emit deviceDialogClosed();
       
   439     }