commondrm/drmqtencryptor/drmencyptor.cpp
author hgs
Thu, 24 Jun 2010 12:39:58 +0300
changeset 49 69d8e75812b7
parent 48 c68061d56109
child 63 a882b3fd075c
permissions -rw-r--r--
201025_01
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
48
c68061d56109 201023_02
hgs
parents:
diff changeset
     1
/*
c68061d56109 201023_02
hgs
parents:
diff changeset
     2
* Copyright (c) 2003-2009 Nokia Corporation and/or its subsidiary(-ies).
c68061d56109 201023_02
hgs
parents:
diff changeset
     3
* All rights reserved.
c68061d56109 201023_02
hgs
parents:
diff changeset
     4
* This component and the accompanying materials are made available
c68061d56109 201023_02
hgs
parents:
diff changeset
     5
* under the terms of "Eclipse Public License v1.0"
c68061d56109 201023_02
hgs
parents:
diff changeset
     6
* which accompanies this distribution, and is available
c68061d56109 201023_02
hgs
parents:
diff changeset
     7
* at the URL "http://www.eclipse.org/legal/epl-v10.html".
c68061d56109 201023_02
hgs
parents:
diff changeset
     8
*
c68061d56109 201023_02
hgs
parents:
diff changeset
     9
* Initial Contributors:
c68061d56109 201023_02
hgs
parents:
diff changeset
    10
* Nokia Corporation - initial contribution.
c68061d56109 201023_02
hgs
parents:
diff changeset
    11
*
c68061d56109 201023_02
hgs
parents:
diff changeset
    12
* Contributors:
c68061d56109 201023_02
hgs
parents:
diff changeset
    13
*
c68061d56109 201023_02
hgs
parents:
diff changeset
    14
* Description:  DRM Encryption tool.
c68061d56109 201023_02
hgs
parents:
diff changeset
    15
*
c68061d56109 201023_02
hgs
parents:
diff changeset
    16
*/
c68061d56109 201023_02
hgs
parents:
diff changeset
    17
c68061d56109 201023_02
hgs
parents:
diff changeset
    18
#include "drmencryptor.h"
c68061d56109 201023_02
hgs
parents:
diff changeset
    19
//#include "ui_dialog.h"
c68061d56109 201023_02
hgs
parents:
diff changeset
    20
#include <QMessageBox>
c68061d56109 201023_02
hgs
parents:
diff changeset
    21
#include <QDoubleValidator>
c68061d56109 201023_02
hgs
parents:
diff changeset
    22
#include <QMenu>
c68061d56109 201023_02
hgs
parents:
diff changeset
    23
#include <QHBoxLayout>
c68061d56109 201023_02
hgs
parents:
diff changeset
    24
#include <QString>
c68061d56109 201023_02
hgs
parents:
diff changeset
    25
#include <QLabel>
c68061d56109 201023_02
hgs
parents:
diff changeset
    26
#include <QPlainTextEdit>
c68061d56109 201023_02
hgs
parents:
diff changeset
    27
#include <QVBoxLayout>
c68061d56109 201023_02
hgs
parents:
diff changeset
    28
#include <QWidget>
c68061d56109 201023_02
hgs
parents:
diff changeset
    29
#include <QPalette>
c68061d56109 201023_02
hgs
parents:
diff changeset
    30
c68061d56109 201023_02
hgs
parents:
diff changeset
    31
#ifdef RD_MULTIPLE_DRIVE
c68061d56109 201023_02
hgs
parents:
diff changeset
    32
#include <driveinfo.h>
c68061d56109 201023_02
hgs
parents:
diff changeset
    33
#endif
c68061d56109 201023_02
hgs
parents:
diff changeset
    34
c68061d56109 201023_02
hgs
parents:
diff changeset
    35
#include <e32std.h>
c68061d56109 201023_02
hgs
parents:
diff changeset
    36
#include <e32base.h>
c68061d56109 201023_02
hgs
parents:
diff changeset
    37
#include <e32cmn.h>
c68061d56109 201023_02
hgs
parents:
diff changeset
    38
c68061d56109 201023_02
hgs
parents:
diff changeset
    39
#include <Oma1DcfCreator.h>
c68061d56109 201023_02
hgs
parents:
diff changeset
    40
#include <s32file.h>
c68061d56109 201023_02
hgs
parents:
diff changeset
    41
#include <DRMMessageParser.h>
c68061d56109 201023_02
hgs
parents:
diff changeset
    42
#include <DcfRep.h>
c68061d56109 201023_02
hgs
parents:
diff changeset
    43
#include <DcfEntry.h>
49
69d8e75812b7 201025_01
hgs
parents: 48
diff changeset
    44
#include <DRMRights.h>
69d8e75812b7 201025_01
hgs
parents: 48
diff changeset
    45
//#include <drmbrowserlauncher.h>
48
c68061d56109 201023_02
hgs
parents:
diff changeset
    46
c68061d56109 201023_02
hgs
parents:
diff changeset
    47
#include "drmserviceapi.h"
49
69d8e75812b7 201025_01
hgs
parents: 48
diff changeset
    48
#include "DRMTypes.h"
48
c68061d56109 201023_02
hgs
parents:
diff changeset
    49
c68061d56109 201023_02
hgs
parents:
diff changeset
    50
const TInt KBufferSize = 20000;
c68061d56109 201023_02
hgs
parents:
diff changeset
    51
c68061d56109 201023_02
hgs
parents:
diff changeset
    52
DRMEncryptor::DRMEncryptor()
c68061d56109 201023_02
hgs
parents:
diff changeset
    53
{   
c68061d56109 201023_02
hgs
parents:
diff changeset
    54
    QWidget *widget = new QWidget();
c68061d56109 201023_02
hgs
parents:
diff changeset
    55
    setCentralWidget(widget);
c68061d56109 201023_02
hgs
parents:
diff changeset
    56
    
c68061d56109 201023_02
hgs
parents:
diff changeset
    57
    setBackgroundRole( QPalette::Window );
c68061d56109 201023_02
hgs
parents:
diff changeset
    58
c68061d56109 201023_02
hgs
parents:
diff changeset
    59
    QVBoxLayout *layout = new QVBoxLayout;
c68061d56109 201023_02
hgs
parents:
diff changeset
    60
    layout->setAlignment(Qt::AlignCenter);
c68061d56109 201023_02
hgs
parents:
diff changeset
    61
   
c68061d56109 201023_02
hgs
parents:
diff changeset
    62
    QLabel *mainWindowLabel = new QLabel("DRM Encryptor");
c68061d56109 201023_02
hgs
parents:
diff changeset
    63
    layout->addWidget(mainWindowLabel);
c68061d56109 201023_02
hgs
parents:
diff changeset
    64
    
c68061d56109 201023_02
hgs
parents:
diff changeset
    65
    //layout->addStretch();
c68061d56109 201023_02
hgs
parents:
diff changeset
    66
c68061d56109 201023_02
hgs
parents:
diff changeset
    67
    //ui->setupUi(this);
c68061d56109 201023_02
hgs
parents:
diff changeset
    68
    //iOptionsMenu = menuBar()->addMenu(tr("&Options"));
c68061d56109 201023_02
hgs
parents:
diff changeset
    69
    
c68061d56109 201023_02
hgs
parents:
diff changeset
    70
    // Create menu options
c68061d56109 201023_02
hgs
parents:
diff changeset
    71
    iSetDRMClockAct = new QAction(tr("&Set DRM Clock"), this);
c68061d56109 201023_02
hgs
parents:
diff changeset
    72
    iSetDRMClockAct->setStatusTip(tr("Set DRM secure clock time."));
c68061d56109 201023_02
hgs
parents:
diff changeset
    73
    
c68061d56109 201023_02
hgs
parents:
diff changeset
    74
    iGetDRMClockAct = new QAction(tr("&Get DRM Clock Time"), this);
c68061d56109 201023_02
hgs
parents:
diff changeset
    75
    iGetDRMClockAct->setStatusTip(tr("Get DRM secure clock time."));
c68061d56109 201023_02
hgs
parents:
diff changeset
    76
    
c68061d56109 201023_02
hgs
parents:
diff changeset
    77
    iEncryptAct = new QAction(tr("&Encrypt"), this);
c68061d56109 201023_02
hgs
parents:
diff changeset
    78
    iEncryptAct->setStatusTip(tr("Encrypt"));
c68061d56109 201023_02
hgs
parents:
diff changeset
    79
    
49
69d8e75812b7 201025_01
hgs
parents: 48
diff changeset
    80
    iLaunchBrowserAct = new QAction(tr("&Launch Browser"), this);
69d8e75812b7 201025_01
hgs
parents: 48
diff changeset
    81
    iLaunchBrowserAct->setStatusTip(tr("Launch Browser"));
69d8e75812b7 201025_01
hgs
parents: 48
diff changeset
    82
        
48
c68061d56109 201023_02
hgs
parents:
diff changeset
    83
    iDeleteWMDRMDBAct = new QAction(tr("&Delete WMDRM DB"), this);
c68061d56109 201023_02
hgs
parents:
diff changeset
    84
    iDeleteWMDRMDBAct->setStatusTip(tr("Delete WMDRM Database rights."));
c68061d56109 201023_02
hgs
parents:
diff changeset
    85
    
c68061d56109 201023_02
hgs
parents:
diff changeset
    86
    menuBar()->addAction(iSetDRMClockAct);
c68061d56109 201023_02
hgs
parents:
diff changeset
    87
    menuBar()->addAction(iGetDRMClockAct);
c68061d56109 201023_02
hgs
parents:
diff changeset
    88
    menuBar()->addAction(iEncryptAct);
c68061d56109 201023_02
hgs
parents:
diff changeset
    89
    menuBar()->addAction(iDeleteWMDRMDBAct);
49
69d8e75812b7 201025_01
hgs
parents: 48
diff changeset
    90
    menuBar()->addAction(iLaunchBrowserAct);
48
c68061d56109 201023_02
hgs
parents:
diff changeset
    91
    
c68061d56109 201023_02
hgs
parents:
diff changeset
    92
    connect(iSetDRMClockAct, SIGNAL(triggered()), this, SLOT(setDRMClock()));
c68061d56109 201023_02
hgs
parents:
diff changeset
    93
    connect(iGetDRMClockAct, SIGNAL(triggered()), this, SLOT(getDRMClock()));
c68061d56109 201023_02
hgs
parents:
diff changeset
    94
    connect(iEncryptAct, SIGNAL(triggered()), this, SLOT(startEncrypt()));
c68061d56109 201023_02
hgs
parents:
diff changeset
    95
    connect(iDeleteWMDRMDBAct, SIGNAL(triggered()), this, SLOT(deleteWmDrmDB()));
49
69d8e75812b7 201025_01
hgs
parents: 48
diff changeset
    96
    connect(iLaunchBrowserAct, SIGNAL(triggered()), this, SLOT(launchBrowser()));
48
c68061d56109 201023_02
hgs
parents:
diff changeset
    97
    
c68061d56109 201023_02
hgs
parents:
diff changeset
    98
    //setDRMClockButton = new QPushButton("Set DRM Clock", this);
c68061d56109 201023_02
hgs
parents:
diff changeset
    99
    //connect(setDRMClockButton, SIGNAL(clicked()), this, SLOT(setDRMClock()));
c68061d56109 201023_02
hgs
parents:
diff changeset
   100
    //setDRMClockButton->show();
c68061d56109 201023_02
hgs
parents:
diff changeset
   101
    
c68061d56109 201023_02
hgs
parents:
diff changeset
   102
/*  ui->pushButton->setEnabled(false);
c68061d56109 201023_02
hgs
parents:
diff changeset
   103
c68061d56109 201023_02
hgs
parents:
diff changeset
   104
    ui->lineEdit->setValidator(new QDoubleValidator(this));
c68061d56109 201023_02
hgs
parents:
diff changeset
   105
    ui->lineEdit_2->setValidator(new QDoubleValidator(this));
c68061d56109 201023_02
hgs
parents:
diff changeset
   106
*/
c68061d56109 201023_02
hgs
parents:
diff changeset
   107
    //connect(ui->mainMenu,SIGNAL(onChanged()),this,SLOT(onLaske()));
c68061d56109 201023_02
hgs
parents:
diff changeset
   108
    //connect(ui->lineEdit,SIGNAL(textChanged(const QString &)),this,SLOT(onTextChanged(const QString &)));
c68061d56109 201023_02
hgs
parents:
diff changeset
   109
    //connect(ui->mainMenu,SIGNAL(textChanged(const QString &)),this,SLOT(onTextChanged(const QString &)));
c68061d56109 201023_02
hgs
parents:
diff changeset
   110
c68061d56109 201023_02
hgs
parents:
diff changeset
   111
    widget->setLayout(layout);
c68061d56109 201023_02
hgs
parents:
diff changeset
   112
}
c68061d56109 201023_02
hgs
parents:
diff changeset
   113
c68061d56109 201023_02
hgs
parents:
diff changeset
   114
DRMEncryptor::~DRMEncryptor()
c68061d56109 201023_02
hgs
parents:
diff changeset
   115
{
c68061d56109 201023_02
hgs
parents:
diff changeset
   116
    //delete ui;
c68061d56109 201023_02
hgs
parents:
diff changeset
   117
}
c68061d56109 201023_02
hgs
parents:
diff changeset
   118
c68061d56109 201023_02
hgs
parents:
diff changeset
   119
void DRMEncryptor::setDRMClock()
c68061d56109 201023_02
hgs
parents:
diff changeset
   120
{
c68061d56109 201023_02
hgs
parents:
diff changeset
   121
    DateTimeDialog *dateTimeDialog = new DateTimeDialog();
c68061d56109 201023_02
hgs
parents:
diff changeset
   122
    dateTimeDialog->show();
c68061d56109 201023_02
hgs
parents:
diff changeset
   123
}
c68061d56109 201023_02
hgs
parents:
diff changeset
   124
c68061d56109 201023_02
hgs
parents:
diff changeset
   125
void DRMEncryptor::getDRMClock()
c68061d56109 201023_02
hgs
parents:
diff changeset
   126
{
49
69d8e75812b7 201025_01
hgs
parents: 48
diff changeset
   127
	TTime time;
48
c68061d56109 201023_02
hgs
parents:
diff changeset
   128
    TInt timeZone;
c68061d56109 201023_02
hgs
parents:
diff changeset
   129
    TDateTime date;
c68061d56109 201023_02
hgs
parents:
diff changeset
   130
    DRMClock::ESecurityLevel level;
c68061d56109 201023_02
hgs
parents:
diff changeset
   131
    TInt error( KErrNone );
c68061d56109 201023_02
hgs
parents:
diff changeset
   132
    TBuf< 80 > buf;
c68061d56109 201023_02
hgs
parents:
diff changeset
   133
    
49
69d8e75812b7 201025_01
hgs
parents: 48
diff changeset
   134
    DRM::CDrmServiceApi* service = NULL;
69d8e75812b7 201025_01
hgs
parents: 48
diff changeset
   135
    
69d8e75812b7 201025_01
hgs
parents: 48
diff changeset
   136
    TRAPD(err, service = DRM::CDrmServiceApi::NewL());
69d8e75812b7 201025_01
hgs
parents: 48
diff changeset
   137
    if(err!=KErrNone)
69d8e75812b7 201025_01
hgs
parents: 48
diff changeset
   138
    	{
69d8e75812b7 201025_01
hgs
parents: 48
diff changeset
   139
    	QMessageBox::information(this, tr("DRM Clock"),tr("Error creating CDrmServiceApi."));
69d8e75812b7 201025_01
hgs
parents: 48
diff changeset
   140
    	buf.AppendNum(error);
69d8e75812b7 201025_01
hgs
parents: 48
diff changeset
   141
        QString string((QChar*)buf.Ptr(),buf.Length());
69d8e75812b7 201025_01
hgs
parents: 48
diff changeset
   142
        QMessageBox::information(this, tr("DRM Clock"),string);
69d8e75812b7 201025_01
hgs
parents: 48
diff changeset
   143
    	delete service; // service
69d8e75812b7 201025_01
hgs
parents: 48
diff changeset
   144
    	return;
69d8e75812b7 201025_01
hgs
parents: 48
diff changeset
   145
    	}
69d8e75812b7 201025_01
hgs
parents: 48
diff changeset
   146
    
48
c68061d56109 201023_02
hgs
parents:
diff changeset
   147
    error = service->GetSecureTime( time, timeZone, level );
49
69d8e75812b7 201025_01
hgs
parents: 48
diff changeset
   148
    if(!error==KErrNone)
69d8e75812b7 201025_01
hgs
parents: 48
diff changeset
   149
        {
69d8e75812b7 201025_01
hgs
parents: 48
diff changeset
   150
        QMessageBox::information(this, tr("DRM Clock"),tr("Error getting secure time."));
69d8e75812b7 201025_01
hgs
parents: 48
diff changeset
   151
        
69d8e75812b7 201025_01
hgs
parents: 48
diff changeset
   152
        buf.AppendNum(error);
69d8e75812b7 201025_01
hgs
parents: 48
diff changeset
   153
        QString string((QChar*)buf.Ptr(),buf.Length());
69d8e75812b7 201025_01
hgs
parents: 48
diff changeset
   154
        QMessageBox::information(this, tr("DRM Clock"),string);
69d8e75812b7 201025_01
hgs
parents: 48
diff changeset
   155
        delete service;
69d8e75812b7 201025_01
hgs
parents: 48
diff changeset
   156
        return;
69d8e75812b7 201025_01
hgs
parents: 48
diff changeset
   157
        }
48
c68061d56109 201023_02
hgs
parents:
diff changeset
   158
    
c68061d56109 201023_02
hgs
parents:
diff changeset
   159
    date = time.DateTime();
c68061d56109 201023_02
hgs
parents:
diff changeset
   160
    
c68061d56109 201023_02
hgs
parents:
diff changeset
   161
    if(level == DRMClock::KSecure)
c68061d56109 201023_02
hgs
parents:
diff changeset
   162
    {
c68061d56109 201023_02
hgs
parents:
diff changeset
   163
        _LIT(KFormatTxt,"DRMClock Time:\n%d/%d/%d\n%d:%d:%d\nNitz available");
c68061d56109 201023_02
hgs
parents:
diff changeset
   164
        buf.Format( KFormatTxt,
c68061d56109 201023_02
hgs
parents:
diff changeset
   165
                date.Day()+1,
c68061d56109 201023_02
hgs
parents:
diff changeset
   166
                TInt(date.Month()+1),
c68061d56109 201023_02
hgs
parents:
diff changeset
   167
                date.Year(),
c68061d56109 201023_02
hgs
parents:
diff changeset
   168
                date.Hour(),
c68061d56109 201023_02
hgs
parents:
diff changeset
   169
                date.Minute(),
c68061d56109 201023_02
hgs
parents:
diff changeset
   170
                date.Second());
c68061d56109 201023_02
hgs
parents:
diff changeset
   171
    }
c68061d56109 201023_02
hgs
parents:
diff changeset
   172
    else
c68061d56109 201023_02
hgs
parents:
diff changeset
   173
    {
c68061d56109 201023_02
hgs
parents:
diff changeset
   174
        _LIT(KFormatTxt,"DRMClock Time:\n%d/%d/%d\n%d:%d:%d\nNitz unavailable");
c68061d56109 201023_02
hgs
parents:
diff changeset
   175
        buf.Format( KFormatTxt,
c68061d56109 201023_02
hgs
parents:
diff changeset
   176
                date.Day()+1,
c68061d56109 201023_02
hgs
parents:
diff changeset
   177
                TInt(date.Month()+1),
c68061d56109 201023_02
hgs
parents:
diff changeset
   178
                date.Year(),
c68061d56109 201023_02
hgs
parents:
diff changeset
   179
                date.Hour(),
c68061d56109 201023_02
hgs
parents:
diff changeset
   180
                date.Minute(),
c68061d56109 201023_02
hgs
parents:
diff changeset
   181
                date.Second());
c68061d56109 201023_02
hgs
parents:
diff changeset
   182
    }
c68061d56109 201023_02
hgs
parents:
diff changeset
   183
    
c68061d56109 201023_02
hgs
parents:
diff changeset
   184
    QGridLayout *layout = new QGridLayout;
c68061d56109 201023_02
hgs
parents:
diff changeset
   185
    layout->setAlignment(Qt::AlignCenter);
c68061d56109 201023_02
hgs
parents:
diff changeset
   186
    setLayout(layout);
c68061d56109 201023_02
hgs
parents:
diff changeset
   187
        
c68061d56109 201023_02
hgs
parents:
diff changeset
   188
    
c68061d56109 201023_02
hgs
parents:
diff changeset
   189
    QString datetimeString((QChar*)buf.Ptr(),buf.Length());
c68061d56109 201023_02
hgs
parents:
diff changeset
   190
    
c68061d56109 201023_02
hgs
parents:
diff changeset
   191
    QMessageBox *drmClockTime = new QMessageBox(this);
c68061d56109 201023_02
hgs
parents:
diff changeset
   192
    drmClockTime->setWindowTitle(tr("DRM Clock"));
c68061d56109 201023_02
hgs
parents:
diff changeset
   193
    drmClockTime->setText(datetimeString);
c68061d56109 201023_02
hgs
parents:
diff changeset
   194
    
c68061d56109 201023_02
hgs
parents:
diff changeset
   195
    layout->addWidget(drmClockTime);
c68061d56109 201023_02
hgs
parents:
diff changeset
   196
    drmClockTime->show();
c68061d56109 201023_02
hgs
parents:
diff changeset
   197
    
c68061d56109 201023_02
hgs
parents:
diff changeset
   198
}
c68061d56109 201023_02
hgs
parents:
diff changeset
   199
c68061d56109 201023_02
hgs
parents:
diff changeset
   200
LOCAL_C void ReadFileL(HBufC8*& aContent, const TDesC& aName, RFs& aFs)
c68061d56109 201023_02
hgs
parents:
diff changeset
   201
    {
c68061d56109 201023_02
hgs
parents:
diff changeset
   202
    TInt size = 0;
c68061d56109 201023_02
hgs
parents:
diff changeset
   203
    RFile file;
c68061d56109 201023_02
hgs
parents:
diff changeset
   204
    User::LeaveIfError(file.Open(aFs, aName, EFileRead));
c68061d56109 201023_02
hgs
parents:
diff changeset
   205
    User::LeaveIfError(file.Size(size));
c68061d56109 201023_02
hgs
parents:
diff changeset
   206
    aContent = HBufC8::NewLC(size);
c68061d56109 201023_02
hgs
parents:
diff changeset
   207
    TPtr8 ptr(aContent->Des());
c68061d56109 201023_02
hgs
parents:
diff changeset
   208
    User::LeaveIfError(file.Read(ptr, size));
c68061d56109 201023_02
hgs
parents:
diff changeset
   209
    CleanupStack::Pop(); //aContent
c68061d56109 201023_02
hgs
parents:
diff changeset
   210
    }
c68061d56109 201023_02
hgs
parents:
diff changeset
   211
c68061d56109 201023_02
hgs
parents:
diff changeset
   212
// ---------------------------------------------------------
c68061d56109 201023_02
hgs
parents:
diff changeset
   213
// UpdateDCFRepositoryL()
c68061d56109 201023_02
hgs
parents:
diff changeset
   214
// Update saved file to DCFRepository
c68061d56109 201023_02
hgs
parents:
diff changeset
   215
// ---------------------------------------------------------
c68061d56109 201023_02
hgs
parents:
diff changeset
   216
//
c68061d56109 201023_02
hgs
parents:
diff changeset
   217
LOCAL_C void UpdateDCFRepositoryL( const TDesC& aFileName)
c68061d56109 201023_02
hgs
parents:
diff changeset
   218
    {
c68061d56109 201023_02
hgs
parents:
diff changeset
   219
    CDcfEntry* dcf( NULL );
c68061d56109 201023_02
hgs
parents:
diff changeset
   220
    CDcfRep* dcfRep( NULL );
c68061d56109 201023_02
hgs
parents:
diff changeset
   221
c68061d56109 201023_02
hgs
parents:
diff changeset
   222
    dcf = CDcfEntry::NewL();
c68061d56109 201023_02
hgs
parents:
diff changeset
   223
    CleanupStack::PushL( dcf );
c68061d56109 201023_02
hgs
parents:
diff changeset
   224
c68061d56109 201023_02
hgs
parents:
diff changeset
   225
    dcfRep = CDcfRep::NewL();
c68061d56109 201023_02
hgs
parents:
diff changeset
   226
    CleanupStack::PushL( dcfRep );
c68061d56109 201023_02
hgs
parents:
diff changeset
   227
c68061d56109 201023_02
hgs
parents:
diff changeset
   228
    dcf->SetLocationL( aFileName, 0 );
c68061d56109 201023_02
hgs
parents:
diff changeset
   229
    dcfRep->UpdateL( dcf );
c68061d56109 201023_02
hgs
parents:
diff changeset
   230
c68061d56109 201023_02
hgs
parents:
diff changeset
   231
    CleanupStack::PopAndDestroy(2); // dcf, dcfRep
c68061d56109 201023_02
hgs
parents:
diff changeset
   232
    }
c68061d56109 201023_02
hgs
parents:
diff changeset
   233
c68061d56109 201023_02
hgs
parents:
diff changeset
   234
void ProcessRightsL(const TDesC& aFile)
c68061d56109 201023_02
hgs
parents:
diff changeset
   235
    {
c68061d56109 201023_02
hgs
parents:
diff changeset
   236
    CDRMMessageParser* c = NULL;
c68061d56109 201023_02
hgs
parents:
diff changeset
   237
    HBufC8* d = NULL;
c68061d56109 201023_02
hgs
parents:
diff changeset
   238
    RFs fs;
c68061d56109 201023_02
hgs
parents:
diff changeset
   239
    RPointerArray<CDRMRights> rights;
c68061d56109 201023_02
hgs
parents:
diff changeset
   240
c68061d56109 201023_02
hgs
parents:
diff changeset
   241
    User::LeaveIfError(fs.Connect());
c68061d56109 201023_02
hgs
parents:
diff changeset
   242
    c = CDRMMessageParser::NewL();
c68061d56109 201023_02
hgs
parents:
diff changeset
   243
    ReadFileL(d, aFile, fs);
c68061d56109 201023_02
hgs
parents:
diff changeset
   244
    c->ProcessRightsObject(*d, rights);
c68061d56109 201023_02
hgs
parents:
diff changeset
   245
    rights.ResetAndDestroy();
c68061d56109 201023_02
hgs
parents:
diff changeset
   246
    delete d;
c68061d56109 201023_02
hgs
parents:
diff changeset
   247
    delete c;
c68061d56109 201023_02
hgs
parents:
diff changeset
   248
    fs.Close();
c68061d56109 201023_02
hgs
parents:
diff changeset
   249
    }
c68061d56109 201023_02
hgs
parents:
diff changeset
   250
c68061d56109 201023_02
hgs
parents:
diff changeset
   251
void DRMEncryptor::ProcessMessageL(const TDesC& aFile, const TDesC& aOutput)
c68061d56109 201023_02
hgs
parents:
diff changeset
   252
    {
c68061d56109 201023_02
hgs
parents:
diff changeset
   253
    CDRMMessageParser* c = NULL;
c68061d56109 201023_02
hgs
parents:
diff changeset
   254
    HBufC8* d = NULL;
c68061d56109 201023_02
hgs
parents:
diff changeset
   255
    RFs fs;
c68061d56109 201023_02
hgs
parents:
diff changeset
   256
    TPtr8 inRead(NULL, 0);
c68061d56109 201023_02
hgs
parents:
diff changeset
   257
    TInt error = 1;
c68061d56109 201023_02
hgs
parents:
diff changeset
   258
    __UHEAP_MARK;
c68061d56109 201023_02
hgs
parents:
diff changeset
   259
c68061d56109 201023_02
hgs
parents:
diff changeset
   260
    User::LeaveIfError(fs.Connect());
c68061d56109 201023_02
hgs
parents:
diff changeset
   261
    CleanupClosePushL(fs);
c68061d56109 201023_02
hgs
parents:
diff changeset
   262
    c = CDRMMessageParser::NewL();
c68061d56109 201023_02
hgs
parents:
diff changeset
   263
    CleanupStack::PushL(c);
c68061d56109 201023_02
hgs
parents:
diff changeset
   264
c68061d56109 201023_02
hgs
parents:
diff changeset
   265
    d = HBufC8::NewLC( KBufferSize );
c68061d56109 201023_02
hgs
parents:
diff changeset
   266
c68061d56109 201023_02
hgs
parents:
diff changeset
   267
    RFile input;
c68061d56109 201023_02
hgs
parents:
diff changeset
   268
    User::LeaveIfError(input.Open( fs, aFile, EFileRead ));
c68061d56109 201023_02
hgs
parents:
diff changeset
   269
    CleanupClosePushL( input );
c68061d56109 201023_02
hgs
parents:
diff changeset
   270
c68061d56109 201023_02
hgs
parents:
diff changeset
   271
    RFileWriteStream output;
c68061d56109 201023_02
hgs
parents:
diff changeset
   272
    output.Replace( fs, aOutput, EFileWrite );
c68061d56109 201023_02
hgs
parents:
diff changeset
   273
    CleanupClosePushL( output );
c68061d56109 201023_02
hgs
parents:
diff changeset
   274
c68061d56109 201023_02
hgs
parents:
diff changeset
   275
    c->InitializeMessageParserL( output );
c68061d56109 201023_02
hgs
parents:
diff changeset
   276
c68061d56109 201023_02
hgs
parents:
diff changeset
   277
    while( error )
c68061d56109 201023_02
hgs
parents:
diff changeset
   278
        {
c68061d56109 201023_02
hgs
parents:
diff changeset
   279
        inRead.Set( const_cast<TUint8*>(d->Ptr()),0,KBufferSize);
c68061d56109 201023_02
hgs
parents:
diff changeset
   280
        error = input.Read( inRead );
c68061d56109 201023_02
hgs
parents:
diff changeset
   281
c68061d56109 201023_02
hgs
parents:
diff changeset
   282
        if( error )
c68061d56109 201023_02
hgs
parents:
diff changeset
   283
            {
c68061d56109 201023_02
hgs
parents:
diff changeset
   284
            c->FinalizeMessageParserL();
c68061d56109 201023_02
hgs
parents:
diff changeset
   285
c68061d56109 201023_02
hgs
parents:
diff changeset
   286
            User::Leave( error );
c68061d56109 201023_02
hgs
parents:
diff changeset
   287
            }
c68061d56109 201023_02
hgs
parents:
diff changeset
   288
        else
c68061d56109 201023_02
hgs
parents:
diff changeset
   289
            {
c68061d56109 201023_02
hgs
parents:
diff changeset
   290
            error = inRead.Length();
c68061d56109 201023_02
hgs
parents:
diff changeset
   291
            }
c68061d56109 201023_02
hgs
parents:
diff changeset
   292
c68061d56109 201023_02
hgs
parents:
diff changeset
   293
        if( error )
c68061d56109 201023_02
hgs
parents:
diff changeset
   294
            {
c68061d56109 201023_02
hgs
parents:
diff changeset
   295
            c->ProcessMessageDataL(inRead);
c68061d56109 201023_02
hgs
parents:
diff changeset
   296
            }
c68061d56109 201023_02
hgs
parents:
diff changeset
   297
        }
c68061d56109 201023_02
hgs
parents:
diff changeset
   298
c68061d56109 201023_02
hgs
parents:
diff changeset
   299
    c->FinalizeMessageParserL();
c68061d56109 201023_02
hgs
parents:
diff changeset
   300
c68061d56109 201023_02
hgs
parents:
diff changeset
   301
c68061d56109 201023_02
hgs
parents:
diff changeset
   302
    CleanupStack::PopAndDestroy( 5 ); // fs, c, d, input, output
c68061d56109 201023_02
hgs
parents:
diff changeset
   303
    UpdateDCFRepositoryL( aOutput );
c68061d56109 201023_02
hgs
parents:
diff changeset
   304
    __UHEAP_MARKEND;
c68061d56109 201023_02
hgs
parents:
diff changeset
   305
    }
c68061d56109 201023_02
hgs
parents:
diff changeset
   306
c68061d56109 201023_02
hgs
parents:
diff changeset
   307
void EncryptFileL(const TDesC& aFile, TDesC& aOutput, TInt aMultiplier)
c68061d56109 201023_02
hgs
parents:
diff changeset
   308
    {
c68061d56109 201023_02
hgs
parents:
diff changeset
   309
    COma1DcfCreator* c = NULL;
c68061d56109 201023_02
hgs
parents:
diff changeset
   310
    CDRMRights* rights = NULL;
c68061d56109 201023_02
hgs
parents:
diff changeset
   311
    TBuf8<64> mime;
c68061d56109 201023_02
hgs
parents:
diff changeset
   312
    RFs fs;
c68061d56109 201023_02
hgs
parents:
diff changeset
   313
    TFileName aDcfFile;
c68061d56109 201023_02
hgs
parents:
diff changeset
   314
    TInt aOriginalFileNameLength(aOutput.Length() - 4);
c68061d56109 201023_02
hgs
parents:
diff changeset
   315
c68061d56109 201023_02
hgs
parents:
diff changeset
   316
    User::LeaveIfError(fs.Connect());
c68061d56109 201023_02
hgs
parents:
diff changeset
   317
    if (aFile.Right(3).CompareF(_L("amr")) == 0) //AMR
c68061d56109 201023_02
hgs
parents:
diff changeset
   318
        {
c68061d56109 201023_02
hgs
parents:
diff changeset
   319
        mime.Copy(_L8("audio/amr"));
c68061d56109 201023_02
hgs
parents:
diff changeset
   320
        }
c68061d56109 201023_02
hgs
parents:
diff changeset
   321
    else if (aFile.Right(3).CompareF(_L("awb")) == 0) //AMR-AWB
c68061d56109 201023_02
hgs
parents:
diff changeset
   322
        {
c68061d56109 201023_02
hgs
parents:
diff changeset
   323
        mime.Copy(_L8("audio/amr-wb"));
c68061d56109 201023_02
hgs
parents:
diff changeset
   324
        }
c68061d56109 201023_02
hgs
parents:
diff changeset
   325
    else if (aFile.Right(3).CompareF(_L("mp3")) == 0) //MP3
c68061d56109 201023_02
hgs
parents:
diff changeset
   326
        {
c68061d56109 201023_02
hgs
parents:
diff changeset
   327
        mime.Copy(_L8("audio/mpeg"));
c68061d56109 201023_02
hgs
parents:
diff changeset
   328
        }
c68061d56109 201023_02
hgs
parents:
diff changeset
   329
    else if (aFile.Right(3).CompareF(_L("mp4")) == 0) //MP4
c68061d56109 201023_02
hgs
parents:
diff changeset
   330
        {
c68061d56109 201023_02
hgs
parents:
diff changeset
   331
        mime.Copy(_L8("audio/mp4"));
c68061d56109 201023_02
hgs
parents:
diff changeset
   332
        }
c68061d56109 201023_02
hgs
parents:
diff changeset
   333
    else if (aFile.Right(3).CompareF(_L("m4a")) == 0) //M4A
c68061d56109 201023_02
hgs
parents:
diff changeset
   334
        {
c68061d56109 201023_02
hgs
parents:
diff changeset
   335
        mime.Copy(_L8("audio/mp4"));
c68061d56109 201023_02
hgs
parents:
diff changeset
   336
        }
c68061d56109 201023_02
hgs
parents:
diff changeset
   337
    else if (aFile.Right(3).CompareF(_L("3gp")) == 0) //3GPP
c68061d56109 201023_02
hgs
parents:
diff changeset
   338
        {
c68061d56109 201023_02
hgs
parents:
diff changeset
   339
        mime.Copy(_L8("audio/3gpp"));
c68061d56109 201023_02
hgs
parents:
diff changeset
   340
        }
c68061d56109 201023_02
hgs
parents:
diff changeset
   341
    else if (aFile.Right(3).CompareF(_L("3g2")) == 0) //3GPP2
c68061d56109 201023_02
hgs
parents:
diff changeset
   342
        {
c68061d56109 201023_02
hgs
parents:
diff changeset
   343
        mime.Copy(_L8("audio/3gpp2"));
c68061d56109 201023_02
hgs
parents:
diff changeset
   344
        }
c68061d56109 201023_02
hgs
parents:
diff changeset
   345
    else if (aFile.Right(3).CompareF(_L("aac")) == 0) //AAC
c68061d56109 201023_02
hgs
parents:
diff changeset
   346
        {
c68061d56109 201023_02
hgs
parents:
diff changeset
   347
        mime.Copy(_L8("audio/aac"));
c68061d56109 201023_02
hgs
parents:
diff changeset
   348
        }
c68061d56109 201023_02
hgs
parents:
diff changeset
   349
    else if (aFile.Right(3).CompareF(_L("mid")) == 0) //MIDI
c68061d56109 201023_02
hgs
parents:
diff changeset
   350
        {
c68061d56109 201023_02
hgs
parents:
diff changeset
   351
        mime.Copy(_L8("audio/midi"));
c68061d56109 201023_02
hgs
parents:
diff changeset
   352
        }
c68061d56109 201023_02
hgs
parents:
diff changeset
   353
    else if (aFile.Right(5).CompareF(_L(".spmid")) == 0) //SP-MIDI
c68061d56109 201023_02
hgs
parents:
diff changeset
   354
        {
c68061d56109 201023_02
hgs
parents:
diff changeset
   355
        mime.Copy(_L8("audio/sp-midi"));
c68061d56109 201023_02
hgs
parents:
diff changeset
   356
        }
c68061d56109 201023_02
hgs
parents:
diff changeset
   357
    else if (aFile.Right(3).CompareF(_L("rmf")) == 0) //RMF
c68061d56109 201023_02
hgs
parents:
diff changeset
   358
        {
c68061d56109 201023_02
hgs
parents:
diff changeset
   359
        mime.Copy(_L8("audio/rmf"));
c68061d56109 201023_02
hgs
parents:
diff changeset
   360
        }
c68061d56109 201023_02
hgs
parents:
diff changeset
   361
    else if (aFile.Right(4).CompareF(_L("mxmf")) == 0) //Mobile-XMF
c68061d56109 201023_02
hgs
parents:
diff changeset
   362
        {
c68061d56109 201023_02
hgs
parents:
diff changeset
   363
        mime.Copy(_L8("audio/mobile-xmf"));
c68061d56109 201023_02
hgs
parents:
diff changeset
   364
        }
c68061d56109 201023_02
hgs
parents:
diff changeset
   365
    else if (aFile.Right(3).CompareF(_L("wav")) == 0) //WAV
c68061d56109 201023_02
hgs
parents:
diff changeset
   366
        {
c68061d56109 201023_02
hgs
parents:
diff changeset
   367
        mime.Copy(_L8("audio/x-wav"));
c68061d56109 201023_02
hgs
parents:
diff changeset
   368
        }
c68061d56109 201023_02
hgs
parents:
diff changeset
   369
    else if (aFile.Right(3).CompareF(_L("gif")) == 0) // GIF
c68061d56109 201023_02
hgs
parents:
diff changeset
   370
        {
c68061d56109 201023_02
hgs
parents:
diff changeset
   371
        mime.Copy(_L8("image/gif"));
c68061d56109 201023_02
hgs
parents:
diff changeset
   372
        }
c68061d56109 201023_02
hgs
parents:
diff changeset
   373
    else if (aFile.Right(3).CompareF(_L("jpg")) == 0) // JPEG
c68061d56109 201023_02
hgs
parents:
diff changeset
   374
        {
c68061d56109 201023_02
hgs
parents:
diff changeset
   375
        mime.Copy(_L8("image/jpeg"));
c68061d56109 201023_02
hgs
parents:
diff changeset
   376
        }
c68061d56109 201023_02
hgs
parents:
diff changeset
   377
    else if (aFile.Right(3).CompareF(_L("txt")) == 0) // text
c68061d56109 201023_02
hgs
parents:
diff changeset
   378
        {
c68061d56109 201023_02
hgs
parents:
diff changeset
   379
        mime.Copy(_L8("text/plain"));
c68061d56109 201023_02
hgs
parents:
diff changeset
   380
        }
c68061d56109 201023_02
hgs
parents:
diff changeset
   381
    else if (aFile.Right(3).CompareF(_L("pip")) == 0) // PIP
c68061d56109 201023_02
hgs
parents:
diff changeset
   382
        {
c68061d56109 201023_02
hgs
parents:
diff changeset
   383
        mime.Copy(_L8("application/x-pip"));
c68061d56109 201023_02
hgs
parents:
diff changeset
   384
        }
c68061d56109 201023_02
hgs
parents:
diff changeset
   385
c68061d56109 201023_02
hgs
parents:
diff changeset
   386
    aDcfFile.Append(aOutput);
c68061d56109 201023_02
hgs
parents:
diff changeset
   387
c68061d56109 201023_02
hgs
parents:
diff changeset
   388
    for(TInt i = 0; i < aMultiplier ; ++i)
c68061d56109 201023_02
hgs
parents:
diff changeset
   389
        {
c68061d56109 201023_02
hgs
parents:
diff changeset
   390
        aDcfFile.Delete(aOriginalFileNameLength, aDcfFile.Length());
c68061d56109 201023_02
hgs
parents:
diff changeset
   391
        aDcfFile.Append(_L("-"));
c68061d56109 201023_02
hgs
parents:
diff changeset
   392
        aDcfFile.AppendNum(i);
c68061d56109 201023_02
hgs
parents:
diff changeset
   393
        aDcfFile.Append(_L(".dcf"));
c68061d56109 201023_02
hgs
parents:
diff changeset
   394
        c = COma1DcfCreator::NewL();
c68061d56109 201023_02
hgs
parents:
diff changeset
   395
        CleanupStack::PushL(c);
c68061d56109 201023_02
hgs
parents:
diff changeset
   396
        fs.Delete(aOutput);
c68061d56109 201023_02
hgs
parents:
diff changeset
   397
        c->EncryptFileL(aFile, aDcfFile, mime, rights);
c68061d56109 201023_02
hgs
parents:
diff changeset
   398
        UpdateDCFRepositoryL( aDcfFile );
c68061d56109 201023_02
hgs
parents:
diff changeset
   399
        delete rights;
c68061d56109 201023_02
hgs
parents:
diff changeset
   400
        CleanupStack::PopAndDestroy(); // c
c68061d56109 201023_02
hgs
parents:
diff changeset
   401
        }
c68061d56109 201023_02
hgs
parents:
diff changeset
   402
    fs.Close();
c68061d56109 201023_02
hgs
parents:
diff changeset
   403
c68061d56109 201023_02
hgs
parents:
diff changeset
   404
    }
c68061d56109 201023_02
hgs
parents:
diff changeset
   405
c68061d56109 201023_02
hgs
parents:
diff changeset
   406
void DRMEncryptor::startEncrypt()
c68061d56109 201023_02
hgs
parents:
diff changeset
   407
    {
c68061d56109 201023_02
hgs
parents:
diff changeset
   408
        TUint result = 0;
c68061d56109 201023_02
hgs
parents:
diff changeset
   409
        TUint aEncryptedCount = 0;
c68061d56109 201023_02
hgs
parents:
diff changeset
   410
        TUint aRightsCount = 0;
c68061d56109 201023_02
hgs
parents:
diff changeset
   411
        TUint aMessagesProcessed = 0;
c68061d56109 201023_02
hgs
parents:
diff changeset
   412
        TBuf<128> buffer;
c68061d56109 201023_02
hgs
parents:
diff changeset
   413
        
c68061d56109 201023_02
hgs
parents:
diff changeset
   414
        result = EncryptL(aEncryptedCount, aRightsCount, aMessagesProcessed);
c68061d56109 201023_02
hgs
parents:
diff changeset
   415
    
c68061d56109 201023_02
hgs
parents:
diff changeset
   416
        buffer.Append(_L("Encryption done\n"));
c68061d56109 201023_02
hgs
parents:
diff changeset
   417
        if(result < 1) 
c68061d56109 201023_02
hgs
parents:
diff changeset
   418
        {
c68061d56109 201023_02
hgs
parents:
diff changeset
   419
            buffer.Append(_L("No files found"));
c68061d56109 201023_02
hgs
parents:
diff changeset
   420
        }
c68061d56109 201023_02
hgs
parents:
diff changeset
   421
        if(aMessagesProcessed != 0) 
c68061d56109 201023_02
hgs
parents:
diff changeset
   422
        {
c68061d56109 201023_02
hgs
parents:
diff changeset
   423
            buffer.AppendNum(aMessagesProcessed);
c68061d56109 201023_02
hgs
parents:
diff changeset
   424
            buffer.Append(_L(" messages processed\n"));
c68061d56109 201023_02
hgs
parents:
diff changeset
   425
        }
c68061d56109 201023_02
hgs
parents:
diff changeset
   426
        if(aRightsCount != 0) 
c68061d56109 201023_02
hgs
parents:
diff changeset
   427
        {
c68061d56109 201023_02
hgs
parents:
diff changeset
   428
            buffer.AppendNum(aRightsCount);
c68061d56109 201023_02
hgs
parents:
diff changeset
   429
            buffer.Append(_L(" rights objects processed\n"));
c68061d56109 201023_02
hgs
parents:
diff changeset
   430
        }
c68061d56109 201023_02
hgs
parents:
diff changeset
   431
        if(aMessagesProcessed != 0) 
c68061d56109 201023_02
hgs
parents:
diff changeset
   432
        {
c68061d56109 201023_02
hgs
parents:
diff changeset
   433
            buffer.AppendNum(aEncryptedCount);
c68061d56109 201023_02
hgs
parents:
diff changeset
   434
            buffer.Append(_L(" files encrypted\n"));
c68061d56109 201023_02
hgs
parents:
diff changeset
   435
        }
c68061d56109 201023_02
hgs
parents:
diff changeset
   436
        
c68061d56109 201023_02
hgs
parents:
diff changeset
   437
        QGridLayout *layout = new QGridLayout;
c68061d56109 201023_02
hgs
parents:
diff changeset
   438
        layout->setAlignment(Qt::AlignCenter);
c68061d56109 201023_02
hgs
parents:
diff changeset
   439
        setLayout(layout);
c68061d56109 201023_02
hgs
parents:
diff changeset
   440
               
c68061d56109 201023_02
hgs
parents:
diff changeset
   441
        QString encryptString((QChar*)buffer.Ptr(),buffer.Length());
c68061d56109 201023_02
hgs
parents:
diff changeset
   442
        QMessageBox *encrpytMessage = new QMessageBox(this);
c68061d56109 201023_02
hgs
parents:
diff changeset
   443
        encrpytMessage->setWindowTitle(tr("Encrypt"));
c68061d56109 201023_02
hgs
parents:
diff changeset
   444
        encrpytMessage->setText(encryptString);
c68061d56109 201023_02
hgs
parents:
diff changeset
   445
          
c68061d56109 201023_02
hgs
parents:
diff changeset
   446
        layout->addWidget(encrpytMessage);
c68061d56109 201023_02
hgs
parents:
diff changeset
   447
        encrpytMessage->show();
c68061d56109 201023_02
hgs
parents:
diff changeset
   448
           
c68061d56109 201023_02
hgs
parents:
diff changeset
   449
    }
c68061d56109 201023_02
hgs
parents:
diff changeset
   450
c68061d56109 201023_02
hgs
parents:
diff changeset
   451
TUint DRMEncryptor::EncryptL(TUint& aEncryptedCount, TUint& aRightsCount, TUint& aMessagesProcessed)
c68061d56109 201023_02
hgs
parents:
diff changeset
   452
    {
c68061d56109 201023_02
hgs
parents:
diff changeset
   453
    TInt i;
c68061d56109 201023_02
hgs
parents:
diff changeset
   454
    CDir* files;
c68061d56109 201023_02
hgs
parents:
diff changeset
   455
    TFileName input;
c68061d56109 201023_02
hgs
parents:
diff changeset
   456
    TFileName output;
c68061d56109 201023_02
hgs
parents:
diff changeset
   457
    TUint inputNameSize = 0;
c68061d56109 201023_02
hgs
parents:
diff changeset
   458
    TUint outputNameSize = 0;
c68061d56109 201023_02
hgs
parents:
diff changeset
   459
    RFs fs;
c68061d56109 201023_02
hgs
parents:
diff changeset
   460
    User::LeaveIfError(fs.Connect());
c68061d56109 201023_02
hgs
parents:
diff changeset
   461
    TInt aMultiplier(1);
c68061d56109 201023_02
hgs
parents:
diff changeset
   462
c68061d56109 201023_02
hgs
parents:
diff changeset
   463
c68061d56109 201023_02
hgs
parents:
diff changeset
   464
#ifdef __WINS__
c68061d56109 201023_02
hgs
parents:
diff changeset
   465
    input.Append(_L("c:\\data\\DRM\\"));
c68061d56109 201023_02
hgs
parents:
diff changeset
   466
    output.Append(_L("c:\\data\\Others\\"));
c68061d56109 201023_02
hgs
parents:
diff changeset
   467
#else
c68061d56109 201023_02
hgs
parents:
diff changeset
   468
#ifndef RD_MULTIPLE_DRIVE
c68061d56109 201023_02
hgs
parents:
diff changeset
   469
c68061d56109 201023_02
hgs
parents:
diff changeset
   470
    input.Append(_L("e:\\DRM\\"));
c68061d56109 201023_02
hgs
parents:
diff changeset
   471
    output.Append(_L("e:\\Others\\"));
c68061d56109 201023_02
hgs
parents:
diff changeset
   472
c68061d56109 201023_02
hgs
parents:
diff changeset
   473
#else //RD_MULTIPLE_DRIVE
c68061d56109 201023_02
hgs
parents:
diff changeset
   474
c68061d56109 201023_02
hgs
parents:
diff changeset
   475
    TInt driveNumber( -1 );
c68061d56109 201023_02
hgs
parents:
diff changeset
   476
    TChar driveLetter;
c68061d56109 201023_02
hgs
parents:
diff changeset
   477
    DriveInfo::GetDefaultDrive( DriveInfo::EDefaultMassStorage, driveNumber );
c68061d56109 201023_02
hgs
parents:
diff changeset
   478
    fs.DriveToChar( driveNumber, driveLetter );
c68061d56109 201023_02
hgs
parents:
diff changeset
   479
c68061d56109 201023_02
hgs
parents:
diff changeset
   480
    _LIT( KdrmDir, "%c:\\DRM\\" );
c68061d56109 201023_02
hgs
parents:
diff changeset
   481
    input.Format( KdrmDir, (TUint)driveLetter );
c68061d56109 201023_02
hgs
parents:
diff changeset
   482
c68061d56109 201023_02
hgs
parents:
diff changeset
   483
    _LIT( KothersDir, "%c:\\Others\\" );
c68061d56109 201023_02
hgs
parents:
diff changeset
   484
    output.Format( KothersDir, (TUint)driveLetter );
c68061d56109 201023_02
hgs
parents:
diff changeset
   485
c68061d56109 201023_02
hgs
parents:
diff changeset
   486
#endif
c68061d56109 201023_02
hgs
parents:
diff changeset
   487
#endif
c68061d56109 201023_02
hgs
parents:
diff changeset
   488
c68061d56109 201023_02
hgs
parents:
diff changeset
   489
    inputNameSize = input.Length();
c68061d56109 201023_02
hgs
parents:
diff changeset
   490
    outputNameSize = output.Length();
c68061d56109 201023_02
hgs
parents:
diff changeset
   491
c68061d56109 201023_02
hgs
parents:
diff changeset
   492
c68061d56109 201023_02
hgs
parents:
diff changeset
   493
    fs.MkDir(input);
c68061d56109 201023_02
hgs
parents:
diff changeset
   494
    fs.MkDir(output);
c68061d56109 201023_02
hgs
parents:
diff changeset
   495
c68061d56109 201023_02
hgs
parents:
diff changeset
   496
    fs.GetDir(input, KEntryAttNormal, ESortNone, files);
c68061d56109 201023_02
hgs
parents:
diff changeset
   497
    for (i = 0; i < files->Count(); i++)
c68061d56109 201023_02
hgs
parents:
diff changeset
   498
        {
c68061d56109 201023_02
hgs
parents:
diff changeset
   499
        input.Append((*files)[i].iName);
c68061d56109 201023_02
hgs
parents:
diff changeset
   500
c68061d56109 201023_02
hgs
parents:
diff changeset
   501
        output.Append((*files)[i].iName);
c68061d56109 201023_02
hgs
parents:
diff changeset
   502
c68061d56109 201023_02
hgs
parents:
diff changeset
   503
        if (input.Right(2).CompareF(_L("dm")) == 0)
c68061d56109 201023_02
hgs
parents:
diff changeset
   504
            {
c68061d56109 201023_02
hgs
parents:
diff changeset
   505
c68061d56109 201023_02
hgs
parents:
diff changeset
   506
            for(TInt ii = 0; ii < aMultiplier ; ++ii)
c68061d56109 201023_02
hgs
parents:
diff changeset
   507
                {
c68061d56109 201023_02
hgs
parents:
diff changeset
   508
                output.Delete(outputNameSize +(*files)[i].iName.Length() , output.Length()-1);
c68061d56109 201023_02
hgs
parents:
diff changeset
   509
                output.Append(_L("-"));
c68061d56109 201023_02
hgs
parents:
diff changeset
   510
                output.AppendNum(ii);
c68061d56109 201023_02
hgs
parents:
diff changeset
   511
                output.Append(_L(".dcf"));
c68061d56109 201023_02
hgs
parents:
diff changeset
   512
                ProcessMessageL(input, output);
c68061d56109 201023_02
hgs
parents:
diff changeset
   513
                ++aMessagesProcessed;
c68061d56109 201023_02
hgs
parents:
diff changeset
   514
                }
c68061d56109 201023_02
hgs
parents:
diff changeset
   515
            }
c68061d56109 201023_02
hgs
parents:
diff changeset
   516
        else if (input.Right(3).CompareF(_L("oro")) == 0 ||
c68061d56109 201023_02
hgs
parents:
diff changeset
   517
                input.Right(3).CompareF(_L("drc")) == 0 ||
c68061d56109 201023_02
hgs
parents:
diff changeset
   518
                input.Right(2).CompareF(_L("ro")) == 0 ||
c68061d56109 201023_02
hgs
parents:
diff changeset
   519
                input.Right(2).CompareF(_L("dr")) == 0 )
c68061d56109 201023_02
hgs
parents:
diff changeset
   520
            {
c68061d56109 201023_02
hgs
parents:
diff changeset
   521
            for (TInt iii = 0; iii < aMultiplier; ++iii)
c68061d56109 201023_02
hgs
parents:
diff changeset
   522
                {
c68061d56109 201023_02
hgs
parents:
diff changeset
   523
                ProcessRightsL(input);
c68061d56109 201023_02
hgs
parents:
diff changeset
   524
                ++aRightsCount;
c68061d56109 201023_02
hgs
parents:
diff changeset
   525
                }
c68061d56109 201023_02
hgs
parents:
diff changeset
   526
            }
c68061d56109 201023_02
hgs
parents:
diff changeset
   527
        else if (input.Right(3).CompareF(_L("dcf")) != 0)
c68061d56109 201023_02
hgs
parents:
diff changeset
   528
            {
c68061d56109 201023_02
hgs
parents:
diff changeset
   529
            output.Append(_L(".dcf"));
c68061d56109 201023_02
hgs
parents:
diff changeset
   530
            EncryptFileL(input, output, aMultiplier);
c68061d56109 201023_02
hgs
parents:
diff changeset
   531
            ++aEncryptedCount;
c68061d56109 201023_02
hgs
parents:
diff changeset
   532
            }
c68061d56109 201023_02
hgs
parents:
diff changeset
   533
c68061d56109 201023_02
hgs
parents:
diff changeset
   534
        //restore paths
c68061d56109 201023_02
hgs
parents:
diff changeset
   535
        input.Delete(inputNameSize, input.Length()-1);
c68061d56109 201023_02
hgs
parents:
diff changeset
   536
        output.Delete(outputNameSize, output.Length()-1);
c68061d56109 201023_02
hgs
parents:
diff changeset
   537
        }
c68061d56109 201023_02
hgs
parents:
diff changeset
   538
c68061d56109 201023_02
hgs
parents:
diff changeset
   539
    fs.Close();
c68061d56109 201023_02
hgs
parents:
diff changeset
   540
c68061d56109 201023_02
hgs
parents:
diff changeset
   541
    TRequestStatus status;
c68061d56109 201023_02
hgs
parents:
diff changeset
   542
    CDcfRep* rep = CDcfRep::NewL();
c68061d56109 201023_02
hgs
parents:
diff changeset
   543
    CleanupStack::PushL(rep);
c68061d56109 201023_02
hgs
parents:
diff changeset
   544
    rep->RefreshDcf(status);
c68061d56109 201023_02
hgs
parents:
diff changeset
   545
    User::WaitForRequest( status );
c68061d56109 201023_02
hgs
parents:
diff changeset
   546
    CleanupStack::PopAndDestroy( rep );
c68061d56109 201023_02
hgs
parents:
diff changeset
   547
c68061d56109 201023_02
hgs
parents:
diff changeset
   548
    delete files;
c68061d56109 201023_02
hgs
parents:
diff changeset
   549
c68061d56109 201023_02
hgs
parents:
diff changeset
   550
    return (aEncryptedCount*aMultiplier + aRightsCount + aMessagesProcessed);
c68061d56109 201023_02
hgs
parents:
diff changeset
   551
    
c68061d56109 201023_02
hgs
parents:
diff changeset
   552
    }
c68061d56109 201023_02
hgs
parents:
diff changeset
   553
c68061d56109 201023_02
hgs
parents:
diff changeset
   554
ContentAccess::CManager* GetCafDataL( TAgent& aAgent )
c68061d56109 201023_02
hgs
parents:
diff changeset
   555
    {
c68061d56109 201023_02
hgs
parents:
diff changeset
   556
    TPtr8 ptr(NULL, 0, 0);
c68061d56109 201023_02
hgs
parents:
diff changeset
   557
    RArray<TAgent> agents;
c68061d56109 201023_02
hgs
parents:
diff changeset
   558
    TRequestStatus status;
c68061d56109 201023_02
hgs
parents:
diff changeset
   559
    TInt i;
c68061d56109 201023_02
hgs
parents:
diff changeset
   560
c68061d56109 201023_02
hgs
parents:
diff changeset
   561
    CleanupClosePushL( agents );
c68061d56109 201023_02
hgs
parents:
diff changeset
   562
    CManager* manager = CManager::NewLC();
c68061d56109 201023_02
hgs
parents:
diff changeset
   563
c68061d56109 201023_02
hgs
parents:
diff changeset
   564
    manager->ListAgentsL( agents );
c68061d56109 201023_02
hgs
parents:
diff changeset
   565
c68061d56109 201023_02
hgs
parents:
diff changeset
   566
    for (i = 0; i < agents.Count(); i++)
c68061d56109 201023_02
hgs
parents:
diff changeset
   567
        {
c68061d56109 201023_02
hgs
parents:
diff changeset
   568
        if (agents[i].Name().Compare(KWmDrmAgentName) == 0)
c68061d56109 201023_02
hgs
parents:
diff changeset
   569
            {
c68061d56109 201023_02
hgs
parents:
diff changeset
   570
            aAgent = agents[i];
c68061d56109 201023_02
hgs
parents:
diff changeset
   571
            break;
c68061d56109 201023_02
hgs
parents:
diff changeset
   572
            }
c68061d56109 201023_02
hgs
parents:
diff changeset
   573
        }
c68061d56109 201023_02
hgs
parents:
diff changeset
   574
    CleanupStack::Pop( manager );
c68061d56109 201023_02
hgs
parents:
diff changeset
   575
    CleanupStack::PopAndDestroy(); // agents
c68061d56109 201023_02
hgs
parents:
diff changeset
   576
    return manager;
c68061d56109 201023_02
hgs
parents:
diff changeset
   577
    }
c68061d56109 201023_02
hgs
parents:
diff changeset
   578
c68061d56109 201023_02
hgs
parents:
diff changeset
   579
void DRMEncryptor::DeleteWmDrmRdbL()
c68061d56109 201023_02
hgs
parents:
diff changeset
   580
    {
c68061d56109 201023_02
hgs
parents:
diff changeset
   581
    // get the data part
c68061d56109 201023_02
hgs
parents:
diff changeset
   582
    ContentAccess::CManager* manager = NULL;
c68061d56109 201023_02
hgs
parents:
diff changeset
   583
    ContentAccess::TAgent agent;
c68061d56109 201023_02
hgs
parents:
diff changeset
   584
    TPtr8 ptr(NULL, 0, 0);
c68061d56109 201023_02
hgs
parents:
diff changeset
   585
    TPtrC8 ptr2;
c68061d56109 201023_02
hgs
parents:
diff changeset
   586
c68061d56109 201023_02
hgs
parents:
diff changeset
   587
    // Find the caf agent and create manager
c68061d56109 201023_02
hgs
parents:
diff changeset
   588
    manager = GetCafDataL( agent );
c68061d56109 201023_02
hgs
parents:
diff changeset
   589
    CleanupStack::PushL( manager );
c68061d56109 201023_02
hgs
parents:
diff changeset
   590
c68061d56109 201023_02
hgs
parents:
diff changeset
   591
    User::LeaveIfError(
c68061d56109 201023_02
hgs
parents:
diff changeset
   592
        manager->AgentSpecificCommand( agent,
c68061d56109 201023_02
hgs
parents:
diff changeset
   593
                                       (TInt)DRM::EWmDrmDeleteRights,
c68061d56109 201023_02
hgs
parents:
diff changeset
   594
                                       ptr2,
c68061d56109 201023_02
hgs
parents:
diff changeset
   595
                                       ptr) );
c68061d56109 201023_02
hgs
parents:
diff changeset
   596
    CleanupStack::PopAndDestroy( manager );
c68061d56109 201023_02
hgs
parents:
diff changeset
   597
    }
c68061d56109 201023_02
hgs
parents:
diff changeset
   598
c68061d56109 201023_02
hgs
parents:
diff changeset
   599
void DRMEncryptor::deleteWmDrmDB()
c68061d56109 201023_02
hgs
parents:
diff changeset
   600
    {
c68061d56109 201023_02
hgs
parents:
diff changeset
   601
    TRAPD(err, DeleteWmDrmRdbL());
c68061d56109 201023_02
hgs
parents:
diff changeset
   602
    if(!err)
c68061d56109 201023_02
hgs
parents:
diff changeset
   603
        {
c68061d56109 201023_02
hgs
parents:
diff changeset
   604
        QMessageBox::information(this, tr("WMDRM DB"),tr("DRM rights deleted."));
c68061d56109 201023_02
hgs
parents:
diff changeset
   605
        }
c68061d56109 201023_02
hgs
parents:
diff changeset
   606
    else
c68061d56109 201023_02
hgs
parents:
diff changeset
   607
        {
c68061d56109 201023_02
hgs
parents:
diff changeset
   608
        QMessageBox::information(this, tr("WMDRM DB"),tr("Error deleting WMDRM rights."));
c68061d56109 201023_02
hgs
parents:
diff changeset
   609
        }
c68061d56109 201023_02
hgs
parents:
diff changeset
   610
    }
49
69d8e75812b7 201025_01
hgs
parents: 48
diff changeset
   611
69d8e75812b7 201025_01
hgs
parents: 48
diff changeset
   612
void DRMEncryptor::launchBrowser()
69d8e75812b7 201025_01
hgs
parents: 48
diff changeset
   613
    {
69d8e75812b7 201025_01
hgs
parents: 48
diff changeset
   614
    /*_LIT( KTestDrmFile, "c:\\data\\others\\sd_water003.dcf" );
69d8e75812b7 201025_01
hgs
parents: 48
diff changeset
   615
    TInt urlLength = 256;
69d8e75812b7 201025_01
hgs
parents: 48
diff changeset
   616
    TFileName fileName(KTestDrmFile);
69d8e75812b7 201025_01
hgs
parents: 48
diff changeset
   617
    RFile file;
69d8e75812b7 201025_01
hgs
parents: 48
diff changeset
   618
    RFs fs;
69d8e75812b7 201025_01
hgs
parents: 48
diff changeset
   619
    
69d8e75812b7 201025_01
hgs
parents: 48
diff changeset
   620
    User::LeaveIfError(fs.Connect());
69d8e75812b7 201025_01
hgs
parents: 48
diff changeset
   621
    TInt result = 0;
69d8e75812b7 201025_01
hgs
parents: 48
diff changeset
   622
    
69d8e75812b7 201025_01
hgs
parents: 48
diff changeset
   623
    result = file.Open(fs, fileName, EFileRead | EFileShareReadersOrWriters);    
69d8e75812b7 201025_01
hgs
parents: 48
diff changeset
   624
    
69d8e75812b7 201025_01
hgs
parents: 48
diff changeset
   625
    CData* content = CData::NewLC( file, KDefaultContentObject, EPeek );
69d8e75812b7 201025_01
hgs
parents: 48
diff changeset
   626
    
69d8e75812b7 201025_01
hgs
parents: 48
diff changeset
   627
    HBufC* rightsIssuerBuf = HBufC::NewLC( urlLength ); // Content issuer max URL length
69d8e75812b7 201025_01
hgs
parents: 48
diff changeset
   628
    TPtr rightsIssuer(const_cast<TUint16*>(rightsIssuerBuf->Ptr()), 0, urlLength);
69d8e75812b7 201025_01
hgs
parents: 48
diff changeset
   629
    
69d8e75812b7 201025_01
hgs
parents: 48
diff changeset
   630
    // Get value of rights-issuer header field
69d8e75812b7 201025_01
hgs
parents: 48
diff changeset
   631
    TInt error = content->GetStringAttribute( ERightsIssuerUrl, rightsIssuer );
69d8e75812b7 201025_01
hgs
parents: 48
diff changeset
   632
    rightsIssuer.TrimAll();
69d8e75812b7 201025_01
hgs
parents: 48
diff changeset
   633
    
69d8e75812b7 201025_01
hgs
parents: 48
diff changeset
   634
    rightsIssuer.Insert(0, _L("http://"));
69d8e75812b7 201025_01
hgs
parents: 48
diff changeset
   635
    
69d8e75812b7 201025_01
hgs
parents: 48
diff changeset
   636
    HBufC* finalUrl = rightsIssuer.AllocLC();
69d8e75812b7 201025_01
hgs
parents: 48
diff changeset
   637
    
69d8e75812b7 201025_01
hgs
parents: 48
diff changeset
   638
    DRM::CDrmBrowserLauncher::LaunchUrlL(*finalUrl);
69d8e75812b7 201025_01
hgs
parents: 48
diff changeset
   639
69d8e75812b7 201025_01
hgs
parents: 48
diff changeset
   640
    CleanupStack::PopAndDestroy(3); // finalUrl, rightsIssuerBuf, content;*/
69d8e75812b7 201025_01
hgs
parents: 48
diff changeset
   641
    }
69d8e75812b7 201025_01
hgs
parents: 48
diff changeset
   642
48
c68061d56109 201023_02
hgs
parents:
diff changeset
   643
/*
c68061d56109 201023_02
hgs
parents:
diff changeset
   644
void DRMEncryptorsetDRMClock()
c68061d56109 201023_02
hgs
parents:
diff changeset
   645
{
c68061d56109 201023_02
hgs
parents:
diff changeset
   646
   
c68061d56109 201023_02
hgs
parents:
diff changeset
   647
  double value1 = ui->lineEdit->text().toDouble(&bOK1);
c68061d56109 201023_02
hgs
parents:
diff changeset
   648
   double value2 = ui->lineEdit_2->text().toDouble(&bOK2);
c68061d56109 201023_02
hgs
parents:
diff changeset
   649
c68061d56109 201023_02
hgs
parents:
diff changeset
   650
   ui->lineEdit_3->setText("");
c68061d56109 201023_02
hgs
parents:
diff changeset
   651
c68061d56109 201023_02
hgs
parents:
diff changeset
   652
   if(bOK1 && bOK2)
c68061d56109 201023_02
hgs
parents:
diff changeset
   653
   {
c68061d56109 201023_02
hgs
parents:
diff changeset
   654
       if(value2 != 0)
c68061d56109 201023_02
hgs
parents:
diff changeset
   655
       {
c68061d56109 201023_02
hgs
parents:
diff changeset
   656
           double result = value1 / value2;
c68061d56109 201023_02
hgs
parents:
diff changeset
   657
           ui->lineEdit_3->setText(QString::number(result));
c68061d56109 201023_02
hgs
parents:
diff changeset
   658
       }
c68061d56109 201023_02
hgs
parents:
diff changeset
   659
       else
c68061d56109 201023_02
hgs
parents:
diff changeset
   660
       {
c68061d56109 201023_02
hgs
parents:
diff changeset
   661
           box.setText("Et voi jakaa nollalla");
c68061d56109 201023_02
hgs
parents:
diff changeset
   662
           box.exec();
c68061d56109 201023_02
hgs
parents:
diff changeset
   663
       }
c68061d56109 201023_02
hgs
parents:
diff changeset
   664
   }
c68061d56109 201023_02
hgs
parents:
diff changeset
   665
   else
c68061d56109 201023_02
hgs
parents:
diff changeset
   666
   {
c68061d56109 201023_02
hgs
parents:
diff changeset
   667
       box.setText("Virheellinen syöte");
c68061d56109 201023_02
hgs
parents:
diff changeset
   668
       box.exec();
c68061d56109 201023_02
hgs
parents:
diff changeset
   669
   }
c68061d56109 201023_02
hgs
parents:
diff changeset
   670
}
c68061d56109 201023_02
hgs
parents:
diff changeset
   671
c68061d56109 201023_02
hgs
parents:
diff changeset
   672
 void DRMEncryptoronDateTimeChanged(const QDateTime & datetime )
c68061d56109 201023_02
hgs
parents:
diff changeset
   673
    {
c68061d56109 201023_02
hgs
parents:
diff changeset
   674
    
c68061d56109 201023_02
hgs
parents:
diff changeset
   675
    }
c68061d56109 201023_02
hgs
parents:
diff changeset
   676
*/
c68061d56109 201023_02
hgs
parents:
diff changeset
   677
c68061d56109 201023_02
hgs
parents:
diff changeset
   678
void DRMEncryptor::onTextChanged(const QString &)
c68061d56109 201023_02
hgs
parents:
diff changeset
   679
{
c68061d56109 201023_02
hgs
parents:
diff changeset
   680
    //ui->pushButton->setEnabled(ui->lineEdit->text() != "" && ui->lineEdit_2->text() != "");
c68061d56109 201023_02
hgs
parents:
diff changeset
   681
}
c68061d56109 201023_02
hgs
parents:
diff changeset
   682
c68061d56109 201023_02
hgs
parents:
diff changeset
   683
DateTimeDialog::DateTimeDialog()
c68061d56109 201023_02
hgs
parents:
diff changeset
   684
    {
c68061d56109 201023_02
hgs
parents:
diff changeset
   685
    //iLayout = new QHBoxLayout;
c68061d56109 201023_02
hgs
parents:
diff changeset
   686
    QGridLayout *layout = new QGridLayout;
c68061d56109 201023_02
hgs
parents:
diff changeset
   687
    layout->setAlignment(Qt::AlignCenter);
c68061d56109 201023_02
hgs
parents:
diff changeset
   688
    setLayout(layout);
c68061d56109 201023_02
hgs
parents:
diff changeset
   689
    
c68061d56109 201023_02
hgs
parents:
diff changeset
   690
    iDateEdit = new QDateTimeEdit(QDate::currentDate());
c68061d56109 201023_02
hgs
parents:
diff changeset
   691
    iDateEdit->setAlignment(Qt::AlignHCenter);
c68061d56109 201023_02
hgs
parents:
diff changeset
   692
    iDateEdit->setDisplayFormat("yyyy.mm.dd hh.mm.ss");
c68061d56109 201023_02
hgs
parents:
diff changeset
   693
    iDateEdit->setWindowTitle("Set DRM Clock yyyy.MM.dd hh.mm.ss");
c68061d56109 201023_02
hgs
parents:
diff changeset
   694
    QPushButton *okButton = new QPushButton("OK", this);
c68061d56109 201023_02
hgs
parents:
diff changeset
   695
    QPushButton *cancelButton = new QPushButton("Cancel", this);
c68061d56109 201023_02
hgs
parents:
diff changeset
   696
    
c68061d56109 201023_02
hgs
parents:
diff changeset
   697
    layout->addWidget(iDateEdit);
c68061d56109 201023_02
hgs
parents:
diff changeset
   698
    layout->addWidget(okButton);
c68061d56109 201023_02
hgs
parents:
diff changeset
   699
    layout->addWidget(cancelButton);
c68061d56109 201023_02
hgs
parents:
diff changeset
   700
    
c68061d56109 201023_02
hgs
parents:
diff changeset
   701
    connect(okButton, SIGNAL(clicked()), this, SLOT(setDRMClock()));
c68061d56109 201023_02
hgs
parents:
diff changeset
   702
    connect(cancelButton, SIGNAL(clicked()), this, SLOT(close()));
c68061d56109 201023_02
hgs
parents:
diff changeset
   703
    
c68061d56109 201023_02
hgs
parents:
diff changeset
   704
    //this->setLayout(iLayout);
c68061d56109 201023_02
hgs
parents:
diff changeset
   705
    okButton->show();
c68061d56109 201023_02
hgs
parents:
diff changeset
   706
    cancelButton->show();
c68061d56109 201023_02
hgs
parents:
diff changeset
   707
    this->show();
c68061d56109 201023_02
hgs
parents:
diff changeset
   708
    }
c68061d56109 201023_02
hgs
parents:
diff changeset
   709
c68061d56109 201023_02
hgs
parents:
diff changeset
   710
DateTimeDialog::~DateTimeDialog()
c68061d56109 201023_02
hgs
parents:
diff changeset
   711
    {
c68061d56109 201023_02
hgs
parents:
diff changeset
   712
    
c68061d56109 201023_02
hgs
parents:
diff changeset
   713
    }
c68061d56109 201023_02
hgs
parents:
diff changeset
   714
c68061d56109 201023_02
hgs
parents:
diff changeset
   715
void DateTimeDialog::setDRMClock()
c68061d56109 201023_02
hgs
parents:
diff changeset
   716
    {
49
69d8e75812b7 201025_01
hgs
parents: 48
diff changeset
   717
    DRM::CDrmServiceApi* service = NULL;
69d8e75812b7 201025_01
hgs
parents: 48
diff changeset
   718
    TBuf<5> buf;
69d8e75812b7 201025_01
hgs
parents: 48
diff changeset
   719
    TRAPD(err, service = DRM::CDrmServiceApi::NewL());
69d8e75812b7 201025_01
hgs
parents: 48
diff changeset
   720
    if(err!=KErrNone)
69d8e75812b7 201025_01
hgs
parents: 48
diff changeset
   721
        {
69d8e75812b7 201025_01
hgs
parents: 48
diff changeset
   722
        QMessageBox::information(this, tr("DRM Clock"),tr("Error creating CDrmServiceApi."));
69d8e75812b7 201025_01
hgs
parents: 48
diff changeset
   723
        buf.AppendNum(err);
69d8e75812b7 201025_01
hgs
parents: 48
diff changeset
   724
        QString string((QChar*)buf.Ptr(),buf.Length());
69d8e75812b7 201025_01
hgs
parents: 48
diff changeset
   725
        QMessageBox::information(this, tr("DRM Clock"),string);
69d8e75812b7 201025_01
hgs
parents: 48
diff changeset
   726
        delete service; // service
69d8e75812b7 201025_01
hgs
parents: 48
diff changeset
   727
        return;
69d8e75812b7 201025_01
hgs
parents: 48
diff changeset
   728
        }
69d8e75812b7 201025_01
hgs
parents: 48
diff changeset
   729
       
48
c68061d56109 201023_02
hgs
parents:
diff changeset
   730
    QString datetimeString = iDateEdit->dateTime().toString("yyyy.mm.dd hh.mm.ss");
c68061d56109 201023_02
hgs
parents:
diff changeset
   731
    
c68061d56109 201023_02
hgs
parents:
diff changeset
   732
    // datetime in format YYYYMMDD:HHMMSS for TTime
c68061d56109 201023_02
hgs
parents:
diff changeset
   733
    datetimeString.remove(QChar('.'));
c68061d56109 201023_02
hgs
parents:
diff changeset
   734
    datetimeString.replace(" ", ":");
c68061d56109 201023_02
hgs
parents:
diff changeset
   735
    datetimeString.append(".000000");
c68061d56109 201023_02
hgs
parents:
diff changeset
   736
    
c68061d56109 201023_02
hgs
parents:
diff changeset
   737
    TPtrC datetimePtr(reinterpret_cast<const TText*>(datetimeString.constData()));
49
69d8e75812b7 201025_01
hgs
parents: 48
diff changeset
   738
    HBufC *datetimeBuf = NULL;
69d8e75812b7 201025_01
hgs
parents: 48
diff changeset
   739
    TBuf<5> errorBuf;
69d8e75812b7 201025_01
hgs
parents: 48
diff changeset
   740
    TRAPD(errorCode, datetimeBuf = datetimePtr.AllocL());
69d8e75812b7 201025_01
hgs
parents: 48
diff changeset
   741
    if(errorCode!=KErrNone)
69d8e75812b7 201025_01
hgs
parents: 48
diff changeset
   742
        {
69d8e75812b7 201025_01
hgs
parents: 48
diff changeset
   743
        QMessageBox::information(this, tr("DRM Clock"),tr("Error in datetimePtr.AllocL."));
69d8e75812b7 201025_01
hgs
parents: 48
diff changeset
   744
        errorBuf.AppendNum(errorCode);
69d8e75812b7 201025_01
hgs
parents: 48
diff changeset
   745
        QString string((QChar*)buf.Ptr(),buf.Length());
69d8e75812b7 201025_01
hgs
parents: 48
diff changeset
   746
        QMessageBox::information(this, tr("DRM Clock"),string);
69d8e75812b7 201025_01
hgs
parents: 48
diff changeset
   747
        delete service;
69d8e75812b7 201025_01
hgs
parents: 48
diff changeset
   748
        delete datetimeBuf;
69d8e75812b7 201025_01
hgs
parents: 48
diff changeset
   749
        return;
69d8e75812b7 201025_01
hgs
parents: 48
diff changeset
   750
        }
69d8e75812b7 201025_01
hgs
parents: 48
diff changeset
   751
        
48
c68061d56109 201023_02
hgs
parents:
diff changeset
   752
    
c68061d56109 201023_02
hgs
parents:
diff changeset
   753
    TTime inputTime(*datetimeBuf);
c68061d56109 201023_02
hgs
parents:
diff changeset
   754
    TInt timezone = 0;
49
69d8e75812b7 201025_01
hgs
parents: 48
diff changeset
   755
    delete datetimeBuf;
48
c68061d56109 201023_02
hgs
parents:
diff changeset
   756
    
c68061d56109 201023_02
hgs
parents:
diff changeset
   757
    // Get secure time from service api to get timezone
c68061d56109 201023_02
hgs
parents:
diff changeset
   758
    DRMClock::ESecurityLevel level;
c68061d56109 201023_02
hgs
parents:
diff changeset
   759
    TInt error( KErrNone );
c68061d56109 201023_02
hgs
parents:
diff changeset
   760
c68061d56109 201023_02
hgs
parents:
diff changeset
   761
    TTime currentTime;
c68061d56109 201023_02
hgs
parents:
diff changeset
   762
    error = service->GetSecureTime(currentTime, timezone, level);
c68061d56109 201023_02
hgs
parents:
diff changeset
   763
    
c68061d56109 201023_02
hgs
parents:
diff changeset
   764
    if(error != KErrNone)
c68061d56109 201023_02
hgs
parents:
diff changeset
   765
        {
c68061d56109 201023_02
hgs
parents:
diff changeset
   766
        return;
c68061d56109 201023_02
hgs
parents:
diff changeset
   767
        }
c68061d56109 201023_02
hgs
parents:
diff changeset
   768
    
c68061d56109 201023_02
hgs
parents:
diff changeset
   769
    error = service->UpdateSecureTime(inputTime, timezone);
c68061d56109 201023_02
hgs
parents:
diff changeset
   770
    
c68061d56109 201023_02
hgs
parents:
diff changeset
   771
    if(error != KErrNone)
c68061d56109 201023_02
hgs
parents:
diff changeset
   772
        {
c68061d56109 201023_02
hgs
parents:
diff changeset
   773
        return;
c68061d56109 201023_02
hgs
parents:
diff changeset
   774
        }
c68061d56109 201023_02
hgs
parents:
diff changeset
   775
    
49
69d8e75812b7 201025_01
hgs
parents: 48
diff changeset
   776
    delete service;
48
c68061d56109 201023_02
hgs
parents:
diff changeset
   777
    
49
69d8e75812b7 201025_01
hgs
parents: 48
diff changeset
   778
    QMessageBox::information(this, tr("DRM Clock"),tr("DRM Clock Set"));
48
c68061d56109 201023_02
hgs
parents:
diff changeset
   779
    }
c68061d56109 201023_02
hgs
parents:
diff changeset
   780