Advertisement
Guest User

Untitled

a guest
Jun 23rd, 2017
58
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Diff 14.94 KB | None | 0 0
  1. diff --git a/src/plugins/qt4projectmanager/qt-maemo/maemodeployables.cpp b/src/plugins/qt4projectmanager/qt-maemo/maemodeployables.cpp
  2. index d1e9d5d..e7c9336 100644
  3. --- a/src/plugins/qt4projectmanager/qt-maemo/maemodeployables.cpp
  4. +++ b/src/plugins/qt4projectmanager/qt-maemo/maemodeployables.cpp
  5. @@ -67,9 +67,12 @@ MaemoDeployables::~MaemoDeployables() {}
  6.  
  7.  void MaemoDeployables::init()
  8.  {
  9. -    connect(qt4BuildConfiguration()->qt4Target()->qt4Project(),
  10. -        SIGNAL(proFileUpdated(Qt4ProjectManager::Internal::Qt4ProFileNode*)),
  11. -        m_updateTimer, SLOT(start()));
  12. +    Qt4Project *pro = qt4BuildConfiguration()->qt4Target()->qt4Project();
  13. +    connect(pro,  SIGNAL(proFileUpdated(Qt4ProjectManager::Internal::Qt4ProFileNode*)),
  14. +            m_updateTimer, SLOT(start()));
  15. +    connect(pro, SIGNAL(proFileInvalidated(Qt4ProjectManager::Internal::Qt4ProFileNode *)),
  16. +            this, SLOT(proFileInvalidated(Qt4ProjectManager::Internal::Qt4ProFileNode *)));
  17. +
  18.      createModels();
  19.  }
  20.  
  21. @@ -88,9 +91,11 @@ void MaemoDeployables::createModels()
  22.      m_proFileOption->properties
  23.          = qt4BuildConfiguration()->qtVersion()->versionInfo();
  24.      m_proFileOption->target_mode = ProFileOption::TARG_UNIX_MODE;
  25. -    disconnect(qt4BuildConfiguration()->qt4Target()->qt4Project(),
  26. -        SIGNAL(proFileUpdated(Qt4ProjectManager::Internal::Qt4ProFileNode*)),
  27. -        m_updateTimer, SLOT(start()));
  28. +    Qt4Project *pro = qt4BuildConfiguration()->qt4Target()->qt4Project();
  29. +    disconnect(pro, SIGNAL(proFileUpdated(Qt4ProjectManager::Internal::Qt4ProFileNode*)),
  30. +               m_updateTimer, SLOT(start()));
  31. +    disconnect(pro, SIGNAL(proFileInvalidated(Qt4ProjectManager::Internal::Qt4ProFileNode *)),
  32. +               this, SLOT(proFileInvalidated(Qt4ProjectManager::Internal::Qt4ProFileNode *)));
  33.      beginResetModel();
  34.      qDeleteAll(m_listModels);
  35.      m_listModels.clear();
  36. @@ -120,9 +125,10 @@ void MaemoDeployables::createModels()
  37.      }
  38.  
  39.      endResetModel();
  40. -    connect(qt4BuildConfiguration()->qt4Target()->qt4Project(),
  41. -        SIGNAL(proFileUpdated(Qt4ProjectManager::Internal::Qt4ProFileNode*)),
  42. -        m_updateTimer, SLOT(start()));
  43. +    connect(pro, SIGNAL(proFileUpdated(Qt4ProjectManager::Internal::Qt4ProFileNode*)),
  44. +            m_updateTimer, SLOT(start()));
  45. +    connect(pro, SIGNAL(proFileInvalidated(Qt4ProjectManager::Internal::Qt4ProFileNode *)),
  46. +            this, SLOT(proFileInvalidated(Qt4ProjectManager::Internal::Qt4ProFileNode *)));
  47.  }
  48.  
  49.  void MaemoDeployables::createModels(const Qt4ProFileNode *proFileNode)
  50. diff --git a/src/plugins/qt4projectmanager/qt-maemo/maemorunconfiguration.cpp b/src/plugins/qt4projectmanager/qt-maemo/maemorunconfiguration.cpp
  51. index fcb737c..c4e713a 100644
  52. --- a/src/plugins/qt4projectmanager/qt-maemo/maemorunconfiguration.cpp
  53. +++ b/src/plugins/qt4projectmanager/qt-maemo/maemorunconfiguration.cpp
  54. @@ -97,9 +97,11 @@ void MaemoRunConfiguration::init()
  55.          this, SLOT(handleDeployConfigChanged()));
  56.      handleDeployConfigChanged();
  57.  
  58. -    connect(qt4Target()->qt4Project(),
  59. -        SIGNAL(proFileUpdated(Qt4ProjectManager::Internal::Qt4ProFileNode*)),
  60. -        this, SLOT(proFileUpdate(Qt4ProjectManager::Internal::Qt4ProFileNode*)));
  61. +    Qt4Project *pro = qt4Target()->qt4Project();
  62. +    connect(pro, SIGNAL(proFileUpdated(Qt4ProjectManager::Internal::Qt4ProFileNode*)),
  63. +            this, SLOT(proFileUpdate(Qt4ProjectManager::Internal::Qt4ProFileNode*)));
  64. +    connect(pro, SIGNAL(profFileInvalidated(Qt4ProjectManager::Internal::Qt4ProFileNode *)),
  65. +            this, SLOT(proFileInvalidated(Qt4ProjectManager::Internal::Qt4ProFileNode*)));
  66.  }
  67.  
  68.  MaemoRunConfiguration::~MaemoRunConfiguration()
  69. diff --git a/src/plugins/qt4projectmanager/qt-s60/s60deployconfiguration.cpp b/src/plugins/qt4projectmanager/qt-s60/s60deployconfiguration.cpp
  70. index cd4a04a..d5514da 100644
  71. --- a/src/plugins/qt4projectmanager/qt-s60/s60deployconfiguration.cpp
  72. +++ b/src/plugins/qt4projectmanager/qt-s60/s60deployconfiguration.cpp
  73. @@ -110,6 +110,8 @@ S60DeployConfiguration::S60DeployConfiguration(Target *target, S60DeployConfigur
  74.  void S60DeployConfiguration::ctor()
  75.  {
  76.      setDefaultDisplayName(defaultDisplayName());
  77. +    // TODO ??? why is the deployconfiguration signaling something?
  78. +    // What's the point?
  79.      connect(qt4Target()->qt4Project(), SIGNAL(proFileUpdated(Qt4ProjectManager::Internal::Qt4ProFileNode*)),
  80.              this, SIGNAL(targetInformationChanged()));
  81.      connect(qt4Target(), SIGNAL(activeBuildConfigurationChanged(ProjectExplorer::BuildConfiguration*)),
  82. diff --git a/src/plugins/qt4projectmanager/qt-s60/s60emulatorrunconfiguration.cpp b/src/plugins/qt4projectmanager/qt-s60/s60emulatorrunconfiguration.cpp
  83. index 3ffa86e..06d9a9a 100644
  84. --- a/src/plugins/qt4projectmanager/qt-s60/s60emulatorrunconfiguration.cpp
  85. +++ b/src/plugins/qt4projectmanager/qt-s60/s60emulatorrunconfiguration.cpp
  86. @@ -100,8 +100,11 @@ void S60EmulatorRunConfiguration::ctor()
  87.      else
  88.          //: S60 emulator run configuration default display name (no pro-file name)
  89.          setDefaultDisplayName(tr("Run on Symbian Emulator"));
  90. -    connect(qt4Target()->qt4Project(), SIGNAL(proFileUpdated(Qt4ProjectManager::Internal::Qt4ProFileNode*)),
  91. +    Qt4Project *pro = qt4Target()->qt4Project();
  92. +    connect(pro, SIGNAL(proFileUpdated(Qt4ProjectManager::Internal::Qt4ProFileNode*)),
  93.              this, SLOT(proFileUpdate(Qt4ProjectManager::Internal::Qt4ProFileNode*)));
  94. +    connect(pro, SIGNAL(proFileInvalidated(Qt4ProjectManager::Internal::Qt4ProFileNode *)),
  95. +            this, SLOT(proFileInvalidated(Qt4ProjectManager::Internal::Qt4ProFileNode *)));
  96.  }
  97.  
  98.  
  99. diff --git a/src/plugins/qt4projectmanager/qt4nodes.cpp b/src/plugins/qt4projectmanager/qt4nodes.cpp
  100. index eae69be..24aa65f 100644
  101. --- a/src/plugins/qt4projectmanager/qt4nodes.cpp
  102. +++ b/src/plugins/qt4projectmanager/qt4nodes.cpp
  103. @@ -1243,6 +1243,7 @@ Qt4ProFileNode::Qt4ProFileNode(Qt4Project *project,
  104.                                 QObject *parent)
  105.          : Qt4PriFileNode(project, this, filePath),
  106.            m_projectType(InvalidProject),
  107. +          m_validParse(false),
  108.            m_readerExact(0),
  109.            m_readerCumulative(0)
  110.  {
  111. @@ -1309,6 +1310,12 @@ QStringList Qt4ProFileNode::variableValue(const Qt4Variable var) const
  112.  
  113.  void Qt4ProFileNode::scheduleUpdate()
  114.  {
  115. +    if (m_validParse) {
  116. +        m_validParse = false;
  117. +        foreach (NodesWatcher *watcher, watchers())
  118. +            if (Qt4NodesWatcher *qt4Watcher = qobject_cast<Qt4NodesWatcher*>(watcher))
  119. +                emit qt4Watcher->proFileInvalidated(this);
  120. +    }
  121.      m_project->scheduleAsyncUpdate(this);
  122.  }
  123.  
  124. @@ -1321,12 +1328,16 @@ void Qt4ProFileNode::asyncUpdate()
  125.      m_parseFutureWatcher.setFuture(future);
  126.  }
  127.  
  128. -bool Qt4ProFileNode::update()
  129. +void Qt4ProFileNode::update()
  130.  {
  131. +    m_validParse = false;
  132. +    foreach (NodesWatcher *watcher, watchers())
  133. +        if (Qt4NodesWatcher *qt4Watcher = qobject_cast<Qt4NodesWatcher*>(watcher))
  134. +            emit qt4Watcher->proFileInvalidated(this);
  135. +
  136.      setupReader();
  137.      bool parserError = evaluate();
  138.      applyEvaluate(!parserError, false);
  139. -    return !parserError;
  140.  }
  141.  
  142.  void Qt4ProFileNode::setupReader()
  143. @@ -1636,6 +1647,8 @@ void Qt4ProFileNode::applyEvaluate(bool parseResult, bool async)
  144.      createUiCodeModelSupport();
  145.      updateUiFiles();
  146.  
  147. +    m_validParse = true;
  148. +
  149.      foreach (NodesWatcher *watcher, watchers())
  150.          if (Qt4NodesWatcher *qt4Watcher = qobject_cast<Qt4NodesWatcher*>(watcher))
  151.              emit qt4Watcher->proFileUpdated(this, parseResult);
  152. diff --git a/src/plugins/qt4projectmanager/qt4nodes.h b/src/plugins/qt4projectmanager/qt4nodes.h
  153. index 5d0a3d4..ac55a8e 100644
  154. --- a/src/plugins/qt4projectmanager/qt4nodes.h
  155. +++ b/src/plugins/qt4projectmanager/qt4nodes.h
  156. @@ -281,7 +281,7 @@ public:
  157.  
  158.      QString makefile() const;
  159.  
  160. -    bool update();
  161. +    void update();
  162.      void scheduleUpdate();
  163.  
  164.  public slots:
  165. @@ -319,6 +319,8 @@ private:
  166.      TargetInformation m_qt4targetInformation;
  167.      friend class Qt4NodeHierarchy;
  168.  
  169. +    bool m_validParse;
  170. +
  171.      // Async stuff
  172.      QFutureWatcher<bool> m_parseFutureWatcher;
  173.      ProFileReader *m_readerExact;
  174. @@ -342,6 +344,7 @@ signals:
  175.                            const QHash<Qt4Variable, QStringList> &newValues);
  176.  
  177.      void proFileUpdated(Qt4ProjectManager::Internal::Qt4ProFileNode *projectNode, bool success);
  178. +    void proFileInvalidated(Qt4ProjectManager::Internal::Qt4ProFileNode *projectNode);
  179.  
  180.  private:
  181.      // let them emit signals
  182. diff --git a/src/plugins/qt4projectmanager/qt4project.cpp b/src/plugins/qt4projectmanager/qt4project.cpp
  183. index 8b1156c..9d43eed 100644
  184. --- a/src/plugins/qt4projectmanager/qt4project.cpp
  185. +++ b/src/plugins/qt4projectmanager/qt4project.cpp
  186. @@ -338,7 +338,10 @@ bool Qt4Project::fromMap(const QVariantMap &map)
  187.              this, SLOT(qtVersionsChanged()));
  188.  
  189.      connect(m_nodesWatcher, SIGNAL(proFileUpdated(Qt4ProjectManager::Internal::Qt4ProFileNode*,bool)),
  190. -            this, SLOT(proFileUpdateDone(Qt4ProjectManager::Internal::Qt4ProFileNode*,bool)));
  191. +            this, SIGNAL(proFileUpdated(Qt4ProjectManager::Internal::Qt4ProFileNode *, bool)));
  192. +
  193. +    connect(m_nodesWatcher, SIGNAL(proFileInvalidated(Qt4ProjectManager::Internal::Qt4ProFileNode*)),
  194. +            this, SIGNAL(proFileInvalidated(Qt4ProjectManager::Internal::Qt4ProFileNode*)));
  195.  
  196.      connect(this, SIGNAL(activeTargetChanged(ProjectExplorer::Target*)),
  197.              this, SLOT(activeTargetWasChanged()));
  198. @@ -618,6 +621,7 @@ void Qt4Project::update()
  199.      if (debug)
  200.          qDebug()<<"Doing sync update";
  201.      m_rootProjectNode->update();
  202. +
  203.      if (debug)
  204.          qDebug()<<"State is now Base";
  205.      m_asyncUpdateState = Base;
  206. @@ -627,6 +631,7 @@ void Qt4Project::scheduleAsyncUpdate(Qt4ProFileNode *node)
  207.  {
  208.      if (m_asyncUpdateState == ShuttingDown)
  209.          return;
  210. +
  211.      if (debug)
  212.          qDebug()<<"schduleAsyncUpdate (node)";
  213.      Q_ASSERT(m_asyncUpdateState != NoState);
  214. diff --git a/src/plugins/qt4projectmanager/qt4project.h b/src/plugins/qt4projectmanager/qt4project.h
  215. index 6b2f7b2..8b4cf9c 100644
  216. --- a/src/plugins/qt4projectmanager/qt4project.h
  217. +++ b/src/plugins/qt4projectmanager/qt4project.h
  218. @@ -193,8 +193,8 @@ public:
  219.      Internal::CentralizedFolderWatcher *centralizedFolderWatcher();
  220.  
  221.  signals:
  222. -    /// emitted after parse
  223. -    void proFileUpdated(Qt4ProjectManager::Internal::Qt4ProFileNode *node);
  224. +    void proFileUpdated(Qt4ProjectManager::Internal::Qt4ProFileNode *node, bool);
  225. +    void proFileInvalidated(Qt4ProjectManager::Internal::Qt4ProFileNode *node);
  226.      void buildDirectoryInitialized();
  227.  
  228.  public slots:
  229. diff --git a/src/plugins/qt4projectmanager/qt4runconfiguration.cpp b/src/plugins/qt4projectmanager/qt4runconfiguration.cpp
  230. index 518cd91..d11800c 100644
  231. --- a/src/plugins/qt4projectmanager/qt4runconfiguration.cpp
  232. +++ b/src/plugins/qt4projectmanager/qt4runconfiguration.cpp
  233. @@ -102,7 +102,8 @@ Qt4RunConfiguration::Qt4RunConfiguration(Qt4Target *parent, const QString &proFi
  234.      m_runMode(Gui),
  235.      m_isUsingDyldImageSuffix(false),
  236.      m_userSetWokingDirectory(false),
  237. -    m_baseEnvironmentBase(Qt4RunConfiguration::BuildEnvironmentBase)
  238. +    m_baseEnvironmentBase(Qt4RunConfiguration::BuildEnvironmentBase),
  239. +    m_parseSuccess(true)
  240.  {
  241.      ctor();
  242.  }
  243. @@ -116,7 +117,8 @@ Qt4RunConfiguration::Qt4RunConfiguration(Qt4Target *parent, Qt4RunConfiguration
  244.      m_userSetWokingDirectory(source->m_userSetWokingDirectory),
  245.      m_userWorkingDirectory(source->m_userWorkingDirectory),
  246.      m_userEnvironmentChanges(source->m_userEnvironmentChanges),
  247. -    m_baseEnvironmentBase(source->m_baseEnvironmentBase)
  248. +    m_baseEnvironmentBase(source->m_baseEnvironmentBase),
  249. +    m_parseSuccess(source->m_parseSuccess)
  250.  {
  251.      ctor();
  252.  }
  253. @@ -132,6 +134,8 @@ Qt4Target *Qt4RunConfiguration::qt4Target() const
  254.  
  255.  bool Qt4RunConfiguration::isEnabled(ProjectExplorer::BuildConfiguration *configuration) const
  256.  {
  257. +    if (!m_parseSuccess)
  258. +        return false;
  259.      Qt4BuildConfiguration *qt4bc = qobject_cast<Qt4BuildConfiguration *>(configuration);
  260.      QTC_ASSERT(qt4bc, return false);
  261.  
  262. @@ -156,22 +160,45 @@ bool Qt4RunConfiguration::isEnabled(ProjectExplorer::BuildConfiguration *configu
  263.      return enabled;
  264.  }
  265.  
  266. -void Qt4RunConfiguration::proFileUpdate(Qt4ProjectManager::Internal::Qt4ProFileNode *pro)
  267. +void Qt4RunConfiguration::proFileUpdated(Qt4ProjectManager::Internal::Qt4ProFileNode *pro, bool success)
  268.  {
  269. -    if  (m_proFilePath == pro->path())
  270. +    if (m_proFilePath != pro->path())
  271. +        return;
  272. +    qDebug()<<"proFileUpdated"<<success;
  273. +    bool enabled = isEnabled();
  274. +    m_parseSuccess = success;
  275. +    if (enabled != isEnabled()) {
  276. +        qDebug()<<"Emitting isEnabledChanged()"<<!enabled;
  277. +        emit isEnabledChanged(!enabled);
  278. +    }
  279. +    if  (success)
  280.          emit effectiveTargetInformationChanged();
  281.  }
  282.  
  283. +void Qt4RunConfiguration::proFileInvalidated(Qt4ProjectManager::Internal::Qt4ProFileNode *pro)
  284. +{
  285. +    if (m_proFilePath != pro->path())
  286. +        return;
  287. +    qDebug()<<"proFileInvalidated";
  288. +    bool enabled = isEnabled();
  289. +    m_parseSuccess = false;
  290. +    if (enabled != isEnabled()) {
  291. +        qDebug()<<"Emitting isEnabledChanged()"<<!enabled;
  292. +        emit isEnabledChanged(!enabled);
  293. +    }
  294. +}
  295. +
  296.  void Qt4RunConfiguration::ctor()
  297.  {
  298.      setDefaultDisplayName(defaultDisplayName());
  299.  
  300.      connect(qt4Target(), SIGNAL(environmentChanged()),
  301.              this, SIGNAL(baseEnvironmentChanged()));
  302. -    connect(qt4Target()->qt4Project(), SIGNAL(proFileUpdateRequested(Qt4ProjectManager::Internal::Qt4ProFileNode*)),
  303. -            this, SLOT(proFileUpdateRequested()));
  304.      connect(qt4Target()->qt4Project(), SIGNAL(proFileUpdated(Qt4ProjectManager::Internal::Qt4ProFileNode*,bool)),
  305.              this, SLOT(proFileUpdated(Qt4ProjectManager::Internal::Qt4ProFileNode*,bool)));
  306. +
  307. +    connect(qt4Target()->qt4Project(), SIGNAL(proFileInvalidated(Qt4ProjectManager::Internal::Qt4ProFileNode*)),
  308. +            this, SLOT(proFileInvalidated(Qt4ProjectManager::Internal::Qt4ProFileNode*)));
  309.  }
  310.  
  311.  //////
  312. diff --git a/src/plugins/qt4projectmanager/qt4runconfiguration.h b/src/plugins/qt4projectmanager/qt4runconfiguration.h
  313. index c3aea55..c0e3ecd 100644
  314. --- a/src/plugins/qt4projectmanager/qt4runconfiguration.h
  315. +++ b/src/plugins/qt4projectmanager/qt4runconfiguration.h
  316. @@ -109,8 +109,8 @@ signals:
  317.      void effectiveTargetInformationChanged();
  318.  
  319.  private slots:
  320. -    void proFileUpdateRequested();
  321.      void proFileUpdated(Qt4ProjectManager::Internal::Qt4ProFileNode *pro, bool success);
  322. +    void proFileInvalidated(Qt4ProjectManager::Internal::Qt4ProFileNode *pro);
  323.  
  324.  protected:
  325.      Qt4RunConfiguration(Qt4Target *parent, Qt4RunConfiguration *source);
  326. @@ -148,6 +148,7 @@ private:
  327.      QString m_userWorkingDirectory;
  328.      QList<Utils::EnvironmentItem> m_userEnvironmentChanges;
  329.      BaseEnvironmentBase m_baseEnvironmentBase;
  330. +    bool m_parseSuccess;
  331.  };
  332.  
  333.  class Qt4RunConfigurationWidget : public QWidget
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement