appinstaller/AppinstUi/sifuidevicedialogplugin/src/sifuidialoggrantcapabilitiescontent.cpp
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/appinstaller/AppinstUi/sifuidevicedialogplugin/src/sifuidialoggrantcapabilitiescontent.cpp Tue Aug 31 15:21:33 2010 +0300
@@ -0,0 +1,239 @@
+/*
+* Copyright (c) 2010 Nokia Corporation and/or its subsidiary(-ies).
+* All rights reserved.
+* This component and the accompanying materials are made available
+* under the terms of "Eclipse Public License v1.0"
+* which accompanies this distribution, and is available
+* at the URL "http://www.eclipse.org/legal/epl-v10.html".
+*
+* Initial Contributors:
+* Nokia Corporation - initial contribution.
+*
+* Contributors:
+*
+* Description: Grant capabilities dialog in SifUi
+*
+*/
+
+#include "sifuidialoggrantcapabilitiescontent.h" // SifUiDialogGrantCapabilitiesContent
+#include <QGraphicsLinearLayout>
+#include <HbLabel>
+#include <HbPushButton>
+#include <HbScrollArea>
+#include <HbAction>
+#include <HbDialog>
+
+const QString KDetailsTextHtmlBeginList = "<html>%1<ul>";
+const QString KDetailsTextHtmlListItem = "<li>%1</li>";
+const QString KDetailsTextHtmlEndList = "</ul></html>";
+
+
+// ======== MEMBER FUNCTIONS ========
+
+// ----------------------------------------------------------------------------
+// SifUiDialogGrantCapabilitiesContent::~SifUiDialogGrantCapabilitiesContent()
+// ----------------------------------------------------------------------------
+//
+SifUiDialogGrantCapabilitiesContent::SifUiDialogGrantCapabilitiesContent(
+ const QString& applicationName, const QVariant &capabilities, QGraphicsItem *parent)
+ : HbWidget(parent), mCapabilities(), mIsCapabilitiesValid(false)
+{
+ QGraphicsLinearLayout *layout = new QGraphicsLinearLayout(Qt::Vertical);
+
+ HbLabel *label = new HbLabel();
+ //TODO: localized UI string needed
+ //label->setPlainText(hbTrId("txt_").arg(applicationName));
+ label->setPlainText(tr("Application \"%1\" uses capabilities it is not signed for.")
+ .arg(applicationName));
+ label->setTextWrapping(Hb::TextWordWrap);
+ layout->addItem(label);
+ layout->addStretch();
+
+ //TODO: localized UI string needed
+ //HbPushButton *details = new HbPushButton(hbTrId("txt_"));
+ HbPushButton *details = new HbPushButton(tr("View details"));
+ connect(details, SIGNAL(clicked()), this, SLOT(viewDetails()));
+ layout->addItem(details);
+ layout->addStretch();
+
+ HbPushButton *accept = new HbPushButton;
+ //TODO: localized UI string needed
+ //accept->setText(hbTrId("txt_"));
+ accept->setText(tr("I trust the app"));
+ //TODO: localized UI string needed
+ //accept->setAdditionalText(hbTrId("txt_"));
+ accept->setAdditionalText(tr("Grant all permissions"));
+ connect(accept, SIGNAL(clicked()), this, SIGNAL(accepted()));
+ layout->addItem(accept);
+
+ HbPushButton *deny = new HbPushButton;
+ //TODO: localized UI string needed
+ //deny->setText(hbTrId("txt_"));
+ deny->setText(tr("I do not trust"));
+ //TODO: localized UI string needed
+ //deny->setAdditionalText(hbTrId("txt_"));
+ deny->setAdditionalText(tr("Cancel installation"));
+ connect(deny, SIGNAL(clicked()), this, SIGNAL(rejected()));
+ layout->addItem(deny);
+
+ setLayout(layout);
+ setCapabilities(capabilities);
+}
+
+// ----------------------------------------------------------------------------
+// SifUiDialogGrantCapabilitiesContent::~SifUiDialogGrantCapabilitiesContent()
+// ----------------------------------------------------------------------------
+//
+SifUiDialogGrantCapabilitiesContent::~SifUiDialogGrantCapabilitiesContent()
+{
+}
+
+// ----------------------------------------------------------------------------
+// SifUiDialogGrantCapabilitiesContent::viewDetails()
+// ----------------------------------------------------------------------------
+//
+void SifUiDialogGrantCapabilitiesContent::viewDetails()
+{
+ HbDialog *detailsDialog= new HbDialog();
+ detailsDialog->setAttribute(Qt::WA_DeleteOnClose, true);
+ detailsDialog->setTimeout(HbPopup::NoTimeout);
+ detailsDialog->setDismissPolicy(HbDialog::NoDismiss);
+ detailsDialog->setModal(true);
+
+ // TODO: localised UI string needed
+ QString detailsTitle = tr("Permission details");
+ detailsDialog->setHeadingWidget(new HbLabel(detailsTitle));
+
+ HbScrollArea *scrollArea = new HbScrollArea(this);
+
+ // TODO: localized UI string needed
+ QString detailsText = KDetailsTextHtmlBeginList.arg("The application has requested permissions to:");
+ QStringListIterator capaIter(mCapabilities);
+ while (capaIter.hasNext()) {
+ detailsText.append(KDetailsTextHtmlListItem.arg(capaIter.next()));
+ }
+ detailsText.append(KDetailsTextHtmlEndList);
+
+ HbLabel *detailsTextLabel = new HbLabel;
+ detailsTextLabel->setHtml(detailsText);
+ detailsTextLabel->setTextWrapping(Hb::TextWordWrap);
+
+ scrollArea->setContentWidget(detailsTextLabel);
+ scrollArea->setVerticalScrollBarPolicy(HbScrollArea::ScrollBarAsNeeded);
+ detailsDialog->setContentWidget(scrollArea);
+
+ HbAction *closeAction = new HbAction(hbTrId("txt_common_button_ok"));
+ detailsDialog->addAction(closeAction);
+
+ detailsDialog->show();
+}
+
+// ----------------------------------------------------------------------------
+// SifUiDialogGrantCapabilitiesContent::setCapabilities()
+// ----------------------------------------------------------------------------
+//
+void SifUiDialogGrantCapabilitiesContent::setCapabilities(const QVariant &capabilities)
+{
+ QByteArray byteArray = capabilities.toByteArray();
+
+#ifdef Q_OS_SYMBIAN
+ const TPtrC8 ptr(reinterpret_cast<const TText8*>(byteArray.constData()), byteArray.length());
+ QT_TRAP_THROWING(setCapabilitiesSymbianL(ptr));
+#endif // Q_OS_SYMBIAN
+
+ if (!mIsCapabilitiesValid) {
+ emit rejected();
+ }
+}
+
+#ifdef Q_OS_SYMBIAN
+// ----------------------------------------------------------------------------
+// SifUiDialogGrantCapabilitiesContent::setCapabilitiesSymbianL()
+// ----------------------------------------------------------------------------
+//
+void SifUiDialogGrantCapabilitiesContent::setCapabilitiesSymbianL( const TDesC8& aBuf )
+{
+ const TPckgC<TCapabilitySet>& capabilitySetPckg( reinterpret_cast< const TPckgC<TCapabilitySet>& >( aBuf ) );
+ const TCapabilitySet& capabilitySet( capabilitySetPckg() );
+
+ mIsCapabilitiesValid = true;
+ for( TInt i = 0; i < ECapability_HardLimit && mIsCapabilitiesValid; i++ ) {
+ const TCapability capability( static_cast<TCapability>(i) );
+ if( capabilitySet.HasCapability(capability) ) {
+ QT_TRYCATCH_LEAVING( mCapabilities.append(capabilityName(capability)) );
+ }
+ }
+}
+
+// ----------------------------------------------------------------------------
+// SifUiDialogGrantCapabilitiesContent::capabilityName()
+// ----------------------------------------------------------------------------
+//
+QString SifUiDialogGrantCapabilitiesContent::capabilityName( const TCapability aCapability )
+{
+ QString name;
+
+ switch( aCapability ) {
+ case ECapabilityPowerMgmt:
+ // TODO: is this user-grantable?
+ name = tr("ECapabilityPowerMgmt");
+ break;
+ case ECapabilityReadDeviceData:
+ // TODO: is this user-grantable?
+ name = tr("ECapabilityReadDeviceData");
+ break;
+ case ECapabilityWriteDeviceData:
+ // TODO: is this user-grantable?
+ name = tr("ECapabilityWriteDeviceData");
+ break;
+ case ECapabilityTrustedUI:
+ // TODO: is this user-grantable?
+ name = tr("ECapabilityTrustedUI");
+ break;
+ case ECapabilityProtServ:
+ // TODO: is this user-grantable?
+ name = tr("ECapabilityProtServ");
+ break;
+ case ECapabilitySwEvent:
+ // TODO: is this user-grantable?
+ name = tr("ECapabilitySwEvent");
+ break;
+ case ECapabilityNetworkServices:
+ // TODO: localized UI string needed
+ name = tr("Make network connections or phone calls");
+ break;
+ case ECapabilityLocalServices:
+ // TODO: localized UI string needed
+ name = tr("Connect using local connectivity");
+ break;
+ case ECapabilityReadUserData:
+ // TODO: localized UI string needed
+ name = tr("Read user's personal data");
+ break;
+ case ECapabilityWriteUserData:
+ // TODO: localized UI string needed
+ name = tr("Modify user's personal data");
+ break;
+ case ECapabilityLocation:
+ // TODO: localized UI string needed
+ name = tr("Access the location information");
+ break;
+ case ECapabilitySurroundingsDD:
+ // TODO: is this user-grantable?
+ name = tr("ECapabilitySurroundingsDD");
+ break;
+ case ECapabilityUserEnvironment:
+ // TODO: localized UI string needed
+ name = tr("Access user environment");
+ break;
+
+ // Other capabilities are not user-grantable
+ default:
+ mIsCapabilitiesValid = false;
+ break;
+ }
+
+ return name;
+}
+#endif // Q_OS_SYMBIAN
+