1#pragma once
2
3/****************************************************************************************
4 ** GitQlient is an application to manage and operate one or several Git repositories. With
5 ** GitQlient you will be able to add commits, branches and manage all the options Git provides.
6 ** Copyright (C) 2021 Francesc Martinez
7 **
8 ** LinkedIn: www.linkedin.com/in/cescmm/
9 ** Web: www.francescmm.com
10 **
11 ** This library is free software; you can redistribute it and/or
12 ** modify it under the terms of the GNU Lesser General Public
13 ** License as published by the Free Software Foundation; either
14 ** version 2 of the License, or (at your option) any later version.
15 **
16 ** This program is distributed in the hope that it will be useful,
17 ** but WITHOUT ANY WARRANTY; without even the implied warranty of
18 ** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
19 ** Lesser General Public License for more details.
20 **
21 ** You should have received a copy of the GNU Lesser General Public
22 ** License along with this library; if not, write to the Free Software
23 ** Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
24 ***************************************************************************************/
25
26#include <QDialog>
27
28namespace Ui
29{
30class GitConfigDlg;
31}
32
33class GitBase;
34
35/*!
36 \brief The GitConfigDlg allows the user to configure the local and global user and email.
37
38*/
39class GitConfigDlg : public QDialog
40{
41 Q_OBJECT
42
43public:
44 /*!
45 \brief Default constructor.
46
47 \param git The git object to perform Git operations.
48 \param parent The parent widget if needed.
49 */
50 explicit GitConfigDlg(const QSharedPointer<GitBase> &git, QWidget *parent = nullptr);
51 /*!
52 \brief Destructor.
53
54 */
55 ~GitConfigDlg() override;
56
57 /**
58 * @brief Detects the press event to avoid closing the dialog when the Esc key is pressed.
59 *
60 * @param e The press event
61 */
62 void keyPressEvent(QKeyEvent *e) override;
63 /**
64 * @brief Detects the close event to filter the close event and only close the dialog if the user clicked on the
65 * button.
66 *
67 * @param e The close event
68 */
69 void closeEvent(QCloseEvent *e) override;
70 /**
71 * @brief Closes the dialog by user's action.
72 */
73 void close();
74
75private:
76 Ui::GitConfigDlg *ui;
77 QSharedPointer<GitBase> mGit;
78 bool mPrepareToClose = false;
79
80 /*!
81 \brief Validates the data input by the user and stores it if correct.
82
83 */
84 void accept() override;
85 /*!
86 \brief Copies the global settings into the local ones.
87
88 \param checkState The check state.
89 */
90 void copyGlobalSettings(int checkState);
91};
92