Commit Graph

63 Commits

Author SHA1 Message Date
hjk
998de2f6dd ExtensionManager: Persist and display external repo url
Change-Id: I11fa419fb479cdf9acd625ac26e4c42079557a04
Reviewed-by: Artem Sokolovskii <artem.sokolovskii@qt.io>
2024-08-08 12:18:05 +00:00
Marcus Tillmanns
a414dece1f ExtensionManager: Improve Install step
Change-Id: I1668aa41a78fa9a0b6bd4505566268359746c4c7
Reviewed-by: Alessandro Portale <alessandro.portale@qt.io>
2024-07-31 13:25:09 +00:00
Alessandro Portale
a0e37a76fa Plugins: Add URLs to manual page to plugin metadata
Fixes: QTCREATORBUG-31199
Change-Id: Ideadc75499f32a8f1d1c95cd38dc4669a3d422c3
Reviewed-by: Eike Ziller <eike.ziller@qt.io>
2024-07-29 07:27:29 +00:00
Alessandro Portale
b24492c6e9 ExtensionSystem: Add field "DocumentationUrl" to PluginSpec
Task-number: QTCREATORBUG-31199
Change-Id: Ieb20d35cc9b4fe976207491bd201750fa4ca0032
Reviewed-by: Eike Ziller <eike.ziller@qt.io>
2024-07-29 07:27:03 +00:00
Marcus Tillmanns
e429a11fd7 ExtensionBrowser: Warn on error
Change-Id: Ie7ceb888593563cd8d50c60d052a855417045b26
Reviewed-by: Artem Sokolovskii <artem.sokolovskii@qt.io>
2024-07-26 13:21:42 +00:00
Eike Ziller
3bbfd66bad Merge remote-tracking branch 'origin/14.0'
Conflicts:
	src/plugins/android/androidmanager.cpp
	src/plugins/android/androidrunner.cpp
	src/plugins/android/androidrunner.h
	src/plugins/qmldesigner/components/texteditor/texteditorview.cpp
	src/plugins/qmldesigner/components/texteditor/texteditorview.h
	src/plugins/qmldesigner/designmodecontext.cpp
	src/plugins/qmldesigner/designmodecontext.h
	src/plugins/qmljseditor/qmljseditingsettingspage.cpp

Change-Id: Idada49bb7441e8c5b748bd75b2e6bb2351bd323e
2024-07-25 12:56:53 +02:00
Marcus Tillmanns
b8fb2b11b4 ExtensionBrowser: Fix OsType
The database calls it "macOS", not "Mac".

Change-Id: I624c223b1d6b291a9d6797f3775d81f05684ee86
Reviewed-by: hjk <hjk@qt.io>
2024-07-25 09:14:29 +00:00
Alessandro Portale
931f55200b ExtensionManager: Keep "Load on Start" checkbox up to date
If a plugin was selected in the ExtensionManager, and meanwhile, the
"load" status of that plugin was changed via the plugin dialog, the
change was not reflected in the ExtensionManager.

This change connects the "Load on Start" checkbox in the
ExtensionManager with the PluginManager's "changed" signal to keep the
state in sync.

Fixes: QTCREATORBUG-31177
Change-Id: I6946e23e8491e9c896026b55315acf76bb50cb92
Reviewed-by: Cristian Adam <cristian.adam@qt.io>
2024-07-22 19:55:45 +00:00
Alessandro Portale
b534aac6ab ExtensionManager: Make links clickable
Change-Id: I9c98f9bf2e7e3baef42fa9d0d60012881418ef44
Reviewed-by: hjk <hjk@qt.io>
2024-07-20 10:38:15 +00:00
Alessandro Portale
d4819fa01c ExtensionManager: Don't strip empty lines from description text
Empty lines play a crucial role since we now interpret the description
text as Markdown.

Change-Id: Idad3996bde4183145d6ba1c092536c4c52fa6457
Reviewed-by: Cristian Adam <cristian.adam@qt.io>
2024-07-17 14:34:30 +00:00
Alessandro Portale
3ea8c7808e ExtensionManager: Interpret description text as MarkDown
Task-number: QTCREATORBUG-31199
Fixes: QTCREATORBUG-31182
Change-Id: Iff0ec94db67b3afcad024b2fec4797805f1123e8
Reviewed-by: Cristian Adam <cristian.adam@qt.io>
2024-07-17 13:36:45 +00:00
hjk
c841a99db9 ExtensionManager: Streamline mode widget setup a bit
Change-Id: Ic6ec02c07cd37ee2a3b3b2d45b9239b22873a6cb
Reviewed-by: Alessandro Portale <alessandro.portale@qt.io>
2024-07-10 13:19:51 +00:00
Alessandro Portale
c9d5504fa5 ExtensionManager: Add filtering and sorting
As per UI design spec, this change inserts two widgets between the
search field and the extensions list. One for filtering, one for
sorting.

The widgets are derived from QComboBox, with custom paintEvent. The
selected filter/sort options are applied to the custom
SortFilterProxyModel which is inserted between the "search" proxy model
and the view.

Fixes: QTCREATORBUG-31179
Change-Id: Ia7768fa4f31b5bf5682918e724a3a299e851eb46
Reviewed-by: hjk <hjk@qt.io>
2024-07-09 13:09:40 +00:00
Eike Ziller
8d99cd800b Merge remote-tracking branch 'origin/14.0'
Change-Id: Ic3c53630e16712b6493873d21485b726f0d06574
2024-07-08 10:31:06 +02:00
Alessandro Portale
f6ed7edd0a ExtensionManager: Display extension status
Fixes: QTCREATORBUG-31180
Change-Id: I28c56f2e312670183b21e919ef578135c0384d92
Reviewed-by: hjk <hjk@qt.io>
2024-07-05 08:57:24 +00:00
Alessandro Portale
9f528acc48 ExtensionManager: Display the compatibility version extensions
Fixes: QTCREATORBUG-31198
Change-Id: I0a715bd4d5a8981fba294bb4556fc31fccf6150b
Reviewed-by: Cristian Adam <cristian.adam@qt.io>
2024-07-04 09:52:16 +00:00
Alessandro Portale
d34ca7d2d7 ExtensionManager: Use description text for searching
The current code silently failed to add the description text to the
search role. This change fixes it.

Change-Id: I33e5554ac1ff2b11f9610843b566698551a6e0a1
Reviewed-by: Cristian Adam <cristian.adam@qt.io>
2024-07-04 09:51:48 +00:00
hjk
bdcac43936 ExtensionManager: Make some text selectable by mouse
Change-Id: Ic268c80713c4fe7121af32eb0e0bc3ea41ed1660
Reviewed-by: Alessandro Portale <alessandro.portale@qt.io>
2024-07-02 05:52:34 +00:00
hjk
62ebdfd406 ExtensionManager: Make remote repo access optional
Off by default.

Change-Id: Ib27fa134f095be7c923cc4ce41ef4e2f6ec01ff0
Reviewed-by: hjk <hjk@qt.io>
2024-07-01 14:10:30 +00:00
Alessandro Portale
105be75c07 ExtensionManager: Fix host_os field for extension service request
The used QSysInfo::productType() provides various code/distribution
names which in some cases have little to do with the "host_os" that is
expected by the extension service API.

This change involves osTypeToString to instead return plain OS names.

Change-Id: I24b8070342c1de9de9040adcf5e06be967b6a180
Reviewed-by: Marcus Tillmanns <marcus.tillmanns@qt.io>
2024-07-01 05:27:00 +00:00
Eike Ziller
38e005692e Plugin meta data: Add full stop to descriptions
Where they were missing. The text is shown as a paragraph in the
extension manager.

Change-Id: I6e15c89fe4023b222e9c476f4312e13fcb0905c0
Reviewed-by: Leena Miettinen <riitta-leena.miettinen@qt.io>
Reviewed-by: Alessandro Portale <alessandro.portale@qt.io>
2024-06-28 06:46:52 +00:00
Christian Stenger
0dfe7213eb ExtensionManager: Fix qbs build
Amends 6ffe1a8061.

Change-Id: Ibb35fe606f25bd1e1b7a5d457062299f50f80af1
Reviewed-by: David Schulz <david.schulz@qt.io>
2024-06-28 05:05:44 +00:00
Cristian Adam
4f4c90f8b0 ExtensionManager: Fix compilation error
Amends 5960bb33ef

Change-Id: Ib20b537791001317a65ee5c63d39cc2775b6ecb0
Reviewed-by: Cristian Adam <cristian.adam@qt.io>
2024-06-27 17:29:19 +00:00
Alessandro Portale
5960bb33ef ExtensionManager: Draw icon of disabled items with less intensity
Since recently, the green background is used for enabled plugins and
grey is for disabled ones. With that change comes the requirement to
draw the icon for disabled icons with less intensity, to make it really
appear disabled.

I took this opportunity to unify the drawing of small/big enabled/
disabled pack/extension icon variants in a central helper function.

Change-Id: Ia68218c774ccb8e9e7ed48620ac36f4bca0724fd
Reviewed-by: Cristian Adam <cristian.adam@qt.io>
2024-06-27 15:23:26 +00:00
Alessandro Portale
07b13ed73b ExtensionManager: Add logging for the fetching of images
Change-Id: I87e96ba5ea65d2bf5639b5edc2c82c128d358a26
Reviewed-by: Cristian Adam <cristian.adam@qt.io>
2024-06-27 10:56:25 +00:00
Alessandro Portale
b9f786fdc5 ExtensionManager: More detailed JSON network request logging
Change-Id: Ic83900fc1344ecb21821813188f340fda9ba0708
Reviewed-by: Cristian Adam <cristian.adam@qt.io>
2024-06-27 10:56:16 +00:00
Alessandro Portale
a23298b5a3 ExtensionManager: Hide spinner initially
Should only be shown during the network request.

Change-Id: I1cf94281bd251f1fdef21c5e7ebd500e8951db1b
Reviewed-by: hjk <hjk@qt.io>
2024-06-27 10:56:09 +00:00
hjk
be84c74cb9 ExtensionManager: Hide ExtensionManagerWidget class in .cpp
And de-pimpl. Smaller overall interface and less indirections.

Change-Id: If6a5c0824581a6478ad6e88410d97e23cc517a53
Reviewed-by: Alessandro Portale <alessandro.portale@qt.io>
2024-06-27 09:01:13 +00:00
Alessandro Portale
8405b384a3 ExtensionManager: Introduce own SortFilterProxyModel
We want to sort by type and then alphabetically. That requires a custom
lessThan() implementation, thus a custom QSortFilterProxyModel.

Will come handy for further filtering/sorting requirements in the
future.

Change-Id: Iaacd955015d56026e41d404dcf4781a1715dc55a
Reviewed-by: hjk <hjk@qt.io>
2024-06-27 08:08:59 +00:00
Alessandro Portale
6ffe1a8061 ExtensionBrowser: Delay fetching of json data from server
The fetching is postponed until the extension manager is shown.

This also adds a spinner which is shown during the fetching of the data.

Change-Id: Id24ae772bcdfdf885ecfd5341d9a8d02f398c1a0
Reviewed-by: hjk <hjk@qt.io>
2024-06-26 14:18:14 +00:00
Leena Miettinen
a81e4fb277 Extensions: Edit UI text
- Add dots to ends of messages
- Replace "plugin" with "extension" in translatable text
- Fix capitalization of headings and button labels
- Change wording

Change-Id: I24a3ca6de6a5a0a4509bab34ad2f50cbcf40c73a
Reviewed-by: Eike Ziller <eike.ziller@qt.io>
Reviewed-by: Leena Miettinen <riitta-leena.miettinen@qt.io>
2024-06-26 14:09:17 +00:00
Alessandro Portale
a6b7473834 ExtensionManager: Set icon background green or grey depending of state
This change sets green vs. grey background for extension icons depending
of enabled state.

Change-Id: Id99419544a00acca897aa0ad6c98d2598e4b2210
Reviewed-by: hjk <hjk@qt.io>
2024-06-26 12:26:50 +00:00
Alessandro Portale
3a007ee499 ExtensionManager: Reduce spacing between "cards" from 24px to 16px
Use the dedicated gapSize contant more consistently.

Change-Id: I3d4e27493a758b3bfa1b29988496f53ad0fbd811
Reviewed-by: hjk <hjk@qt.io>
2024-06-26 12:26:42 +00:00
Alessandro Portale
ee1ae662b9 ExtensionManager: Add logging
Log the network request, incl. result and response. And how many
extensions were fetched remotely and added locally.

Change-Id: I634d72462c8076c2fa01e88a1918163f76d28aff
Reviewed-by: Cristian Adam <cristian.adam@qt.io>
2024-06-26 09:23:18 +00:00
Alessandro Portale
62e37eec42 ExtensionManager: Let QtC developer test data sets explicitly
The extansion query service is currently only reachable from within the
internal network. So far, if the request failed, and if Qt Creator was
configured with WITH_TESTS, a set of test json got loaded.

That test data confuses people in the team.

This change makes loading of test data explicit, and comments it off by
default.

Change-Id: I89236064b6af32be7559bb6d36cbf0d42982085d
Reviewed-by: Cristian Adam <cristian.adam@qt.io>
2024-06-26 09:23:12 +00:00
Alessandro Portale
aefc50f1de ExtensionManager: Prioritize plugin metadata data from service
This change enables the Qt Creator Extension service data to override
data of locally installed plugins (so far it was the other way around).
We might want to add more description text, links, images or tags to
plugins. And we want to be able do that independently of Qt Creator
releases.

This change also allows for substantial simplification of the "data
merging" code.

The parsing of extension plugin dependencies from the json data needed
to be fixed. See dependenciesFromJson()

Change-Id: Ia0433f0e0c7a0f13c43e0569c0915b7d08f7370a
Reviewed-by: Cristian Adam <cristian.adam@qt.io>
2024-06-26 09:23:05 +00:00
Alessandro Portale
6a192bcce8 ExtensionManager: Hide all details if no extension is selected
Change-Id: I87b901d474ae438c87d26cfa12a644398fd1f950
Reviewed-by: Cristian Adam <cristian.adam@qt.io>
2024-06-25 17:06:42 +00:00
hjk
313ed327be ExtensionManager: Make restart string translatable
Change-Id: I1505625e23a1ec67876d34bda0592ee6e9fa47c4
Reviewed-by: Alessandro Portale <alessandro.portale@qt.io>
2024-06-25 15:32:48 +00:00
Alessandro Portale
c8e1af0292 ExtensionManager: Remove "Install..." button
Change-Id: I0b7a79a1182eca26d0dc97750db2fa84eb444cea
Reviewed-by: hjk <hjk@qt.io>
2024-06-25 15:16:43 +00:00
Alessandro Portale
5be68d7256 ExtensionManager: Enable/disable dependencies, inform users accordingly
This instantiates PluginView in order to use setPluginsEnabled. It
enables dependencies of a plugin that is being enabled. Likewise, it
disables dependent plugins when users disable a plugin.

In both cases, the user sees the familiar info dialog.

On confirmation, a "Restart now" button is shown.

Change-Id: Ie74ed377bfdd1ce3cb06289c2aae78377475bc53
Reviewed-by: Alessandro Portale <alessandro.portale@qt.io>
Reviewed-by: hjk <hjk@qt.io>
2024-06-25 15:09:32 +00:00
Alessandro Portale
bb32b44671 ExtensionManager: Enable opening of external links
Amends: 81163b431e

Change-Id: I512279d86590bc35d7816ff69bb618aea58b4fcb
Reviewed-by: Cristian Adam <cristian.adam@qt.io>
2024-06-25 14:57:51 +00:00
hjk
9eaa9b1f66 ExtensionManager: Switch on by default
But keep experimental.

It is currently less functional than the old plugin dialog, it
misses e.g. dependency tracking when disabling plugins and the
design misses a way to restart Creator in the common case where
this is necessary.

Change-Id: Ib6c5aba762426510fc174c99ddc486d31d240484
Reviewed-by: Eike Ziller <eike.ziller@qt.io>
(cherry picked from commit c57d70e242)
Reviewed-by: hjk <hjk@qt.io>
2024-06-25 13:51:18 +00:00
Alessandro Portale
81163b431e ExtensionManager: Implement Extension details design
This implements the design for the "right side" of the extension
manager.

The introduced "header" shows the extension icon in a slightly bigger
variant. The "Install..." button that starts downloading and installing
of a plugin moved to the newly desigend "header".

The previous HTML based prototype has been split up into separate items
in order to achieve specialized sections like the images and tags.

Images are loaded via TaskTree and displayed as static image or as
animation.

Change-Id: Ifaf4a46c0a4789e77e76f9a44c8a15ee74c5e8df
Reviewed-by: Cristian Adam <cristian.adam@qt.io>
2024-06-24 11:47:30 +00:00
Alessandro Portale
74e4e1053a ExtensionManager: Update ExtensionManager list items design
This updates the list delegate for ExtensionManager items to match the
latest Figma design.

Change-Id: I769026caa1e08feea4f71d901d1bda01d74ab0a2
Reviewed-by: hjk <hjk@qt.io>
2024-06-05 14:30:16 +00:00
Alessandro Portale
bbfb7542a7 ExtensionManager: Read more fields from service response
This adds reading of "download_count", "id" and "is_internal".

Change-Id: I45382d7c70bbc5f44f9391bf3a87ee354d1809e4
Reviewed-by: hjk <hjk@qt.io>
2024-06-05 14:30:07 +00:00
Alessandro Portale
0ccfccd5c5 ExtensionManager: Some cleanups
Stuff you notice 10 Minutes after pushing the code you worked on for
days.

Change-Id: I24614b8129f80c8986ec11d5146c5631dae5d515
Reviewed-by: Cristian Adam <cristian.adam@qt.io>
2024-05-31 10:26:44 +00:00
Christian Stenger
2ebc4525f5 ExtensionManager: Fix qbs build
Amends 1a1d938170.

Change-Id: Ie978802b41502285e75b48827cfc2dcf819b1fcd
Reviewed-by: Christian Kandeler <christian.kandeler@qt.io>
2024-05-31 06:41:24 +00:00
Alessandro Portale
1a1d938170 ExtensionManager: Introduce extensions service response parser and model
This adds a parser for the JSON response of the extension rest API. The
data, combined with the PluginSpecs of local plugins, serve as data
model for the extension mode view.

A couple of "packs" are provided as test data.

Change-Id: I5ce961a9de9bf54ca745e5e5a5e584b1698e6ac6
Reviewed-by: Cristian Adam <cristian.adam@qt.io>
2024-05-30 16:32:48 +00:00
hjk
efae651924 Utils: Introduce a convenience function creatorColor()
... forwarding to creatorTheme()->color(...)

Change-Id: Iefaa043495127b3e500ed225584481d3ec0f8c1f
Reviewed-by: Alessandro Portale <alessandro.portale@qt.io>
2024-05-29 13:49:25 +00:00
Alessandro Portale
7bc65cf9f3 PluginSpecs: Change URLs from http:// to https://
Avoid the redirect that is inevitable nowerdays.

Also, change necessitas.kde.org to www.qt.io, since the orgininal page
is offline.

Change-Id: Ib1823f0df97d2df87822fd2bb7552e2f2c7e971e
Reviewed-by: Tim Jenssen <tim.jenssen@qt.io>
2024-05-28 20:13:29 +00:00