aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--.github/workflows/release.yml2
-rw-r--r--README.md48
-rw-r--r--include/MainWindow.h2
-rw-r--r--include/gpg/GpgFileOpera.h37
-rw-r--r--include/ui/widgets/FilePage.h5
-rw-r--r--include/ui/widgets/TextEdit.h10
-rw-r--r--src/gpg/GpgFileOpera.cpp52
-rw-r--r--src/ui/main_window/MainWindowSlotFunction.cpp131
-rw-r--r--src/ui/main_window/MainWindowSlotUI.cpp8
-rw-r--r--src/ui/widgets/FilePage.cpp30
-rw-r--r--src/ui/widgets/TextEdit.cpp23
11 files changed, 250 insertions, 98 deletions
diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml
index 3553cbe6..553bd6d3 100644
--- a/.github/workflows/release.yml
+++ b/.github/workflows/release.yml
@@ -109,7 +109,7 @@ jobs:
# Build your program with the given configuration
run: |
cmake --build ${{github.workspace}}/build --config $env.BUILD_TYPE}} -- -j 3
- macdeployqt release/GpgFrontend.app
+ macdeployqt ${{github.workspace}}/build/release/GpgFrontend.app
if: matrix.os == 'macos-latest'
diff --git a/README.md b/README.md
index a03dc4af..ebc15fbc 100644
--- a/README.md
+++ b/README.md
@@ -59,13 +59,8 @@ the delivery process.**
## Features
- Can run on **Windows, Linux and macOS**.
-
- Open source, free, no need to install.
-
-- For Windows user, just double-click, and then you can use it freely.
-
-- For macOS and Linux user, just type few command before running it.
-
+- For Windows and macOS user, just double-click, and then you can use it freely.
- Supports multiple languages. Don’t forget to help me translate this software.
## Usage
@@ -95,29 +90,17 @@ awesome operations.
1. [Download](https://gnupg.org/ftp/gcrypt/binary/gnupg-w32-2.3.1_20210420.exe) gnupg-w32-******.exe
2. Double Click it to install it
-3. [Download](https://github.com/saturneric/GpgFrontend/releases) GpgFrontend Windows Edition
+3. [Download GpgFrontend](https://github.com/saturneric/GpgFrontend/releases) Windows Edition from release
4. Unzip gpgfrontend-windows-latest-*******.zip
-5. Go into the directory and double click gpgfrontend.exe
+5. Go into the directory and double click GpgFrontend.exe
#### macOS
-1. Install Homebrew [Here](https://brew.sh/) if you don't know it.
-2. Install gnupg
- ```shell
- % brew update
- % brew install gnupg qt@5 gpgme
- ```
-3. [Download](https://github.com/saturneric/GpgFrontend/releases) GpgFrontend macOS Edition
-4. Unzip GpgFrontend
-5. Get into folder and Give gpgfrontend permission to execute
- ```shell
- % cd gpgfrontend-macos-latest-*******/
- % chmod u+x gpgfrontend
- ```
-6. Just run it
- ```shell
- % ./gpgfrontend
- ```
+1. [Download GpgFrontend](https://github.com/saturneric/GpgFrontend/releases) macOS edition from release
+2. Double-Click GpgFrontend.dmg to load it
+3. Double click and run it
+ (due to macOS security policy, you may need a little more step).
+4. If it satisfies you, you can drag it into your Application folder.
#### Debian/Ubuntu/CentOS
@@ -125,22 +108,22 @@ awesome operations.
- For Debian/Ubuntu
```shell
$ sudo apt update
- $ sudo apt install gpg libgpgme11 qt-default
+ $ sudo apt install gpg qt-default
```
- For CentOS
```shell
- $ sudo yum install gnupg gpgme qt5-qtbase
+ $ sudo yum install gnupg qt5-qtbase
```
-2. [Download](https://github.com/saturneric/GpgFrontend/releases) GpgFrontend Linux Edition
-3. Unzip GpgFrontend
+2. [Download GpgFrontend](https://github.com/saturneric/GpgFrontend/releases) Linux edition from release
+3. Unzip gpgfrontend-ubuntu-latest-*******.zip
4. Get into folder and Give gpgfrontend permission to execute
```shell
$ cd gpgfrontend-ubuntu-latest-*******/
- $ chmod u+x gpgfrontend
+ $ chmod u+x GpgFrontend
```
5. Just run it
```shell
- $ ./gpgfrontend
+ $ ./GpgFrontend
```
## Document
@@ -199,5 +182,4 @@ mingw-w64: http://mingw-w64.org/doku.php
The icons of this software use materials from Alibaba vector icon library. The Alibaba vector icon library is free to
use. The icons in the free library aren't registered as trademarks. There is no copyright issue involved and can be used
-commercially.
-
+commercially. \ No newline at end of file
diff --git a/include/MainWindow.h b/include/MainWindow.h
index c5937e0d..efe56919 100644
--- a/include/MainWindow.h
+++ b/include/MainWindow.h
@@ -41,6 +41,8 @@
#include "gpg/result_analyse/EncryptResultAnalyse.h"
#include "gpg/result_analyse/DecryptResultAnalyse.h"
+#include "gpg/GpgFileOpera.h"
+
/**
* @brief
diff --git a/include/gpg/GpgFileOpera.h b/include/gpg/GpgFileOpera.h
new file mode 100644
index 00000000..c6b4aec8
--- /dev/null
+++ b/include/gpg/GpgFileOpera.h
@@ -0,0 +1,37 @@
+/**
+ * This file is part of GPGFrontend.
+ *
+ * GPGFrontend 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, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * Foobar 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 Foobar. If not, see <https://www.gnu.org/licenses/>.
+ *
+ * The initial version of the source code is inherited from gpg4usb-team.
+ * Their source code version also complies with GNU General Public License.
+ *
+ * The source code version of this software was modified and released
+ * by Saturneric<[email protected]> starting on May 12, 2021.
+ *
+ */
+
+#ifndef GPGFRONTEND_GPGFILEOPERA_H
+#define GPGFRONTEND_GPGFILEOPERA_H
+
+#include "GpgFrontend.h"
+#include "gpg/GpgContext.h"
+
+class GpgFileOpera {
+public:
+ static bool encryptFile(GpgME::GpgContext *ctx, QVector<GpgKey> &keys, const QString &mPath);
+};
+
+
+#endif //GPGFRONTEND_GPGFILEOPERA_H
diff --git a/include/ui/widgets/FilePage.h b/include/ui/widgets/FilePage.h
index 6585bed9..c343571d 100644
--- a/include/ui/widgets/FilePage.h
+++ b/include/ui/widgets/FilePage.h
@@ -33,7 +33,7 @@ public:
explicit FilePage(QWidget* parent = nullptr);
- void getSelected(QString &path);
+ QString getSelected() const;
private slots:
@@ -42,13 +42,16 @@ private slots:
void fileTreeViewItemDoubleClicked(const QModelIndex &index);
void slotUpLevel();
+ void slotGoPath();
private:
QFileSystemModel *dirModel;
QTreeView *dirTreeView;
+ QLineEdit *pathEdit;
QString mPath;
QPushButton *upLevelButton;
+ QPushButton *goPathButton;
};
diff --git a/include/ui/widgets/TextEdit.h b/include/ui/widgets/TextEdit.h
index f98da145..99b8bcc7 100644
--- a/include/ui/widgets/TextEdit.h
+++ b/include/ui/widgets/TextEdit.h
@@ -82,10 +82,16 @@ public:
public slots:
/**
- * @details Return pointer to the currently activated tabpage.
+ * @details Return pointer to the currently activated text edit tab page.
*
*/
- [[nodiscard]] EditorPage *slotCurPage() const;
+ [[nodiscard]] EditorPage *slotCurPageTextEdit() const;
+
+ /**
+ * @details Return pointer to the currently activated file treeview tab page.
+ *
+ */
+ [[nodiscard]] FilePage *slotCurPageFileTreeView() const;
/**
* @details Insert a ">" at the begining of every line of current textedit.
diff --git a/src/gpg/GpgFileOpera.cpp b/src/gpg/GpgFileOpera.cpp
new file mode 100644
index 00000000..c3a9b5d0
--- /dev/null
+++ b/src/gpg/GpgFileOpera.cpp
@@ -0,0 +1,52 @@
+/**
+ * This file is part of GPGFrontend.
+ *
+ * GPGFrontend 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, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * Foobar 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 Foobar. If not, see <https://www.gnu.org/licenses/>.
+ *
+ * The initial version of the source code is inherited from gpg4usb-team.
+ * Their source code version also complies with GNU General Public License.
+ *
+ * The source code version of this software was modified and released
+ * by Saturneric<[email protected]> starting on May 12, 2021.
+ *
+ */
+#include "gpg/GpgFileOpera.h"
+
+bool GpgFileOpera::encryptFile(GpgME::GpgContext *ctx, QVector<GpgKey> &keys, const QString &mPath) {
+
+ QFileInfo fileInfo(mPath);
+
+ if(!fileInfo.isFile() || !fileInfo.isReadable()) return false;
+
+ QFile infile;
+ infile.setFileName(mPath);
+ if (!infile.open(QIODevice::ReadOnly))
+ return false;
+
+ QByteArray inBuffer = infile.readAll();
+ auto *outBuffer = new QByteArray();
+ infile.close();
+
+ if (gpg_err_code(ctx->encrypt(keys, inBuffer, outBuffer, nullptr)) != GPG_ERR_NO_ERROR) return false;
+
+ QFile outfile(mPath + ".asc");
+
+ if (!outfile.open(QFile::WriteOnly))
+ return false;
+
+ QDataStream out(&outfile);
+ out.writeRawData(outBuffer->data(), outBuffer->length());
+ outfile.close();
+ return true;
+}
diff --git a/src/ui/main_window/MainWindowSlotFunction.cpp b/src/ui/main_window/MainWindowSlotFunction.cpp
index 60c33d83..dcfac10b 100644
--- a/src/ui/main_window/MainWindowSlotFunction.cpp
+++ b/src/ui/main_window/MainWindowSlotFunction.cpp
@@ -25,53 +25,57 @@
#include "MainWindow.h"
void MainWindow::slotEncrypt() {
- if (edit->tabCount() == 0 || edit->slotCurPage() == nullptr) {
- return;
- }
- QVector<GpgKey> keys;
- mKeyList->getCheckedKeys(keys);
+ if (edit->tabCount() == 0) return;
- if (keys.count() == 0) {
- QMessageBox::critical(nullptr, tr("No Key Selected"), tr("No Key Selected"));
- return;
- }
+ if(edit->slotCurPageTextEdit() != nullptr) {
- for (const auto &key : keys) {
- if (!GpgME::GpgContext::checkIfKeyCanEncr(key)) {
- QMessageBox::information(nullptr,
- tr("Invalid Operation"),
- tr("The selected key contains a key that does not actually have a encrypt function.<br/>")
- + tr("<br/>For example the Following Key: <br/>") + key.uids.first().uid);
+ QVector<GpgKey> keys;
+ mKeyList->getCheckedKeys(keys);
+
+ if (keys.count() == 0) {
+ QMessageBox::critical(nullptr, tr("No Key Selected"), tr("No Key Selected"));
return;
+ }
+
+ for (const auto &key : keys) {
+ if (!GpgME::GpgContext::checkIfKeyCanEncr(key)) {
+ QMessageBox::information(nullptr,
+ tr("Invalid Operation"),
+ tr("The selected key contains a key that does not actually have a encrypt usage.<br/>")
+ + tr("<br/>For example the Following Key: <br/>") + key.uids.first().uid);
+ return;
+ }
}
- }
- auto *tmp = new QByteArray();
+ auto *tmp = new QByteArray();
- gpgme_encrypt_result_t result = nullptr;
- auto error = mCtx->encrypt(keys, edit->curTextPage()->toPlainText().toUtf8(), tmp, &result);
+ gpgme_encrypt_result_t result = nullptr;
+ auto error = mCtx->encrypt(keys, edit->curTextPage()->toPlainText().toUtf8(), tmp, &result);
- auto resultAnalyse = new EncryptResultAnalyse(error, result);
- auto &reportText = resultAnalyse->getResultReport();
+ auto resultAnalyse = new EncryptResultAnalyse(error, result);
+ auto &reportText = resultAnalyse->getResultReport();
- auto *tmp2 = new QString(*tmp);
- edit->slotFillTextEditWithText(*tmp2);
- infoBoard->associateTextEdit(edit->curTextPage());
+ auto *tmp2 = new QString(*tmp);
+ edit->slotFillTextEditWithText(*tmp2);
+ infoBoard->associateTextEdit(edit->curTextPage());
- if (resultAnalyse->getStatus() < 0)
- infoBoard->slotRefresh(reportText, INFO_ERROR_CRITICAL);
- else if (resultAnalyse->getStatus() > 0)
- infoBoard->slotRefresh(reportText, INFO_ERROR_OK);
- else
- infoBoard->slotRefresh(reportText, INFO_ERROR_WARN);
+ if (resultAnalyse->getStatus() < 0)
+ infoBoard->slotRefresh(reportText, INFO_ERROR_CRITICAL);
+ else if (resultAnalyse->getStatus() > 0)
+ infoBoard->slotRefresh(reportText, INFO_ERROR_OK);
+ else
+ infoBoard->slotRefresh(reportText, INFO_ERROR_WARN);
- delete resultAnalyse;
+ delete resultAnalyse;
+ } else if(edit->slotCurPageFileTreeView() != nullptr) {
+ this->slotFileEncrypt();
+ }
}
void MainWindow::slotSign() {
- if (edit->tabCount() == 0 || edit->slotCurPage() == nullptr) {
+ if (edit->tabCount() == 0 || edit->slotCurPageTextEdit() == nullptr) {
return;
}
@@ -88,7 +92,7 @@ void MainWindow::slotSign() {
if (!GpgME::GpgContext::checkIfKeyCanSign(key)) {
QMessageBox::information(nullptr,
tr("Invalid Operation"),
- tr("The selected key contains a key that does not actually have a signature function.<br/>")
+ tr("The selected key contains a key that does not actually have a signature usage.<br/>")
+ tr("<br/>For example the Following Key: <br/>") + key.uids.first().uid);
return;
}
@@ -116,7 +120,7 @@ void MainWindow::slotSign() {
}
void MainWindow::slotDecrypt() {
- if (edit->tabCount() == 0 || edit->slotCurPage() == nullptr) {
+ if (edit->tabCount() == 0 || edit->slotCurPageTextEdit() == nullptr) {
return;
}
@@ -151,15 +155,15 @@ void MainWindow::slotFind() {
}
// At first close verifynotification, if existing
- edit->slotCurPage()->closeNoteByClass("findwidget");
+ edit->slotCurPageTextEdit()->closeNoteByClass("findwidget");
auto *fw = new FindWidget(this, edit->curTextPage());
- edit->slotCurPage()->showNotificationWidget(fw, "findWidget");
+ edit->slotCurPageTextEdit()->showNotificationWidget(fw, "findWidget");
}
void MainWindow::slotVerify() {
- if (edit->tabCount() == 0 || edit->slotCurPage() == nullptr) {
+ if (edit->tabCount() == 0 || edit->slotCurPageTextEdit() == nullptr) {
return;
}
@@ -198,7 +202,7 @@ void MainWindow::slotVerify() {
* Append the selected (not checked!) Key(s) To Textedit
*/
void MainWindow::slotAppendSelectedKeys() {
- if (edit->tabCount() == 0 || edit->slotCurPage() == nullptr) {
+ if (edit->tabCount() == 0 || edit->slotCurPageTextEdit() == nullptr) {
return;
}
@@ -245,9 +249,50 @@ void MainWindow::uploadKeyToServer() {
}
void MainWindow::slotFileEncrypt() {
- QStringList *keyList;
- keyList = mKeyList->getChecked();
- new FileEncryptionDialog(mCtx, *keyList, FileEncryptionDialog::Encrypt, this);
+
+ auto fileTreeView = edit->slotCurPageFileTreeView();
+ auto path = fileTreeView->getSelected();
+
+ QFileInfo fileInfo(path);
+ if(!fileInfo.isFile()) {
+ QMessageBox::critical(this, tr("Error"), tr("Can only encrypt a file."));
+ return;
+ }
+ if(!fileInfo.isReadable()) {
+ QMessageBox::critical(this, tr("Error"), tr("No permission to read this file."));
+ return;
+ }
+ if(QFile::exists(path + ".asc")) {
+ auto ret = QMessageBox::warning(this,
+ tr("Warning"),
+ tr("The target file already exists, do you need to overwrite it?"),
+ QMessageBox::Ok | QMessageBox::Cancel);
+
+ if(ret == QMessageBox::Cancel)
+ return;
+ }
+
+ QVector<GpgKey> keys;
+
+ mKeyList->getCheckedKeys(keys);
+
+ for (const auto &key : keys) {
+ if (!GpgME::GpgContext::checkIfKeyCanEncr(key)) {
+ QMessageBox::information(nullptr,
+ tr("Invalid Operation"),
+ tr("The selected key contains a key that does not actually have a encrypt usage.<br/>")
+ + tr("<br/>For example the Following Key: <br/>") + key.uids.first().uid);
+ return;
+
+ }
+ }
+
+ if(!GpgFileOpera::encryptFile(mCtx, keys, path)) {
+ QMessageBox::critical(this, tr("Error"), tr("An error occurred during operation."));
+ }
+
+ fileTreeView->update();
+
}
void MainWindow::slotFileDecrypt() {
@@ -270,7 +315,7 @@ void MainWindow::slotFileVerify() {
void MainWindow::slotEncryptSign() {
- if (edit->tabCount() == 0 || edit->slotCurPage() == nullptr) {
+ if (edit->tabCount() == 0 || edit->slotCurPageTextEdit() == nullptr) {
return;
}
@@ -320,7 +365,7 @@ void MainWindow::slotEncryptSign() {
void MainWindow::slotDecryptVerify() {
- if (edit->tabCount() == 0 || edit->slotCurPage() == nullptr) {
+ if (edit->tabCount() == 0 || edit->slotCurPageTextEdit() == nullptr) {
return;
}
diff --git a/src/ui/main_window/MainWindowSlotUI.cpp b/src/ui/main_window/MainWindowSlotUI.cpp
index 8ee09f64..cad8669a 100644
--- a/src/ui/main_window/MainWindowSlotUI.cpp
+++ b/src/ui/main_window/MainWindowSlotUI.cpp
@@ -63,7 +63,7 @@ void MainWindow::slotCheckAttachmentFolder() {
}
void MainWindow::slotImportKeyFromEdit() {
- if (edit->tabCount() == 0 || edit->slotCurPage() == 0) {
+ if (edit->tabCount() == 0 || edit->slotCurPageTextEdit() == 0) {
return;
}
@@ -163,7 +163,7 @@ void MainWindow::slotOpenSettingsDialog() {
}
void MainWindow::slotCleanDoubleLinebreaks() {
- if (edit->tabCount() == 0 || edit->slotCurPage() == nullptr) {
+ if (edit->tabCount() == 0 || edit->slotCurPageTextEdit() == nullptr) {
return;
}
@@ -173,7 +173,7 @@ void MainWindow::slotCleanDoubleLinebreaks() {
}
void MainWindow::slotAddPgpHeader() {
- if (edit->tabCount() == 0 || edit->slotCurPage() == nullptr) {
+ if (edit->tabCount() == 0 || edit->slotCurPageTextEdit() == nullptr) {
return;
}
@@ -187,7 +187,7 @@ void MainWindow::slotAddPgpHeader() {
void MainWindow::slotCutPgpHeader() {
- if (edit->tabCount() == 0 || edit->slotCurPage() == nullptr) {
+ if (edit->tabCount() == 0 || edit->slotCurPageTextEdit() == nullptr) {
return;
}
diff --git a/src/ui/widgets/FilePage.cpp b/src/ui/widgets/FilePage.cpp
index e3d73670..d1e04879 100644
--- a/src/ui/widgets/FilePage.cpp
+++ b/src/ui/widgets/FilePage.cpp
@@ -28,21 +28,28 @@ FilePage::FilePage(QWidget *parent) : QWidget(parent) {
qDebug() << "New File Page";
dirModel = new QFileSystemModel();
-
dirModel->setRootPath(QDir::currentPath());
dirTreeView = new QTreeView();
dirTreeView->setModel(dirModel);
dirTreeView->setAnimated(true);
dirTreeView->setIndentation(20);
- dirTreeView->setSortingEnabled(true);
dirTreeView->setRootIndex(dirModel->index(QDir::currentPath()));
upLevelButton = new QPushButton("UP Level");
connect(upLevelButton, SIGNAL(clicked(bool)), this, SLOT(slotUpLevel()));
+ goPathButton = new QPushButton("Go Path");
+ connect(goPathButton, SIGNAL(clicked(bool)), this, SLOT(slotGoPath()));
+
+ pathEdit = new QLineEdit();
+ pathEdit->setFixedWidth(520);
+ pathEdit->setText(dirModel->rootPath());
+
auto *menuLayout = new QHBoxLayout();
menuLayout->addWidget(upLevelButton);
+ menuLayout->addWidget(pathEdit);
+ menuLayout->addWidget(goPathButton);
menuLayout->addStretch(0);
auto *layout = new QVBoxLayout();
@@ -63,10 +70,11 @@ void FilePage::fileTreeViewItemClicked(const QModelIndex &index) {
void FilePage::slotUpLevel() {
QModelIndex currentRoot = dirTreeView->rootIndex();
- mPath = dirModel->fileInfo(currentRoot).absoluteFilePath();
+ mPath = dirModel->fileInfo(currentRoot.parent()).absoluteFilePath();
auto fileInfo = QFileInfo(mPath);
if(fileInfo.isDir() && fileInfo.isReadable() && fileInfo.isExecutable()) {
dirTreeView->setRootIndex(currentRoot.parent());
+ pathEdit->setText(mPath);
}
qDebug() << "Current Root mPath" << mPath;
}
@@ -76,13 +84,25 @@ void FilePage::fileTreeViewItemDoubleClicked(const QModelIndex &index) {
auto fileInfo = QFileInfo(mPath);
if(fileInfo.isDir() && fileInfo.isReadable() && fileInfo.isExecutable()) {
dirTreeView->setRootIndex(index);
+ pathEdit->setText(mPath);
}
qDebug() << "Index mPath" << mPath;
}
-void FilePage::getSelected(QString &path) {
+QString FilePage::getSelected() const {
QModelIndex index = dirTreeView->currentIndex();
QVariant data = dirTreeView->model()->data(index);
- path = data.toString();
qDebug() << "Target Path" << mPath;
+ return data.toString();
+}
+
+void FilePage::slotGoPath() {
+ qDebug() << "getSelected" << pathEdit->text();
+ auto fileInfo = QFileInfo(pathEdit->text());
+ if(fileInfo.isDir() && fileInfo.isReadable() && fileInfo.isExecutable()) {
+ qDebug() << "Set Path" << fileInfo.filePath();
+ dirTreeView->setRootIndex(dirModel->index(fileInfo.filePath()));
+ } else {
+ QMessageBox::critical(this, "Error", "The path is unprivileged or unreachable.");
+ }
}
diff --git a/src/ui/widgets/TextEdit.cpp b/src/ui/widgets/TextEdit.cpp
index 49049baa..00abe16f 100644
--- a/src/ui/widgets/TextEdit.cpp
+++ b/src/ui/widgets/TextEdit.cpp
@@ -108,11 +108,11 @@ void TextEdit::slotOpen() {
}
void TextEdit::slotSave() {
- if (tabWidget->count() == 0 || slotCurPage() == 0) {
+ if (tabWidget->count() == 0 || slotCurPageTextEdit() == 0) {
return;
}
- QString fileName = slotCurPage()->getFilePath();
+ QString fileName = slotCurPageTextEdit()->getFilePath();
if (fileName.isEmpty()) {
//QString docname = tabWidget->tabText(tabWidget->currentIndex());
@@ -131,7 +131,7 @@ bool TextEdit::saveFile(const QString &fileName) {
QFile file(fileName);
if (file.open(QIODevice::WriteOnly | QIODevice::Text)) {
- EditorPage *page = slotCurPage();
+ EditorPage *page = slotCurPageTextEdit();
QTextStream outputStream(&file);
QApplication::setOverrideCursor(Qt::WaitCursor);
@@ -158,11 +158,11 @@ bool TextEdit::saveFile(const QString &fileName) {
bool TextEdit::slotSaveAs() {
- if (tabWidget->count() == 0 || slotCurPage() == 0) {
+ if (tabWidget->count() == 0 || slotCurPageTextEdit() == 0) {
return true;
}
- EditorPage *page = slotCurPage();
+ EditorPage *page = slotCurPageTextEdit();
QString path;
if (page->getFilePath() != "") {
path = page->getFilePath();
@@ -178,7 +178,7 @@ bool TextEdit::slotSaveAs() {
void TextEdit::slotCloseTab() {
removeTab(tabWidget->currentIndex());
if (tabWidget->count() != 0) {
- slotCurPage()->getTextPage()->setFocus();
+ slotCurPageTextEdit()->getTextPage()->setFocus();
}
}
@@ -218,7 +218,7 @@ void TextEdit::removeTab(int index) {
*/
bool TextEdit::maybeSaveCurrentTab(bool askToSave) {
- EditorPage *page = slotCurPage();
+ EditorPage *page = slotCurPageTextEdit();
// if this page is no textedit, there should be nothing to save
if (page == nullptr) {
return true;
@@ -339,11 +339,16 @@ int TextEdit::tabCount() const {
return tabWidget->count();
}
-EditorPage *TextEdit::slotCurPage() const {
+EditorPage *TextEdit::slotCurPageTextEdit() const {
auto *curPage = qobject_cast<EditorPage *>(tabWidget->currentWidget());
return curPage;
}
+FilePage *TextEdit::slotCurPageFileTreeView() const {
+ auto *curPage = qobject_cast<FilePage *>(tabWidget->currentWidget());
+ return curPage;
+}
+
void TextEdit::slotQuote() const {
if (tabWidget->count() == 0 || curTextPage() == nullptr) {
return;
@@ -386,7 +391,7 @@ void TextEdit::loadFile(const QString &fileName) {
QApplication::setOverrideCursor(Qt::WaitCursor);
curTextPage()->setPlainText(in.readAll());
QApplication::restoreOverrideCursor();
- slotCurPage()->setFilePath(fileName);
+ slotCurPageTextEdit()->setFilePath(fileName);
tabWidget->setTabText(tabWidget->currentIndex(), strippedName(fileName));
file.close();
// statusBar()->showMessage(tr("File loaded"), 2000);