DrewTechs
3 years ago
4 changed files with 335 additions and 0 deletions
@ -0,0 +1,37 @@ |
|||
/* DrewTechs
|
|||
* Note Binder |
|||
* @Version 1.0 |
|||
*/ |
|||
|
|||
#ifndef NOTEBOOKLIST_H |
|||
#define NOTEBOOKLIST_H |
|||
|
|||
#include <QObject> |
|||
#include <QVector> |
|||
#include <QWidget> |
|||
#include <QTreeWidget> |
|||
#include "notebook.h" |
|||
#include "notebookmanager.h" |
|||
#include "newNotebookDialog.h" |
|||
|
|||
class NotebookList : public QObject |
|||
{ |
|||
Q_OBJECT |
|||
public: |
|||
explicit NotebookList(QObject *parent = nullptr); |
|||
QVector<Notebook*> nbList; |
|||
|
|||
signals: |
|||
|
|||
public slots: |
|||
void addNotebookToList(Notebook* notebook); |
|||
QTreeWidgetItem* createSectionIcon(QFileInfo fileInfo); |
|||
QTreeWidgetItem* createSectionGroupIcon(SectionGroup* sectionGroup); |
|||
QTreeWidgetItem* createNotebookIcon(Notebook* notebook); |
|||
|
|||
|
|||
QIcon SetNotebookIcon(QString notebookColor); |
|||
QIcon SetSectionGroupIcon(QString sectionGroupColor); |
|||
}; |
|||
|
|||
#endif // NOTEBOOKLIST_H
|
@ -0,0 +1,251 @@ |
|||
/* DrewTechs
|
|||
* Note Binder |
|||
* @Version 1.0 |
|||
*/ |
|||
|
|||
#include "notebookmanager.h" |
|||
|
|||
Notebook* NewNotebook(QVector<Notebook*> nbList) |
|||
{ |
|||
newNotebookDialog* uiNewNotebookDialog = new newNotebookDialog(); |
|||
if(!uiNewNotebookDialog->exec()) return nullptr; |
|||
QString notebookName = uiNewNotebookDialog->getNbName(); |
|||
QString notebookPath = uiNewNotebookDialog->getNbDirectory(); |
|||
QString notebookFileName = uiNewNotebookDialog->getNbFileName(); |
|||
QString notebookColor = uiNewNotebookDialog->getNbColor(); |
|||
int nb_idx = 0; |
|||
for(nb_idx = 0; nb_idx < nbList.size(); nb_idx++) |
|||
{ |
|||
if(notebookPath == nbList.at(nb_idx)->location) |
|||
{ |
|||
return nullptr; // Notebook Already Exists in that spot, don't recreate it!
|
|||
} |
|||
} |
|||
Notebook *notebook = new Notebook(); |
|||
srand(time(0)); |
|||
|
|||
notebook->id = random(); |
|||
notebook->name = notebookName; |
|||
notebook->location = notebookPath; |
|||
notebook->color = notebookColor; |
|||
|
|||
QString notebookFilePath = notebookPath + QDir::separator() + "notebook.noteb"; |
|||
|
|||
QFile file(notebookFilePath); |
|||
if (file.open(QIODevice::ReadWrite)) { |
|||
QTextStream in(&file); |
|||
in << notebookName << "\n" << notebookColor << "\n"; |
|||
} |
|||
file.close(); |
|||
return notebook; |
|||
} |
|||
|
|||
Notebook openNotebook(QString notebookFilePath) |
|||
{ |
|||
// Read items from Notebook File
|
|||
QStringList fields; |
|||
QFileInfo notebookFileInfo(notebookFilePath); |
|||
/* Notebook File Name must match Directory Name of Notebook. */ |
|||
QFile nbFile(notebookFileInfo.absoluteFilePath() + "/" + "notebook.noteb"); |
|||
QStringList strings; |
|||
int idx = 0; |
|||
if(nbFile.exists()) |
|||
{ |
|||
if(nbFile.open(QIODevice::ReadOnly | QIODevice::Text)) |
|||
{ |
|||
QTextStream in(&nbFile); |
|||
while (!in.atEnd()) { |
|||
strings += in.readLine(); |
|||
} |
|||
} |
|||
|
|||
// Open Notebook
|
|||
Notebook* notebook = new Notebook(); |
|||
srand(time(0)); |
|||
notebook->id = random(); |
|||
notebook->color = strings.at(1); |
|||
notebook->name = notebookFileInfo.fileName(); |
|||
notebook->location = notebookFilePath; |
|||
QDirIterator it(notebookFileInfo.absoluteFilePath(), QDirIterator::NoIteratorFlags); |
|||
QStringList fileDirectories; |
|||
idx = 0; |
|||
while (it.hasNext()) { |
|||
QString strFile = it.next(); |
|||
QFileInfo fileInfo(strFile); |
|||
if(fileInfo.fileName() != "." && fileInfo.fileName() != ".." && fileInfo.fileName().endsWith(".noteb") == false && fileInfo.fileName().endsWith("~") == false) |
|||
{ |
|||
notebook->files.append(fileInfo.filePath()); |
|||
idx++; |
|||
} |
|||
} |
|||
return *notebook; |
|||
} |
|||
} |
|||
|
|||
SectionGroup openSectionGroup(QString parentFilePath, QString sectionGroupFilePath) |
|||
{ |
|||
// Read items from SectionGroup File
|
|||
QFileInfo sectionGroupFileInfo(sectionGroupFilePath); |
|||
QFile sgFile(sectionGroupFileInfo.absoluteFilePath() + "/" + "sectiongroup.sectgr"); |
|||
QStringList strings; |
|||
int idx = 0; |
|||
if(sgFile.exists()) |
|||
{ |
|||
if(sgFile.open(QIODevice::ReadOnly | QIODevice::Text)) |
|||
{ |
|||
QTextStream in(&sgFile); |
|||
while (!in.atEnd()) { |
|||
strings += in.readLine(); |
|||
} |
|||
} |
|||
// Open Section Group
|
|||
SectionGroup* sectionGroup = new SectionGroup(); |
|||
sectionGroup->name = sectionGroupFileInfo.fileName(); |
|||
sectionGroup->color = strings.at(1); |
|||
sectionGroup->location = sectionGroupFilePath; |
|||
QDirIterator it(sectionGroupFileInfo.absoluteFilePath(), QDirIterator::NoIteratorFlags); |
|||
QStringList fileDirectories; |
|||
idx = 0; |
|||
while (it.hasNext()) { |
|||
QString strFile = it.next(); |
|||
QFileInfo fileInfo(strFile); |
|||
if(fileInfo.fileName() != "." && fileInfo.fileName() != ".." && fileInfo.fileName().endsWith(".sectgr") == false && fileInfo.fileName().endsWith("~") == false) |
|||
{ |
|||
sectionGroup->files.append(fileInfo.filePath()); |
|||
idx++; |
|||
} |
|||
} |
|||
sectionGroup->parentDir = parentFilePath; // Parent directory information, the Notebook is the root directory so the Notebook doesn't require this variable.
|
|||
return *sectionGroup; |
|||
} else { |
|||
// Open Empty Folder as a Section Group with the default color.
|
|||
SectionGroup* sectionGroup = new SectionGroup(); |
|||
sectionGroup->name = sectionGroupFileInfo.fileName(); |
|||
sectionGroup->color = DEFAULT_SG_COLOR; |
|||
sectionGroup->location = sectionGroupFilePath; |
|||
QDirIterator it(sectionGroupFileInfo.absoluteFilePath(), QDirIterator::NoIteratorFlags); |
|||
QStringList fileDirectories; |
|||
idx = 0; |
|||
while (it.hasNext()) { |
|||
QString strFile = it.next(); |
|||
QFileInfo fileInfo(strFile); |
|||
if(fileInfo.fileName() != "." && fileInfo.fileName() != ".." && fileInfo.fileName().endsWith(".sectgr") == false && fileInfo.fileName().endsWith("~") == false) |
|||
{ |
|||
sectionGroup->files.append(fileInfo.filePath()); |
|||
idx++; |
|||
} |
|||
} |
|||
sectionGroup->parentDir = parentFilePath; // Parent directory information, the Notebook is the root directory so the Notebook doesn't require this variable.
|
|||
return *sectionGroup; |
|||
} |
|||
} |
|||
|
|||
QString getFileSize(qint64 size) |
|||
{ |
|||
double byteSize; |
|||
if(size >= 1024 && size < 1048576) { |
|||
// Kibibyte (KiB)
|
|||
byteSize = double(size) / double(1024); |
|||
return QString("%1").arg(byteSize, 0, 'f', 2) + " KiB"; |
|||
} else if (size >= 1048576 && size < 1073741824) { |
|||
// Mebibyte (MiB)
|
|||
byteSize = double(size) / double(1048576); |
|||
return QString("%1").arg(byteSize, 0, 'f', 2) + " MiB"; |
|||
} else if (size >= 1073741824 && size < 1099511627776) { |
|||
// Gibibyte (GiB)
|
|||
byteSize = double(size) / double(1073741824); |
|||
return QString("%1").arg(byteSize, 0, 'f', 2) + " GiB"; |
|||
} else if (size >= 1099511627776) { |
|||
// Tebibyte (TiB)
|
|||
byteSize = double(size) / double(1099511627776); |
|||
return QString("%1").arg(byteSize, 0, 'f', 2) + " TiB"; |
|||
} else { |
|||
// Bytes
|
|||
byteSize = double(size); |
|||
return QString::number(byteSize) + " B"; |
|||
} |
|||
} |
|||
|
|||
qint64 getDirRecursiveSize(QString directory) |
|||
{ |
|||
qint64 size = 0; |
|||
QDir dir(directory); |
|||
QDir::Filters fileFilters = QDir::Files; |
|||
for(QString filePath : dir.entryList(fileFilters)) { |
|||
QFileInfo fileInfo(dir, filePath); |
|||
size+= fileInfo.size(); |
|||
} |
|||
QDir::Filters dirFilters = QDir::Dirs|QDir::NoDotAndDotDot; |
|||
for(QString childDirPath : dir.entryList(dirFilters)) |
|||
{ |
|||
size+= getDirRecursiveSize(directory + QDir::separator() + childDirPath); |
|||
} |
|||
return size; |
|||
} |
|||
|
|||
QString getDirectorySize(QString directory) |
|||
{ |
|||
qint64 size = getDirRecursiveSize(directory); |
|||
double byteSize; |
|||
if(size >= 1024 && size < 1048576) { |
|||
// Kibibyte (KiB)
|
|||
byteSize = double(size) / double(1024); |
|||
return QString("%1").arg(byteSize, 0, 'f', 2) + " KiB"; |
|||
} else if (size >= 1048576 && size < 1073741824) { |
|||
// Mebibyte (MiB)
|
|||
byteSize = double(size) / double(1048576); |
|||
return QString("%1").arg(byteSize, 0, 'f', 2) + " MiB"; |
|||
} else if (size >= 1073741824) { |
|||
// Gibibyte (GiB)
|
|||
byteSize = double(size) / double(1073741824); |
|||
return QString("%1").arg(byteSize, 0, 'f', 2) + " GiB"; |
|||
} else if (size >= 1099511627776) { |
|||
// Tebibyte (TiB)
|
|||
byteSize = double(size) / double(1099511627776); |
|||
return QString("%1").arg(byteSize, 0, 'f', 2) + " TiB"; |
|||
} else { |
|||
// Bytes
|
|||
byteSize = double(size); |
|||
return QString::number(byteSize) + " B"; |
|||
} |
|||
} |
|||
|
|||
/* Adds Notebook and Section Groups to the Combo Box */ |
|||
QStringList addItemsToDirectorySelection(QVector<Notebook*> NotebookList) |
|||
{ |
|||
int nb_idx = 0; // Notebook Index
|
|||
int sg_idx = 0; // Section Group Index
|
|||
QStringList directoryList; |
|||
for(nb_idx = 0; nb_idx < NotebookList.size(); nb_idx++) |
|||
{ |
|||
directoryList.append(NotebookList.at(nb_idx)->name); |
|||
for(sg_idx = 0; sg_idx < NotebookList.at(nb_idx)->sectionGroupArray.size(); sg_idx++) |
|||
{ |
|||
directoryList.append(" " + NotebookList.at(nb_idx)->sectionGroupArray.at(sg_idx)->name); |
|||
directoryList.append(addSubItemsToDirectorySection(NotebookList.at(nb_idx)->sectionGroupArray.at(sg_idx), 2)); |
|||
} |
|||
} |
|||
return directoryList; |
|||
} |
|||
|
|||
QStringList addSubItemsToDirectorySection(SectionGroup* sectionGroup, int tabCount) |
|||
{ |
|||
// Recursive Function
|
|||
int sg_idx = 0; |
|||
//int subsg_idx = 0;
|
|||
int tab_idx = 0; |
|||
QString tabs = ""; |
|||
QStringList directoryList; |
|||
for(tab_idx = 0; tab_idx < tabCount; tab_idx++) |
|||
{ |
|||
tabs += " "; |
|||
} |
|||
for(sg_idx = 0; sg_idx < sectionGroup->sectionGroupArray.size(); sg_idx++) |
|||
{ |
|||
directoryList.append(tabs + sectionGroup->sectionGroupArray.at(sg_idx)->name); |
|||
tab_idx++; |
|||
directoryList.append(addSubItemsToDirectorySection(sectionGroup->sectionGroupArray.at(sg_idx), tab_idx)); |
|||
} |
|||
return directoryList; |
|||
} |
|||
|
@ -0,0 +1,36 @@ |
|||
/* DrewTechs
|
|||
* Note Binder |
|||
* @Version 1.0 |
|||
*/ |
|||
|
|||
#ifndef NOTEBOOKMANAGER_H |
|||
#define NOTEBOOKMANAGER_H |
|||
|
|||
#include <QString> |
|||
#include <QIODevice> |
|||
#include <QList> |
|||
#include <QFile> |
|||
#include <QFileInfo> |
|||
#include <QDir> |
|||
#include <QDirIterator> |
|||
#include <QMessageBox> |
|||
#include <QTextStream> |
|||
#include <QComboBox> |
|||
#include "notebook.h" |
|||
#include "notebooklist.h" |
|||
#include "sectiongroup.h" |
|||
|
|||
#define DEFAULT_SG_COLOR "None" |
|||
|
|||
Notebook* NewNotebook(QVector<Notebook*> nbList); // Create New Notebook
|
|||
Notebook openNotebook(QString notebookFilePath); |
|||
SectionGroup openSectionGroup(QString parentFilePath, QString sectionGroupFilePath); |
|||
QString getFileSize(qint64 size); |
|||
qint64 getDirRecursiveSize(QString directory); |
|||
QString getDirectorySize(QString directory); |
|||
|
|||
QStringList addItemsToDirectorySelection(QVector<Notebook*> NotebookList); |
|||
QStringList addSubItemsToDirectorySection(SectionGroup* sectionGroup, int tabCount); |
|||
|
|||
|
|||
#endif // NOTEBOOKMANAGER_H
|
@ -0,0 +1,11 @@ |
|||
/* DrewTechs
|
|||
* Note Binder |
|||
* @Version 1.0 |
|||
*/ |
|||
|
|||
#include "sectiongroup.h" |
|||
|
|||
SectionGroup::SectionGroup() |
|||
{ |
|||
|
|||
} |
Loading…
Reference in new issue