--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/appinstaller/AppinstUi/sifuidevicedialogplugin/src/sifuidialogtitlewidget.cpp Tue Aug 31 15:21:33 2010 +0300
@@ -0,0 +1,199 @@
+/*
+* 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: SIF UI dialog title widget.
+*
+*/
+
+#include "sifuidialogtitlewidget.h"
+#include "sifuidialog.h" // dialogType, dialogMode
+#include "sifuidialogcertificatedetails.h" // SifUiDialogCertificateDetails
+#include <QGraphicsLinearLayout>
+#include <hblabel.h>
+#include <hbpushbutton.h>
+#include <hbmessagebox.h>
+
+const char KSifUiCertTrusted[] = "qtg_small_lock";
+const char KSifUiCertNotTrusted[] = "qtg_small_untrusted";
+
+
+// ======== MEMBER FUNCTIONS ========
+
+// ----------------------------------------------------------------------------
+// SifUiDialogTitleWidget::SifUiDialogTitleWidget()
+// ----------------------------------------------------------------------------
+//
+SifUiDialogTitleWidget::SifUiDialogTitleWidget(QGraphicsItem *parent,
+ Qt::WindowFlags flags): HbWidget(parent, flags),
+ mLayout(0), mTitle(0), mCertButton(0), mCertificates(0), mDetailsDialog(0)
+{
+}
+
+// ----------------------------------------------------------------------------
+// SifUiDialogTitleWidget::~SifUiDialogTitleWidget()
+// ----------------------------------------------------------------------------
+//
+SifUiDialogTitleWidget::~SifUiDialogTitleWidget()
+{
+ delete mDetailsDialog;
+ delete mCertificates;
+}
+
+// ----------------------------------------------------------------------------
+// SifUiDialogTitleWidget::constructFromParameters()
+// ----------------------------------------------------------------------------
+//
+void SifUiDialogTitleWidget::constructFromParameters(const QVariantMap ¶meters)
+{
+ mLayout = new QGraphicsLinearLayout(Qt::Horizontal);
+ updateTitle(parameters);
+ updateCertificates(parameters);
+ setLayout(mLayout);
+}
+
+// ----------------------------------------------------------------------------
+// SifUiDialogTitleWidget::updateFromParameters()
+// ----------------------------------------------------------------------------
+//
+void SifUiDialogTitleWidget::updateFromParameters(const QVariantMap ¶meters)
+{
+ updateTitle(parameters);
+ updateCertificates(parameters);
+}
+
+// ----------------------------------------------------------------------------
+// SifUiDialogTitleWidget::defaultTitle()
+// ----------------------------------------------------------------------------
+//
+QString SifUiDialogTitleWidget::defaultTitle(SifUiDeviceDialogType type,
+ SifUiInstallingPhase phase)
+{
+ QString title;
+ switch (type) {
+ case SifUiConfirmationQuery:
+ //: Custom layout ID parent. Install confirmation query title.
+ //: Installation of an application starts if the user accepts the query.
+ title = hbTrId("txt_installer_title_install");
+ break;
+ case SifUiProgressNote:
+ switch (phase) {
+ case SifUiCheckingCerts:
+ //: Progress note title. Installer validates certificates online.
+ //: This may take some time.
+ //TODO: localised UI string needed
+ title = hbTrId("Checking certificate validity");
+ break;
+ case SifUiInstalling:
+ case SifUiDownloading:
+ default:
+ //: Progress note title. Installation is going on and progress bar
+ //: shows how it proceeds.
+ title = hbTrId("txt_installer_title_installing");
+ break;
+ }
+ break;
+ case SifUiCompleteNote:
+ //: Installation complete note title. Indicates that installation
+ //: was succesfully completed. User has option to launch AppLib.
+ title = hbTrId("txt_installer_title_installed");
+ break;
+ case SifUiErrorNote:
+ //: Installation failed note title. Indicates that installation failed.
+ title = hbTrId("txt_installer_info_installation_failed");
+ break;
+ case SifUiUnspecifiedDialog:
+ default:
+ break;
+ }
+ return title;
+}
+
+// ----------------------------------------------------------------------------
+// SifUiDialogTitleWidget::updateTitle()
+// ----------------------------------------------------------------------------
+//
+void SifUiDialogTitleWidget::updateTitle(const QVariantMap ¶meters)
+{
+ QString titleText;
+ if (parameters.contains(KSifUiDialogTitle)) {
+ titleText = parameters.value(KSifUiDialogTitle).toString();
+ } else {
+ SifUiDeviceDialogType type = SifUiDialog::dialogType(parameters);
+ SifUiInstallingPhase progressPhase = SifUiInstalling;
+ if (parameters.contains(KSifUiProgressNotePhase)) {
+ bool ok = false;
+ int i = parameters.value(KSifUiProgressNotePhase).toInt(&ok);
+ if (ok) {
+ progressPhase = static_cast<SifUiInstallingPhase>(i);
+ }
+ }
+ titleText = defaultTitle(type, progressPhase);
+ }
+ if (mTitle) {
+ if (titleText != mTitle->plainText()) {
+ mTitle->setPlainText(titleText);
+ }
+ } else {
+ mTitle = new HbLabel(titleText);
+ mTitle->setFontSpec(HbFontSpec(HbFontSpec::Title));
+ mLayout->addItem(mTitle);
+ }
+}
+
+// ----------------------------------------------------------------------------
+// SifUiDialogTitleWidget::updateCertificates()
+// ----------------------------------------------------------------------------
+//
+void SifUiDialogTitleWidget::updateCertificates(const QVariantMap ¶meters)
+{
+ if (!mCertButton) {
+ mCertButton = new HbPushButton;
+ connect(mCertButton, SIGNAL(clicked()), this, SLOT(certificatesClicked()));
+
+ if (parameters.contains(KSifUiCertificates)) {
+ Q_ASSERT(mCertificates == 0);
+ mCertificates = getCertificates(parameters.value(KSifUiCertificates).toByteArray());
+ mCertButton->setIcon(HbIcon(KSifUiCertTrusted));
+ } else {
+ mCertButton->setIcon(HbIcon(KSifUiCertNotTrusted));
+ }
+
+ mLayout->addStretch();
+ mLayout->addItem(mCertButton);
+ mLayout->setAlignment(mCertButton, Qt::AlignRight|Qt::AlignVCenter);
+ } else {
+ if (mCertificates == 0 && parameters.contains(KSifUiCertificates)) {
+ mCertificates = getCertificates(parameters.value(KSifUiCertificates).toByteArray());
+ mCertButton->setIcon(HbIcon(KSifUiCertTrusted));
+ }
+ }
+}
+
+// ----------------------------------------------------------------------------
+// SifUiDialogTitleWidget::certificatesClicked()
+// ----------------------------------------------------------------------------
+//
+void SifUiDialogTitleWidget::certificatesClicked()
+{
+ if (mCertificates) {
+ if (mDetailsDialog) {
+ delete mDetailsDialog;
+ mDetailsDialog = 0;
+ }
+ mDetailsDialog = new SifUiDialogCertificateDetails(*mCertificates);
+ mDetailsDialog->showDetails();
+ } else {
+ // TODO: localize
+ HbMessageBox::warning(tr("Application is not certified. It's origin and authenticity cannot be proved."));
+ }
+}