appinstaller/AppinstUi/sifuidevicedialogplugin/src/sifuidialoggrantcapabilitiescontent.cpp
branchRCL_3
changeset 26 8b7f4e561641
parent 25 7333d7932ef7
child 27 e8965914fac7
equal deleted inserted replaced
25:7333d7932ef7 26:8b7f4e561641
     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: Grant capabilities dialog in SifUi
       
    15 *
       
    16 */
       
    17 
       
    18 #include "sifuidialoggrantcapabilitiescontent.h" // SifUiDialogGrantCapabilitiesContent
       
    19 #include <QGraphicsLinearLayout>
       
    20 #include <HbLabel>
       
    21 #include <HbPushButton>
       
    22 #include <HbScrollArea>
       
    23 #include <HbAction>
       
    24 #include <HbDialog>
       
    25 
       
    26 const QString KDetailsTextHtmlBeginList = "<html>%1<ul>";
       
    27 const QString KDetailsTextHtmlListItem = "<li>%1</li>";
       
    28 const QString KDetailsTextHtmlEndList = "</ul></html>";
       
    29 
       
    30 
       
    31 // ======== MEMBER FUNCTIONS ========
       
    32 
       
    33 // ----------------------------------------------------------------------------
       
    34 // SifUiDialogGrantCapabilitiesContent::~SifUiDialogGrantCapabilitiesContent()
       
    35 // ----------------------------------------------------------------------------
       
    36 //
       
    37 SifUiDialogGrantCapabilitiesContent::SifUiDialogGrantCapabilitiesContent(
       
    38     const QString& applicationName, const QVariant &capabilities, QGraphicsItem *parent)
       
    39     : HbWidget(parent), mCapabilities(), mIsCapabilitiesValid(false)
       
    40 {
       
    41     QGraphicsLinearLayout *layout = new QGraphicsLinearLayout(Qt::Vertical);
       
    42 
       
    43     HbLabel *label = new HbLabel();
       
    44     //TODO: localized UI string needed
       
    45     //label->setPlainText(hbTrId("txt_").arg(applicationName));
       
    46     label->setPlainText(tr("Application \"%1\" uses capabilities it is not signed for.")
       
    47         .arg(applicationName));
       
    48     label->setTextWrapping(Hb::TextWordWrap);
       
    49     layout->addItem(label);
       
    50     layout->addStretch();
       
    51 
       
    52     //TODO: localized UI string needed
       
    53     //HbPushButton *details = new HbPushButton(hbTrId("txt_"));
       
    54     HbPushButton *details = new HbPushButton(tr("View details"));
       
    55     connect(details, SIGNAL(clicked()), this, SLOT(viewDetails()));
       
    56     layout->addItem(details);
       
    57     layout->addStretch();
       
    58 
       
    59     HbPushButton *accept = new HbPushButton;
       
    60     //TODO: localized UI string needed
       
    61     //accept->setText(hbTrId("txt_"));
       
    62     accept->setText(tr("I trust the app"));
       
    63     //TODO: localized UI string needed
       
    64     //accept->setAdditionalText(hbTrId("txt_"));
       
    65     accept->setAdditionalText(tr("Grant all permissions"));
       
    66     connect(accept, SIGNAL(clicked()), this, SIGNAL(accepted()));
       
    67     layout->addItem(accept);
       
    68 
       
    69     HbPushButton *deny = new HbPushButton;
       
    70     //TODO: localized UI string needed
       
    71     //deny->setText(hbTrId("txt_"));
       
    72     deny->setText(tr("I do not trust"));
       
    73     //TODO: localized UI string needed
       
    74     //deny->setAdditionalText(hbTrId("txt_"));
       
    75     deny->setAdditionalText(tr("Cancel installation"));
       
    76     connect(deny, SIGNAL(clicked()), this, SIGNAL(rejected()));
       
    77     layout->addItem(deny);
       
    78 
       
    79     setLayout(layout);
       
    80     setCapabilities(capabilities);
       
    81 }
       
    82 
       
    83 // ----------------------------------------------------------------------------
       
    84 // SifUiDialogGrantCapabilitiesContent::~SifUiDialogGrantCapabilitiesContent()
       
    85 // ----------------------------------------------------------------------------
       
    86 //
       
    87 SifUiDialogGrantCapabilitiesContent::~SifUiDialogGrantCapabilitiesContent()
       
    88 {
       
    89 }
       
    90 
       
    91 // ----------------------------------------------------------------------------
       
    92 // SifUiDialogGrantCapabilitiesContent::viewDetails()
       
    93 // ----------------------------------------------------------------------------
       
    94 //
       
    95 void SifUiDialogGrantCapabilitiesContent::viewDetails()
       
    96 {
       
    97     HbDialog *detailsDialog= new HbDialog();
       
    98     detailsDialog->setAttribute(Qt::WA_DeleteOnClose, true);
       
    99     detailsDialog->setTimeout(HbPopup::NoTimeout);
       
   100     detailsDialog->setDismissPolicy(HbDialog::NoDismiss);
       
   101     detailsDialog->setModal(true);
       
   102 
       
   103     // TODO: localised UI string needed
       
   104     QString detailsTitle = tr("Permission details");
       
   105     detailsDialog->setHeadingWidget(new HbLabel(detailsTitle));
       
   106 
       
   107     HbScrollArea *scrollArea = new HbScrollArea(this);
       
   108 
       
   109     // TODO: localized UI string needed
       
   110     QString detailsText = KDetailsTextHtmlBeginList.arg("The application has requested permissions to:");
       
   111     QStringListIterator capaIter(mCapabilities);
       
   112     while (capaIter.hasNext()) {
       
   113         detailsText.append(KDetailsTextHtmlListItem.arg(capaIter.next()));
       
   114     }
       
   115     detailsText.append(KDetailsTextHtmlEndList);
       
   116 
       
   117     HbLabel *detailsTextLabel = new HbLabel;
       
   118     detailsTextLabel->setHtml(detailsText);
       
   119     detailsTextLabel->setTextWrapping(Hb::TextWordWrap);
       
   120 
       
   121     scrollArea->setContentWidget(detailsTextLabel);
       
   122     scrollArea->setVerticalScrollBarPolicy(HbScrollArea::ScrollBarAsNeeded);
       
   123     detailsDialog->setContentWidget(scrollArea);
       
   124 
       
   125     HbAction *closeAction = new HbAction(hbTrId("txt_common_button_ok"));
       
   126     detailsDialog->addAction(closeAction);
       
   127 
       
   128     detailsDialog->show();
       
   129 }
       
   130 
       
   131 // ----------------------------------------------------------------------------
       
   132 // SifUiDialogGrantCapabilitiesContent::setCapabilities()
       
   133 // ----------------------------------------------------------------------------
       
   134 //
       
   135 void SifUiDialogGrantCapabilitiesContent::setCapabilities(const QVariant &capabilities)
       
   136 {
       
   137     QByteArray byteArray = capabilities.toByteArray();
       
   138 
       
   139 #ifdef Q_OS_SYMBIAN
       
   140     const TPtrC8 ptr(reinterpret_cast<const TText8*>(byteArray.constData()), byteArray.length());
       
   141     QT_TRAP_THROWING(setCapabilitiesSymbianL(ptr));
       
   142 #endif  // Q_OS_SYMBIAN
       
   143 
       
   144     if (!mIsCapabilitiesValid) {
       
   145         emit rejected();
       
   146     }
       
   147 }
       
   148 
       
   149 #ifdef Q_OS_SYMBIAN
       
   150 // ----------------------------------------------------------------------------
       
   151 // SifUiDialogGrantCapabilitiesContent::setCapabilitiesSymbianL()
       
   152 // ----------------------------------------------------------------------------
       
   153 //
       
   154 void SifUiDialogGrantCapabilitiesContent::setCapabilitiesSymbianL( const TDesC8& aBuf )
       
   155 {
       
   156     const TPckgC<TCapabilitySet>& capabilitySetPckg( reinterpret_cast< const TPckgC<TCapabilitySet>& >( aBuf ) );
       
   157     const TCapabilitySet& capabilitySet( capabilitySetPckg() );
       
   158 
       
   159     mIsCapabilitiesValid = true;
       
   160     for( TInt i = 0; i < ECapability_HardLimit && mIsCapabilitiesValid; i++ ) {
       
   161         const TCapability capability( static_cast<TCapability>(i) );
       
   162         if( capabilitySet.HasCapability(capability) ) {
       
   163             QT_TRYCATCH_LEAVING( mCapabilities.append(capabilityName(capability)) );
       
   164         }
       
   165     }
       
   166 }
       
   167 
       
   168 // ----------------------------------------------------------------------------
       
   169 // SifUiDialogGrantCapabilitiesContent::capabilityName()
       
   170 // ----------------------------------------------------------------------------
       
   171 //
       
   172 QString SifUiDialogGrantCapabilitiesContent::capabilityName( const TCapability aCapability )
       
   173 {
       
   174     QString name;
       
   175 
       
   176     switch( aCapability ) {
       
   177     case ECapabilityPowerMgmt:
       
   178         // TODO: is this user-grantable?
       
   179         name = tr("ECapabilityPowerMgmt");
       
   180         break;
       
   181     case ECapabilityReadDeviceData:
       
   182         // TODO: is this user-grantable?
       
   183         name = tr("ECapabilityReadDeviceData");
       
   184         break;
       
   185     case ECapabilityWriteDeviceData:
       
   186         // TODO: is this user-grantable?
       
   187         name = tr("ECapabilityWriteDeviceData");
       
   188         break;
       
   189     case ECapabilityTrustedUI:
       
   190         // TODO: is this user-grantable?
       
   191         name = tr("ECapabilityTrustedUI");
       
   192         break;
       
   193     case ECapabilityProtServ:
       
   194         // TODO: is this user-grantable?
       
   195         name = tr("ECapabilityProtServ");
       
   196         break;
       
   197     case ECapabilitySwEvent:
       
   198         // TODO: is this user-grantable?
       
   199         name = tr("ECapabilitySwEvent");
       
   200         break;
       
   201     case ECapabilityNetworkServices:
       
   202         // TODO: localized UI string needed
       
   203         name = tr("Make network connections or phone calls");
       
   204         break;
       
   205     case ECapabilityLocalServices:
       
   206         // TODO: localized UI string needed
       
   207         name = tr("Connect using local connectivity");
       
   208         break;
       
   209     case ECapabilityReadUserData:
       
   210         // TODO: localized UI string needed
       
   211         name = tr("Read user's personal data");
       
   212         break;
       
   213     case ECapabilityWriteUserData:
       
   214         // TODO: localized UI string needed
       
   215         name = tr("Modify user's personal data");
       
   216         break;
       
   217     case ECapabilityLocation:
       
   218         // TODO: localized UI string needed
       
   219         name = tr("Access the location information");
       
   220         break;
       
   221     case ECapabilitySurroundingsDD:
       
   222         // TODO: is this user-grantable?
       
   223         name = tr("ECapabilitySurroundingsDD");
       
   224         break;
       
   225     case ECapabilityUserEnvironment:
       
   226         // TODO: localized UI string needed
       
   227         name = tr("Access user environment");
       
   228         break;
       
   229 
       
   230     // Other capabilities are not user-grantable
       
   231     default:
       
   232         mIsCapabilitiesValid = false;
       
   233         break;
       
   234     }
       
   235 
       
   236     return name;
       
   237 }
       
   238 #endif  // Q_OS_SYMBIAN
       
   239