appinstaller/AppinstUi/sifuidevicedialogplugin/src/sifuidialogcertificatedetails.cpp
branchRCL_3
changeset 25 7333d7932ef7
equal deleted inserted replaced
24:5cc91383ab1e 25:7333d7932ef7
       
     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: Certificate details dialog in SifUi
       
    15 *
       
    16 */
       
    17 
       
    18 #include "sifuidialogcertificatedetails.h"      // SifUiCertificateDetails
       
    19 #include "sifuidialogcertificateinfo.h"         // SifUiDialogCertificateInfo
       
    20 #include <hblabel.h>                            // HbLabel
       
    21 #include <hbtextedit.h>                         // HbTextEdit
       
    22 #include <hbscrollbar.h>                        // HbScrollBar
       
    23 #include <hblistwidget.h>                       // HbListWidget
       
    24 #include <hblistwidgetitem.h>                   // HbListWidgetItem
       
    25 #include <hbaction.h>                           // HbAction
       
    26 #include <QTextStream>
       
    27 
       
    28 
       
    29 // ======== MEMBER FUNCTIONS ========
       
    30 
       
    31 // ----------------------------------------------------------------------------
       
    32 // SifUiDialogCertificateDetails::SifUiDialogCertificateDetails()
       
    33 // ----------------------------------------------------------------------------
       
    34 //
       
    35 SifUiDialogCertificateDetails::SifUiDialogCertificateDetails(
       
    36     const QList<SifUiDialogCertificateInfo*> &certificates) : HbDialog(),
       
    37     mCertificates(certificates)
       
    38 {
       
    39     setDismissPolicy(HbPopup::NoDismiss);
       
    40     setTimeout(HbPopup::NoTimeout);
       
    41 }
       
    42 
       
    43 // ----------------------------------------------------------------------------
       
    44 // SifUiDialogCertificateDetails::showDetails()
       
    45 // ----------------------------------------------------------------------------
       
    46 //
       
    47 void SifUiDialogCertificateDetails::showDetails()
       
    48 {
       
    49     int count = mCertificates.count();
       
    50     Q_ASSERT(count != 0);
       
    51     if (count == 1) {
       
    52         showCertificate(0);
       
    53     } else {
       
    54         showList();
       
    55     }
       
    56     open();
       
    57 }
       
    58 
       
    59 // ----------------------------------------------------------------------------
       
    60 // SifUiDialogCertificateDetails::~SifUiDialogCertificateDetails()
       
    61 // ----------------------------------------------------------------------------
       
    62 //
       
    63 SifUiDialogCertificateDetails::~SifUiDialogCertificateDetails()
       
    64 {
       
    65 }
       
    66 
       
    67 // ----------------------------------------------------------------------------
       
    68 // SifUiDialogCertificateDetails::certificateDetails()
       
    69 // ----------------------------------------------------------------------------
       
    70 //
       
    71 QString SifUiDialogCertificateDetails::certificateDetails(
       
    72     const SifUiDialogCertificateInfo& certificate)
       
    73 {
       
    74     // TODO: change to properly localizable string
       
    75     QString details;
       
    76     QTextStream stream(&details);
       
    77     stream << tr("Issuer:\n")
       
    78         << certificate.issuerName()
       
    79         << endl << endl;
       
    80     stream << tr("Subject:\n")
       
    81         << certificate.subjectName()
       
    82         << endl << endl;
       
    83     stream << tr("Valid from:\n")
       
    84         << certificate.validFrom().toString()
       
    85         << endl << endl;
       
    86     stream << tr("Valid until:\n")
       
    87         << certificate.validTo().toString()
       
    88         << endl << endl;
       
    89     stream << tr("Serial number:\n")
       
    90         << certificate.formattedSerialNumber()
       
    91         << endl << endl;
       
    92     stream << tr("Fingerprint (SHA1):\n")
       
    93         << certificate.formattedFingerprint()
       
    94         << endl;
       
    95     return details;
       
    96 }
       
    97 
       
    98 // ----------------------------------------------------------------------------
       
    99 // SifUiDialogCertificateDetails::showList()
       
   100 // ----------------------------------------------------------------------------
       
   101 //
       
   102 void SifUiDialogCertificateDetails::showList()
       
   103 {
       
   104     int count = mCertificates.count();
       
   105     Q_ASSERT(count > 1);
       
   106 
       
   107     // TODO: localisation
       
   108     HbLabel *title = new HbLabel(tr("Select certificate"));
       
   109     setHeadingWidget(title);
       
   110 
       
   111     HbListWidget *listWidget = new HbListWidget;
       
   112     for (int index = 0; index < count; ++index ) {
       
   113         HbListWidgetItem *item = new HbListWidgetItem();
       
   114         item->setData(QVariant(mCertificates.at(index)->subjectName()));
       
   115         listWidget->addItem(item);
       
   116     }
       
   117     listWidget->setScrollDirections(Qt::Vertical);
       
   118     listWidget->setFrictionEnabled(true);
       
   119     listWidget->setScrollingStyle(HbScrollArea::PanWithFollowOn);
       
   120     listWidget->verticalScrollBar()->setInteractive(true);
       
   121     connect(listWidget, SIGNAL(activated(HbListWidgetItem*)),
       
   122         this, SLOT(certificateSelected()));
       
   123     setContentWidget(listWidget);
       
   124 
       
   125     addAction(new HbAction(hbTrId("txt_common_button_close"), this));
       
   126 }
       
   127 
       
   128 // ----------------------------------------------------------------------------
       
   129 // SifUiDialogCertificateDetails::certificateSelected()
       
   130 // ----------------------------------------------------------------------------
       
   131 //
       
   132 void SifUiDialogCertificateDetails::certificateSelected()
       
   133 {
       
   134     QGraphicsWidget *content = contentWidget();
       
   135     if (content->type() == Hb::ItemType_ListView) {
       
   136         HbListWidget *listWidget = reinterpret_cast<HbListWidget*>(content);
       
   137         int index = listWidget->currentRow();
       
   138         if (index >= 0 && index < mCertificates.count()) {
       
   139             showCertificate(index);
       
   140         }
       
   141     }
       
   142 }
       
   143 
       
   144 // ----------------------------------------------------------------------------
       
   145 // SifUiDialogCertificateDetails::showCertificate()
       
   146 // ----------------------------------------------------------------------------
       
   147 //
       
   148 void SifUiDialogCertificateDetails::showCertificate(int index)
       
   149 {
       
   150     // TODO: localisation
       
   151     HbLabel *title = new HbLabel(tr("Certificate details"));
       
   152     setHeadingWidget(title);
       
   153 
       
   154     HbTextEdit *textEdit = new HbTextEdit;
       
   155     Q_ASSERT(index >= 0 && index < mCertificates.count());
       
   156     QString details = certificateDetails(*mCertificates[index]);
       
   157     textEdit->setPlainText(details);
       
   158     textEdit->setReadOnly(true);
       
   159     textEdit->setCursorVisibility(Hb::TextCursorHidden);
       
   160     // TODO: how to display scroll bar and not to show blue border(focus)?
       
   161     setContentWidget(textEdit);
       
   162 
       
   163     //: Closes the dialog. Control returns back to where the installation was started.
       
   164     addAction(new HbAction(hbTrId("txt_common_button_close"), this));
       
   165 }
       
   166