File: RecordController.h

package info (click to toggle)
kwave 25.04.0-2
  • links: PTS, VCS
  • area: main
  • in suites: forky, sid, trixie
  • size: 23,272 kB
  • sloc: cpp: 56,173; xml: 817; perl: 688; sh: 57; makefile: 11
file content (133 lines) | stat: -rw-r--r-- 4,052 bytes parent folder | download
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
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
/*************************************************************************
     RecordController.h  -  controller/state matching for the audio recorder
                             -------------------
    begin                : Sat Oct 04 2003
    copyright            : (C) 2003 by Thomas Eschenbacher
    email                : Thomas.Eschenbacher@gmx.de
 ***************************************************************************/

/***************************************************************************
 *                                                                         *
 *   This program is free software; you can redistribute it and/or modify  *
 *   it under the terms of the GNU General Public License as published by  *
 *   the Free Software Foundation; either version 2 of the License, or     *
 *   (at your option) any later version.                                   *
 *                                                                         *
 ***************************************************************************/

#ifndef RECORD_CONTROLLER_H
#define RECORD_CONTROLLER_H

#include "config.h"

#include <QObject>

#include "RecordState.h"

namespace Kwave
{
    class RecordController: public QObject
    {
        Q_OBJECT
    public:

        /** Constructor */
        RecordController();

        /** Destructor */
        ~RecordController() override;

        /** returns the name of a state */
        const char *stateName(const Kwave::RecordState state);

    public slots:

        /**
         * Informs the controller whether the recording engine has been
         * successfully been initialized or recording cannot be started.
         * @param initialized if true, recording can be started
         */
        void setInitialized(bool initialized);

        /**
         *Informs the controller whether the signal is empty or not
         * @param empty if true, nothing has been recorded
         */
        void setEmpty(bool empty);

        /**
         * Enable the prerecording. Has to be called before any status
         * change to enable/disable the prerecording mode
         *
         * @param enable if true, enable prerecording
         */
        void enablePrerecording(bool enable);

        /** Clear all recorded data and prepare for new recording */
        void actionReset();

        /** Stop the recording */
        void actionStop();

        /** Pause the recording */
        void actionPause();

        /** Start the recording */
        void actionStart();

        /** The device has started recording */
        void deviceRecordStarted();

        /** The device buffer contains data */
        void deviceBufferFull();

        /** The record trigger has been reached */
        void deviceTriggerReached();

        /** The device has stopped recording */
        void deviceRecordStopped(int);

        /** The recording trigger has been enabled/disabled */
        void enableTrigger(bool enable);

    signals:

        /** emitted when the state of the recording changed */
        void stateChanged(Kwave::RecordState state);

        /** All recorded data has to be cleared */
        void sigReset(bool &accepted);

        /** Recording should start */
        void sigStartRecord();

        /** Recording should stop */
        void sigStopRecord(int errorcode);

    private:

        /** current state of the recording engine */
        Kwave::RecordState m_state;

        /**
         * state of the recording engine after finishing the last action, not
         * needed for all state changes.
         */
        Kwave::RecordState m_next_state;

        /** use a trigger */
        bool m_trigger_set;

        /** use prerecording */
        bool m_enable_prerecording;

        /** if true the current file is empty */
        bool m_empty;

    };
}

#endif /* RECORD_CONTROLLER_H */

//***************************************************************************
//***************************************************************************