Instead, get root project nodes directly from the project.
Change-Id: I5cf95a7dce1fa29c1adc26013ad03cc017f38a6d
Reviewed-by: Tobias Hunger <tobias.hunger@qt.io>
Move the code used to set up the default project structure from the
Project into the sessionmanager. Now that the models are no longer
connected to the project this is the safer way as less change to the
projects logic is required.
Change-Id: Ib6b897f990a24d2dcce96a9821f090551fe45f13
Reviewed-by: hjk <hjk@qt.io>
Make sure the ProjectTree gets its data exclusively from the Session
and the SessionNode it holds.
Change-Id: Ic44e1364adf36077018edc972e18815d7f972922
Reviewed-by: Ulf Hermann <ulf.hermann@qt.io>
Silence a warning about using a pair by value instead by reference.
Also, remove an unnecessary duplicated check.
Change-Id: Idd5a01cdfcb16dad03389d2f360e0b2dbff21dc8
Reviewed-by: Tobias Hunger <tobias.hunger@qt.io>
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>
Create an initial project tree with a ProjectNode and a FileNode for
the project file itself.
Fix the Projects to not implement their own tree before they have
better data.
Change-Id: I147ccd5603d22d1d60880a97f30fd8c271eac88c
Reviewed-by: hjk <hjk@qt.io>
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>
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>
Clean up methods around projects() and update its usages to modern
language standards.
Change-Id: Ia0a4574d014ce41e0d511a392e4eed4680981d0e
Reviewed-by: Tim Jenssen <tim.jenssen@qt.io>
One step closer to direct use of Utils::TreeNode.
Change-Id: Icd0dfd2fa4d12c2572a68f61ae43c5e906956a0e
Reviewed-by: Tobias Hunger <tobias.hunger@qt.io>
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>
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>
Clean up action update and use more const variables. Spread some
const over other code, so that const variables can actually be used.
Change-Id: Ia814900ddff294aeafedb2a223d3705990f9b7c1
Reviewed-by: Tim Jenssen <tim.jenssen@qt.io>
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>
This can show the last modified time of a session and
will be used in a next commit to make it more clear
when session was saved.
Change-Id: I9f73f62652efc9287563f833f25c49f79c39d936
Task-number: QTCREATORBUG-15790
Reviewed-by: Eike Ziller <eike.ziller@qt.io>
It is unused. Also remove singleProjectAdded signal, and replace
the only use with the projectAdded signal.
The singleProjectAdded signal was emitted for each project that was
ever added, simply because nobody ever used addProjects(...) with
more than one project.
Change-Id: I5aee315c64a2cfb721471d580989a6a02d44fefc
Reviewed-by: Tobias Hunger <tobias.hunger@qt.io>
Makes it more uniform to use and allows placeholder widget
creation to be independent of mode creations.
Change-Id: I4021bc9db7f8c78f0374c0cc3b3331506959afe4
Reviewed-by: Eike Ziller <eike.ziller@theqtcompany.com>
Add setDocument method, implement document method, use this in all
projects.
Change-Id: I5018bf7c2739665c13eee340184ce7c41fd319bb
Reviewed-by: Niels Weber <niels.weber@theqtcompany.com>
Force Project Mode if the startup project is in need to be configured after
a session is loaded.
Task-number: QTCREATORBUG-15228
Change-Id: I625a9485c5233ff717be20fd2c14c85a3b9275e3
Reviewed-by: Eike Ziller <eike.ziller@theqtcompany.com>
Reviewed-by: Tobias Hunger <tobias.hunger@theqtcompany.com>
This is far from perfect but seems to work. Further work could add more
fine grained control over which projects are affected by the automatic
synchronize. Also there might be a few cases where the switching is
over zealous or missing.
Change-Id: I26ad3d59431251564917e4b408c66695dc454823
Task-number: QTCREATORBUG-5823
Reviewed-by: Tobias Hunger <tobias.hunger@theqtcompany.com>
Instead, switch to edit mode, show sidebar, scroll to project,
and show a tooltip next to the project.
The tooltip is somewhat easy to miss, but this is a clear improvement
in most cases.
Change-Id: Icd27f76e7d434f33e731b6fd56473ff913986a89
Task-number: QTCREATORBUG-8422
Reviewed-by: Eike Ziller <eike.ziller@theqtcompany.com>
On switching sessions don't unload projects that are in both
sessions.
Change-Id: Iceceea262677ab523f8c3c9d2dda64faa34d6e0d
Reviewed-by: Tobias Hunger <tobias.hunger@theqtcompany.com>
Fixes a crash on session restore for Eike. Iterating over
a const & of the list is dangerous while projects are
added to the list.
Change-Id: I1861b7f1875420769c2493fb0b4012728380efd2
Reviewed-by: Eike Ziller <eike.ziller@theqtcompany.com>
This was caused by the PersistentSettingsWriter writing the old
session on being deleted. Which was after we removed the file.
So delete the PersistentSettingsReader earlier.
Change-Id: I7e73775cc1c2e31b2f2a567b1d08efefdb3ee949
Task-number: QTCREATORBUG-14285
Reviewed-by: Sergey Belyashov <Sergey.Belyashov@gmail.com>
Reviewed-by: Tobias Hunger <tobias.hunger@theqtcompany.com>
This avoids unnecessary detaches of the Qt container data.
The mismatches where detected by defining QT_STRICT_ITERATORS;
however, this define violates the ODR (causing linker errors),
and therefore is not added permanently.
Change-Id: Idd336a9c8b394214a820437ef1b92d2101f6101c
GPush-Base: 62b0848b9c
Reviewed-by: Daniel Teske <daniel.teske@theqtcompany.com>
With the recent fix for restoring the mode when restoring sessions
(0d10ecd668), it would save and later
restore Welcome mode when switching sessions on Welcome mode.
Change-Id: I285dc1f25734b8358ca04cfdb887aafa93576c3d
Reviewed-by: Daniel Teske <daniel.teske@theqtcompany.com>
Following 73616849, it is dangerous to store a reference to the rvalue of
toString(), since it might become dangling.
Example:
FileName foo() { return FileName::fromString(QLatin1String("/some/file")); }
void func()
{
const QString &fileName = foo().toString();
// fileName is now a dangling reference
}
Change-Id: I5dfad5dc8dd568a0a3c8f9f71ad93292dc26cbbe
Reviewed-by: hjk <hjk@theqtcompany.com>
The OS X linker makes using dynamic_casts across shared object
boundaries fail, so do all casting in the projectexplorer library
and provide functions to do it.
Task-number: QTCREATORBUG-13864
Change-Id: I0e13c0986f8342d83c3b838ffdd2dd7b8312b13c
Reviewed-by: Eike Ziller <eike.ziller@theqtcompany.com>
This is a first, self-contained step only: Replac the connects
themselves, rename private slots that coincide with
signal names, apply minimal compile fixes and formatting.
Change-Id: I0a28d2ebcf4d4f6fdf68a06f582ed962ed54724d
Reviewed-by: Daniel Teske <daniel.teske@theqtcompany.com>