/** * @brief FileDrop::dropEvent * * Called by the window manager when the files have been dropped on the widget. * Will create File nodes for all files and add them to the project file list. */ void FileDrop::dropEvent(QDropEvent *event) { if (hasWriteLock) { filelist->writeLock(false); QList<QUrl> urlList; if (event->mimeData()->hasUrls()) { urlList = event->mimeData()->urls(); } if ((urlList.size() == 1) && (QFileInfo(urlList.first().path()).isDir())) { emit directoryDropped(urlList.first().path()); emit startProcessWork(); } } clear(); event->acceptProposedAction(); }
/** * @brief MainWindow::MainWindow * @param parent */ MainWindow::MainWindow(HashCalcApplication* parent) : QMainWindow() { setWindowTitle(tr("File Hash Calculator")); setAttribute(Qt::WA_DeleteOnClose, true); setWindowIcon(QIcon(":/mainicon.icns")); isOpeningNewProject = false; parentapp = parent; mainproject = new HashProject; filelist = mainproject->getDataTable(); createActionButtonBox(); createDirectoryBoxes(); createOptionsBox(); createWorkerThreads(); createFileDisplayBox(); statusBox = new StatusBoxWidget; filedrop = new FileDrop(filelist); connect(filedrop, SIGNAL(startProcessWork()), this, SLOT(startFileFinder())); connect(filedrop, SIGNAL(directoryDropped(QString)), mainproject->getSourceDirectory(), SLOT(setPath(QString))); QVBoxLayout* controlLayout = new QVBoxLayout; controlLayout->addWidget(sourceDirectoryBox); controlLayout->addWidget(verifyDirectoryBox); controlLayout->addWidget(optionsBox); controlLayout->addWidget(statusBox); controlLayout->addWidget(actionButtonBox); controlLayout->addWidget(filedrop); controlLayout->setAlignment(displayFileBox, Qt::AlignTop); controlLayout->setContentsMargins(0, 0, 0, 0); optionsBox->setSizePolicy(QSizePolicy::Minimum, QSizePolicy::Fixed); actionButtonBox->setSizePolicy(QSizePolicy::Minimum, QSizePolicy::Fixed); statusBox->setSizePolicy(QSizePolicy::Minimum, QSizePolicy::Fixed); filedrop->setSizePolicy(QSizePolicy::Minimum, QSizePolicy::Minimum); controlWidgets = new QWidget; controlWidgets->setLayout(controlLayout); QVBoxLayout* rightLayout = new QVBoxLayout; rightLayout->addWidget(displayFileBox); rightLayout->addWidget(filelist); QWidget *rightWidget = new QWidget; rightLayout->setContentsMargins(0, 0, 0, 0); rightWidget->setLayout(rightLayout); mainWidget = new QSplitter(this); mainWidget->addWidget(controlWidgets); mainWidget->addWidget(rightWidget); mainWidget->setMinimumSize(1000, 750); mainWidget->setChildrenCollapsible(false); mainWidget->setCollapsible(0, false); mainWidget->setCollapsible(1, false); mainWidget->setStretchFactor(0, 0); mainWidget->setStretchFactor(1, 100); setCentralWidget(mainWidget); actions = new MenuActions(this); actions->createMenus(); QSettings settings; algorithmComboBox->setCurrentText(settings.value("selectedalgorithm", "CRC32").toString()); calcHashSumWhenFoundCheckbox->setChecked(settings.value("calchashsumwhenfound", false).toBool()); if (!calcHashSumWhenFoundCheckbox->isChecked()) { hashCalculationOwnThreadCheckbox->setEnabled(false); } hashCalculationOwnThreadCheckbox->setChecked(settings.value("hashcalculationownthread", true).toBool()); mainWidget->restoreState(settings.value("splittersizes").toByteArray()); connect(filelist, SIGNAL(displayFile(QString,QString)), this, SLOT(updateFileDisplay(QString,QString))); connect(filelist, SIGNAL(fileListSizeChanged(int, int, int, int)), statusBox, SLOT(updateStatusBox(int, int, int, int))); connect(filelist, SIGNAL(fileListSizeChanged(int, int, int, int)), actions, SLOT(filelistChanged(int, int, int, int))); }