-
Giacomo Strangolino authoredefd5daeb
backupappfinder.cpp 2.57 KiB
#include "backupappfinder.h"
#include <QTreeWidget>
#include <QGridLayout>
#include <QLabel>
#include <QPushButton>
#include <QDir>
#include <QFileInfo>
#include <QHeaderView>
#include <QDateTime>
#include <QCloseEvent>
const char backupdir[32] = "last";
BackupAppFinder::BackupAppFinder(QWidget *parent) : QDialog(parent)
{
setCursor(Qt::ArrowCursor);
QGridLayout *lo = new QGridLayout(this);
QTreeWidget *tw = new QTreeWidget(this);
QPushButton *pb = new QPushButton("Start", this);
QLabel *lab = new QLabel("Double click an item or select one and click \"Start\"", this);
tw->setColumnCount(2);
tw->setHeaderLabels(QStringList() << "Backup application" << "Created on");
tw->header()->setSectionResizeMode(QHeaderView::ResizeToContents);
connect(pb, SIGNAL(clicked()), this, SLOT(accept()));
pb->setDisabled(true);
lo->addWidget(tw, 0, 0, 4, 6);
lo->addWidget(pb, 4, 5, 1, 1);
lo->addWidget(lab, 4, 0, 1, 5);
connect(tw, SIGNAL(itemSelectionChanged()), this, SLOT(itemSelected()));
connect(tw, SIGNAL(itemDoubleClicked(QTreeWidgetItem*,int)), this, SLOT(accept()));
}
QString BackupAppFinder::exename() const
{
return m_exename;
}
QString BackupAppFinder::exe_path() const
{
QString epa(m_exe_path);
if(!epa.endsWith('/'))
epa += "/";
return epa;
}
void BackupAppFinder::exec(const QString &exenam, const QString &envpath)
{
QTreeWidget *tw = findChild<QTreeWidget *>();
tw->clear();
QString bkdir;
envpath.endsWith('/') ? bkdir = envpath + QString(backupdir) : bkdir = envpath + "/" + QString(backupdir);
if(!bkdir.endsWith('/'))
bkdir += "/";
QDir backupDir(bkdir);
QFileInfoList fil;
if(backupDir.exists()) {
QString filter = exenam + "+*";
fil = backupDir.entryInfoList(QStringList() << filter, QDir::Executable|QDir::Files, QDir::Time);
foreach (QFileInfo fi, fil) {
QTreeWidgetItem *it = new QTreeWidgetItem(tw, QStringList() << fi.fileName() << fi.created().toString());
it->setData(0, Qt::UserRole, bkdir);
}
}
QDialog::exec();
}
void BackupAppFinder::closeEvent(QCloseEvent *e)
{
hide();
e->ignore();
}
void BackupAppFinder::itemSelected()
{
findChild<QPushButton *>()->setEnabled(true);
}
void BackupAppFinder::accept()
{
QTreeWidget *tw = findChild<QTreeWidget *>();
QList<QTreeWidgetItem*> selected = tw->selectedItems();
if(selected.size() == 1) {
m_exename = selected.first()->text(0);
m_exe_path = selected.first()->data(0, Qt::UserRole).toString();
}
hide();
}