src/hbwidgets/devicedialogs/hbdeviceprogressdialogsymbian.cpp
changeset 2 06ff229162e9
parent 1 f7ac710697a9
child 5 627c4a0fd0e7
equal deleted inserted replaced
1:f7ac710697a9 2:06ff229162e9
    33 _LIT(KDialogMinimum, "minimum");
    33 _LIT(KDialogMinimum, "minimum");
    34 _LIT(KDialogValue, "value");
    34 _LIT(KDialogValue, "value");
    35 _LIT(KDialogAutoClose, "autoClose");
    35 _LIT(KDialogAutoClose, "autoClose");
    36 _LIT(KDialogText, "text");
    36 _LIT(KDialogText, "text");
    37 _LIT(KDialogIconName, "iconName");
    37 _LIT(KDialogIconName, "iconName");
    38 _LIT(KDialogTextAlign, "textAlignment");
    38 _LIT(KCancelAction, "cancelAction");
    39 _LIT(KDialogIconAlign, "iconAlignment");
       
    40 _LIT(KPrimaryActionText, "primaryActionText");
       
    41 _LIT(KPrimaryActionNull, "primaryActionNull");
       
    42 _LIT(KPluginIdentifier, "com.nokia.hb.deviceprogressdialog/1.0");
    39 _LIT(KPluginIdentifier, "com.nokia.hb.deviceprogressdialog/1.0");
    43 _LIT(KAnimationDefinition, "animationDefinition");
    40 _LIT(KAnimationDefinition, "animationDefinition");
    44 
       
    45 const TInt KAlignCenterLeft = 0x0080 | 0x0001;  //Qt::AlignVCenter | Qt::AlignLeft
       
    46 const TInt KAlignCenter = 0x0080 | 0x0004;      //Qt::AlignCenter
       
    47 
    41 
    48 NONSHARABLE_CLASS(CHbDeviceProgressDialogSymbianPrivate) : public CBase,
    42 NONSHARABLE_CLASS(CHbDeviceProgressDialogSymbianPrivate) : public CBase,
    49                                                            public MHbDeviceDialogObserver
    43                                                            public MHbDeviceDialogObserver
    50 {
    44 {
    51 public:
    45 public:
    59     bool Visible() const;
    53     bool Visible() const;
    60 
    54 
    61     void AddVariantL(const TDesC& aKey, const TAny* aData,
    55     void AddVariantL(const TDesC& aKey, const TAny* aData,
    62             CHbSymbianVariant::TType aDataType, CHbSymbianVariantMap* map);
    56             CHbSymbianVariant::TType aDataType, CHbSymbianVariantMap* map);
    63     const CHbSymbianVariant* Variant(const TDesC& aKey) const;
    57     const CHbSymbianVariant* Variant(const TDesC& aKey) const;
       
    58     static HBufC *CreateActionDataLC(TBool aNull, const TDesC &text);
    64 
    59 
    65 public: // MHbDeviceDialogObserver
    60 public: // MHbDeviceDialogObserver
    66     void DataReceived(CHbSymbianVariantMap& aData);
    61     void DataReceived(CHbSymbianVariantMap& aData);
    67     void DeviceDialogClosed(TInt aCompletionCode);
    62     void DeviceDialogClosed(TInt aCompletionCode);
    68 
    63 
    80     TInt iMinimum;
    75     TInt iMinimum;
    81     TInt iMaximum;
    76     TInt iMaximum;
    82     TBool iAutoClose;
    77     TBool iAutoClose;
    83     TInt iType;
    78     TInt iType;
    84     TInt iProgressValue;
    79     TInt iProgressValue;
    85     TInt iTextAlign;
       
    86     TInt iIconAlign;
       
    87     TBool iWrap;
       
    88     RBuf iText;
    80     RBuf iText;
    89     RBuf iIconName;
    81     RBuf iIconName;
    90     RBuf iAnimationDefinition;
    82     RBuf iAnimationDefinition;
    91     struct {
    83     struct {
    92         RBuf iText;
    84         RBuf iText;
   140     AddVariantL(KDialogType, &iType, CHbSymbianVariant::EInt, iVariantMap);
   132     AddVariantL(KDialogType, &iType, CHbSymbianVariant::EInt, iVariantMap);
   141     AddVariantL(KDialogMaximum, &iMaximum, CHbSymbianVariant::EInt, iVariantMap);
   133     AddVariantL(KDialogMaximum, &iMaximum, CHbSymbianVariant::EInt, iVariantMap);
   142     AddVariantL(KDialogMinimum, &iMinimum, CHbSymbianVariant::EInt, iVariantMap);
   134     AddVariantL(KDialogMinimum, &iMinimum, CHbSymbianVariant::EInt, iVariantMap);
   143     AddVariantL(KDialogAutoClose, &iAutoClose, CHbSymbianVariant::EBool, iVariantMap);
   135     AddVariantL(KDialogAutoClose, &iAutoClose, CHbSymbianVariant::EBool, iVariantMap);
   144     AddVariantL(KDialogValue, &iProgressValue, CHbSymbianVariant::EInt, iVariantMap);
   136     AddVariantL(KDialogValue, &iProgressValue, CHbSymbianVariant::EInt, iVariantMap);
   145     AddVariantL(KDialogTextAlign, &iTextAlign, CHbSymbianVariant::EInt, iVariantMap);
       
   146     AddVariantL(KDialogIconAlign, &iIconAlign, CHbSymbianVariant::EInt, iVariantMap);
       
   147 
   137 
   148     if (iText.Length() > 0)
   138     if (iText.Length() > 0)
   149         {
   139         {
   150         AddVariantL(KDialogText, &iText, CHbSymbianVariant::EDes, iVariantMap);
   140         AddVariantL(KDialogText, &iText, CHbSymbianVariant::EDes, iVariantMap);
   151         }
   141         }
   159         }
   149         }
   160     if (iButton.iFlags.iTextValid || iButton.iFlags.iIsNullValid)
   150     if (iButton.iFlags.iTextValid || iButton.iFlags.iIsNullValid)
   161         {
   151         {
   162         iButton.iFlags.iTextModified = false;
   152         iButton.iFlags.iTextModified = false;
   163         iButton.iFlags.iIsNullModified = false;
   153         iButton.iFlags.iIsNullModified = false;
   164         TBool isNull = iButton.iFlags.iIsNull;
   154         HBufC *actionData = CreateActionDataLC(iButton.iFlags.iIsNull, iButton.iText);
   165         if (isNull)
   155         AddVariantL(KCancelAction, actionData, CHbSymbianVariant::EDes, iVariantMap);
   166             {
   156         CleanupStack::PopAndDestroy(); // actionData
   167             AddVariantL(KPrimaryActionNull, &isNull, CHbSymbianVariant::EBool, iVariantMap);
       
   168             }
       
   169         else
       
   170             {
       
   171             AddVariantL(KPrimaryActionText, &iButton.iText, CHbSymbianVariant::EDes, iVariantMap);
       
   172             }
       
   173         }
   157         }
   174     iButton.iFlags.iPressed = false;
   158     iButton.iFlags.iPressed = false;
   175     User::LeaveIfError(iDeviceDialog->Show(KPluginIdentifier, *iVariantMap, this));
   159     User::LeaveIfError(iDeviceDialog->Show(KPluginIdentifier, *iVariantMap, this));
   176 
   160 
   177     iVisible = ETrue;
   161     iVisible = ETrue;
   219         {
   203         {
   220         AddVariantL(KDialogValue, &iProgressValue, CHbSymbianVariant::EInt, iVariantMap);
   204         AddVariantL(KDialogValue, &iProgressValue, CHbSymbianVariant::EInt, iVariantMap);
   221         AddVariantL(KDialogValue, &iProgressValue, CHbSymbianVariant::EInt, map);
   205         AddVariantL(KDialogValue, &iProgressValue, CHbSymbianVariant::EInt, map);
   222         }
   206         }
   223 
   207 
   224     variant = Variant(KDialogTextAlign);
       
   225     if (variant && *variant->Value<TInt>() != iTextAlign)
       
   226         {
       
   227         AddVariantL(KDialogTextAlign, &iTextAlign, CHbSymbianVariant::EInt, iVariantMap);
       
   228         AddVariantL(KDialogTextAlign, &iTextAlign, CHbSymbianVariant::EInt, map);
       
   229         }
       
   230 
       
   231     variant = Variant(KDialogIconAlign);
       
   232     if (variant && *variant->Value<TInt>() != iIconAlign)
       
   233         {
       
   234         AddVariantL(KDialogIconAlign, &iIconAlign, CHbSymbianVariant::EInt, iVariantMap);
       
   235         AddVariantL(KDialogIconAlign, &iIconAlign, CHbSymbianVariant::EInt, map);
       
   236         }
       
   237 
       
   238     variant = Variant(KDialogText);
   208     variant = Variant(KDialogText);
   239     if (variant && iText == *variant->Value<TDesC>())
   209     if (variant && iText == *variant->Value<TDesC>())
   240         {
   210         {
   241         AddVariantL(KDialogText, &iText, CHbSymbianVariant::EDes, iVariantMap);
   211         AddVariantL(KDialogText, &iText, CHbSymbianVariant::EDes, iVariantMap);
   242         AddVariantL(KDialogText, &iText, CHbSymbianVariant::EDes, map);
   212         AddVariantL(KDialogText, &iText, CHbSymbianVariant::EDes, map);
   258 
   228 
   259     if (iButton.iFlags.iTextModified || iButton.iFlags.iIsNullModified)
   229     if (iButton.iFlags.iTextModified || iButton.iFlags.iIsNullModified)
   260         {
   230         {
   261         iButton.iFlags.iTextModified = false;
   231         iButton.iFlags.iTextModified = false;
   262         iButton.iFlags.iIsNullModified = false;
   232         iButton.iFlags.iIsNullModified = false;
   263         TBool isNull = iButton.iFlags.iIsNull;
   233         HBufC *actionData = CreateActionDataLC(iButton.iFlags.iIsNull, iButton.iText);
   264         if (isNull)
   234         AddVariantL(KCancelAction, actionData, CHbSymbianVariant::EDes, iVariantMap);
   265             {
   235         CleanupStack::PopAndDestroy(); // actionData
   266             AddVariantL(KPrimaryActionNull, &isNull, CHbSymbianVariant::EBool, iVariantMap);
       
   267             }
       
   268         else
       
   269             {
       
   270             AddVariantL(KPrimaryActionText, &iButton.iText, CHbSymbianVariant::EDes, iVariantMap);
       
   271             }
       
   272         }
   236         }
   273 
   237 
   274     User::LeaveIfError(iDeviceDialog->Update(*map));
   238     User::LeaveIfError(iDeviceDialog->Update(*map));
   275     delete map;
   239     delete map;
   276     map = 0;
   240     map = 0;
   281     _LIT(KKey, "act");
   245     _LIT(KKey, "act");
   282     const CHbSymbianVariant* variant = aData.Get(KKey);
   246     const CHbSymbianVariant* variant = aData.Get(KKey);
   283     if (variant)
   247     if (variant)
   284         {
   248         {
   285         const TDesC *value = variant->Value<const TDesC>();
   249         const TDesC *value = variant->Value<const TDesC>();
   286         _LIT(KPrimary, "p");
   250         _LIT(KCancel, "c");
   287         if (value && *value == KPrimary)
   251         if (value && *value == KCancel)
   288             {
   252             {
   289             iButton.iFlags.iPressed = true;
   253             iButton.iFlags.iPressed = true;
   290             if (iObserver)
   254             if (iObserver)
   291                 {
   255                 {
   292                 iObserver->ProgressDialogCancelled(q);
   256                 iObserver->ProgressDialogCancelled(q);
   327 const CHbSymbianVariant* CHbDeviceProgressDialogSymbianPrivate::Variant(const TDesC& aKey) const
   291 const CHbSymbianVariant* CHbDeviceProgressDialogSymbianPrivate::Variant(const TDesC& aKey) const
   328     {
   292     {
   329     return iVariantMap->Get(aKey);
   293     return iVariantMap->Get(aKey);
   330     }
   294     }
   331 
   295 
       
   296 // Pack into a string a data for cancel button
       
   297 HBufC *CHbDeviceProgressDialogSymbianPrivate::CreateActionDataLC(TBool aNull, const TDesC &text)
       
   298 {
       
   299     HBufC *actionData;
       
   300     if (aNull)
       
   301         {
       
   302         actionData = HBufC::NewL(0);
       
   303         }
       
   304     else
       
   305         {
       
   306         _LIT(KtextTag, "t:");
       
   307         actionData = HBufC::NewL(text.Length() + KtextTag().Length());
       
   308         TPtr ptr = actionData->Des();
       
   309         ptr.Append(KtextTag);
       
   310         ptr.Append(text);
       
   311         }
       
   312     CleanupStack::PushL(actionData);
       
   313     return actionData;
       
   314 }
       
   315 
   332 /*!
   316 /*!
   333     \class MHbDeviceProgressDialogObserver
   317     \class MHbDeviceProgressDialogObserver
   334     \brief MHbDeviceProgressDialogObserver is an observer interface for observing CHbDeviceProgressDialogSymbian.
   318     \brief MHbDeviceProgressDialogObserver is an observer interface for observing CHbDeviceProgressDialogSymbian.
   335 */
   319 */
   336 
   320 
   442 	\sa HbIconAnimationManager::addDefinitionFile
   426 	\sa HbIconAnimationManager::addDefinitionFile
   443 	\note Animation definition files must be stored to a place where they
   427 	\note Animation definition files must be stored to a place where they
   444 	can be accessed.
   428 	can be accessed.
   445 
   429 
   446     \sa HbDeviceProgressDialog, HbDeviceDialog
   430     \sa HbDeviceProgressDialog, HbDeviceDialog
   447     \proto
   431     \stable
   448     \hbwidgets
   432     \hbwidgets
   449 */
   433 */
   450 /*!
   434 /*!
   451     \enum CHbDeviceProgressDialogSymbian::TType
   435     \enum CHbDeviceProgressDialogSymbian::TType
   452     Progress dialog types.
   436     Progress dialog types.
   502     {
   486     {
   503     d->UpdateL();
   487     d->UpdateL();
   504     }
   488     }
   505 
   489 
   506 /*!
   490 /*!
   507     Cancels and closes the dialog.
       
   508 
       
   509     \deprecated CHbDeviceProgressDialogSymbian::Cancel()
       
   510         is deprecated. Replaced by CHbDeviceProgressDialogSymbian::Close().
       
   511 
       
   512 */
       
   513 EXPORT_C void CHbDeviceProgressDialogSymbian::Cancel()
       
   514     {
       
   515     d->Close();
       
   516     }
       
   517 
       
   518 /*!
       
   519     Closes the dialog.
   491     Closes the dialog.
   520 */
   492 */
   521 EXPORT_C void CHbDeviceProgressDialogSymbian::Close()
   493 EXPORT_C void CHbDeviceProgressDialogSymbian::Close()
   522     {
   494     {
   523     d->Close();
   495     d->Close();
   734 */
   706 */
   735 EXPORT_C TPtrC CHbDeviceProgressDialogSymbian::AnimationDefinition() const
   707 EXPORT_C TPtrC CHbDeviceProgressDialogSymbian::AnimationDefinition() const
   736 	{
   708 	{
   737 	return d->iAnimationDefinition;
   709 	return d->iAnimationDefinition;
   738 	}
   710 	}
   739 
       
   740 /*!
       
   741     Sets the text alignment.
       
   742     \param aAlign Qt defined alignment options can used.
       
   743     \sa TextAlignment()
       
   744 */
       
   745 EXPORT_C void CHbDeviceProgressDialogSymbian::SetTextAlignment(TInt aAlign)
       
   746     {
       
   747     d->iTextAlign = aAlign;
       
   748     }
       
   749 
       
   750 /*!
       
   751     Returns the text alignment.
       
   752 
       
   753     The default value is Qt::AlignLeft|Qt::AlignVCenter.
       
   754     \sa SetTextAlignment()
       
   755 */
       
   756 EXPORT_C TInt CHbDeviceProgressDialogSymbian::TextAlignment() const
       
   757     {
       
   758     return d->iTextAlign;
       
   759     }
       
   760 
       
   761 /*!
       
   762     Sets the icon alignment.
       
   763     \param aAlign Qt defined alignment options can used.
       
   764     \sa IconAlignment()
       
   765 */
       
   766 EXPORT_C void CHbDeviceProgressDialogSymbian::SetIconAlignment(TInt aAlign)
       
   767     {
       
   768     d->iIconAlign = aAlign;
       
   769     }
       
   770 
       
   771 /*!
       
   772     Returns the icon alignment.
       
   773 
       
   774     The default value is Qt::AlignCenter.
       
   775     \sa SetIconAlignment()
       
   776 */
       
   777 EXPORT_C TInt CHbDeviceProgressDialogSymbian::IconAlignment() const
       
   778     {
       
   779     return d->iIconAlign;
       
   780     }
       
   781 
       
   782 /*!
       
   783     Sets the text wrapping.
       
   784     \param aWrap When set, the text is drawn with Qt::TextWordWrap enabled meaning that
       
   785     lines breaks are at appropriate point, e.g. at word boundaries.
       
   786     \sa TextWrapping()
       
   787 
       
   788     \deprecated CHbDeviceProgressDialogSymbian::SetTextWrapping(int)
       
   789         is deprecated. Will be removed.
       
   790 
       
   791 */
       
   792 EXPORT_C void CHbDeviceProgressDialogSymbian::SetTextWrapping(TBool aWrap)
       
   793     {
       
   794     d->iWrap = aWrap;
       
   795     }
       
   796 
       
   797 /*!
       
   798     Returns the text wrapping setting.
       
   799 
       
   800     The default value is true.
       
   801     \sa SetTextWrapping()
       
   802 
       
   803     \deprecated CHbDeviceProgressDialogSymbian::TextWrapping() const
       
   804         is deprecated. Will be removed.
       
   805 */
       
   806 EXPORT_C TBool CHbDeviceProgressDialogSymbian::TextWrapping() const
       
   807     {
       
   808     return d->iWrap;
       
   809     }
       
   810 
   711 
   811 /*!
   712 /*!
   812     Sets progress dialog box button text. The dialog gets updated next time ShowL() or UpdateL()
   713     Sets progress dialog box button text. The dialog gets updated next time ShowL() or UpdateL()
   813     is called.
   714     is called.
   814 
   715 
   889     {
   790     {
   890     d = new (ELeave) CHbDeviceProgressDialogSymbianPrivate;
   791     d = new (ELeave) CHbDeviceProgressDialogSymbianPrivate;
   891     d->ConstructL(this);
   792     d->ConstructL(this);
   892     SetProgressType(aType);
   793     SetProgressType(aType);
   893     SetProgressValue(0);
   794     SetProgressValue(0);
   894     SetTextAlignment(KAlignCenterLeft);
   795     }
   895     SetIconAlignment(KAlignCenter);
       
   896     SetTextWrapping(ETrue);
       
   897     }