123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133 |
- /**************************************************************************
- **
- ** Copyright (c) 2014 Tomasz Olszak <olszak.tomasz@gmail.com>
- ** Contact: http://www.qt-project.org/legal
- **
- ** This file is part of Qt Creator.
- **
- ** Commercial License Usage
- ** Licensees holding valid commercial Qt licenses may use this file in
- ** accordance with the commercial license agreement provided with the
- ** Software or, alternatively, in accordance with the terms contained in
- ** a written agreement between you and Digia. For licensing terms and
- ** conditions see http://qt.digia.com/licensing. For further information
- ** use the contact form at http://qt.digia.com/contact-us.
- **
- ** GNU Lesser General Public License Usage
- ** Alternatively, this file may be used under the terms of the GNU Lesser
- ** General Public License version 2.1 as published by the Free Software
- ** Foundation and appearing in the file LICENSE.LGPL included in the
- ** packaging of this file. Please review the following information to
- ** ensure the GNU Lesser General Public License version 2.1 requirements
- ** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
- **
- ** In addition, as a special exception, Digia gives you certain additional
- ** rights. These rights are described in the Digia Qt LGPL Exception
- ** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
- **
- ****************************************************************************/
- #include "tizendebug.h"
- #include "tizenconfigurations.h"
- #include "tizendeploypackageinstallationstep.h"
- #include "tizendeploypackageinstallationconfigwidget.h"
- #include "tizenmanager.h"
- #include "processoutputhandler.h"
- #include <projectexplorer/buildsteplist.h>
- #include <projectexplorer/deployconfiguration.h>
- #include <projectexplorer/target.h>
- #include <projectexplorer/buildconfiguration.h>
- #include <projectexplorer/kitinformation.h>
- #include <utils/hostosinfo.h>
- #include <QDebug>
- #include <QDir>
- #include <QThread>
- using namespace Tizen::Internal;
- const Core::Id TizenDeployPackageInstallationStep::Id = Core::Id("Qt4ProjectManager.TizenDeployPackageInstallationStep");
- TizenDeployPackageInstallationStep::TizenDeployPackageInstallationStep(ProjectExplorer::BuildStepList *bsl)
- : BuildStep(bsl, Id)
- {
- const QString name = tr("Install package(tpk)");
- setDefaultDisplayName(name);
- setDisplayName(name);
- }
- bool TizenDeployPackageInstallationStep::init()
- {
- return true;
- }
- ProjectExplorer::BuildStepConfigWidget *TizenDeployPackageInstallationStep::createConfigWidget()
- {
- TizenDeployPackageInstallationConfigWidget *configWidget = new TizenDeployPackageInstallationConfigWidget();
- TizenConfig tc = TizenConfigurations::currentConfig();
- Utils::FileName packageFileName = TizenManager::commandLineBuildPath(target())
- .appendPath(TizenManager::packageName(target()));
- configWidget->setAdditionalSummaryText(QString::fromLatin1("%1 install %2")
- .arg(tc.sdbLocation().toString())
- .arg(packageFileName.toString()));
- return configWidget;
- }
- TizenDeployPackageInstallationStep::TizenDeployPackageInstallationStep(ProjectExplorer::BuildStepList *bc, TizenDeployPackageInstallationStep *other)
- : BuildStep(bc, other)
- { }
- void TizenDeployPackageInstallationStep::run(QFutureInterface<bool> &fi)
- {
- emit addOutput(tr("Installing package."), BuildStep::MessageOutput);
- QProcess *sdbProcess = new QProcess;
- connect(new ProcessOutputHandler(sdbProcess),
- SIGNAL(output(QString,ProjectExplorer::BuildStep::OutputFormat,ProjectExplorer::BuildStep::OutputNewlineSetting)),
- SIGNAL(addOutput(QString,ProjectExplorer::BuildStep::OutputFormat,ProjectExplorer::BuildStep::OutputNewlineSetting)));
- QStringList arguments;
- ProjectExplorer::IDevice::ConstPtr device = ProjectExplorer::DeviceKitInformation::device(target()->kit());
- if (device.isNull()) {
- emit addOutput(tr("No device. Package %1 can't be installed.").arg(TizenManager::packageName(target())), BuildStep::ErrorOutput);
- fi.reportResult(false);
- sdbProcess->deleteLater();
- return;
- }
- arguments << QLatin1String("--serial")
- << device->id().toString()
- << QLatin1String("install")
- << TizenManager::commandLineBuildPath(target()).appendPath(TizenManager::packageName(target())).toString();
- TizenConfig tc = TizenConfigurations::currentConfig();
- sdbProcess->start(tc.sdbLocation().toString(), arguments);
- if(!sdbProcess->waitForStarted(5000) || !sdbProcess->waitForFinished(360000)) {
- addOutput(tr("Can't start %1.").arg(tc.sdbLocation().toString()), BuildStep::ErrorOutput);
- fi.reportResult(false);
- sdbProcess->deleteLater();
- return;
- }
- if (sdbProcess->exitCode() != 0) {
- emit addOutput(tr("Error while installing package."), BuildStep::ErrorOutput);
- fi.reportResult(false);
- } else {
- emit addOutput(tr("Package installed."), BuildStep::MessageOutput);
- fi.reportResult(true);
- }
- disconnect(sdbProcess, 0, this, 0);
- sdbProcess->deleteLater();
- }
|