1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798991001011021031041051061071081091101111121131141151161171181191201211221231241251261271281291301311321331341351361371381391401411421431441451461471481491501511521531541551561571581591601611621631641651661671681691701711721731741751761771781791801811821831841851861871881891901911921931941951961971981992002012022032042052062072082092102112122132142152162172182192202212222232242252262272282292302312322332342352362372382392402412422432442452462472482492502512522532542552562572582592602612622632642652662672682692702712722732742752762772782792802812822832842852862872882892902912922932942952962972982993003013023033043053063073083093103113123133143153163173183193203213223233243253263273283293303313323333343353363373383393403413423433443453463473483493503513523533543553563573583593603613623633643653663673683693703713723733743753763773783793803813823833843853863873883893903913923933943953963973983994004014024034044054064074084094104114124134144154164174184194204214224234244254264274284294304314324334344354364374384394404414424434444454464474484494504514524534544554564574584594604614624634644654664674684694704714724734744754764774784794804814824834844854864874884894904914924934944954964974984995005015025035045055065075085095105115125135145155165175185195205215225235245255265275285295305315325335345355365375385395405415425435445455465475485495505515525535545555565575585595605615625635645655665675685695705715725735745755765775785795805815825835845855865875885895905915925935945955965975985996006016026036046056066076086096106116126136146156166176186196206216226236246256266276286296306316326336346356366376386396406416426436446456466476486496506516526536546556566576586596606616626636646656666676686696706716726736746756766776786796806816826836846856866876886896906916926936946956966976986997007017027037047057067077087097107117127137147157167177187197207217227237247257267277287297307317327337347357367377387397407417427437447457467477487497507517527537547557567577587597607617627637647657667677687697707717727737747757767777787797807817827837847857867877887897907917927937947957967977987998008018028038048058068078088098108118128138148158168178188198208218228238248258268278288298308318328338348358368378388398408418428438448458468478488498508518528538548558568578588598608618628638648658668678688698708718728738748758768778788798808818828838848858868878888898908918928938948958968978988999009019029039049059069079089099109119129139149159169179189199209219229239249259269279289299309319329339349359369379389399409419429439449459469479489499509519529539549559569579589599609619629639649659669679689699709719729739749759769779789799809819829839849859869879889899909919929939949959969979989991000100110021003100410051006100710081009101010111012101310141015101610171018101910201021102210231024102510261027102810291030 |
- #include "tizenmanager.h"
- #include "tizenconstants.h"
- #include <coreplugin/documentmanager.h>
- #include <projectexplorer/projectexplorer.h>
- #include <projectexplorer/toolchain.h>
- #include <projectexplorer/session.h>
- #include <projectexplorer/target.h>
- #include <qt4projectmanager/qt4nodes.h>
- #include <qt4projectmanager/qt4project.h>
- #include <qt4projectmanager/qt4projectmanagerconstants.h>
- #include <qt4projectmanager/qt4buildconfiguration.h>
- #include <qtsupport/customexecutablerunconfiguration.h>
- #include <qtsupport/qtkitinformation.h>
- #include <qtsupport/qtsupportconstants.h>
- #include <QDir>
- #include <QFileSystemWatcher>
- #include <QList>
- #include <QProcess>
- #include <QMessageBox>
- #include <QApplication>
- #include <QDomDocument>
- namespace {
- const QLatin1String TizenDirName("tizen");
- const QLatin1String TizenManifestName("manifest.xml");
- const QLatin1String TizenCommandLineBuildDirName("CommandLineBuild");
- const QLatin1String TizenApplicationPackageDirName("ApplicationPackage");
- }
- namespace Tizen {
- namespace Internal {
- bool TizenManager::supportsTizen(ProjectExplorer::Target *target)
- {
- if (!qobject_cast<Qt4ProjectManager::Qt4Project *>(target->project()))
- return false;
- QtSupport::BaseQtVersion *version = QtSupport::QtKitInformation::qtVersion(target->kit());
- return version && version->type() == QLatin1String(QLatin1String(Constants::TIZEN_QT));
- }
- QString TizenManager::packageName(ProjectExplorer::Target *target)
- {
- return QString(QLatin1String("%1-%2-%3.tpk"))
- .arg(packageId(target))
- .arg(packageVersionString(target))
- .arg(targetArch(target));
- }
- QString TizenManager::applicationName(ProjectExplorer::Target *target)
- {
- return QString();
- }
- QString TizenManager::packageId(ProjectExplorer::Target *target)
- {
- QDomDocument doc;
- if (!openManifest(target, doc))
- return QString();
- QDomElement manifestElem = doc.documentElement();
- QDomNodeList ids = manifestElem.elementsByTagName(QLatin1String("Id"));
- if (ids.count() > 0) {
- return ids.item(0).toElement().text();
- }
- return QString();
- }
- QString TizenManager::packageVersionString(ProjectExplorer::Target *target)
- {
- QDomDocument doc;
- if (!openManifest(target, doc))
- return QString();
- QDomElement manifestElem = doc.documentElement();
- QDomNodeList ids = manifestElem.elementsByTagName(QLatin1String("Version"));
- if (ids.count() > 0) {
- return ids.item(0).toElement().text();
- }
- return QString();
- }
- QString TizenManager::targetArch(ProjectExplorer::Target *target)
- {
- ProjectExplorer::ToolChain *tc = ProjectExplorer::ToolChainKitInformation::toolChain(target->kit());
- if (!tc)
- return QString();
- ProjectExplorer::Abi::Architecture architecture = tc->targetAbi().architecture();
- if ( architecture == ProjectExplorer::Abi::ArmArchitecture) {
- return QLatin1String("arm");
- } else if (architecture == ProjectExplorer::Abi::X86Architecture) {
- return QLatin1String("i386");
- } else {
- return QLatin1String("undefined");
- }
- return QString();
- }
- Utils::FileName TizenManager::manifestPath(ProjectExplorer::Target *target)
- {
- return Utils::FileName::fromString(target->project()->projectDirectory()).appendPath(TizenDirName).appendPath(TizenManifestName);
- }
- Utils::FileName TizenManager::commandLineBuildPath(ProjectExplorer::Target *target)
- {
- return Utils::FileName::fromString(target->activeBuildConfiguration()->buildDirectory())
- .appendPath(TizenApplicationPackageDirName)
- .appendPath(packageId(target))
- .appendPath(TizenCommandLineBuildDirName);
- }
- void TizenManager::raiseError(const QString &reason)
- {
- QMessageBox::critical(0, tr("Tizen project manager"), reason);
- }
- bool TizenManager::openXmlFile(QDomDocument &doc, const Utils::FileName &fileName)
- {
- QFile f(fileName.toString());
- if (!f.open(QIODevice::ReadOnly)) {
- qWarning() <<"Can't open file:"<<fileName.toString();
- return false;
- }
- if (!doc.setContent(f.readAll())) {
- raiseError(tr("Can't parse '%1'").arg(fileName.toUserOutput()));
- return false;
- }
- return true;
- }
- bool TizenManager::saveXmlFile(ProjectExplorer::Target *target, QDomDocument &doc, const Utils::FileName &fileName)
- {
- QFile f(fileName.toString());
- if (!f.open(QIODevice::WriteOnly)) {
- raiseError(tr("Can't open '%1'").arg(fileName.toUserOutput()));
- return false;
- }
- return f.write(doc.toByteArray(4)) >= 0;
- }
- bool TizenManager::openManifest(ProjectExplorer::Target *target, QDomDocument &doc)
- {
- bool ret = openXmlFile(doc, manifestPath(target));
- if (!ret) {
- raiseError(tr("Can open manifest file '%1'").arg(manifestPath(target).toUserOutput()));
- }
- return ret;
- }
- bool TizenManager::saveManifest(ProjectExplorer::Target *target, QDomDocument &doc)
- {
- Core::FileChangeBlocker blocker(manifestPath(target).toString());
- return saveXmlFile(target, doc, manifestPath(target));
- }
- }
- }
|