e5fcad3 by Lars Knoll at 2009-03-23 1
/****************************************************************************
2
**
da19e7f by Jason McDonald at 2010-01-06 3
** Copyright (C) 2010 Nokia Corporation and/or its subsidiary(-ies).
04e3b30 by Jason McDonald at 2009-09-09 4
** All rights reserved.
858c70f by Jason McDonald at 2009-06-16 5
** Contact: Nokia Corporation (qt-info@nokia.com)
e5fcad3 by Lars Knoll at 2009-03-23 6
**
7
** This file is part of the demonstration applications of the Qt Toolkit.
8
**
9
** $QT_BEGIN_LICENSE:LGPL$
10
** No Commercial Usage
11
** This file contains pre-release code and may not be distributed.
12
** You may use this file in accordance with the terms and conditions
309db73 by Jason McDonald at 2009-08-31 13
** contained in the Technology Preview License Agreement accompanying
14
** this package.
e5fcad3 by Lars Knoll at 2009-03-23 15
**
16
** GNU Lesser General Public License Usage
17
** Alternatively, this file may be used under the terms of the GNU Lesser
18
** General Public License version 2.1 as published by the Free Software
19
** Foundation and appearing in the file LICENSE.LGPL included in the
20
** packaging of this file.  Please review the following information to
21
** ensure the GNU Lesser General Public License version 2.1 requirements
22
** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
23
**
04e3b30 by Jason McDonald at 2009-09-09 24
** In addition, as a special exception, Nokia gives you certain additional
25
** rights.  These rights are described in the Nokia Qt LGPL Exception
26
** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
e5fcad3 by Lars Knoll at 2009-03-23 27
**
309db73 by Jason McDonald at 2009-08-31 28
** If you have questions regarding the use of this file, please contact
29
** Nokia at qt-info@nokia.com.
30
**
31
**
32
**
33
**
34
**
35
**
36
**
e5fcad3 by Lars Knoll at 2009-03-23 37
**
38
** $QT_END_LICENSE$
39
**
40
****************************************************************************/
41
42
#include <QDebug>
43
#include <QDir>
309db73 by Jason McDonald at 2009-08-31 44
e5fcad3 by Lars Knoll at 2009-03-23 45
#include "demoapplication.h"
46
47
48
49
DemoApplication::DemoApplication(QString executableName, QString caption, QString imageName, QStringList args)
50
{
51
    imagePath = imageName;
52
    appCaption = caption;
53
54
    if (executableName[0] == QLatin1Char('/'))
55
        executablePath = executableName;
56
    else
57
        executablePath = QDir::cleanPath(QDir::currentPath() + QLatin1Char('/') + executableName);
58
  
59
    arguments = args;
60
61
    process.setProcessChannelMode(QProcess::ForwardedChannels);
62
9a0f7a1 by Olivier Goffart at 2009-11-18 63
    QObject::connect( &process, SIGNAL(finished(int,QProcess::ExitStatus)), 
64
                      this, SLOT(processFinished(int,QProcess::ExitStatus)));
e5fcad3 by Lars Knoll at 2009-03-23 65
66
    QObject::connect( &process, SIGNAL(error(QProcess::ProcessError)), 
67
                      this, SLOT(processError(QProcess::ProcessError)));
68
69
    QObject::connect( &process, SIGNAL(started()), this, SLOT(processStarted()));
70
}
71
72
73
void DemoApplication::launch()
74
{
75
    process.start(executablePath, arguments);
76
}
77
78
QImage* DemoApplication::getImage()
79
{
80
    return new QImage(imagePath);
81
}
82
83
QString DemoApplication::getCaption()
84
{
85
    return appCaption;
86
}
87
88
void DemoApplication::processFinished(int exitCode, QProcess::ExitStatus exitStatus)
89
{
90
    Q_UNUSED(exitCode);
91
    Q_UNUSED(exitStatus);
92
93
    emit demoFinished();
94
95
    QObject::disconnect(this, SIGNAL(demoStarted()), 0, 0);
96
    QObject::disconnect(this, SIGNAL(demoFinished()), 0, 0);
97
}
98
99
void DemoApplication::processError(QProcess::ProcessError err)
100
{
101
    qDebug() << "Process error: " << err;
102
    if (err == QProcess::Crashed)
103
        emit demoFinished();
104
}
105
106
107
void DemoApplication::processStarted()
108
{
109
    emit demoStarted();
110
}
111
112
113
114
115
116