summaryrefslogtreecommitdiffstats
path: root/src/logger.h
blob: c8d0076c21470b6dfedb4cd3e2aa90d7fe07f87a (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
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100


#ifndef LOGGER_H
#define LOGGER_H

#include <qobject.h>
#include <qstringlist.h>
#include <qdatetime.h>
#include <qfile.h>
#include <qtextstream.h>


/**
 * @short An item for every process that is logged
 * @author Daniel Faust <[email protected]>
 * @version 0.3
 */
class LoggerItem
{
public:
    /**
     * Constructor
     */
    LoggerItem();

    /**
     * Destructor
     */
    virtual ~LoggerItem();

    QString filename;
    int id;
    QStringList data;
    bool completed;
    int state; // 0 = ok, -1 = failed, 1 = other (soundKonverter)
    QTime time;
    QFile file;
    QTextStream textStream;

};


/**
 * @short All data about the processes are collected here
 * @author Daniel Faust <[email protected]>
 * @version 0.3
 */
class Logger : public QObject
{
    Q_OBJECT
public:
    /**
     * Constructor
     */
    Logger();

    /**
     * Destructor
     */
    virtual ~Logger();

    void cleanUp();

    /**
     * Creates a new logger item and returns the id of it, @p filename is added to the new logger item
     */
    int registerProcess( const QString& filename );

    /**
     * Adds the string @p data to the data of the logger item with id @p id
     */
    void log( int id, const QString& data );

    /**
     * Returns the logger item with id @p id
     */
    LoggerItem* getLog( int id );

    /**
     * Returns a list of all logger items
     */
    QValueList<LoggerItem*> getLogs();

private:
    /** the list of all logger items */
    QValueList<LoggerItem*> processes;

    /** returns an unused random id */
    int getNewID();

public slots:
    void processCompleted( int id, int state );

signals:
    void removedProcess( int id );
    void updateProcess( int id );

};

#endif // LOGGER_H