DrewTechs
3 years ago
5 changed files with 2096 additions and 0 deletions
@ -0,0 +1,323 @@ |
|||||
|
#include "copyItemDialog.h" |
||||
|
#include "ui_copyItemDialog.h" |
||||
|
|
||||
|
CopyItemDialog::CopyItemDialog(bool moveItem, QStringList notebookColorList, QStringList notebookDirList, QStringList list, QString itemName, QString itemLocation, QWidget *parent) : |
||||
|
QDialog(parent), |
||||
|
ui(new Ui::CopyItemDialog) |
||||
|
{ |
||||
|
setMoveItemState(moveItem); |
||||
|
setNotebookColorList(notebookColorList); |
||||
|
setNotebookDirList(notebookDirList); |
||||
|
setDirectories(list); |
||||
|
setFileName(itemName); |
||||
|
setFileLocation(itemLocation); |
||||
|
ui->setupUi(this); |
||||
|
init(); |
||||
|
} |
||||
|
|
||||
|
CopyItemDialog::~CopyItemDialog() |
||||
|
{ |
||||
|
delete ui; |
||||
|
} |
||||
|
|
||||
|
void CopyItemDialog::init() |
||||
|
{ |
||||
|
ui->fileNameBox->setText(getFileName()); |
||||
|
if(moveItemState == false) |
||||
|
{ |
||||
|
// Copying Item:
|
||||
|
ui->moveItemState_Label->setText("Copy Item:"); |
||||
|
} else { |
||||
|
// Moving Item:
|
||||
|
ui->moveItemState_Label->setText("Move Item:"); |
||||
|
} |
||||
|
addItemsToDirectory(); |
||||
|
} |
||||
|
void CopyItemDialog::addItemsToDirectory() |
||||
|
{ |
||||
|
int idx = 0; |
||||
|
for(idx = 0; idx < getDirectories().size(); idx++) |
||||
|
{ |
||||
|
if(!getDirectories().at(idx).startsWith(" ")) |
||||
|
{ |
||||
|
ui->directorySelection->addItem(SetNotebookIcon(notebookcolorlist.at(idx)), getDirectories().at(idx)); |
||||
|
} else { |
||||
|
ui->directorySelection->addItem(SetSectionGroupIcon(notebookcolorlist.at(idx)), getDirectories().at(idx)); |
||||
|
} |
||||
|
} |
||||
|
} |
||||
|
|
||||
|
|
||||
|
QIcon CopyItemDialog::SetNotebookIcon(QString notebookColor) |
||||
|
{ |
||||
|
QIcon icon; |
||||
|
QString iconPath = "../NoteBinder/Icons"; |
||||
|
if(!QDir(iconPath).exists()) |
||||
|
{ |
||||
|
return icon; |
||||
|
} |
||||
|
if(notebookColor == "Red") { |
||||
|
icon = QIcon(iconPath + "/NotebookIcon_Red.png"); |
||||
|
} else if(notebookColor == "Blue") { |
||||
|
icon = QIcon(iconPath + "/NotebookIcon_Blue.png"); |
||||
|
} else if(notebookColor == "Purple") { |
||||
|
icon = QIcon(iconPath + "/NotebookIcon_Purple.png"); |
||||
|
} else if(notebookColor == "Orange") { |
||||
|
icon = QIcon(iconPath + "/NotebookIcon_Orange.png"); |
||||
|
} else if(notebookColor == "Yellow") { |
||||
|
icon = QIcon(iconPath + "/NotebookIcon_Yellow.png"); |
||||
|
} else if(notebookColor == "Green") { |
||||
|
icon = QIcon(iconPath + "/NotebookIcon_Green.png"); |
||||
|
} else if(notebookColor == "Cyan") { |
||||
|
icon = QIcon(iconPath + "/NotebookIcon_Cyan.png"); |
||||
|
} else if(notebookColor == "Tan") { |
||||
|
icon = QIcon(iconPath + "/NotebookIcon_Tan.png"); |
||||
|
} else if(notebookColor == "Teal") { |
||||
|
icon = QIcon(iconPath + "/NotebookIcon_Teal.png"); |
||||
|
} else if(notebookColor == "Red Chalk") { |
||||
|
icon = QIcon(iconPath + "/NotebookIcon_RedChalk.png"); |
||||
|
} else if(notebookColor == "Blue Mist") { |
||||
|
icon = QIcon(iconPath + "/NotebookIcon_BlueMist.png"); |
||||
|
} else if(notebookColor == "Purple Mist") { |
||||
|
icon = QIcon(iconPath + "/NotebookIcon_PurpleMist.png"); |
||||
|
} else if(notebookColor == "Magenta") { |
||||
|
icon = QIcon(iconPath + "/NotebookIcon_Magenta.png"); |
||||
|
} else if(notebookColor == "Lemon Lime") { |
||||
|
icon = QIcon(iconPath + "/NotebookIcon_LemonLime.png"); |
||||
|
} else if(notebookColor == "Apple") { |
||||
|
icon = QIcon(iconPath + "/NotebookIcon_Apple.png"); |
||||
|
} else if(notebookColor == "Silver") { |
||||
|
icon = QIcon(iconPath + "/NotebookIcon_Silver.png"); |
||||
|
} else if(notebookColor == "Black") { |
||||
|
icon = QIcon(iconPath + "/NotebookIcon_Black.png"); |
||||
|
} else { |
||||
|
// If it's either White/None or an invalid value, set to the white icon
|
||||
|
icon = QIcon(iconPath + "/NotebookIcon_White.png"); |
||||
|
} |
||||
|
return icon; |
||||
|
} |
||||
|
QIcon CopyItemDialog::SetSectionGroupIcon(QString sectionGroupColor) |
||||
|
{ |
||||
|
QIcon icon; |
||||
|
QString iconPath = "../NoteBinder/Icons"; |
||||
|
if(!QDir(iconPath).exists()) |
||||
|
{ |
||||
|
return icon; |
||||
|
} |
||||
|
if(sectionGroupColor == "Red") { |
||||
|
icon = QIcon(iconPath + "/SectionGroupIcon_Red.png"); |
||||
|
} else if(sectionGroupColor == "Blue") { |
||||
|
icon = QIcon(iconPath + "/SectionGroupIcon_Blue.png"); |
||||
|
} else if(sectionGroupColor == "Purple") { |
||||
|
icon = QIcon(iconPath + "/SectionGroupIcon_Purple.png"); |
||||
|
} else if(sectionGroupColor == "Orange") { |
||||
|
icon = QIcon(iconPath + "/SectionGroupIcon_Orange.png"); |
||||
|
} else if(sectionGroupColor == "Yellow") { |
||||
|
icon = QIcon(iconPath + "/SectionGroupIcon_Yellow.png"); |
||||
|
} else if(sectionGroupColor == "Green") { |
||||
|
icon = QIcon(iconPath + "/SectionGroupIcon_Green.png"); |
||||
|
} else if(sectionGroupColor == "Cyan") { |
||||
|
icon = QIcon(iconPath + "/SectionGroupIcon_Cyan.png"); |
||||
|
} else if(sectionGroupColor == "Tan") { |
||||
|
icon = QIcon(iconPath + "/SectionGroupIcon_Tan.png"); |
||||
|
} else if(sectionGroupColor == "Teal") { |
||||
|
icon = QIcon(iconPath + "/SectionGroupIcon_Teal.png"); |
||||
|
} else if(sectionGroupColor == "Red Chalk") { |
||||
|
icon = QIcon(iconPath + "/SectionGroupIcon_RedChalk.png"); |
||||
|
} else if(sectionGroupColor == "Blue Mist") { |
||||
|
icon = QIcon(iconPath + "/SectionGroupIcon_BlueMist.png"); |
||||
|
} else if(sectionGroupColor == "Purple Mist") { |
||||
|
icon = QIcon(iconPath + "/SectionGroupIcon_PurpleMist.png"); |
||||
|
} else if(sectionGroupColor == "Magenta") { |
||||
|
icon = QIcon(iconPath + "/SectionGroupIcon_Magenta.png"); |
||||
|
} else if(sectionGroupColor == "Lemon Lime") { |
||||
|
icon = QIcon(iconPath + "/SectionGroupIcon_LemonLime.png"); |
||||
|
} else if(sectionGroupColor == "Apple") { |
||||
|
icon = QIcon(iconPath + "/SectionGroupIcon_Apple.png"); |
||||
|
} else if(sectionGroupColor == "Silver") { |
||||
|
icon = QIcon(iconPath + "/SectionGroupIcon_Silver.png"); |
||||
|
} else if(sectionGroupColor == "Black") { |
||||
|
icon = QIcon(iconPath + "/SectionGroupIcon_Black.png"); |
||||
|
} else { |
||||
|
// If it's either White/None or an invalid value, set to the white icon
|
||||
|
icon = QIcon(iconPath + "/SectionGroupIcon_White.png"); |
||||
|
} |
||||
|
return icon; |
||||
|
} |
||||
|
|
||||
|
/* Getters */ |
||||
|
bool CopyItemDialog::getMoveItemState() const |
||||
|
{ |
||||
|
return moveItemState; |
||||
|
} |
||||
|
QStringList CopyItemDialog::getDirectories() const |
||||
|
{ |
||||
|
return var_directoryList; |
||||
|
} |
||||
|
QStringList CopyItemDialog::getNotebookDirList() const |
||||
|
{ |
||||
|
return notebookdirList; |
||||
|
} |
||||
|
QStringList CopyItemDialog::getNotebookColorList() const |
||||
|
{ |
||||
|
return notebookcolorlist; |
||||
|
} |
||||
|
QString CopyItemDialog::getFileName() const |
||||
|
{ |
||||
|
return var_itemName; |
||||
|
} |
||||
|
QString CopyItemDialog::getFileLocation() const |
||||
|
{ |
||||
|
return var_itemLocation; |
||||
|
} |
||||
|
|
||||
|
|
||||
|
/* Setters */ |
||||
|
void CopyItemDialog::setMoveItemState(bool updateMoveState) |
||||
|
{ |
||||
|
moveItemState = updateMoveState; |
||||
|
} |
||||
|
void CopyItemDialog::setDirectories(QStringList dirList) |
||||
|
{ |
||||
|
var_directoryList = dirList; |
||||
|
} |
||||
|
void CopyItemDialog::setNotebookDirList(QStringList nbDirList) |
||||
|
{ |
||||
|
notebookdirList = nbDirList; |
||||
|
} |
||||
|
void CopyItemDialog::setNotebookColorList(QStringList nbColorList) |
||||
|
{ |
||||
|
notebookcolorlist = nbColorList; |
||||
|
} |
||||
|
void CopyItemDialog::setFileName(QString newItemName) |
||||
|
{ |
||||
|
var_itemName = newItemName; |
||||
|
} |
||||
|
void CopyItemDialog::setFileLocation(QString newItemLocation) |
||||
|
{ |
||||
|
var_itemLocation = newItemLocation; |
||||
|
} |
||||
|
|
||||
|
void CopyItemDialog::on_buttonBox_accepted() |
||||
|
{ |
||||
|
if(ui->fileNameBox->text() != "") |
||||
|
{ |
||||
|
QString fullFileName = getFileLocation(); |
||||
|
setFileName(ui->fileNameBox->text()); |
||||
|
QString newFullFileName = getNotebookDirList().at(ui->directorySelection->currentIndex()) + QDir::separator() + getFileName(); |
||||
|
QFile file(newFullFileName); |
||||
|
QDir dir(fullFileName); |
||||
|
QFileInfo fileInfo(newFullFileName); |
||||
|
if(fileInfo.absoluteFilePath() == fullFileName) |
||||
|
{ |
||||
|
reject(); // Cannot write onto itself.
|
||||
|
} else { |
||||
|
if(!file.exists()) |
||||
|
{ |
||||
|
if(fileInfo.isFile()) |
||||
|
{ |
||||
|
// File
|
||||
|
file.copy(fullFileName, newFullFileName); |
||||
|
} else { |
||||
|
copyRecursively(fullFileName, newFullFileName); |
||||
|
QFile fileSectGr(newFullFileName + QDir::separator() + "sectiongroup.sectgr"); |
||||
|
QStringList fileItems; |
||||
|
// Read This file
|
||||
|
if(fileSectGr.exists()) |
||||
|
{ |
||||
|
if(fileSectGr.open(QIODevice::ReadOnly)) |
||||
|
{ |
||||
|
QTextStream in(&fileSectGr); |
||||
|
while(!in.atEnd()) |
||||
|
{ |
||||
|
fileItems += in.readLine(); |
||||
|
} |
||||
|
} |
||||
|
fileSectGr.remove(); |
||||
|
if (fileSectGr.open(QIODevice::ReadWrite)) { |
||||
|
QTextStream in(&fileSectGr); |
||||
|
in << fileInfo.fileName() << "\n" << fileItems.at(1) << "\n"; |
||||
|
} |
||||
|
fileSectGr.close(); |
||||
|
} |
||||
|
} |
||||
|
setFileLocation(newFullFileName); |
||||
|
accept(); |
||||
|
} else { |
||||
|
QMessageBox messageBox; |
||||
|
QFont fontSize; |
||||
|
fontSize.setPointSize(12); |
||||
|
messageBox.setWindowTitle("Replace Existing Item?"); |
||||
|
messageBox.setFont(fontSize); |
||||
|
messageBox.setText("Item already exists! Do you want to overwrite it?"); |
||||
|
messageBox.setStandardButtons(QMessageBox::Yes); |
||||
|
messageBox.addButton(QMessageBox::No); |
||||
|
messageBox.setDefaultButton(QMessageBox::No); |
||||
|
if(messageBox.exec() == QMessageBox::Yes) |
||||
|
{ |
||||
|
if(fileInfo.isFile()) |
||||
|
{ |
||||
|
// File
|
||||
|
file.copy(fullFileName, newFullFileName); |
||||
|
} else { |
||||
|
copyRecursively(fullFileName, newFullFileName); |
||||
|
QFile fileSectGr(newFullFileName + QDir::separator() + "sectiongroup.sectgr"); |
||||
|
QStringList fileItems; |
||||
|
// Read This file
|
||||
|
if(fileSectGr.exists()) |
||||
|
{ |
||||
|
if(fileSectGr.open(QIODevice::ReadOnly)) |
||||
|
{ |
||||
|
QTextStream in(&fileSectGr); |
||||
|
while(!in.atEnd()) |
||||
|
{ |
||||
|
fileItems += in.readLine(); |
||||
|
} |
||||
|
} |
||||
|
fileSectGr.remove(); |
||||
|
if (fileSectGr.open(QIODevice::ReadWrite)) { |
||||
|
QTextStream in(&fileSectGr); |
||||
|
in << fileInfo.fileName() << "\n" << fileItems.at(1) << "\n"; |
||||
|
} |
||||
|
fileSectGr.close(); |
||||
|
} |
||||
|
} |
||||
|
setFileLocation(newFullFileName); |
||||
|
accept(); |
||||
|
} else { |
||||
|
reject(); |
||||
|
} |
||||
|
} |
||||
|
} |
||||
|
} |
||||
|
} |
||||
|
void CopyItemDialog::on_buttonBox_rejected() |
||||
|
{ |
||||
|
reject(); |
||||
|
} |
||||
|
|
||||
|
bool CopyItemDialog::copyRecursively(const QString &srcFilePath, const QString &tgtFilePath) |
||||
|
{ |
||||
|
/* Function written by ssendeavour: https://gist.github.com/ssendeavour/7324701#file-copy-recursively-cpp */ |
||||
|
QFileInfo srcFileInfo(srcFilePath); |
||||
|
if (srcFileInfo.isDir()) |
||||
|
{ |
||||
|
QDir targetDir(tgtFilePath); |
||||
|
targetDir.cdUp(); |
||||
|
if (!targetDir.mkdir(QFileInfo(tgtFilePath).fileName())) |
||||
|
return false; |
||||
|
QDir sourceDir(srcFilePath); |
||||
|
QStringList fileNames = sourceDir.entryList(QDir::Files | QDir::Dirs | QDir::NoDotAndDotDot | QDir::Hidden | QDir::System); |
||||
|
foreach (const QString &fileName, fileNames) |
||||
|
{ |
||||
|
const QString newSrcFilePath = srcFilePath + QDir::separator() + fileName; |
||||
|
const QString newTgtFilePath = tgtFilePath + QDir::separator() + fileName; |
||||
|
if (!copyRecursively(newSrcFilePath, newTgtFilePath)) |
||||
|
return false; |
||||
|
} |
||||
|
} else { |
||||
|
if (!QFile::copy(srcFilePath, tgtFilePath)) |
||||
|
return false; |
||||
|
} |
||||
|
return true; |
||||
|
} |
@ -0,0 +1,62 @@ |
|||||
|
#ifndef COPYITEMDIALOG_H |
||||
|
#define COPYITEMDIALOG_H |
||||
|
|
||||
|
#include <QDialog> |
||||
|
#include <QDir> |
||||
|
#include <QFileInfo> |
||||
|
#include "notebook.h" |
||||
|
#include "sectiongroup.h" |
||||
|
#include "notebooklist.h" |
||||
|
#include "notebookmanager.h" |
||||
|
|
||||
|
namespace Ui { |
||||
|
class CopyItemDialog; |
||||
|
} |
||||
|
|
||||
|
class CopyItemDialog : public QDialog |
||||
|
{ |
||||
|
Q_OBJECT |
||||
|
|
||||
|
public: |
||||
|
explicit CopyItemDialog(bool moveItem, QStringList notebookColorList, QStringList notebookDirList, QStringList list, QString itemName, QString itemLocation, QWidget *parent = nullptr); |
||||
|
~CopyItemDialog(); |
||||
|
|
||||
|
void init(); |
||||
|
void addItemsToDirectory(); |
||||
|
/* Function written by ssendeavour: https://gist.github.com/ssendeavour/7324701#file-copy-recursively-cpp */ |
||||
|
static bool copyRecursively(const QString &srcFilePath, const QString &tgtFilePath); |
||||
|
|
||||
|
QIcon SetNotebookIcon(QString notebookColor); |
||||
|
QIcon SetSectionGroupIcon(QString sectionGroupColor); |
||||
|
|
||||
|
/* Getters */ |
||||
|
bool getMoveItemState() const; |
||||
|
QStringList getDirectories() const; |
||||
|
QStringList getNotebookDirList() const; |
||||
|
QStringList getNotebookColorList() const; |
||||
|
QString getFileName() const; |
||||
|
QString getFileLocation() const; |
||||
|
|
||||
|
/* Setters */ |
||||
|
void setMoveItemState(bool updateMoveState); |
||||
|
void setDirectories(QStringList dirList); |
||||
|
void setNotebookDirList(QStringList nbDirList); |
||||
|
void setNotebookColorList(QStringList nbColorList); |
||||
|
void setFileName(QString newItemName); |
||||
|
void setFileLocation(QString newItemLocation); |
||||
|
|
||||
|
private slots: |
||||
|
void on_buttonBox_accepted(); |
||||
|
void on_buttonBox_rejected(); |
||||
|
|
||||
|
private: |
||||
|
Ui::CopyItemDialog *ui; |
||||
|
bool moveItemState; |
||||
|
QString var_itemName; |
||||
|
QString var_itemLocation; |
||||
|
QStringList notebookdirList; // Actual Filepaths of each Notebook or Section Group.
|
||||
|
QStringList var_directoryList; // Directories displayed on the ComboBox of Directory List
|
||||
|
QStringList notebookcolorlist; // Icon Colors of Notebook or Section Group
|
||||
|
}; |
||||
|
|
||||
|
#endif // COPYITEMDIALOG_H
|
@ -0,0 +1,123 @@ |
|||||
|
<?xml version="1.0" encoding="UTF-8"?> |
||||
|
<ui version="4.0"> |
||||
|
<class>CopyItemDialog</class> |
||||
|
<widget class="QDialog" name="CopyItemDialog"> |
||||
|
<property name="geometry"> |
||||
|
<rect> |
||||
|
<x>0</x> |
||||
|
<y>0</y> |
||||
|
<width>535</width> |
||||
|
<height>221</height> |
||||
|
</rect> |
||||
|
</property> |
||||
|
<property name="windowTitle"> |
||||
|
<string>Copy/Move Item</string> |
||||
|
</property> |
||||
|
<layout class="QVBoxLayout" name="verticalLayout_2"> |
||||
|
<item> |
||||
|
<layout class="QHBoxLayout" name="horizontalLayout"> |
||||
|
<item> |
||||
|
<widget class="QLabel" name="moveItemState_Label"> |
||||
|
<property name="font"> |
||||
|
<font> |
||||
|
<pointsize>12</pointsize> |
||||
|
</font> |
||||
|
</property> |
||||
|
<property name="text"> |
||||
|
<string>Copy/Move Item:</string> |
||||
|
</property> |
||||
|
</widget> |
||||
|
</item> |
||||
|
<item> |
||||
|
<widget class="QLineEdit" name="fileNameBox"> |
||||
|
<property name="font"> |
||||
|
<font> |
||||
|
<pointsize>12</pointsize> |
||||
|
</font> |
||||
|
</property> |
||||
|
<property name="text"> |
||||
|
<string/> |
||||
|
</property> |
||||
|
</widget> |
||||
|
</item> |
||||
|
</layout> |
||||
|
</item> |
||||
|
<item> |
||||
|
<layout class="QVBoxLayout" name="verticalLayout"> |
||||
|
<item> |
||||
|
<widget class="QLabel" name="notebookLabel"> |
||||
|
<property name="font"> |
||||
|
<font> |
||||
|
<pointsize>12</pointsize> |
||||
|
</font> |
||||
|
</property> |
||||
|
<property name="text"> |
||||
|
<string>Select Notebook or Section Group:</string> |
||||
|
</property> |
||||
|
</widget> |
||||
|
</item> |
||||
|
<item> |
||||
|
<widget class="QComboBox" name="directorySelection"> |
||||
|
<property name="font"> |
||||
|
<font> |
||||
|
<pointsize>12</pointsize> |
||||
|
</font> |
||||
|
</property> |
||||
|
<property name="iconSize"> |
||||
|
<size> |
||||
|
<width>24</width> |
||||
|
<height>24</height> |
||||
|
</size> |
||||
|
</property> |
||||
|
</widget> |
||||
|
</item> |
||||
|
</layout> |
||||
|
</item> |
||||
|
<item> |
||||
|
<widget class="QDialogButtonBox" name="buttonBox"> |
||||
|
<property name="orientation"> |
||||
|
<enum>Qt::Horizontal</enum> |
||||
|
</property> |
||||
|
<property name="standardButtons"> |
||||
|
<set>QDialogButtonBox::Cancel|QDialogButtonBox::Ok</set> |
||||
|
</property> |
||||
|
</widget> |
||||
|
</item> |
||||
|
</layout> |
||||
|
</widget> |
||||
|
<resources/> |
||||
|
<connections> |
||||
|
<connection> |
||||
|
<sender>buttonBox</sender> |
||||
|
<signal>accepted()</signal> |
||||
|
<receiver>CopyItemDialog</receiver> |
||||
|
<slot>accept()</slot> |
||||
|
<hints> |
||||
|
<hint type="sourcelabel"> |
||||
|
<x>248</x> |
||||
|
<y>254</y> |
||||
|
</hint> |
||||
|
<hint type="destinationlabel"> |
||||
|
<x>157</x> |
||||
|
<y>274</y> |
||||
|
</hint> |
||||
|
</hints> |
||||
|
</connection> |
||||
|
<connection> |
||||
|
<sender>buttonBox</sender> |
||||
|
<signal>rejected()</signal> |
||||
|
<receiver>CopyItemDialog</receiver> |
||||
|
<slot>reject()</slot> |
||||
|
<hints> |
||||
|
<hint type="sourcelabel"> |
||||
|
<x>316</x> |
||||
|
<y>260</y> |
||||
|
</hint> |
||||
|
<hint type="destinationlabel"> |
||||
|
<x>286</x> |
||||
|
<y>274</y> |
||||
|
</hint> |
||||
|
</hints> |
||||
|
</connection> |
||||
|
</connections> |
||||
|
</ui> |
@ -0,0 +1,16 @@ |
|||||
|
/* DrewTechs
|
||||
|
* Note Binder |
||||
|
* @Version 1.0 |
||||
|
*/ |
||||
|
|
||||
|
#include "mainwindow.h" |
||||
|
|
||||
|
#include <QApplication> |
||||
|
|
||||
|
int main(int argc, char *argv[]) |
||||
|
{ |
||||
|
QApplication a(argc, argv); |
||||
|
MainWindow w; |
||||
|
w.show(); |
||||
|
return a.exec(); |
||||
|
} |
File diff suppressed because it is too large
Loading…
Reference in new issue