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 program 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 <QFrame>
27
28class FileDiffEditor;
29class Highlighter;
30
31class FileEditor : public QFrame
32{
33 Q_OBJECT
34
35signals:
36 void signalEditionClosed();
37
38public:
39 explicit FileEditor(bool highlighter = true, QWidget *parent = nullptr);
40
41 /**
42 * @brief editFile Shows the file edition window with the content of
43 * @p fileName loaded on it.
44 * @param fileName The full path of the file that will be opened.
45 */
46 void editFile(const QString &fileName);
47
48 /**
49 * @brief finishEdition Tells the widget to finish the edition. If there are changes the widget asks the user if they
50 * want to save them.
51 */
52 void finishEdition();
53
54 /**
55 * @brief saveFile Saves the current state of the file.
56 */
57 void saveFile();
58
59private:
60 FileDiffEditor *mFileEditor = nullptr;
61 Highlighter *mHighlighter = nullptr;
62 QString mFileName;
63 QString mLoadedContent;
64 bool isEditing = false;
65
66 /**
67 * @brief saveTextInFile Saves the current file.
68 * @param content The content of the editor to be stored in the file.
69 */
70 void saveTextInFile(const QString &content) const;
71};
72