aboutsummaryrefslogtreecommitdiffstats
path: root/src/plugins/cpaster/pasteview.h
blob: 108e888151569473369b3e023914096026e9a659 (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
// Copyright (C) 2016 The Qt Company Ltd.
// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR GPL-3.0+ OR GPL-3.0 WITH Qt-GPL-exception-1.0

#pragma once

#include <splitter.h>

#include <QDialog>

QT_BEGIN_NAMESPACE
class QComboBox;
class QLineEdit;
class QListWidget;
class QPlainTextEdit;
class QSpinBox;
class QStackedWidget;
class QTextEdit;
QT_END_NAMESPACE

namespace CodePaster {

class ColumnIndicatorTextEdit;
class Protocol;

class PasteView : public QDialog
{
    Q_OBJECT

public:
    enum Mode
    {
        // Present a list of read-only diff chunks which the user can check for inclusion
        DiffChunkMode,
        // Present plain, editable text.
        PlainTextMode
    };

    explicit PasteView(const QList<Protocol *> &protocols,
                       const QString &mimeType,
                       QWidget *parent);
    ~PasteView() override;

    // Show up with checkable list of diff chunks.
    int show(const QString &user, const QString &description, const QString &comment,
             int expiryDays, const FileDataList &parts);
    // Show up with editable plain text.
    int show(const QString &user, const QString &description, const QString &comment,
             int expiryDays, const QString &content);

    void setProtocol(const QString &protocol);

    QString user() const;
    QString description() const;
    QString comment() const;
    QString content() const;
    int protocol() const;
    void setExpiryDays(int d);
    int expiryDays() const;

    void accept() override;

private:
    void contentChanged();
    void protocolChanged(int);

    void setupDialog(const QString &user, const QString &description, const QString &comment);
    int showDialog();

    const QList<Protocol *> m_protocols;
    const QString m_commentPlaceHolder;
    const QString m_mimeType;

    QComboBox *m_protocolBox;
    QSpinBox *m_expirySpinBox;
    QLineEdit *m_uiUsername;
    QLineEdit *m_uiDescription;
    QTextEdit *m_uiComment;
    QStackedWidget *m_stackedWidget;
    QListWidget *m_uiPatchList;
    ColumnIndicatorTextEdit *m_uiPatchView;
    QPlainTextEdit *m_plainTextEdit;
    FileDataList m_parts;
    Mode m_mode = DiffChunkMode;
};

} // namespace CodePaster