#include "qtuicodemodelsupport.h" #include "qt4buildconfiguration.h" #include "qt4project.h" #include using namespace Qt4ProjectManager; using namespace Internal; Qt4UiCodeModelSupport::Qt4UiCodeModelSupport(CppTools::CppModelManagerInterface *modelmanager, Qt4Project *project, const QString &source, const QString &uiHeaderFile) : CppTools::AbstractEditorSupport(modelmanager), m_project(project), m_sourceName(source), m_fileName(uiHeaderFile), m_updateIncludingFiles(false) { // qDebug()<<"ctor Qt4UiCodeModelSupport for"< sourceTime)) { QFile file(m_fileName); if (file.open(QFile::ReadOnly)) { // qDebug()<<"ui*h file is more recent then source file, using information from ui*h file"<(m_project->activeBuildConfiguration()); QProcess uic; uic.setEnvironment(m_project->activeBuildConfiguration()->environment().toStringList()); uic.start(qt4bc->qtVersion()->uicCommand(), QStringList(), QIODevice::ReadWrite); uic.waitForStarted(); uic.write(ui.toUtf8()); uic.closeWriteChannel(); if (uic.waitForFinished()) { m_contents = uic.readAllStandardOutput(); m_cacheTime = QDateTime::currentDateTime(); return true; } else { // qDebug()<<"running uic failed"<<" using uic: "<qtVersion(m_project->activeBuildConfiguration())->uicCommand(); // qDebug()<contents())) { // qDebug()<<"runUic: success, updated on the fly"; updateDocument(); } else { // qDebug()<<"runUic: failed, not updated"; } } void Qt4UiCodeModelSupport::updateFromBuild() { // qDebug()<<"Qt4UiCodeModelSupport::updateFromBuild() for file"<= sourceTime) { // qDebug()<<"Cache is still more recent then source"; return; } else { QFileInfo fi(m_fileName); QDateTime uiHeaderTime = fi.exists() ? fi.lastModified() : QDateTime(); if (uiHeaderTime.isValid() && (uiHeaderTime > sourceTime)) { if (m_cacheTime >= uiHeaderTime) return; // qDebug()<<"found ui*h updating from it"; QFile file(m_fileName); if (file.open(QFile::ReadOnly)) { QTextStream stream(&file); m_contents = stream.readAll().toUtf8(); m_cacheTime = uiHeaderTime; updateDocument(); return; } } // qDebug()<<"ui*h not found or not more recent then source not changing anything"; } }