summaryrefslogtreecommitdiffstats
path: root/installerbuilder/libinstaller/kdtools/KDUpdater/environment.cpp
blob: c1ddc11f1453a13dad1587cb3e6f8d08c8f7fe9e (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
#include "environment.h"

#include <QHash>
#include <QProcess>
#include <QProcessEnvironment>

using namespace KDUpdater;

class Environment::Private {
public:
    static Environment* s_instance;
    QHash<QString, QString> tempValues;
};

Environment* Environment::Private::s_instance = 0;

Environment::Environment()
    : d( new Private )
{
}

Environment::~Environment() {
    delete d;
}

Environment* Environment::instance() {
    if ( !Private::s_instance )
        Private::s_instance = new Environment;
    return Private::s_instance;
}

QString Environment::value( const QString& key, const QString& defvalue ) const {
    const QHash<QString,QString>::ConstIterator it = d->tempValues.constFind( key );
    if ( it != d->tempValues.constEnd() )
        return *it;
    else
        return QProcessEnvironment::systemEnvironment().value( key, defvalue );
}

void Environment::setTemporaryValue( const QString& key, const QString& value ) {
    d->tempValues.insert( key, value );
}

QProcessEnvironment Environment::applyTo( const QProcessEnvironment& qpe_ ) const {
    QProcessEnvironment qpe( qpe_ );
    QHash<QString, QString>::ConstIterator it = d->tempValues.constBegin();
    const QHash<QString, QString>::ConstIterator end = d->tempValues.constEnd();
    for ( ; it != end; ++it )
        qpe.insert( it.key(), it.value() );
    return qpe;
}

void Environment::applyTo( QProcess* proc ) {
    proc->setProcessEnvironment( applyTo( proc->processEnvironment() ) );
}