initial commit
This commit is contained in:
@@ -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);
|
||||
}
|
||||
@@ -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
@@ -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
@@ -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
|
||||
|
||||
@@ -25,10 +25,12 @@ DEFINES += QT_DEPRECATED_WARNINGS
|
||||
CONFIG += c++11
|
||||
|
||||
SOURCES += \
|
||||
cfile.cpp \
|
||||
main.cpp \
|
||||
cmainwindow.cpp
|
||||
|
||||
HEADERS += \
|
||||
cfile.h \
|
||||
cmainwindow.h
|
||||
|
||||
FORMS += \
|
||||
|
||||
Reference in New Issue
Block a user