Fetch the repository succeeded.
#include "filechoosewidget.h"
#include <QtDebug>
#include <QFileInfo>
#include <QUrl>
#include <QDir>
#include <QMimeData>
#include <QPixmap>
#include <QPainter>
#include <QVBoxLayout>
#include <QFileDialog>
#include <QLabel>
DWIDGET_USE_NAMESPACE
FileChooseWidget::FileChooseWidget(QWidget *parent)
: QWidget(parent)
{
QLabel *iconImage = new QLabel;
iconImage->setFixedSize(140, 140);
iconImage->setPixmap(QPixmap(":images/icon.png"));
QLabel *dndTips = new QLabel;
dndTips->setText("Drag and drop files here");
dndTips->setAlignment(Qt::AlignCenter);
QVBoxLayout *centerWrapLayout = new QVBoxLayout;
centerWrapLayout->addWidget(iconImage);
centerWrapLayout->setAlignment(iconImage, Qt::AlignTop | Qt::AlignHCenter);
centerWrapLayout->addSpacing(20);
centerWrapLayout->addWidget(dndTips);
centerWrapLayout->setSpacing(0);
centerWrapLayout->setContentsMargins(0, 0, 0, 15);
QWidget *centerWidget = new QFrame;
centerWidget->setFixedWidth(240);
centerWidget->setLayout(centerWrapLayout);
centerWidget->setObjectName("CenterWidget");
centerWidget->setStyleSheet("#CenterWidget {"
"border:none;"
"border-bottom:2px dashed #eee;"
"}");
m_fileChooseBtn = new DLinkButton;
m_fileChooseBtn->setText("Choose Package");
QVBoxLayout *centralLayout = new QVBoxLayout;
centralLayout->addStretch();
centralLayout->addWidget(centerWidget);
centralLayout->setAlignment(centerWidget, Qt::AlignTop | Qt::AlignCenter);
centralLayout->addSpacing(20);
centralLayout->addWidget(m_fileChooseBtn);
centralLayout->setAlignment(m_fileChooseBtn, Qt::AlignCenter);
centralLayout->setSpacing(0);
centralLayout->setContentsMargins(0, 0, 0, 60);
setLayout(centralLayout);
setAcceptDrops(true);
connect(m_fileChooseBtn, &QPushButton::clicked, this, &FileChooseWidget::chooseFiles);
}
void FileChooseWidget::dragEnterEvent(QDragEnterEvent *e)
{
auto * const mime = e->mimeData();
if (!mime->hasUrls())
return e->ignore();
e->accept();
}
void FileChooseWidget::dropEvent(QDropEvent *e)
{
auto * const mime = e->mimeData();
if (!mime->hasUrls())
return e->ignore();
e->accept();
// find .deb files
QStringList file_list;
for (const auto &url : mime->urls())
{
if (!url.isLocalFile())
continue;
const QString local_path = url.toLocalFile();
const QFileInfo info(local_path);
if(info.isFile() && info.suffix() == "deb")
file_list << local_path;
else if (info.isDir())
file_list << QDir(local_path).entryList(QStringList() << "*.deb", QDir::Files);
}
qDebug() << file_list;
emit packagesSelected(file_list);
}
void FileChooseWidget::chooseFiles()
{
QFileDialog dialog;
dialog.setFileMode(QFileDialog::ExistingFiles);
dialog.setNameFilter("Debian Packages Files (*.deb)");
if(dialog.exec() != QDialog::Accepted)
return;
const QStringList selected_files = dialog.selectedFiles();
qDebug() << selected_files;
emit packagesSelected(selected_files);
}
此处可能存在不合适展示的内容,页面不予展示。您可通过相关编辑功能自查并修改。
如您确认内容无涉及 不当用语 / 纯广告导流 / 暴力 / 低俗色情 / 侵权 / 盗版 / 虚假 / 无价值内容或违法国家有关法律法规的内容,可点击提交进行申诉,我们将尽快为您处理。