appinstaller/AppinstUi/sifuidevicedialogplugin/src/sifuidialogcertificatedetails.cpp
changeset 37 6e7b00453237
child 42 d17dc5398051
equal deleted inserted replaced
33:8110bf1194d1 37:6e7b00453237
       
     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 <hblistwidget.h>                       // HbListWidget
       
    23 #include <hblistwidgetitem.h>                   // HbListWidgetItem
       
    24 #include <hbaction.h>                           // HbAction
       
    25 #include <QTextStream>
       
    26 
       
    27 
       
    28 // ======== MEMBER FUNCTIONS ========
       
    29 
       
    30 // ----------------------------------------------------------------------------
       
    31 // SifUiDialogCertificateDetails::SifUiDialogCertificateDetails()
       
    32 // ----------------------------------------------------------------------------
       
    33 //
       
    34 SifUiDialogCertificateDetails::SifUiDialogCertificateDetails(
       
    35     const QList<SifUiDialogCertificateInfo*> &certificates) : HbDialog(),
       
    36     mCertificates(certificates)
       
    37 {
       
    38     setDismissPolicy(HbPopup::NoDismiss);
       
    39     setTimeout(HbPopup::NoTimeout);
       
    40 }
       
    41 
       
    42 // ----------------------------------------------------------------------------
       
    43 // SifUiDialogCertificateDetails::showDetails()
       
    44 // ----------------------------------------------------------------------------
       
    45 //
       
    46 void SifUiDialogCertificateDetails::showDetails()
       
    47 {
       
    48     int count = mCertificates.count();
       
    49     Q_ASSERT(count != 0);
       
    50     if (count == 1) {
       
    51         showCertificate(0);
       
    52     } else {
       
    53         showList();
       
    54     }
       
    55     open();
       
    56 }
       
    57 
       
    58 // ----------------------------------------------------------------------------
       
    59 // SifUiDialogCertificateDetails::~SifUiDialogCertificateDetails()
       
    60 // ----------------------------------------------------------------------------
       
    61 //
       
    62 SifUiDialogCertificateDetails::~SifUiDialogCertificateDetails()
       
    63 {
       
    64 }
       
    65 
       
    66 // ----------------------------------------------------------------------------
       
    67 // SifUiDialogCertificateDetails::certificateDetails()
       
    68 // ----------------------------------------------------------------------------
       
    69 //
       
    70 QString SifUiDialogCertificateDetails::certificateDetails(
       
    71     const SifUiDialogCertificateInfo& certificate)
       
    72 {
       
    73     // TODO: change to properly localizable string
       
    74     QString details;
       
    75     QTextStream stream(&details);
       
    76     stream << tr("Issuer:\n")
       
    77         << certificate.issuerName()
       
    78         << endl << endl;
       
    79     stream << tr("Subject:\n")
       
    80         << certificate.subjectName()
       
    81         << endl << endl;
       
    82     stream << tr("Valid from:\n")
       
    83         << certificate.validFrom().toString()
       
    84         << endl << endl;
       
    85     stream << tr("Valid until:\n")
       
    86         << certificate.validTo().toString()
       
    87         << endl << endl;
       
    88     stream << tr("Serial number:\n")
       
    89         << certificate.formattedSerialNumber()
       
    90         << endl << endl;
       
    91     stream << tr("Fingerprint (SHA1):\n")
       
    92         << certificate.formattedFingerprint()
       
    93         << endl;
       
    94     return details;
       
    95 }
       
    96 
       
    97 // ----------------------------------------------------------------------------
       
    98 // SifUiDialogCertificateDetails::showList()
       
    99 // ----------------------------------------------------------------------------
       
   100 //
       
   101 void SifUiDialogCertificateDetails::showList()
       
   102 {
       
   103     int count = mCertificates.count();
       
   104     Q_ASSERT(count > 1);
       
   105 
       
   106     // TODO: localisation
       
   107     HbLabel *title = new HbLabel(tr("Select certificate"));
       
   108     setHeadingWidget(title);
       
   109 
       
   110     HbListWidget *content = new HbListWidget;
       
   111     for (int index = 0; index < count; ++index ) {
       
   112         HbListWidgetItem *item = new HbListWidgetItem();
       
   113         item->setData(QVariant(mCertificates.at(index)->subjectName()));
       
   114         content->addItem(item);
       
   115     }
       
   116     setContentWidget(content);
       
   117     connect(content, SIGNAL(activated(HbListWidgetItem*)),
       
   118         this, SLOT(certificateSelected()));
       
   119 
       
   120     setPrimaryAction(new HbAction(hbTrId("txt_common_button_close")));
       
   121 }
       
   122 
       
   123 // ----------------------------------------------------------------------------
       
   124 // SifUiDialogCertificateDetails::certificateSelected()
       
   125 // ----------------------------------------------------------------------------
       
   126 //
       
   127 void SifUiDialogCertificateDetails::certificateSelected()
       
   128 {
       
   129     QGraphicsWidget *content = contentWidget();
       
   130     if (content->type() == Hb::ItemType_ListView) {
       
   131         HbListWidget *listWidget = reinterpret_cast<HbListWidget*>(content);
       
   132         int index = listWidget->currentRow();
       
   133         if (index >= 0 && index < mCertificates.count()) {
       
   134             showCertificate(index);
       
   135         }
       
   136     }
       
   137 }
       
   138 
       
   139 // ----------------------------------------------------------------------------
       
   140 // SifUiDialogCertificateDetails::showCertificate()
       
   141 // ----------------------------------------------------------------------------
       
   142 //
       
   143 void SifUiDialogCertificateDetails::showCertificate(int index)
       
   144 {
       
   145     // TODO: localisation
       
   146     HbLabel *title = new HbLabel(tr("Certificate details"));
       
   147     setHeadingWidget(title);
       
   148 
       
   149     HbTextEdit *content = new HbTextEdit;
       
   150     Q_ASSERT(index >= 0 && index < mCertificates.count());
       
   151     QString details = certificateDetails(*mCertificates[index]);
       
   152     content->setPlainText(details);
       
   153     content->setReadOnly(true);
       
   154     setContentWidget(content);
       
   155 
       
   156     setPrimaryAction(new HbAction(hbTrId("txt_common_button_close")));
       
   157 }