Commit Graph

149 Commits

Author SHA1 Message Date
Tobias Hunger
d78e0edb5d ProjectNodes: Remove no longer necessary signaling
The project tree is updated in one go now, so there is no need to
signal each and every change.

Change-Id: I7d5829d688b406ee2e701a2aa004b9e8bb5870a9
Reviewed-by: hjk <hjk@qt.io>
2017-03-10 16:22:36 +00:00
Tobias Hunger
71a5aee36f Session: Update SessionNode when Project tree changes
This moves ownership of the project's root node from the
project into the project tree!

Change-Id: I84eba884bd63b44e56c75023d8bf12caf5cc2833
Reviewed-by: hjk <hjk@qt.io>
2017-03-10 16:22:21 +00:00
Tobias Hunger
49989d46dc FolderNode: Add isAncesterOf(Node *)
Change-Id: I716593e7fd25f4acc31933e2f28273ced4674b73
Reviewed-by: hjk <hjk@qt.io>
2017-03-10 15:30:46 +00:00
Tobias Hunger
5a5a464dfa ProjectNodes: Introduce FolderNode::replaceSubtree
Introduce FolderNode::replaceSubtree incl. necessary signalling

Change-Id: I57762cd24a2986d3a04d0de6b794c1f6c772dbe6
Reviewed-by: hjk <hjk@qt.io>
2017-03-10 15:17:25 +00:00
Tobias Hunger
94c33d95ed ProjectNodes: Remove recursiveFileNode
Change-Id: Ibde61428517b187c84eca9293b17f8f665fb38ae
Reviewed-by: hjk <hjk@qt.io>
2017-03-10 14:45:03 +00:00
Tobias Hunger
1b9c18951a ProjectNodes: Make folderNode(FileName) method inaccessible
Change-Id: Ie355ea8fd5e909e9c3e6e2630faabe366d02051a
Reviewed-by: hjk <hjk@qt.io>
2017-03-09 14:29:11 +00:00
Tobias Hunger
aa51fd3962 ProjectNodes: Make recursiveFindOrCreateFolderNode private
Change-Id: I43315f19d931bec0ad7b81d3c72a4e7486f70445
Reviewed-by: hjk <hjk@qt.io>
2017-03-09 14:29:03 +00:00
hjk
d6df4492d0 ProjectExplorer: Use visitor-by-lambda for project tree
And inline it into user code. Less code in total and no intermediate
node lists.

Change-Id: I3724883408bfaa868266110aee27bbffd4d96bd8
Reviewed-by: Tim Jenssen <tim.jenssen@qt.io>
2017-03-08 09:05:29 +00:00
Tobias Hunger
9e8b427a70 ProjectExplorer: Nodes: Do not makeEmpty() as part of buildTree()
Do not call makeEmpty() as part of buildTree(). That makes it
impossible to combine buildTree with manual tree setup.

Change-Id: If0a0d9432fe39870917a6ba31594e8dcd6d31868
Reviewed-by: hjk <hjk@qt.io>
2017-02-24 08:40:04 +00:00
hjk
fd5e0a1486 ProjectExplorer: Remove Node::asSessionNode()
The only remaining uses could be removed or replaced by a
check for no parent node.

Change-Id: I13eba8ae418cf3d404bb3df7d389d72091af38d7
Reviewed-by: Tobias Hunger <tobias.hunger@qt.io>
2017-02-23 15:21:18 +00:00
hjk
4f47a8d745 ProjectExplorer: Remove FolderNode::projectNodes()
Merged into the using code now.

Change-Id: I4b39998799dde530ab48c504ac2a389d72705c4f
Reviewed-by: Tobias Hunger <tobias.hunger@qt.io>
2017-02-23 15:21:11 +00:00
Tobias Hunger
2c4a27d4d4 ProjectNodes: Add setter for addFileFilters to VirtualFolderNodes
Change-Id: I8a52798546b75f001c5ee447eee6024b06b0d287
Reviewed-by: Tim Jenssen <tim.jenssen@qt.io>
2017-02-17 12:51:30 +00:00
hjk
bccda22cce ProjectExplorer: Add a way to iterate over the node tree
Similar to what is used in Utils::TreeModel: Use lambdas
as "visitor".

Change-Id: Ia6e1a7ec022b61f94b01e1e8476bb932d22fd161
Reviewed-by: Tobias Hunger <tobias.hunger@qt.io>
2017-02-15 09:27:20 +00:00
Tobias Hunger
568130da70 ProjectExplorer: Add FolderNode::compress
Add a method to FolderNode that compresses a tree of folders like
A/B/C/file.txt into one FolderNode (A/B/C) and a FileNode (file.txt)

Change-Id: I5efa038c33b91ea01017269daa048ba101085d01
Reviewed-by: Tim Jenssen <tim.jenssen@qt.io>
2017-02-14 15:39:36 +00:00
Tobias Hunger
c888989a41 ProjectExplorer: Improve FolderNode::buildTree
Treat absolute paths more intelligently in FolderNode::buildTree: Add
them with their absolute paths instead of endless sequences of ..

Change-Id: I9d644588f91f1792f997dedfb20e68d210b9cf73
Reviewed-by: Tim Jenssen <tim.jenssen@qt.io>
2017-02-14 14:40:28 +00:00
hjk
a2c6e28478 ProjectManager: Show .qrc contents again
This fixes the second regression introduced by 04a525877b.

Change-Id: I5c5c72a036f139fa564c40e95ebf6acafc99792c
Reviewed-by: Mathias Hasselmann <mathias.hasselmann@kdab.com>
Reviewed-by: Tim Jenssen <tim.jenssen@qt.io>
2017-02-10 15:31:00 +00:00
hjk
04a525877b ProjectExplorer: Merge FolderNode's m_{file,folder}Node fields
One step closer to direct use of Utils::TreeNode.

Change-Id: Icd0dfd2fa4d12c2572a68f61ae43c5e906956a0e
Reviewed-by: Tobias Hunger <tobias.hunger@qt.io>
2017-02-09 12:15:23 +00:00
hjk
95e2d7f545 ProjectExplorer: Remove ProjectNode::m_projectNodes
They are duplicated in m_folderNodes, use them.

Change-Id: I4571720f1ef3daf098870a3cf05fa28a1002bb3f
Reviewed-by: Tim Jenssen <tim.jenssen@qt.io>
2017-02-08 11:15:55 +00:00
Tobias Hunger
ffbc331168 ProjectExplorer: Use makeEmpty in FolderNode::buildTree
Some lines saved.

Change-Id: I5a5e2bb150070aae48ad0ec1abb08bc2532d093b
Reviewed-by: hjk <hjk@qt.io>
2017-02-06 16:57:41 +00:00
Tobias Hunger
bd8fe1c42b ProjectExplorer: Deduplicate functionality of makeEmpty
Only one line saved, but potentially less hassle should FolderNode::makeEmpty
ever change.

Change-Id: I4dd01179a8dce9735744991c3de080739ab693ae
Reviewed-by: hjk <hjk@qt.io>
2017-02-06 16:57:36 +00:00
hjk
39a8442f80 QMake/ProjectManager: Simplify QmakeProFileNode::applyEvaluate
... and remove ProjectNode::removeProjectNode, as this was the
only remaining user.

Change-Id: I2c53392a8e9dacf956270d652525b62ba4c9e0a4
Reviewed-by: Tobias Hunger <tobias.hunger@qt.io>
2017-02-03 10:09:38 +00:00
hjk
cbfedd4328 ProjectExplorer: Fix display of .qrc contents
Change-Id: I2779e12daa8a7972380f51b72a56de3466d453a5
Reviewed-by: Tobias Hunger <tobias.hunger@qt.io>
2017-01-30 13:43:31 +00:00
hjk
30bf801629 ProjectExplorer: Further tree node related simplification
Drop the list sorting and difference generation which is not
needed in the "build from scratch" setup.

This also removes some of the intermediately introduced
convienience functions and fixes a regression that led to
missing project files.

Change-Id: I39d1966324917f466fb347da3a52552393ca4a01
Reviewed-by: Tobias Hunger <tobias.hunger@qt.io>
Reviewed-by: Christian Kandeler <christian.kandeler@qt.io>
2017-01-30 07:56:05 +00:00
hjk
87304b3ce0 ProjectExplorer: Introduce some FolderNode convenience functions
... and use them.

Change-Id: I9f5237e5eac30715c2effbd3301dd2a70516d2a9
Reviewed-by: Tobias Hunger <tobias.hunger@qt.io>
2017-01-27 08:40:20 +00:00
hjk
beaba559a5 ProjectExplorer: Slim down user side ProjectNode handling
Change-Id: If727ff6cd09cc127e031c49c47f61ffda631a80e
Reviewed-by: Tobias Hunger <tobias.hunger@qt.io>
2017-01-26 15:24:57 +00:00
hjk
e20549d295 ProjectManager: Add function to set a list of files in folder nodes
... instead of having to remove/add. Use it in some places
in QmakeProjectManager and the ResourceEditor where the
(sub)tree is rebuild anyway.

Change-Id: I46b3c078c576b72dba6e87432570d030b7572026
Reviewed-by: Tobias Hunger <tobias.hunger@qt.io>
2017-01-26 10:32:22 +00:00
hjk
4012611aab ProjectExplorer: Simplify FolderNode::buildTree
Change-Id: Id2425310ee4192758a2b21b22fe49ffe9b30d276
Reviewed-by: Tobias Hunger <tobias.hunger@qt.io>
2017-01-26 10:32:12 +00:00
hjk
5c5d93943f ProjectExplorer: Let SessionNode operate on single ProjectNodes only
Simplifies the implementation and is the only way used.

Change-Id: Ie3ac1cb66ae7fb85e3d6358a01975ba2e857ab6c
Reviewed-by: Christian Stenger <christian.stenger@qt.io>
Reviewed-by: Tobias Hunger <tobias.hunger@qt.io>
2017-01-26 10:06:43 +00:00
hjk
3c743346b0 ProjectExplorer: Make the FlatModel a Utils::TreeModel
The FlatModel is essentially a proxy model keeping expansion and
filter state per ProjectTree(View). Using a Utils::TreeModel makes
it fast enough to allow recreation of the proxy structure on
structural changes simplifying the parent/child logic significantly.

The {Session,Project,Folder,File}Node hierarchy still is still primary
information and shared by all views.

Change-Id: Ic08180a19bda37908280ff30e0737d188ed93e92
Reviewed-by: Robert Loehning <robert.loehning@qt.io>
Reviewed-by: Tobias Hunger <tobias.hunger@qt.io>
2017-01-25 13:52:51 +00:00
Tobias Hunger
1b2fc1c815 CMake: Pass const QList<const FileNode *> to Directory Readers
This makes sure they need to copy whatever they need.

Change-Id: I767ac0c5f54ca1f9f46acdefe4bd7fea35657312
Reviewed-by: Alexander Drozdov <adrozdoff@gmail.com>
Reviewed-by: Tim Jenssen <tim.jenssen@qt.io>
2016-12-21 14:19:36 +00:00
Tobias Hunger
d44bc75f72 ProjectNodes: WS only change
Change-Id: I2b62fefcba4c8a64472b3e88904134903aec47c4
Reviewed-by: Tim Jenssen <tim.jenssen@qt.io>
2016-12-07 12:36:32 +00:00
Filippo Cucchetto
1e70a156f9 ProjectExplorer: Fixed missing check for futureinterface nullness
Change-Id: I56808b84964218038ac9709583f07c212391f601
Reviewed-by: Orgad Shaneh <orgads@gmail.com>
Reviewed-by: Tobias Hunger <tobias.hunger@qt.io>
2016-12-05 09:30:38 +00:00
Tobias Hunger
49f5d98871 ProjectExplorer: Make priorities available on more nodes
Make priority available on all FolderNodes. Make the sort order
of all kinds of FolderNodes check the priority.

This allows no reorder e.g. ProjectNodes as needed.

Change-Id: I369edd28807ab9f89fb646b0001e1b3eb1a19d7e
Reviewed-by: Tim Jenssen <tim.jenssen@qt.io>
2016-11-14 09:03:10 +00:00
Tobias Hunger
3af1372395 ProjectExplorer: No more pointer to the parent project node
That information is used rarely, and is not too expensive to regenerate,
so there is no need to store and manage it for every node.

Change-Id: I2261853431cd4328ec447031de3b9f5d5347e796
Reviewed-by: Tim Jenssen <tim.jenssen@qt.io>
2016-11-14 09:03:04 +00:00
Tobias Hunger
43258f91e8 ProjectExplorer: Nodes: Rename member holding parentFolderNode pointer
Change-Id: I8c2abc5a3b258f1ec0b9d2b9582e0f4b41e11568
Reviewed-by: Tim Jenssen <tim.jenssen@qt.io>
2016-11-11 14:27:46 +00:00
Tobias Hunger
8850d2e732 ProjectExplorer: Allow for const-correct use of Nodes
Change-Id: Ic1f145e3b429d80c0dcff642b900cb3a3f78f06b
Reviewed-by: Tim Jenssen <tim.jenssen@qt.io>
2016-11-11 14:27:41 +00:00
Tobias Hunger
327f09c240 ProjectExplorer: Override filePath for recursiveFindOrCreateFolder
Override the base node's filePath for recursiveFindOrCreateFolder (and
buildTree, which is based on that). This makes it possible to use this
method to build up trees below project nodes, etc. that have no
representation as a existing directory in the filesystem.

Change-Id: I29fd1ab5b81b144b3db1966dc08dd50470c2d5d7
Reviewed-by: Tim Jenssen <tim.jenssen@qt.io>
2016-11-11 14:27:36 +00:00
Tobias Hunger
d59489c462 ProjectExplorer: Make it easier to trim down the project tree
Change-Id: I6dc712f131a27eceb5548c0e3a79418d9b950639
Reviewed-by: Tim Jenssen <tim.jenssen@qt.io>
2016-11-11 14:27:16 +00:00
Tobias Hunger
04aa6f67dd ProjectExplorer: Make scanForFiles cancel-able
Change-Id: Icbc4fa4c84189bd470bd5720a674d11f3e485037
Reviewed-by: Tim Jenssen <tim.jenssen@qt.io>
2016-11-11 13:22:46 +00:00
Tobias Hunger
39e2c013dd ProjectExplorer: Handle root directory when creating folders
Handle root directory properly (a empty filePath in the base node) when
creating folder nodes in the project tree.

Change-Id: Iad761b94ee210406ed5ab9ceb2d00ce25db90046
Reviewed-by: Tim Jenssen <tim.jenssen@qt.io>
2016-11-10 15:59:14 +00:00
Tobias Hunger
f9e9357756 ProjectExplorer: Add method to find ProjectNodes
Change-Id: Ib8056bd7d5603ced67c3ce3514d49ec51d05e2cf
Reviewed-by: Tim Jenssen <tim.jenssen@qt.io>
2016-11-10 15:24:22 +00:00
Tobias Hunger
ad003363b7 ProjectExplorer: Rename Node::projectNode to Node::parentProjectNode
Change-Id: I47fa794a0bd8456ae23271934a957d9667d2d7bb
Reviewed-by: Tim Jenssen <tim.jenssen@qt.io>
2016-11-10 15:24:14 +00:00
Tobias Hunger
c7b0163fcb ProjectExplorer: Make FolderNodes a bit easier to work with
Add some methods to look up different kinds of nodes in the
project tree.

Change-Id: Ia91844b45c2a124dc01771297e1f5c414d84e7cb
Reviewed-by: Tim Jenssen <tim.jenssen@qt.io>
2016-11-10 15:24:08 +00:00
Tobias Hunger
67e011ba5f ProjectExplorer: Make naming of methods on Nodes more consistent
Change-Id: I5050a020f0fc0ef4556db1d2020afeadfcd51585
Reviewed-by: Tim Jenssen <tim.jenssen@qt.io>
2016-11-10 15:24:02 +00:00
Tobias Hunger
6b469e81e8 ProjectExplorer: Never delete base node when building a tree
Never delete the base folder node when using buildTree to set up
a tree of files in the project tree. This makes sure the node stays
around, even when it turns empty. This matches how buildTree is used
in our code.

Change-Id: Id2a589985d9ac704316db5f210232532dcdb5d58
Reviewed-by: Tim Jenssen <tim.jenssen@qt.io>
2016-11-07 21:16:25 +00:00
Tobias Hunger
69b378eb73 ProjectExplorer: Expose sortByPath operator on project nodes
This is universally useful, so expose it.

Change-Id: I9cceee076397c7d690d8d34ef8ac815059e4454d
Reviewed-by: Tim Jenssen <tim.jenssen@qt.io>
2016-11-04 10:20:56 +00:00
Tobias Hunger
7150c0778b ProjectExplorer: Allow for disabled nodes in the project tree
Change-Id: I82d8284777f5691eb3ba9cf4ef92da05057aac18
Reviewed-by: Tobias Hunger <tobias.hunger@qt.io>
2016-11-03 15:56:16 +00:00
Tobias Hunger
c9ee7ee378 ProjectExplorer: Shorten NodeType enum
Use a class enum with a type quint16 for the NodeType. Frees 2 bytes
per node that can be used for better things now.

Change-Id: Ib84bf8629e9f4a5fb0793355eff0f0d6302167dd
Reviewed-by: Tobias Hunger <tobias.hunger@qt.io>
2016-11-03 15:55:13 +00:00
Tobias Hunger
e86383c741 ProjectExplorer: Add a way to scan a directory for filenodes
This is useful for several project types, so do this properly in
ProjectExplorer.

Change-Id: Ic659ff6824daffaeb441e11f5072d496194d48fe
Reviewed-by: Orgad Shaneh <orgads@gmail.com>
2016-10-25 09:17:08 +00:00
Tobias Hunger
69627e494b Add helper code to generate trees of project nodes
Add helper code to FolderNode that enables the creation of a tree
of File- and FolderNodes from a FolderNode and a list of FileNodes.

Change-Id: Iba4b6a768fc3d0501851f141372e7e34913ba518
Reviewed-by: hjk <hjk@qt.io>
2016-10-05 15:42:47 +00:00