1 /**************************************************************************** 2 ** 3 ** Copyright (C) 2016 BlackBerry Limited. All rights reserved. 4 ** Contact: BlackBerry (qt@blackberry.com), KDAB (info@kdab.com) 5 ** 6 ** This file is part of Qt Creator. 7 ** 8 ** Commercial License Usage 9 ** Licensees holding valid commercial Qt licenses may use this file in 10 ** accordance with the commercial license agreement provided with the 11 ** Software or, alternatively, in accordance with the terms contained in 12 ** a written agreement between you and The Qt Company. For licensing terms 13 ** and conditions see https://www.qt.io/terms-conditions. For further 14 ** information use the contact form at https://www.qt.io/contact-us. 15 ** 16 ** GNU General Public License Usage 17 ** Alternatively, this file may be used under the terms of the GNU 18 ** General Public License version 3 as published by the Free Software 19 ** Foundation with exceptions as appearing in the file LICENSE.GPL3-EXCEPT 20 ** included in the packaging of this file. Please review the following 21 ** information to ensure the GNU General Public License requirements will 22 ** be met: https://www.gnu.org/licenses/gpl-3.0.html. 23 ** 24 ****************************************************************************/ 25 26 #pragma once 27 28 #include <QDialog> 29 30 #include <projectexplorer/deployablefile.h> 31 #include <projectexplorer/devicesupport/idevice.h> 32 33 namespace QSsh { 34 class SshRemoteProcessRunner; 35 } 36 37 namespace RemoteLinux { 38 class GenericDirectUploadService; 39 } 40 41 namespace Qnx { 42 namespace Internal { 43 44 namespace Ui { 45 class QnxDeployQtLibrariesDialog; 46 } 47 48 class QnxDeployQtLibrariesDialog : public QDialog 49 { 50 Q_OBJECT 51 52 public: 53 enum State { 54 Inactive, 55 CheckingRemoteDirectory, 56 RemovingRemoteDirectory, 57 Uploading 58 }; 59 60 explicit QnxDeployQtLibrariesDialog(const ProjectExplorer::IDevice::ConstPtr &device, 61 QWidget *parent = nullptr); 62 ~QnxDeployQtLibrariesDialog() override; 63 64 int execAndDeploy(int qtVersionId, const QString &remoteDirectory); 65 66 protected: 67 void closeEvent(QCloseEvent *event) override; 68 69 private slots: 70 void deployLibraries(); 71 void updateProgress(const QString &progressMessage); 72 void handleUploadFinished(); 73 74 void handleRemoteProcessError(); 75 void handleRemoteProcessCompleted(); 76 77 private: 78 QList<ProjectExplorer::DeployableFile> gatherFiles(); 79 QList<ProjectExplorer::DeployableFile> gatherFiles(const QString &dirPath, 80 const QString &baseDir = QString(), 81 const QStringList &nameFilters = QStringList()); 82 83 QString fullRemoteDirectory() const; 84 void checkRemoteDirectoryExistance(); 85 void removeRemoteDirectory(); 86 void startUpload(); 87 88 Ui::QnxDeployQtLibrariesDialog *m_ui; 89 90 QSsh::SshRemoteProcessRunner *m_processRunner; 91 RemoteLinux::GenericDirectUploadService *m_uploadService; 92 93 ProjectExplorer::IDevice::ConstPtr m_device; 94 95 int m_progressCount; 96 97 State m_state; 98 }; 99 100 } // namespace Internal 101 } // namespace Qnx 102