aboutsummaryrefslogtreecommitdiff
path: root/src/qt_common/abstract/progress.h
blob: b6f2975c1eb074cc35142167da433ec7508cb828 (plain) (blame)
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
// SPDX-FileCopyrightText: Copyright 2026 Eden Emulator Project
// SPDX-License-Identifier: GPL-3.0-or-later

#pragma once

#include <memory>
#include <QObject>

namespace QtCommon::Frontend {

class QtProgressDialog : public QObject {
    Q_OBJECT
public:
    QtProgressDialog(const QString& labelText, const QString& cancelButtonText, int minimum,
                     int maximum, QObject* parent = nullptr, Qt::WindowFlags f = Qt::WindowFlags());

    virtual ~QtProgressDialog() = default;

    virtual bool wasCanceled() const = 0;
    virtual void setWindowModality(Qt::WindowModality modality) = 0;
    virtual void setMinimumDuration(int durationMs) = 0;
    virtual void setAutoClose(bool autoClose) = 0;
    virtual void setAutoReset(bool autoReset) = 0;

public slots:
    virtual void setTitle(QString title) = 0;
    virtual void setLabelText(QString text) = 0;
    virtual void setMinimum(int min) = 0;
    virtual void setMaximum(int max) = 0;
    virtual void setValue(int value) = 0;

    virtual bool close() = 0;
    virtual void show() = 0;
};

std::unique_ptr<QtProgressDialog> newProgressDialog(const QString& labelText,
                                                    const QString& cancelButtonText, int minimum,
                                                    int maximum,
                                                    Qt::WindowFlags f = Qt::WindowFlags());

QtProgressDialog* newProgressDialogPtr(const QString& labelText, const QString& cancelButtonText,
                                       int minimum, int maximum,
                                       Qt::WindowFlags f = Qt::WindowFlags());

} // namespace QtCommon::Frontend