bug resolved

This commit is contained in:
Daniel Tartavel 2023-05-01 14:27:20 +02:00
parent c811f3db4f
commit f882ca5e42
6 changed files with 67 additions and 115 deletions

View File

@ -1,6 +1,6 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE QtCreatorProject>
<!-- Written by QtCreator 9.0.1, 2023-04-26T19:42:50. -->
<!-- Written by QtCreator 9.0.1, 2023-05-01T14:24:07. -->
<qtcreator>
<data>
<variable>EnvironmentId</variable>

View File

@ -242,36 +242,37 @@ void MainWindow::quitApp()
void MainWindow::closeEvent (QCloseEvent *event)
{
QMessageBox msgBox;
QCheckBox *cb = new QCheckBox("Don't show this again ?");
QCheckBox *cb;
if (!event->spontaneous() || !isVisible())
return;
if (trayIcon->isVisible() and this->settings.value("CloseCheckbox").toBool() == false)
if (trayIcon->isVisible() and this->settings.value("CloseCheckbox").toBool() == false)
{
cb = new QCheckBox("Don't show this again ?");
msgBox.setWindowTitle(a.applicationName());
msgBox.setInformativeText(tr("The program will keep running in the "
"system tray. To terminate the program, "
"choose <b>Quit</b> in the context menu "
"of the system tray entry."));
msgBox.addButton(QMessageBox::Ok);
//msgBox.addButton(QMessageBox::No);
// msgBox.setDefaultButton(QMessageBox::Yes);
msgBox.setCheckBox(cb);
msgBox.exec();
msgBox.clickedButton();
// if response is yes then loading list
if (cb->isChecked())
{
msgBox.setWindowTitle(a.applicationName());
msgBox.setInformativeText(tr("The program will keep running in the "
"system tray. To terminate the program, "
"choose <b>Quit</b> in the context menu "
"of the system tray entry."));
msgBox.addButton(QMessageBox::Ok);
//msgBox.addButton(QMessageBox::No);
// msgBox.setDefaultButton(QMessageBox::Yes);
msgBox.setCheckBox(cb);
msgBox.exec();
msgBox.clickedButton();
// if response is yes then loading list
if (cb->isChecked())
{
this->settings.setValue("CloseCheckbox", true);
}
hide();
this->settings.setValue("CloseCheckbox", true);
}
hide();
//event->accept();
event->ignore();
}
//event->accept();
event->ignore();
}
}
// Populate treeview with list of files
@ -484,6 +485,7 @@ bool MainWindow::scanDir(QString server, int portN, QTreeWidgetItem *parent, QSt
QString filename;
QString fileType;
QString date;
QString dirName = "";
QProcess * myProcess;
QProcessEnvironment env = QProcessEnvironment::systemEnvironment();
bool isDir = false;
@ -493,6 +495,7 @@ bool MainWindow::scanDir(QString server, int portN, QTreeWidgetItem *parent, QSt
int nChild = 0;
bool r;
static uint looping;
QStringList dirs;
myProcess = new QProcess(this);
myProcess->setProcessChannelMode(QProcess::MergedChannels);
@ -556,7 +559,7 @@ bool MainWindow::scanDir(QString server, int portN, QTreeWidgetItem *parent, QSt
return false;
}
// extracting name, size and if is dir/file
// extracting name, size and is dir/file
line = line.simplified();
filename = line.section(" ", 4);
if (filename != '.')
@ -569,8 +572,8 @@ bool MainWindow::scanDir(QString server, int portN, QTreeWidgetItem *parent, QSt
{
size = sizeA.at(0) + " " + UnitText[0] + " ";
}else
{ myProcess->setProcessEnvironment(env);
{
myProcess->setProcessEnvironment(env);
size = sizeA.at(0) + "," + sizeA.at(1).left(2) + " " + UnitText[sizeA.count()-1] + " ";
}
@ -581,9 +584,19 @@ bool MainWindow::scanDir(QString server, int portN, QTreeWidgetItem *parent, QSt
{
isDir = false;
}
date = line.section(' ', 2, 2);
fileType = getFileType(filename);
addTreeItem(filename, size, fullsize, fileType, date, isDir, parent);
if (!path.isEmpty())
{
if (path.endsWith('/'))
{
path.chop(1);
}
dirs = path.split('/');
dirName = dirs[dirs.size()-1];
}
addTreeItem(filename, size, fullsize, fileType, date, isDir, dirName, parent);
if (passwdOk == false and !this->connexion.password.isEmpty())
{
this->settings.setValue("Passwords/" + this->connexion.server + "/" + this->connexion.service + "/" + this->connexion.user, true);
@ -710,9 +723,9 @@ void MainWindow::on_connectButton_clicked()
}
// add parent in treeview
void MainWindow::addTreeItem(QString name, QString fileSize, QString fullsize, QString type, QString date, bool isDir=false, QTreeWidgetItem *parent=nullptr)
void MainWindow::addTreeItem(QString name, QString fileSize, QString fullsize, QString type, QString date, bool isDir=false, QString dirName="", QTreeWidgetItem *parent=nullptr)
{
QFont * font = new QFont();
QFont font;
QTreeWidgetItem *treeItem;
if (parent != nullptr)
@ -722,6 +735,20 @@ void MainWindow::addTreeItem(QString name, QString fileSize, QString fullsize, Q
{
treeItem = new QTreeWidgetItem(ui->treeWidget);
}
// item is a file
if (QFile::exists(this->downloading.savePath + "/" + name) or QFile::exists(this->downloading.savePath + "/" + dirName + "/" + name))
{
QBrush b (Qt::green);
treeItem->setForeground(0, b);
treeItem->setFont(0, font);
}else if (this->settings.contains(name))
{
QBrush b (Qt::red);
treeItem->setForeground(0, b);
treeItem->setFont(0, font);
}
if (isDir == true)
{
// item is a dir
@ -729,23 +756,8 @@ void MainWindow::addTreeItem(QString name, QString fileSize, QString fullsize, Q
treeItem->setIcon(0, QIcon::fromTheme("folder"));
}else
{
// item is a file
if (QFile::exists(this->downloading.savePath + "/" + name))
{
QBrush b (Qt::green);
treeItem->setForeground(0, b);
treeItem->setFont(0, *font);
}else
{
this->settings.beginGroup("Downloaded/");
if (this->settings.contains(name))
{
QBrush b (Qt::red);
treeItem->setForeground(0, b);
treeItem->setFont(0, *font);
}
this->settings.endGroup();
}
this->settings.beginGroup("Downloaded/");
this->settings.endGroup();
treeItem->setText(1,type);
}
treeItem->setText(0, name);
@ -1401,3 +1413,4 @@ void MainWindow::on_actionHiddenService_triggered()
preparePopulateTree();
}
}

View File

@ -120,15 +120,17 @@ class MainWindow : public QMainWindow
bool rescan = false;
bool stopDlAsked;
QList<QString> UnitText {
QList<QString> UnitText
{
tr("B"),
tr("KB"),
tr("MB"),
tr("GB"),
tr("TB"),
tr("PB")
};
QList<QChar> bwUnitChar{
};
QList<QChar> bwUnitChar
{
'K',
'M',
'T',
@ -152,7 +154,7 @@ class MainWindow : public QMainWindow
void listServices();
bool validateServer(QString server);
bool isIpAddress(QString server);
void addTreeItem(QString name, QString fileSize, QString fullsize, QString type, QString date, bool isDir, QTreeWidgetItem *parent);
void addTreeItem(QString name, QString fileSize, QString fullsize, QString type, QString date, bool isDir, QString dirName, QTreeWidgetItem *parent);
bool scanDir(QString server, int portN, QTreeWidgetItem *parent = NULL, QString path = "" );
void startDownloading();
void loadSettings();
@ -199,8 +201,6 @@ class MainWindow : public QMainWindow
void on_actionDownload_triggered();
//void downloadingErrorSlot(QString);
void on_comboBox_currentIndexChanged(int index);
void on_buttonBox_accepted();

View File

@ -10,26 +10,4 @@ extern QApplication a;
void setPassword(QString account, QString pass);
QString getPassword(const QString& name);
/*class Password : QObject
{
public:
QString appName;
QKeychain::WritePasswordJob * passwdJob;
QKeychain::ReadPasswordJob * readPass;
MainWindow * mw;
QString password;
QSettings passwdSettings{a.applicationName(),a.applicationName()};
Password();
~Password();
void store(QString, QString);
QString read(QString);
bool remove(QString);
private slots:
void storeFinished();
void readFinished();
};*/
#endif // PASSWORD_H

View File

@ -8,42 +8,6 @@ using namespace std;
extern QMap<int, QString> rsyncErrorStrings;
extern QApplication a;
//Take a string and explode it in array
// s => string to explode
// c => character separator
// n => number of results in array, the last is the rest of string to end
const vector<string> explode(const string& s, const char& c, int n = 0)
{
string buff;
vector<string> v;
size_t pos = 0;
size_t ppos = 0;
int i = 0;
while (i < n - 1)
{
pos = s.find(c, ppos);
if (pos != string::npos)
{
buff = s.substr(ppos, pos - ppos);
if (buff != "")
{
i++;
v.push_back(s.substr(ppos, pos - ppos));
}
ppos = pos + 1;
}else
{
break;
}
}
if (ppos < s.size())
{
v.push_back(s.substr(ppos));
}
return v;
}
// test return code of rsync
// return true in case of error
bool testRsyncReturn(MainWindow * w, QProcess * myProcess)

View File

@ -1,7 +1,6 @@
#ifndef TOOLS_H
#define TOOLS_H
//#include "mainwindow.h"
#include <string>
#include <vector>
#include <array>
@ -14,8 +13,6 @@
using namespace std;
const vector<string> explode(const string& s, const char& c, int n);
FILE * popen2(array<string,8> argv, string type, int & pid);
int pclose2(FILE * fp, pid_t pid);