summaryrefslogtreecommitdiffstats
path: root/src/ifmedia/qifmediaindexercontrol.h
blob: a994bcebd1e8c5a341d921309801148043dbddc2 (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
// Copyright (C) 2021 The Qt Company Ltd.
// Copyright (C) 2019 Luxoft Sweden AB
// Copyright (C) 2018 Pelagicore AG
// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR LGPL-3.0-only OR GPL-2.0-only OR GPL-3.0-only

#ifndef QIFMEDIAINDEXERCONTROL_H
#define QIFMEDIAINDEXERCONTROL_H

#include <QtInterfaceFramework/QIfAbstractFeature>
#include <QtIfMedia/qtifmediaglobal.h>

QT_BEGIN_NAMESPACE

class QIfMediaIndexerControlPrivate;

class Q_QTIFMEDIA_EXPORT QIfMediaIndexerControl : public QIfAbstractFeature
{
    Q_OBJECT
    QML_NAMED_ELEMENT(MediaIndexerControl)

    Q_PROPERTY(qreal progress READ progress NOTIFY progressChanged FINAL)
    Q_PROPERTY(QIfMediaIndexerControl::State state READ state NOTIFY stateChanged FINAL)
public:

    enum State {
        Idle,
        Active,
        Paused,
        Error
    };
    Q_ENUM(State)

    explicit QIfMediaIndexerControl(QObject *parent = nullptr);

    qreal progress() const;
    QIfMediaIndexerControl::State state() const;

public Q_SLOTS:
    void pause();
    void resume();

Q_SIGNALS:
    void progressChanged(qreal progress);
    void stateChanged(QIfMediaIndexerControl::State state);

protected:
    QIfMediaIndexerControl(QIfMediaIndexerControlPrivate &dd, QObject *parent = nullptr);

    void connectToServiceObject(QIfServiceObject *serviceObject) override;
    void clearServiceObject() override;

private:
    Q_DECLARE_PRIVATE(QIfMediaIndexerControl)
    Q_PRIVATE_SLOT(d_func(), void onProgressChanged(qreal progress))
    Q_PRIVATE_SLOT(d_func(), void onStateChanged(QIfMediaIndexerControl::State state))
};

Q_QTIFMEDIA_EXPORT QDataStream &operator<<(QDataStream &out, QIfMediaIndexerControl::State var);
Q_QTIFMEDIA_EXPORT QDataStream &operator>>(QDataStream &in, QIfMediaIndexerControl::State &var);

QT_END_NAMESPACE

#endif // QIFMEDIAINDEXERCONTROL_H