summaryrefslogtreecommitdiff
path: root/src/VBox/Frontends/VirtualBox/src/settings/editors/UIDiskEncryptionSettingsEditor.h
blob: a6e7c3b3213f9e887f512428383f71589ee6533c (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
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
134
135
136
/* $Id$ */
/** @file
 * VBox Qt GUI - UIDiskEncryptionSettingsEditor class declaration.
 */

/*
 * Copyright (C) 2006-2022 Oracle and/or its affiliates.
 *
 * This file is part of VirtualBox base platform packages, as
 * available from https://www.virtualbox.org.
 *
 * 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, in version 3 of the
 * License.
 *
 * This program is distributed in the hope that it will be useful, but
 * WITHOUT ANY WARRANTY; without even the implied warranty of
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
 * General Public License for more details.
 *
 * You should have received a copy of the GNU General Public License
 * along with this program; if not, see <https://www.gnu.org/licenses>.
 *
 * SPDX-License-Identifier: GPL-3.0-only
 */

#ifndef FEQT_INCLUDED_SRC_settings_editors_UIDiskEncryptionSettingsEditor_h
#define FEQT_INCLUDED_SRC_settings_editors_UIDiskEncryptionSettingsEditor_h
#ifndef RT_WITHOUT_PRAGMA_ONCE
# pragma once
#endif

/* GUI includes: */
#include "QIWithRetranslateUI.h"

/* COM includes: */
#include "UIExtraDataDefs.h"

/* Forward declarations: */
class QCheckBox;
class QComboBox;
class QLabel;
class QLineEdit;
class QWidget;

/** QWidget subclass used as a disk encryption settings editor. */
class SHARED_LIBRARY_STUFF UIDiskEncryptionSettingsEditor : public QIWithRetranslateUI<QWidget>
{
    Q_OBJECT;

signals:

    /** Notify listeners about status changed. */
    void sigStatusChanged();
    /** Notify listeners about cipher changed. */
    void sigCipherChanged();
    /** Notify listeners about password changed. */
    void sigPasswordChanged();

public:

    /** Constructs editor passing @a pParent to the base-class. */
    UIDiskEncryptionSettingsEditor(QWidget *pParent = 0);

    /** Defines whether feature is @a fEnabled. */
    void setFeatureEnabled(bool fEnabled);
    /** Returns whether feature is enabled. */
    bool isFeatureEnabled() const;

    /** Defines cipher @a enmType. */
    void setCipherType(const UIDiskEncryptionCipherType &enmType);
    /** Returns cipher type. */
    UIDiskEncryptionCipherType cipherType() const;

    /** Returns password 1. */
    QString password1() const;
    /** Returns password 2. */
    QString password2() const;

protected:

    /** Handles translation event. */
    virtual void retranslateUi() RT_OVERRIDE;

private slots:

    /** Handles whether VRDE is @a fEnabled. */
    void sltHandleFeatureToggled(bool fEnabled);

private:

    /** Prepares all. */
    void prepare();
    /** Prepares widgets. */
    void prepareWidgets();
    /** Prepares connections. */
    void prepareConnections();

    /** Repopulates combo-box. */
    void repopulateCombo();

    /** @name Values
     * @{ */
        /** Holds whether feature is enabled. */
        bool                        m_fFeatureEnabled;
        /** Holds the cipher type. */
        UIDiskEncryptionCipherType  m_enmCipherType;
        /** Holds the password 1. */
        QString                     m_strPassword1;
        /** Holds the password 2. */
        QString                     m_strPassword2;
    /** @} */

    /** @name Widgets
     * @{ */
        /** Holds the feature check-box instance. */
        QCheckBox *m_pCheckboxFeature;
        /** Holds the settings widget instance. */
        QWidget   *m_pWidgetSettings;
        /** Holds the cipher type label instance. */
        QLabel    *m_pLabelCipherType;
        /** Holds the cipher type combo instance. */
        QComboBox *m_pComboCipherType;
        /** Holds the password 1 label instance. */
        QLabel    *m_pLabelPassword1;
        /** Holds the password 1 editor instance. */
        QLineEdit *m_pEditorPassword1;
        /** Holds the password 2 label instance. */
        QLabel    *m_pLabelPassword2;
        /** Holds the password 2 editor instance. */
        QLineEdit *m_pEditorPassword2;
    /** @} */
};

#endif /* !FEQT_INCLUDED_SRC_settings_editors_UIDiskEncryptionSettingsEditor_h */