initial commit

This commit is contained in:
2019-08-13 13:40:13 +02:00
parent 510c67db58
commit 4e16931354
5 changed files with 247 additions and 6 deletions
+135
View File
@@ -0,0 +1,135 @@
#include "cfile.h"
#include <QFile>
#include <QTextStream>
cFile::cFile(const QString& dir, const QString& file, const QDateTime& dateTime, const qint64& size, QObject* parent) :
QObject(parent),
m_dir(dir),
m_file(file),
m_dateTime(dateTime),
m_size(size)
{
}
cFile::~cFile()
{
}
bool cFile::compare(const QString& dir, const QString& file, const QDateTime& dateTime, const qint64& size)
{
if(!dir.isNull() && dir != m_dir)
return(false);
if(!file.isNull() && file != m_file)
return(false);
if(!dateTime.isNull() && dateTime != m_dateTime)
return(false);
if(size != -1 && size != m_size)
return(false);
return(true);
}
QString cFile::dir()
{
return(m_dir);
}
QString cFile::file()
{
return(m_file);
}
QDateTime cFile::dateTime()
{
return(m_dateTime);
}
qint64 cFile::size()
{
return(m_size);
}
void cFileList::parseLine(const QString& curDir, const QString& line)
{
QString date;
QString time;
QString size;
QString file;
date = line.left(10);
time = line.mid(12, 5);
size = line.mid(17, 18);
file = line.mid(36);
size = size.replace("(", "").replace(")", "").replace(QChar(0xA0), "").replace(" ", "").replace(".", "");
QDateTime dateTime = QDateTime(QDate::fromString(date, "dd.MM.yyyy"), QTime::fromString(time, "hh:mm"));
add(curDir, file, dateTime, size.toLongLong(), false);
}
bool cFileList::load(const QString& file)
{
clear();
QFile inFile(file);
if(!inFile.open(QIODevice::ReadOnly))
return(false);
QTextStream in(&inFile);
QString curDir = "";
while(!in.atEnd())
{
QString line = in.readLine();
if(line.left(17) == " Volume in drive ")
continue;
else if(line.left(25) == " Volume Serial Number is ")
continue;
else if(line.isEmpty())
continue;
else if(line.left(4) == " ")
continue;
else if(line.contains("<DIR>"))
continue;
else if(line.left(14) == " Directory of ")
curDir = line.mid(14);
else
parseLine(curDir, line);
}
inFile.close();
return(true);
}
cFile* cFileList::add(const QString& dir, const QString& file, const QDateTime& dateTime, const qint64& size, bool search)
{
cFile* lpFile = nullptr;
if(search)
lpFile = find(dir, file, dateTime, size);
if(!lpFile)
{
lpFile = new cFile(dir, file, dateTime, size);
append(lpFile);
}
return(lpFile);
}
cFile* cFileList::find(const QString& dir, const QString& file, const QDateTime& dateTime, const qint64& size)
{
for(cFileList::iterator i = begin();i != end();i++)
{
cFile* lpFile = *i;
if(lpFile->compare(dir, file, dateTime, size))
return(lpFile);
}
return(nullptr);
}
+45
View File
@@ -0,0 +1,45 @@
#ifndef CFILE_H
#define CFILE_H
#include <QMetaType>
#include <QList>
#include <QString>
#include <QDateTime>
#include <QObject>
class cFile : public QObject
{
Q_OBJECT
public:
explicit cFile(const QString& dir, const QString& file, const QDateTime& dateTime, const qint64& size, QObject *parent = nullptr);
virtual ~cFile();
bool compare(const QString& dir, const QString& file, const QDateTime& dateTime, const qint64& size);
QString dir();
QString file();
QDateTime dateTime();
qint64 size();
private:
QString m_dir;
QString m_file;
QDateTime m_dateTime;
qint64 m_size;
};
Q_DECLARE_METATYPE(cFile*)
class cFileList : public QList<cFile*>
{
public:
bool load(const QString& file);
cFile* add(const QString& dir, const QString& file, const QDateTime& dateTime, const qint64& size, bool search = true);
cFile* find(const QString& dir, const QString& file, const QDateTime& dateTime, const qint64& size);
private:
void parseLine(const QString& curDir, const QString& line);
};
#endif // CFILE_H
+50 -2
View File
@@ -2,11 +2,31 @@
#include "ui_cmainwindow.h"
bool fileSort(cFile* file1, cFile* file2)
{
if(file1->dir().compare(file2->dir(), Qt::CaseInsensitive) < 0)
return(true);
if(file1->file().compare(file2->file(), Qt::CaseInsensitive) < 0)
return(true);
if(file1->dateTime() < file2->dateTime())
return(true);
if(file1->size() < file2->size())
return(true);
return(false);
}
cMainWindow::cMainWindow(QWidget *parent) :
QMainWindow(parent),
ui(new Ui::cMainWindow)
{
ui->setupUi(this);
m_lpLeftListModel = new QStandardItemModel(0, 1);
ui->m_lpLeftList->setModel(m_lpLeftListModel);
m_lpRightListModel = new QStandardItemModel(0, 1);
ui->m_lpRightList->setModel(m_lpRightListModel);
}
cMainWindow::~cMainWindow()
@@ -14,10 +34,38 @@ cMainWindow::~cMainWindow()
delete ui;
}
void cMainWindow::on_m_lpLoadListFromFileLeft_triggered(QAction *arg1)
void cMainWindow::on_m_lpLoadListFromFileLeft_clicked()
{
m_listLeft.load("C:\\Users\\VET0572\\Documents\\github\\build-dir2csv-Desktop_Qt_5_13_0_MinGW_64_bit-Release\\deploy\\photos.txt");
// std::sort(m_listLeft.begin(), m_listRight.end(), fileSort);
displayList(m_lpLeftListModel, m_listLeft);
}
void cMainWindow::on_m_lpLoadListFromFileRight_triggered(QAction *arg1)
void cMainWindow::on_m_lpLoadListFromFileRight_clicked()
{
m_listRight.load("C:\\Users\\VET0572\\Documents\\github\\build-dir2csv-Desktop_Qt_5_13_0_MinGW_64_bit-Release\\deploy\\photos1.txt");
// std::sort(m_listRight.begin(), m_listRight.end(), fileSort);
displayList(m_lpRightListModel, m_listRight);
}
void cMainWindow::displayList(QStandardItemModel* lpModel, cFileList& fileList)
{
lpModel->clear();
QStringList header;
header << "directory" << "file" << "date/time" << "size";
lpModel->setHorizontalHeaderLabels(header);
for(cFileList::iterator i = fileList.begin();i != fileList.end();i++)
{
QList<QStandardItem*> items;
cFile* lpFile = *i;
items.append(new QStandardItem(lpFile->dir()));
items.append(new QStandardItem(lpFile->file()));
items.append(new QStandardItem(lpFile->dateTime().toString()));
items.append(new QStandardItem(QString::number(lpFile->size())));
lpModel->appendRow(items);
}
}
+15 -4
View File
@@ -1,7 +1,13 @@
#ifndef CMAINWINDOW_H
#define CMAINWINDOW_H
#include "cfile.h"
#include <QMainWindow>
#include <QTreeView>
#include <QStandardItemModel>
namespace Ui {
class cMainWindow;
@@ -16,12 +22,17 @@ public:
~cMainWindow();
private slots:
void on_m_lpLoadListFromFileLeft_triggered(QAction *arg1);
void on_m_lpLoadListFromFileRight_triggered(QAction *arg1);
void on_m_lpLoadListFromFileLeft_clicked();
void on_m_lpLoadListFromFileRight_clicked();
private:
Ui::cMainWindow *ui;
Ui::cMainWindow* ui;
QStandardItemModel* m_lpLeftListModel;
QStandardItemModel* m_lpRightListModel;
cFileList m_listLeft;
cFileList m_listRight;
void displayList(QStandardItemModel* lpModel, cFileList& fileList);
};
#endif // CMAINWINDOW_H
+2
View File
@@ -25,10 +25,12 @@ DEFINES += QT_DEPRECATED_WARNINGS
CONFIG += c++11
SOURCES += \
cfile.cpp \
main.cpp \
cmainwindow.cpp
HEADERS += \
cfile.h \
cmainwindow.h
FORMS += \