encfs/vendor/github.com/muflihun/easyloggingpp/samples/Qt/file-splitter-joiner/addsplittedfiledialog.cpp
Valient Gough 5f0806c5cc Add "easylogging" from "https://github.com/muflihun/easyloggingpp@master"
git-vendor-name: easylogging
git-vendor-dir: vendor/github.com/muflihun/easyloggingpp
git-vendor-repository: https://github.com/muflihun/easyloggingpp
git-vendor-ref: master
2017-08-05 23:23:41 -07:00

117 lines
4.8 KiB
C++

#include "addsplittedfiledialog.h"
#include "ui_addsplittedfiledialog.h"
#include <QFileDialog>
#include <QTreeWidgetItem>
#include <QMessageBox>
#include <QListWidgetItem>
#include <QDialogButtonBox>
#include <QFileInfo>
#include <QDebug>
#include "partprocessor.h"
#include "easylogging++.h"
AddSplittedFileDialog::AddSplittedFileDialog(QTreeWidget* parentView, QWidget *parent) :
QDialog(parent),
filePartsPointers(NULL),
parentView(parentView),
ui(new Ui::AddSplittedFileDialog) {
ui->setupUi(this);
buttonOkCancel = new QDialogButtonBox(this);
buttonOkCancel->setObjectName(QString::fromUtf8("buttonBox"));
buttonOkCancel->setGeometry(QRect(10, 200, 531, 32));
buttonOkCancel->setOrientation(Qt::Horizontal);
buttonOkCancel->setStandardButtons(QDialogButtonBox::Cancel|QDialogButtonBox::Ok);
QObject::connect(buttonOkCancel, SIGNAL(accepted()), this, SLOT(on_buttonBox_accepted()));
QObject::connect(buttonOkCancel, SIGNAL(rejected()), this, SLOT(reject()));
filenamePointer = parentView->selectedItems().size() > 0 ? parentView->selectedItems()[0] : NULL;
if (filenamePointer && filenamePointer->parent() != NULL) {
filenamePointer = filenamePointer->parent();
}
if (filenamePointer) {
ui->textFilename->setText(filenamePointer->text(0));
for (int i = 0; i < filenamePointer->childCount(); i++) {
filePartsPointers = new QTreeWidgetItem(ui->treeParts,
QStringList()
<< filenamePointer->child(i)->text(0)
<< filenamePointer->child(i)->text(1)
<< filenamePointer->child(i)->text(2));
}
}
ui->treeParts->setSelectionMode(QTreeWidget::MultiSelection);
this->setWindowTitle("Add Part(s)");
}
AddSplittedFileDialog::~AddSplittedFileDialog() {
for (int i = ui->treeParts->topLevelItemCount(); i >= 0; i--) {
delete ui->treeParts->topLevelItem(i);
}
delete buttonOkCancel;
delete ui;
}
void AddSplittedFileDialog::on_buttonAddPart_clicked() {
QFileDialog fileDialog(this, "Choose File(s) to Join", "", "*" + QString(PartProcessor::kPartSuffix) + "*");
fileDialog.setFileMode(QFileDialog::ExistingFiles);
fileDialog.exec();
QStringList filenames = fileDialog.selectedFiles();
QFileInfo fileInfo;
QString fileSize = "0";
Q_FOREACH (QString filename, filenames) {
fileInfo.setFile(filename);
fileSize = QString::number(fileInfo.size());
filePartsPointers = new QTreeWidgetItem(ui->treeParts, QStringList() << filename << fileSize << "Queued");
VLOG(1) << "Added part [" << filename << "]";
}
}
void AddSplittedFileDialog::on_buttonBox_accepted() {
if (ui->treeParts->topLevelItemCount() > 0) {
if (ui->textFilename->text() == "") {
QMessageBox messageBox(QMessageBox::Warning, "Filename", "Please enter filename", QMessageBox::NoButton, this);
messageBox.exec();
ui->textFilename->setFocus();
return;
}
if (!filenamePointer) {
filenamePointer = new QTreeWidgetItem(parentView);
} else {
for (int i = filenamePointer->childCount(); i >= 0; i--) {
delete filenamePointer->child(i);
}
delete filenamePointer;
filenamePointer = new QTreeWidgetItem(parentView);
}
double totalSize = 0;
for (int i = 0; i < ui->treeParts->topLevelItemCount(); i++) {
filePartsPointers = ui->treeParts->topLevelItem(i);
filePartsPointers = new QTreeWidgetItem(filenamePointer,
QStringList()
<< filePartsPointers->text(0)
<< filePartsPointers->text(1)
<< filePartsPointers->text(2));
totalSize += filePartsPointers->text(1).toDouble();
}
filenamePointer->setText(0, ui->textFilename->text());
filenamePointer->setText(1, QString::number(totalSize));
filenamePointer->setText(2, "Queued");
this->accept();
}
}
void AddSplittedFileDialog::on_pushButton_clicked() {
QFileDialog fileDialog(this, "Choose Destination Filename","","All Files (*.*)");
fileDialog.setFileMode(QFileDialog::AnyFile);
fileDialog.setAcceptMode(QFileDialog::AcceptSave);
fileDialog.setDirectory(ui->textFilename->text());
fileDialog.exec();
if (fileDialog.selectedFiles().size() > 0) {
ui->textFilename->setText(fileDialog.selectedFiles()[0]);
}
}
void AddSplittedFileDialog::on_buttonRemove_clicked() {
qDeleteAll(ui->treeParts->selectedItems());
}