File indexing completed on 2024-04-28 16:43:21

0001 /*
0002  * This file is part of the KDE project
0003  *
0004  * SPDX-FileCopyrightText: 2010-2011 Alejandro Fiestas Olivares <afiestas@kde.org>
0005  * SPDX-FileCopyrightText: 2010-2011 UFO Coders <info@ufocoders.com>
0006  *
0007  * SPDX-License-Identifier: LGPL-2.0-or-later
0008  */
0009 
0010 #include "selectdeviceandfilespage.h"
0011 #include "../discoverwidget.h"
0012 #include "../sendfilewizard.h"
0013 
0014 #include <QFileDialog>
0015 #include <QIcon>
0016 #include <QLabel>
0017 #include <QStandardPaths>
0018 #include <QUrl>
0019 #include <QVBoxLayout>
0020 
0021 #include <KLocalizedString>
0022 
0023 #include <BluezQt/Device>
0024 
0025 SelectDeviceAndFilesPage::SelectDeviceAndFilesPage(SendFileWizard *wizard)
0026     : QWizardPage(wizard)
0027     , m_wizard(wizard)
0028 {
0029     setupUi(this);
0030 
0031     DiscoverWidget *widget = new DiscoverWidget(m_wizard->manager(), this);
0032     widget->setContentsMargins(0, 0, 0, 0);
0033     discoverLayout->addWidget(widget);
0034 
0035     int buttonSize = selectBtn->sizeHint().height();
0036     selectBtn->setFixedSize(buttonSize, buttonSize);
0037     selectBtn->setIcon(QIcon::fromTheme(QStringLiteral("document-open")));
0038 
0039     connect(widget, &DiscoverWidget::deviceSelected, this, &SelectDeviceAndFilesPage::deviceSelected);
0040     connect(selectBtn, &QPushButton::clicked, this, &SelectDeviceAndFilesPage::openFileDialog);
0041 }
0042 
0043 void SelectDeviceAndFilesPage::deviceSelected(BluezQt::DevicePtr device)
0044 {
0045     static_cast<SendFileWizard *>(wizard())->setDevice(device);
0046 
0047     Q_EMIT completeChanged();
0048 }
0049 
0050 void SelectDeviceAndFilesPage::openFileDialog()
0051 {
0052     const QStringList &files = QFileDialog::getOpenFileNames(this, //
0053                                                              i18n("Open fileā€¦"),
0054                                                              QStandardPaths::writableLocation(QStandardPaths::HomeLocation),
0055                                                              QStringLiteral("*"));
0056 
0057     if (files.isEmpty()) {
0058         selectLbl->setText(i18n("Select one or more files:"));
0059     } else {
0060         QStringList fileNames;
0061         for (const QString &file : files) {
0062             QFileInfo info(file);
0063             fileNames.append(info.fileName());
0064         }
0065         selectLbl->setText(i18n("Selected files: <b>%1</b>", fileNames.join(QStringLiteral(", "))));
0066     }
0067 
0068     m_wizard->setFiles(files);
0069 
0070     Q_EMIT completeChanged();
0071 }
0072 
0073 bool SelectDeviceAndFilesPage::isComplete() const
0074 {
0075     if (!m_wizard->device()) {
0076         return false;
0077     }
0078 
0079     if (m_wizard->files().isEmpty()) {
0080         return false;
0081     }
0082 
0083     return true;
0084 }