From 23b2d3720b926e26db66deef27883b2589012a53 Mon Sep 17 00:00:00 2001 From: Henning Gruendl Date: Thu, 29 Aug 2024 18:38:02 +0200 Subject: [PATCH] QmlDesigner: Cleanup new IssuesOutputPanel * Add highlight functionality to StudioControls.AbstractButton * Add new icon font * Use icon font instead of PNGs for icons * Remove unnecessary files * Fix IssuesOutputPanel opening/closing logic * Adapt IssuesOutputPanel to theming * Add scroll to bottom when new messages are added * Fix application closing signal to close IssuesOutputPanel Change-Id: Ibdefbbc9980881575c9de8deac26efacd08ab0da Reviewed-by: Thomas Hartmann --- .../imports/StudioControls/AbstractButton.qml | 30 +- .../imports/StudioTheme/InternalConstants.qml | 449 +++++++++--------- .../imports/StudioTheme/icons.ttf | Bin 66776 -> 65872 bytes .../qmldesigner/statusbar/CloseButton.qml | 66 --- .../statusbar/IconButtonCheckable.qml | 72 --- .../statusbar/IssuesOutputPanel.qml | 116 ++--- .../statusbar/IssuesOutputToolBar.qml | 104 ---- .../qmldesigner/statusbar/IssuesPanel.qml | 65 +-- .../qtcreator/qmldesigner/statusbar/Main.qml | 70 +-- .../statusbar/MyLinkTextButton.ui.qml | 50 -- .../statusbar/NotificationButton.qml | 244 ++++++++++ .../statusbar/NotificationButton.ui.qml | 351 -------------- .../qmldesigner/statusbar/OutputPanel.qml | 40 +- .../qmldesigner/statusbar/TabBarButton.qml | 167 +++++++ .../qmldesigner/statusbar/TabBarButton.ui.qml | 56 --- .../qmldesigner/statusbar/images/CodeView.png | Bin 24757 -> 0 bytes .../statusbar/images/OutputView.png | Bin 9351 -> 0 bytes .../statusbar/images/delete_trash.png | Bin 299 -> 0 bytes .../statusbar/images/errorActive.png | Bin 403 -> 0 bytes .../statusbar/images/errorPassive.png | Bin 342 -> 0 bytes .../statusbar/images/outputIcon.png | Bin 244 -> 0 bytes .../qmldesigner/statusbar/images/thinBin.png | Bin 216 -> 0 bytes .../statusbar/images/warningsActive.png | Bin 403 -> 0 bytes .../statusbar/images/warningsPassive.png | Bin 286 -> 0 bytes .../components/componentcore/theme.h | 3 + .../qmldesignerbase/utils/windowmanager.cpp | 12 +- 26 files changed, 833 insertions(+), 1062 deletions(-) delete mode 100644 share/qtcreator/qmldesigner/statusbar/CloseButton.qml delete mode 100644 share/qtcreator/qmldesigner/statusbar/IconButtonCheckable.qml delete mode 100644 share/qtcreator/qmldesigner/statusbar/IssuesOutputToolBar.qml delete mode 100644 share/qtcreator/qmldesigner/statusbar/MyLinkTextButton.ui.qml create mode 100644 share/qtcreator/qmldesigner/statusbar/NotificationButton.qml delete mode 100644 share/qtcreator/qmldesigner/statusbar/NotificationButton.ui.qml create mode 100644 share/qtcreator/qmldesigner/statusbar/TabBarButton.qml delete mode 100644 share/qtcreator/qmldesigner/statusbar/TabBarButton.ui.qml delete mode 100644 share/qtcreator/qmldesigner/statusbar/images/CodeView.png delete mode 100644 share/qtcreator/qmldesigner/statusbar/images/OutputView.png delete mode 100644 share/qtcreator/qmldesigner/statusbar/images/delete_trash.png delete mode 100644 share/qtcreator/qmldesigner/statusbar/images/errorActive.png delete mode 100644 share/qtcreator/qmldesigner/statusbar/images/errorPassive.png delete mode 100644 share/qtcreator/qmldesigner/statusbar/images/outputIcon.png delete mode 100644 share/qtcreator/qmldesigner/statusbar/images/thinBin.png delete mode 100644 share/qtcreator/qmldesigner/statusbar/images/warningsActive.png delete mode 100644 share/qtcreator/qmldesigner/statusbar/images/warningsPassive.png diff --git a/share/qtcreator/qmldesigner/propertyEditorQmlSources/imports/StudioControls/AbstractButton.qml b/share/qtcreator/qmldesigner/propertyEditorQmlSources/imports/StudioControls/AbstractButton.qml index 79f27ddaf27..703591887aa 100644 --- a/share/qtcreator/qmldesigner/propertyEditorQmlSources/imports/StudioControls/AbstractButton.qml +++ b/share/qtcreator/qmldesigner/propertyEditorQmlSources/imports/StudioControls/AbstractButton.qml @@ -3,7 +3,7 @@ import QtQuick import QtQuick.Templates as T -import StudioTheme 1.0 as StudioTheme +import StudioTheme as StudioTheme T.AbstractButton { id: control @@ -111,6 +111,34 @@ T.AbstractButton { } } + function highlight() { + // Only run the highlight animation if not running already and if default state is active + if (highlightAnimation.running || control.state !== "default") + return + + highlightAnimation.start() + } + + component MyColorAnimation: ColorAnimation { + target: buttonBackground + property: "color" + duration: 750 + } + + SequentialAnimation { + id: highlightAnimation + running: false + + MyColorAnimation { to: StudioTheme.Values.themeConnectionEditorButtonBorder_hover } + MyColorAnimation { to: control.style.background.idle } + MyColorAnimation { to: StudioTheme.Values.themeConnectionEditorButtonBorder_hover } + MyColorAnimation { to: control.style.background.idle } + MyColorAnimation { to: StudioTheme.Values.themeConnectionEditorButtonBorder_hover } + MyColorAnimation { to: control.style.background.idle } + } + + onStateChanged: highlightAnimation.stop() + states: [ State { name: "default" diff --git a/share/qtcreator/qmldesigner/propertyEditorQmlSources/imports/StudioTheme/InternalConstants.qml b/share/qtcreator/qmldesigner/propertyEditorQmlSources/imports/StudioTheme/InternalConstants.qml index 3c74243f684..3eb90118374 100644 --- a/share/qtcreator/qmldesigner/propertyEditorQmlSources/imports/StudioTheme/InternalConstants.qml +++ b/share/qtcreator/qmldesigner/propertyEditorQmlSources/imports/StudioTheme/InternalConstants.qml @@ -156,229 +156,232 @@ QtObject { readonly property string edit_medium: "\u00AF" readonly property string edit_small: "\u00B0" readonly property string effects: "\u00B1" - readonly property string events_small: "\u00B2" - readonly property string export_medium: "\u00B3" - readonly property string eyeDropper: "\u00B4" - readonly property string favorite: "\u00B5" - readonly property string fitAll_medium: "\u00B6" - readonly property string fitSelected_small: "\u00B7" - readonly property string fitSelection_medium: "\u00B8" - readonly property string fitToView_medium: "\u00B9" - readonly property string flowAction: "\u00BA" - readonly property string flowTransition: "\u00BB" - readonly property string fontStyleBold: "\u00BC" - readonly property string fontStyleItalic: "\u00BD" - readonly property string fontStyleStrikethrough: "\u00BE" - readonly property string fontStyleUnderline: "\u00BF" - readonly property string forward_medium: "\u00C0" - readonly property string globalOrient_medium: "\u00C1" - readonly property string gradient: "\u00C2" - readonly property string gridView: "\u00C3" - readonly property string grid_medium: "\u00C4" - readonly property string group_small: "\u00C5" - readonly property string help: "\u00C6" - readonly property string home_large: "\u00C7" - readonly property string idAliasOff: "\u00C8" - readonly property string idAliasOn: "\u00C9" - readonly property string import_medium: "\u00CA" - readonly property string imported: "\u00CB" - readonly property string importedModels_small: "\u00CC" - readonly property string infinity: "\u00CD" - readonly property string invisible_medium: "\u00CE" - readonly property string invisible_small: "\u00CF" - readonly property string jumpToCode_medium: "\u00D0" - readonly property string jumpToCode_small: "\u00D1" - readonly property string keyframe: "\u00D2" - readonly property string languageList_medium: "\u00D3" - readonly property string layouts_small: "\u00D4" - readonly property string lights_small: "\u00D5" - readonly property string linear_medium: "\u00D6" - readonly property string linkTriangle: "\u00D7" - readonly property string linked: "\u00D8" - readonly property string listView: "\u00D9" - readonly property string listView_medium: "\u00DA" - readonly property string list_medium: "\u00DB" - readonly property string localOrient_medium: "\u00DC" - readonly property string lockOff: "\u00DD" - readonly property string lockOn: "\u00DE" - readonly property string loopPlayback_medium: "\u00DF" - readonly property string materialBrowser_medium: "\u00E0" - readonly property string materialPreviewEnvironment: "\u00E1" - readonly property string materialPreviewModel: "\u00E2" - readonly property string material_medium: "\u00E3" - readonly property string maxBar_small: "\u00E4" - readonly property string mergeCells: "\u00E5" - readonly property string merge_small: "\u00E6" - readonly property string minus: "\u00E7" - readonly property string mirror: "\u00E8" - readonly property string more_medium: "\u00E9" - readonly property string mouseArea_small: "\u00EA" - readonly property string moveDown_medium: "\u00EB" - readonly property string moveInwards_medium: "\u00EC" - readonly property string moveUp_medium: "\u00ED" - readonly property string moveUpwards_medium: "\u00EE" - readonly property string move_medium: "\u00EF" - readonly property string newMaterial: "\u00F0" - readonly property string nextFile_large: "\u00F1" - readonly property string normalBar_small: "\u00F2" - readonly property string openLink: "\u00F3" - readonly property string openMaterialBrowser: "\u00F4" - readonly property string orientation: "\u00F5" - readonly property string orthCam_medium: "\u00F6" - readonly property string orthCam_small: "\u00F7" - readonly property string paddingEdge: "\u00F8" - readonly property string paddingFrame: "\u00F9" - readonly property string particleAnimation_medium: "\u00FA" - readonly property string pasteStyle: "\u00FB" - readonly property string paste_small: "\u00FC" - readonly property string pause: "\u00FD" - readonly property string pause_medium: "\u00FE" - readonly property string perspectiveCam_medium: "\u00FF" - readonly property string perspectiveCam_small: "\u0100" - readonly property string pin: "\u0101" - readonly property string plane_medium: "\u0102" - readonly property string plane_small: "\u0103" - readonly property string play: "\u0104" - readonly property string playFill_medium: "\u0105" - readonly property string playOutline_medium: "\u0106" - readonly property string plus: "\u0107" - readonly property string pointLight_small: "\u0108" - readonly property string positioners_small: "\u0109" - readonly property string previewEnv_medium: "\u010A" - readonly property string previousFile_large: "\u010B" - readonly property string promote: "\u010C" - readonly property string properties_medium: "\u010D" - readonly property string readOnly: "\u010E" - readonly property string recent_medium: "\u010F" - readonly property string recordFill_medium: "\u0110" - readonly property string recordOutline_medium: "\u0111" - readonly property string redo: "\u0112" - readonly property string reload_medium: "\u0113" - readonly property string remove_medium: "\u0114" - readonly property string remove_small: "\u0115" - readonly property string rename_small: "\u0116" - readonly property string replace_small: "\u0117" - readonly property string resetView_small: "\u0118" - readonly property string restartParticles_medium: "\u0119" - readonly property string reverseOrder_medium: "\u011A" - readonly property string roatate_medium: "\u011B" - readonly property string rotationFill: "\u011C" - readonly property string rotationOutline: "\u011D" - readonly property string runProjFill_large: "\u011E" - readonly property string runProjOutline_large: "\u011F" - readonly property string s_anchors: "\u0120" - readonly property string s_annotations: "\u0121" - readonly property string s_arrange: "\u0122" - readonly property string s_boundingBox: "\u0123" - readonly property string s_component: "\u0124" - readonly property string s_connections: "\u0125" - readonly property string s_edit: "\u0126" - readonly property string s_enterComponent: "\u0127" - readonly property string s_eventList: "\u0128" - readonly property string s_group: "\u0129" - readonly property string s_layouts: "\u012A" - readonly property string s_merging: "\u012B" - readonly property string s_mouseArea: "\u012C" - readonly property string s_positioners: "\u012D" - readonly property string s_selection: "\u012E" - readonly property string s_snapping: "\u012F" - readonly property string s_timeline: "\u0130" - readonly property string s_visibility: "\u0131" - readonly property string saveAs_medium: "\u0132" - readonly property string saveLogs_medium: "\u0133" - readonly property string save_medium: "\u0134" - readonly property string scale_medium: "\u0135" - readonly property string search: "\u0136" - readonly property string search_small: "\u0137" - readonly property string sectionToggle: "\u0138" - readonly property string selectFill_medium: "\u0139" - readonly property string selectOutline_medium: "\u013A" - readonly property string selectParent_small: "\u013B" - readonly property string selection_small: "\u013C" - readonly property string settings_medium: "\u013D" - readonly property string signal_small: "\u013E" - readonly property string snapping_conf_medium: "\u013F" - readonly property string snapping_medium: "\u0140" - readonly property string snapping_small: "\u0141" - readonly property string sortascending_medium: "\u0142" - readonly property string sortdescending_medium: "\u0143" - readonly property string sphere_medium: "\u0144" - readonly property string sphere_small: "\u0145" - readonly property string splitColumns: "\u0146" - readonly property string splitRows: "\u0147" - readonly property string splitScreen_medium: "\u0148" - readonly property string spotLight_small: "\u0149" - readonly property string stackedContainer_small: "\u014A" - readonly property string startNode: "\u014B" - readonly property string step_medium: "\u014C" - readonly property string stop_medium: "\u014D" - readonly property string tableView_medium: "\u014E" - readonly property string testIcon: "\u014F" - readonly property string textAlignBottom: "\u0150" - readonly property string textAlignCenter: "\u0151" - readonly property string textAlignJustified: "\u0152" - readonly property string textAlignLeft: "\u0153" - readonly property string textAlignMiddle: "\u0154" - readonly property string textAlignRight: "\u0155" - readonly property string textAlignTop: "\u0156" - readonly property string textBulletList: "\u0157" - readonly property string textFullJustification: "\u0158" - readonly property string textNumberedList: "\u0159" - readonly property string textures_medium: "\u015A" - readonly property string tickIcon: "\u015B" - readonly property string tickMark_small: "\u015C" - readonly property string timeline_small: "\u015D" - readonly property string toEndFrame_medium: "\u015E" - readonly property string toNextFrame_medium: "\u015F" - readonly property string toPrevFrame_medium: "\u0160" - readonly property string toStartFrame_medium: "\u0161" - readonly property string topToolbar_annotations: "\u0162" - readonly property string topToolbar_closeFile: "\u0163" - readonly property string topToolbar_designMode: "\u0164" - readonly property string topToolbar_enterComponent: "\u0165" - readonly property string topToolbar_home: "\u0166" - readonly property string topToolbar_makeComponent: "\u0167" - readonly property string topToolbar_navFile: "\u0168" - readonly property string topToolbar_runProject: "\u0169" - readonly property string translationCreateFiles: "\u016A" - readonly property string translationCreateReport: "\u016B" - readonly property string translationExport: "\u016C" - readonly property string translationImport: "\u016D" - readonly property string translationSelectLanguages: "\u016E" - readonly property string translationTest: "\u016F" - readonly property string transparent: "\u0170" - readonly property string triState: "\u0171" - readonly property string triangleArcA: "\u0172" - readonly property string triangleArcB: "\u0173" - readonly property string triangleCornerA: "\u0174" - readonly property string triangleCornerB: "\u0175" - readonly property string unLinked: "\u0176" - readonly property string undo: "\u0177" - readonly property string unify_medium: "\u0178" - readonly property string unpin: "\u0179" - readonly property string upDownIcon: "\u017A" - readonly property string upDownSquare2: "\u017B" - readonly property string updateAvailable_medium: "\u017C" - readonly property string updateContent_medium: "\u017D" - readonly property string visibilityOff: "\u017E" - readonly property string visibilityOn: "\u017F" - readonly property string visible_medium: "\u0180" - readonly property string visible_small: "\u0181" - readonly property string warning_medium: "\u0182" - readonly property string wildcard: "\u0183" - readonly property string wizardsAutomotive: "\u0184" - readonly property string wizardsDesktop: "\u0185" - readonly property string wizardsGeneric: "\u0186" - readonly property string wizardsMcuEmpty: "\u0187" - readonly property string wizardsMcuGraph: "\u0188" - readonly property string wizardsMobile: "\u0189" - readonly property string wizardsUnknown: "\u018A" - readonly property string zoomAll: "\u018B" - readonly property string zoomIn: "\u018C" - readonly property string zoomIn_medium: "\u018D" - readonly property string zoomOut: "\u018E" - readonly property string zoomOut_medium: "\u018F" - readonly property string zoomSelection: "\u0190" + readonly property string error_medium: "\u00B2" + readonly property string events_small: "\u00B3" + readonly property string export_medium: "\u00B4" + readonly property string eyeDropper: "\u00B5" + readonly property string favorite: "\u00B6" + readonly property string fitAll_medium: "\u00B7" + readonly property string fitSelected_small: "\u00B8" + readonly property string fitSelection_medium: "\u00B9" + readonly property string fitToView_medium: "\u00BA" + readonly property string flowAction: "\u00BB" + readonly property string flowTransition: "\u00BC" + readonly property string fontStyleBold: "\u00BD" + readonly property string fontStyleItalic: "\u00BE" + readonly property string fontStyleStrikethrough: "\u00BF" + readonly property string fontStyleUnderline: "\u00C0" + readonly property string forward_medium: "\u00C1" + readonly property string globalOrient_medium: "\u00C2" + readonly property string gradient: "\u00C3" + readonly property string gridView: "\u00C4" + readonly property string grid_medium: "\u00C5" + readonly property string group_small: "\u00C6" + readonly property string help: "\u00C7" + readonly property string home_large: "\u00C8" + readonly property string idAliasOff: "\u00C9" + readonly property string idAliasOn: "\u00CA" + readonly property string import_medium: "\u00CB" + readonly property string imported: "\u00CC" + readonly property string importedModels_small: "\u00CD" + readonly property string infinity: "\u00CE" + readonly property string invisible_medium: "\u00CF" + readonly property string invisible_small: "\u00D0" + readonly property string jumpToCode_medium: "\u00D1" + readonly property string jumpToCode_small: "\u00D2" + readonly property string keyframe: "\u00D3" + readonly property string languageList_medium: "\u00D4" + readonly property string layouts_small: "\u00D5" + readonly property string lights_small: "\u00D6" + readonly property string linear_medium: "\u00D7" + readonly property string linkTriangle: "\u00D8" + readonly property string linked: "\u00D9" + readonly property string listView: "\u00DA" + readonly property string listView_medium: "\u00DB" + readonly property string list_medium: "\u00DC" + readonly property string localOrient_medium: "\u00DD" + readonly property string lockOff: "\u00DE" + readonly property string lockOn: "\u00DF" + readonly property string loopPlayback_medium: "\u00E0" + readonly property string materialBrowser_medium: "\u00E1" + readonly property string materialPreviewEnvironment: "\u00E2" + readonly property string materialPreviewModel: "\u00E3" + readonly property string material_medium: "\u00E4" + readonly property string maxBar_small: "\u00E5" + readonly property string mergeCells: "\u00E6" + readonly property string merge_small: "\u00E7" + readonly property string minus: "\u00E8" + readonly property string mirror: "\u00E9" + readonly property string more_medium: "\u00EA" + readonly property string mouseArea_small: "\u00EB" + readonly property string moveDown_medium: "\u00EC" + readonly property string moveInwards_medium: "\u00ED" + readonly property string moveUp_medium: "\u00EE" + readonly property string moveUpwards_medium: "\u00EF" + readonly property string move_medium: "\u00F0" + readonly property string newMaterial: "\u00F1" + readonly property string nextFile_large: "\u00F2" + readonly property string normalBar_small: "\u00F3" + readonly property string openLink: "\u00F4" + readonly property string openMaterialBrowser: "\u00F5" + readonly property string orientation: "\u00F6" + readonly property string orthCam_medium: "\u00F7" + readonly property string orthCam_small: "\u00F8" + readonly property string paddingEdge: "\u00F9" + readonly property string paddingFrame: "\u00FA" + readonly property string particleAnimation_medium: "\u00FB" + readonly property string pasteStyle: "\u00FC" + readonly property string paste_small: "\u00FD" + readonly property string pause: "\u00FE" + readonly property string pause_medium: "\u00FF" + readonly property string perspectiveCam_medium: "\u0100" + readonly property string perspectiveCam_small: "\u0101" + readonly property string pin: "\u0102" + readonly property string plane_medium: "\u0103" + readonly property string plane_small: "\u0104" + readonly property string play: "\u0105" + readonly property string playFill_medium: "\u0106" + readonly property string playOutline_medium: "\u0107" + readonly property string plus: "\u0108" + readonly property string pointLight_small: "\u0109" + readonly property string positioners_small: "\u010A" + readonly property string previewEnv_medium: "\u010B" + readonly property string previousFile_large: "\u010C" + readonly property string promote: "\u010D" + readonly property string properties_medium: "\u010E" + readonly property string readOnly: "\u010F" + readonly property string recent_medium: "\u0110" + readonly property string recordFill_medium: "\u0111" + readonly property string recordOutline_medium: "\u0112" + readonly property string redo: "\u0113" + readonly property string reload_medium: "\u0114" + readonly property string remove_medium: "\u0115" + readonly property string remove_small: "\u0116" + readonly property string rename_small: "\u0117" + readonly property string replace_small: "\u0118" + readonly property string resetView_small: "\u0119" + readonly property string restartParticles_medium: "\u011A" + readonly property string reverseOrder_medium: "\u011B" + readonly property string roatate_medium: "\u011C" + readonly property string rotationFill: "\u011D" + readonly property string rotationOutline: "\u011E" + readonly property string runProjFill_large: "\u011F" + readonly property string runProjOutline_large: "\u0120" + readonly property string s_anchors: "\u0121" + readonly property string s_annotations: "\u0122" + readonly property string s_arrange: "\u0123" + readonly property string s_boundingBox: "\u0124" + readonly property string s_component: "\u0125" + readonly property string s_connections: "\u0126" + readonly property string s_edit: "\u0127" + readonly property string s_enterComponent: "\u0128" + readonly property string s_eventList: "\u0129" + readonly property string s_group: "\u012A" + readonly property string s_layouts: "\u012B" + readonly property string s_merging: "\u012C" + readonly property string s_mouseArea: "\u012D" + readonly property string s_positioners: "\u012E" + readonly property string s_selection: "\u012F" + readonly property string s_snapping: "\u0130" + readonly property string s_timeline: "\u0131" + readonly property string s_visibility: "\u0132" + readonly property string saveAs_medium: "\u0133" + readonly property string saveLogs_medium: "\u0134" + readonly property string save_medium: "\u0135" + readonly property string scale_medium: "\u0136" + readonly property string search: "\u0137" + readonly property string search_small: "\u0138" + readonly property string sectionToggle: "\u0139" + readonly property string selectFill_medium: "\u013A" + readonly property string selectOutline_medium: "\u013B" + readonly property string selectParent_small: "\u013C" + readonly property string selection_small: "\u013D" + readonly property string settings_medium: "\u013E" + readonly property string signal_small: "\u013F" + readonly property string snapping_conf_medium: "\u0140" + readonly property string snapping_medium: "\u0141" + readonly property string snapping_small: "\u0142" + readonly property string sortascending_medium: "\u0143" + readonly property string sortdescending_medium: "\u0144" + readonly property string sphere_medium: "\u0145" + readonly property string sphere_small: "\u0146" + readonly property string splitColumns: "\u0147" + readonly property string splitRows: "\u0148" + readonly property string splitScreen_medium: "\u0149" + readonly property string spotLight_small: "\u014A" + readonly property string stackedContainer_small: "\u014B" + readonly property string startNode: "\u014C" + readonly property string step_medium: "\u014D" + readonly property string stop_medium: "\u014E" + readonly property string tableView_medium: "\u014F" + readonly property string testIcon: "\u0150" + readonly property string textAlignBottom: "\u0151" + readonly property string textAlignCenter: "\u0152" + readonly property string textAlignJustified: "\u0153" + readonly property string textAlignLeft: "\u0154" + readonly property string textAlignMiddle: "\u0155" + readonly property string textAlignRight: "\u0156" + readonly property string textAlignTop: "\u0157" + readonly property string textBulletList: "\u0158" + readonly property string textFullJustification: "\u0159" + readonly property string textNumberedList: "\u015A" + readonly property string textures_medium: "\u015B" + readonly property string tickIcon: "\u015C" + readonly property string tickMark_small: "\u015D" + readonly property string timeline_small: "\u015E" + readonly property string toEndFrame_medium: "\u015F" + readonly property string toNextFrame_medium: "\u0160" + readonly property string toPrevFrame_medium: "\u0161" + readonly property string toStartFrame_medium: "\u0162" + readonly property string topToolbar_annotations: "\u0163" + readonly property string topToolbar_closeFile: "\u0164" + readonly property string topToolbar_designMode: "\u0165" + readonly property string topToolbar_enterComponent: "\u0166" + readonly property string topToolbar_home: "\u0167" + readonly property string topToolbar_makeComponent: "\u0168" + readonly property string topToolbar_navFile: "\u0169" + readonly property string topToolbar_runProject: "\u016A" + readonly property string translationCreateFiles: "\u016B" + readonly property string translationCreateReport: "\u016C" + readonly property string translationExport: "\u016D" + readonly property string translationImport: "\u016E" + readonly property string translationSelectLanguages: "\u016F" + readonly property string translationTest: "\u0170" + readonly property string transparent: "\u0171" + readonly property string trash_medium: "\u0172" + readonly property string triState: "\u0173" + readonly property string triangleArcA: "\u0174" + readonly property string triangleArcB: "\u0175" + readonly property string triangleCornerA: "\u0176" + readonly property string triangleCornerB: "\u0177" + readonly property string unLinked: "\u0178" + readonly property string undo: "\u0179" + readonly property string unify_medium: "\u017A" + readonly property string unpin: "\u017B" + readonly property string upDownIcon: "\u017C" + readonly property string upDownSquare2: "\u017D" + readonly property string updateAvailable_medium: "\u017E" + readonly property string updateContent_medium: "\u017F" + readonly property string visibilityOff: "\u0180" + readonly property string visibilityOn: "\u0181" + readonly property string visible_medium: "\u0182" + readonly property string visible_small: "\u0183" + readonly property string warning2_medium: "\u0184" + readonly property string warning_medium: "\u0185" + readonly property string wildcard: "\u0186" + readonly property string wizardsAutomotive: "\u0187" + readonly property string wizardsDesktop: "\u0188" + readonly property string wizardsGeneric: "\u0189" + readonly property string wizardsMcuEmpty: "\u018A" + readonly property string wizardsMcuGraph: "\u018B" + readonly property string wizardsMobile: "\u018C" + readonly property string wizardsUnknown: "\u018D" + readonly property string zoomAll: "\u018E" + readonly property string zoomIn: "\u018F" + readonly property string zoomIn_medium: "\u0190" + readonly property string zoomOut: "\u0191" + readonly property string zoomOut_medium: "\u0192" + readonly property string zoomSelection: "\u0193" readonly property font iconFont: Qt.font({ "family": controlIcons.name, diff --git a/share/qtcreator/qmldesigner/propertyEditorQmlSources/imports/StudioTheme/icons.ttf b/share/qtcreator/qmldesigner/propertyEditorQmlSources/imports/StudioTheme/icons.ttf index cdce3eeefd96cd16836d674b6d9d2dd9320946cc..485c4bbf4d7ab38c88c5316a8bd75ea9dcea04f2 100644 GIT binary patch delta 6791 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 delta 7721 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 R-D4Bd$^(fbCP)uV006!SXeR&w diff --git a/share/qtcreator/qmldesigner/statusbar/CloseButton.qml b/share/qtcreator/qmldesigner/statusbar/CloseButton.qml deleted file mode 100644 index a330b93ed35..00000000000 --- a/share/qtcreator/qmldesigner/statusbar/CloseButton.qml +++ /dev/null @@ -1,66 +0,0 @@ -// Copyright (C) 2024 The Qt Company Ltd. -// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR GPL-3.0+ OR GPL-3.0 WITH Qt-GPL-exception-1.0 -import QtQuick -import QtQuick.Controls -import QtQuick.Templates as T - -T.Button { - id: root - width: 29 - height: 29 - - Item { - id: closeButton - anchors.fill: parent - state: "idle" - - Item { - id: closeIcon - width: 15 - height: 15 - anchors.verticalCenter: parent.verticalCenter - anchors.horizontalCenter: parent.horizontalCenter - rotation: 45 - - Rectangle { - id: rectangle - width: 1 - height: 15 - color: "#ffffff" - anchors.verticalCenter: parent.verticalCenter - anchors.horizontalCenter: parent.horizontalCenter - } - - Rectangle { - id: rectangle1 - width: 1 - height: 15 - color: "#ffffff" - anchors.verticalCenter: parent.verticalCenter - anchors.horizontalCenter: parent.horizontalCenter - rotation: 90 - } - } - } - - states: [ - State { - name: "idle" - when: !root.hovered && !root.pressed - - PropertyChanges { - target: rectangle - color: "#b2b2b2" - } - - PropertyChanges { - target: rectangle1 - color: "#b2b2b2" - } - }, - State { - name: "hoverPress" - when: (root.hovered || root.pressed) - } - ] -} diff --git a/share/qtcreator/qmldesigner/statusbar/IconButtonCheckable.qml b/share/qtcreator/qmldesigner/statusbar/IconButtonCheckable.qml deleted file mode 100644 index cbf7a71dcde..00000000000 --- a/share/qtcreator/qmldesigner/statusbar/IconButtonCheckable.qml +++ /dev/null @@ -1,72 +0,0 @@ -// Copyright (C) 2024 The Qt Company Ltd. -// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR GPL-3.0+ OR GPL-3.0 WITH Qt-GPL-exception-1.0 -import QtQuick -import QtQuick.Controls -import QtQuick.Templates as T - -T.Button { - id: root - width: 29 - height: 29 - state: "idle" - property alias imageSource: image.source - property color idleBack: "#202020" - property color hoverBack: "#2d2d2d" - - Rectangle { - id: bkg - color: root.idleBack - radius: 5 - border.color: "#424242" - anchors.fill: parent - } - - Image { - id: image - width: 15 - height: 15 - anchors.verticalCenter: parent.verticalCenter - source: "qrc:/qtquickplugin/images/template_image.png" - anchors.horizontalCenter: parent.horizontalCenter - fillMode: Image.PreserveAspectFit - } - states: [ - State { - name: "idle" - when: !root.hovered && !root.pressed && !root.checked - && root.enabled - }, - State { - name: "hover" - when: root.hovered && !root.pressed && !root.checked && root.enabled - PropertyChanges { - target: bkg - color: root.hoverBack - } - }, - State { - name: "pressCheck" - when: (root.pressed || root.checked) && root.enabled - - PropertyChanges { - target: bkg - color: root.hoverBack - border.color: "#57b9fc" - } - }, - State { - name: "blocked" - when: !root.enabled - - PropertyChanges { - target: bkg - border.color: "#3a3a3a" - } - - PropertyChanges { - target: image - opacity: 0.404 - } - } - ] -} diff --git a/share/qtcreator/qmldesigner/statusbar/IssuesOutputPanel.qml b/share/qtcreator/qmldesigner/statusbar/IssuesOutputPanel.qml index 3088fac2e07..e0e97ca651e 100644 --- a/share/qtcreator/qmldesigner/statusbar/IssuesOutputPanel.qml +++ b/share/qtcreator/qmldesigner/statusbar/IssuesOutputPanel.qml @@ -1,54 +1,71 @@ // Copyright (C) 2024 The Qt Company Ltd. // SPDX-License-Identifier: LicenseRef-Qt-Commercial OR GPL-3.0+ OR GPL-3.0 WITH Qt-GPL-exception-1.0 + import QtQuick import QtQuick.Controls import QtQuick.Layouts import StudioControls as StudioControls +import StudioTheme as StudioTheme import ToolBar StudioControls.PopupDialog { - id: root - width: 1024 + width: 800 property Item targetItem property alias warningCount: issuesPanel.warningCount property alias errorCount: issuesPanel.errorCount - function toggleShowIssuesPanel() { + property alias unreadOutput: outputPanel.unreadMessages + readonly property bool issuesVisible: issuesPanel.visible && root.visible + readonly property bool outputVisible: outputPanel.visible && root.visible + + function toggleShowIssuesPanel() { if (!root.visible) { - issuesButton.checked = true outputPanel.visible = false issuesPanel.visible = true root.show(root.targetItem) } else { - root.visible = false - root.close() + if (issuesPanel.visible) { + root.close() + } else { + outputPanel.visible = false + issuesPanel.visible = true + } } } function toggleShowOutputPanel() { if (!root.visible) { - outputButton.checked = true issuesPanel.visible = false outputPanel.visible = true - root.visible = true + root.show(root.targetItem) } else { - root.visible = false + if (outputPanel.visible) { + root.close() + } else { + issuesPanel.visible = false + outputPanel.visible = true + } } } + onClosing: { + issuesPanel.visible = false + outputPanel.visible = false + } + titleBar: RowLayout { id: toolBar anchors.verticalCenter: parent.verticalCenter anchors.left: parent.left anchors.right: parent.right - anchors.leftMargin: 15 + anchors.leftMargin: 0 anchors.rightMargin: 10 RowLayout { @@ -57,78 +74,49 @@ StudioControls.PopupDialog { TabBarButton { id: issuesButton - autoExclusive: true - checked: true + style: StudioTheme.Values.statusbarButtonStyle + text: qsTr("Issues") + checked: issuesPanel.visible + checkedInverted: true - Connections { - target: issuesButton - function onClicked() { - if (issuesButton.checked) { - issuesPanel.visible = true - outputPanel.visible = false - } else { return } + onClicked: { + if (!issuesPanel.visible) { + outputPanel.visible = false + issuesPanel.visible = true } } } TabBarButton { id: outputButton - labelText: "Output" - autoExclusive: true + style: StudioTheme.Values.statusbarButtonStyle + text: qsTr("Output") + checked: outputPanel.visible + checkedInverted: true - Connections { - target: outputButton - function onClicked() { - if (outputButton.checked) { - issuesPanel.visible = false - outputPanel.visible = true - } else { return } + onClicked: { + if (!outputPanel.visible) { + issuesPanel.visible = false + outputPanel.visible = true } } } } + RowLayout { id: rightAlignedButtons Layout.alignment: Qt.AlignRight - // IconButton { - // id: showOutputView - // imageSource: "images/outputIcon.png" - // idleBack: "#282828" - // hoverBack: "#3a3a3a" - // Connections { - // target: showOutputView - // function onClicked() { - // root.showOutputViewSignal() - // } - // } - // } - - IconButtonCheckable { - id: clearIssuesButton - visible: issuesButton.checked - hoverBack: "#3a3a3a" - idleBack: "#282828" - imageSource: "images/thinBin.png" - Connections { - target: clearIssuesButton - function onClicked() { + StudioControls.IconIndicator { + id: clearButton + icon: StudioTheme.Constants.trash_medium + pixelSize: StudioTheme.Values.myIconFontSize * 1.4 + toolTip: qsTr("Clear") + onClicked: { + if (issuesPanel.visible) issuesPanel.clearIssues() - } - } - } - - IconButtonCheckable { - id: clearOutputButton - visible: outputButton.checked - hoverBack: "#3a3a3a" - idleBack: "#282828" - imageSource: "images/thinBin.png" - Connections { - target: clearOutputButton - function onClicked() { + else outputPanel.clearOutput() - } } } } diff --git a/share/qtcreator/qmldesigner/statusbar/IssuesOutputToolBar.qml b/share/qtcreator/qmldesigner/statusbar/IssuesOutputToolBar.qml deleted file mode 100644 index 26019023258..00000000000 --- a/share/qtcreator/qmldesigner/statusbar/IssuesOutputToolBar.qml +++ /dev/null @@ -1,104 +0,0 @@ -// Copyright (C) 2024 The Qt Company Ltd. -// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR GPL-3.0+ OR GPL-3.0 WITH Qt-GPL-exception-1.0 -import QtQuick -import QtQuick.Controls -import QtQuick.Layouts - -Rectangle { - id: root - height: 41 - color: "#282828" - - signal popupClosed - signal issuesCheckedSignal - signal outputCheckedSignal - signal issuesClearedSignal - signal outputClearedSignal - - property alias showOutputViewEnabled: showOutputView.enabled - property alias clearOutputEnabled: clearOutputButton.enabled - property alias clearIssuesEnabled: clearIssuesButton.enabled - - property alias outputChecked: outputButton.checked - property alias issuesChecked: issuesButton.checked - - RowLayout { - id: tabBar - - anchors.verticalCenter: root.verticalCenter - anchors.left: root.left - anchors.leftMargin: 15 - - TabBarButton { - id: issuesButton - autoExclusive: true - checked: true - - Connections { - target: issuesButton - function onClicked() { - if (issuesButton.checked) { - root.issuesCheckedSignal() - } else - return - } - } - } - - TabBarButton { - id: outputButton - labelText: "Output" - autoExclusive: true - - Connections { - target: outputButton - function onClicked() { - if (outputButton.checked) { root.outputCheckedSignal() } - else { return } - } - } - } - } - - RowLayout { - anchors.right: root.right - anchors.rightMargin: 10 - - IconButton { - id: showOutputView - imageSource: "images/outputIcon.png" - idleBack: "#282828" - hoverBack: "#3a3a3a" - Connections { - target: showOutputView - function onClicked() { root.showOutputViewSignal() } - } - } - - IconButton { - id: clearIssuesButton - visible: issuesButton.checked - hoverBack: "#3a3a3a" - idleBack: "#282828" - imageSource: "images/thinBin.png" - Connections { - target: clearIssuesButton - function onClicked() { - root.issuesClearedSignal() - } - } - } - - IconButton { - id: clearOutputButton - visible: outputButton.checked - hoverBack: "#3a3a3a" - idleBack: "#282828" - imageSource: "images/thinBin.png" - Connections { - target: clearOutputButton - function onClicked() { root.outputClearedSignal() } - } - } - } -} diff --git a/share/qtcreator/qmldesigner/statusbar/IssuesPanel.qml b/share/qtcreator/qmldesigner/statusbar/IssuesPanel.qml index e59aa345b90..432a6f9c2cf 100644 --- a/share/qtcreator/qmldesigner/statusbar/IssuesPanel.qml +++ b/share/qtcreator/qmldesigner/statusbar/IssuesPanel.qml @@ -1,15 +1,16 @@ // Copyright (C) 2024 The Qt Company Ltd. // SPDX-License-Identifier: LicenseRef-Qt-Commercial OR GPL-3.0+ OR GPL-3.0 WITH Qt-GPL-exception-1.0 + import QtQuick import QtQuick.Controls import QtQuick.Layouts -import ToolBar -import OutputPane + import StudioControls as StudioControls import StudioTheme as StudioTheme -ScrollView { +import OutputPane +ScrollView { id: issuesPanel signal showCodeViewSignal @@ -27,50 +28,54 @@ ScrollView { y: 0 height: issuesPanel.availableHeight orientation: Qt.Vertical - - show: (issuesPanel.hovered || issuesPanel.focus) - && verticalScrollBar.isNeeded + show: (issuesPanel.hovered || issuesPanel.focus) && verticalScrollBar.isNeeded } ColumnLayout { Repeater { id: listView - model: MessageModel { - id: messageModel - } + model: MessageModel { id: messageModel } delegate: RowLayout { spacing: 10 - Image { - id: typeImage - source: { - if (type == "Warning") { "images/warningsActive.png" } - else { "images/errorActive.png" } - } - fillMode: Image.PreserveAspectFit + + required property int index + required property string message + required property string location + required property string type + + Text { + font.family: StudioTheme.Constants.iconFont.family + font.pixelSize: StudioTheme.Values.baseIconFontSize + color: (type == "Warning") ? StudioTheme.Values.themeAmberLight + : StudioTheme.Values.themeRedLight + text: (type == "Warning") ? StudioTheme.Constants.warning2_medium + : StudioTheme.Constants.error_medium } - MyLinkTextButton { - id: linkTextWarning - linkText: location + Text { + text: location + color: "#57b9fc" + font.pixelSize: 12 + verticalAlignment: Text.AlignVCenter Layout.preferredHeight: 18 + font.underline: mouseArea.containsMouse ? true : false - Connections { - target: linkTextWarning - function onClicked() { messageModel.jumpToCode(index) } + MouseArea { + id: mouseArea + anchors.fill: parent + hoverEnabled: true + cursorShape: mouseArea.containsMouse ? Qt.PointingHandCursor : Qt.ArrowCursor } } Text { - id: historyTime6 - color: { - if (type == "Warning") { "#ffbb0c" } - else { "#ff4848" } - } - text: qsTr(message) - font.pixelSize: 12 - verticalAlignment: Text.AlignTop + color: (type == "Warning") ? StudioTheme.Values.themeAmberLight + : StudioTheme.Values.themeRedLight + text: message + font.pixelSize: StudioTheme.Values.baseFontSize + verticalAlignment: Text.AlignVCenter Layout.preferredHeight: 18 } } diff --git a/share/qtcreator/qmldesigner/statusbar/Main.qml b/share/qtcreator/qmldesigner/statusbar/Main.qml index f849cc19327..75b64a93bc0 100644 --- a/share/qtcreator/qmldesigner/statusbar/Main.qml +++ b/share/qtcreator/qmldesigner/statusbar/Main.qml @@ -1,15 +1,15 @@ // Copyright (C) 2023 The Qt Company Ltd. // SPDX-License-Identifier: LicenseRef-Qt-Commercial OR GPL-3.0+ OR GPL-3.0 WITH Qt-GPL-exception-1.0 + import QtQuick import QtQuick.Controls -import QtQuick.Layouts -import StudioControls 1.0 as StudioControls -import StudioTheme 1.0 as StudioTheme +import StudioControls as StudioControls +import StudioTheme as StudioTheme import "../toolbar" -import HelperWidgets 2.0 +import HelperWidgets -import ToolBar 1.0 +import ToolBar Item { id: toolbarContainer @@ -26,8 +26,10 @@ Item { anchors.fill: parent Row { - anchors.fill: parent + anchors.top: parent.top + anchors.bottom: parent.bottom anchors.topMargin: 3 + anchors.left: parent.left anchors.leftMargin: 4 spacing: 29 @@ -51,6 +53,7 @@ Item { horizontalAlignment: Text.AlignRight verticalAlignment: Text.AlignVCenter elide: Text.ElideRight + ToolTipArea { anchors.fill: parent tooltip: qsTr("Choose a predefined kit for the runtime configuration of the project.") @@ -78,6 +81,7 @@ Item { horizontalAlignment: Text.AlignRight verticalAlignment: Text.AlignVCenter elide: Text.ElideRight + ToolTipArea { anchors.fill: parent tooltip: qsTr("Choose a style for the Qt Quick Controls of the project.") @@ -97,55 +101,61 @@ Item { } } - RowLayout { + Row { id: buttonRow - anchors.verticalCenter: parent.verticalCenter + anchors.top: parent.top + anchors.bottom: parent.bottom + anchors.topMargin: 3 anchors.right: parent.right - anchors.rightMargin: 10 + anchors.rightMargin: 4 spacing: 10 NotificationButton { id: issuesNotification + style: StudioTheme.Values.statusbarButtonStyle + warningCount: popupPanel.warningCount errorCount: popupPanel.errorCount - Layout.alignment: Qt.AlignVCenter + checkable: true + checkedInverted: true + checked: popupPanel.issuesVisible + width: 136 + enabled: backend.projectOpened + tooltip: qsTr("Show issues.") - - Connections { - target: issuesNotification - function onClicked() { - popupPanel.toggleShowIssuesPanel() - } - } + onClicked: popupPanel.toggleShowIssuesPanel() } - IconButtonCheckable { + ToolbarButton { id: outputButton - imageSource: "images/outputIcon.png" + style: StudioTheme.Values.statusbarButtonStyle + buttonIcon: StudioTheme.Constants.import_medium + iconRotation: -90 checkable: true + checkedInverted: true + checked: popupPanel.outputVisible + enabled: backend.projectOpened + tooltip: qsTr("Show application output.") + + onClicked: popupPanel.toggleShowOutputPanel() Connections { - target: outputButton - function onClicked() { - popupPanel.toggleShowOutputPanel() + target: popupPanel + function onUnreadOutputChanged() { + if (popupPanel.unreadOutput) + outputButton.highlight() } } } } } - Item { - id: popupTarget - y: -282 //magic number - anchors.right: parent.right - } - IssuesOutputPanel { - targetItem: popupTarget id: popupPanel + targetItem: buttonRow + edge: Qt.TopEdge keepOpen: true } - } diff --git a/share/qtcreator/qmldesigner/statusbar/MyLinkTextButton.ui.qml b/share/qtcreator/qmldesigner/statusbar/MyLinkTextButton.ui.qml deleted file mode 100644 index a9763aa5468..00000000000 --- a/share/qtcreator/qmldesigner/statusbar/MyLinkTextButton.ui.qml +++ /dev/null @@ -1,50 +0,0 @@ -// Copyright (C) 2024 The Qt Company Ltd. -// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR GPL-3.0+ OR GPL-3.0 WITH Qt-GPL-exception-1.0 -import QtQuick -import QtQuick.Controls -import QtQuick.Templates as T - -T.Button { - id: root - width: childrenRect.width - state: "idle" - property alias linkText: linkTextLabel.text - - Text { - id: linkTextLabel - color: "#57b9fc" - text: qsTr("Screen01.ui.qml - Line 8") - font.pixelSize: 12 - verticalAlignment: Text.AlignVCenter - } - - Rectangle { - id: rectangle - width: linkTextLabel.width - height: 1 - color: "#57b9fc" - anchors.left: parent.left - anchors.bottom: parent.bottom - anchors.bottomMargin: 2 - } - states: [ - State { - name: "idle" - when: !root.hovered && !root.pressed - - PropertyChanges { - target: rectangle - visible: false - } - }, - State { - name: "hoverClick" - when: (root.hovered || root.pressed) - - PropertyChanges { - target: rectangle - visible: true - } - } - ] -} diff --git a/share/qtcreator/qmldesigner/statusbar/NotificationButton.qml b/share/qtcreator/qmldesigner/statusbar/NotificationButton.qml new file mode 100644 index 00000000000..3eaf29588dd --- /dev/null +++ b/share/qtcreator/qmldesigner/statusbar/NotificationButton.qml @@ -0,0 +1,244 @@ +// Copyright (C) 2024 The Qt Company Ltd. +// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR GPL-3.0-only WITH Qt-GPL-exception-1.0 + +import QtQuick +import QtQuick.Templates as T + +import StudioTheme as StudioTheme +import HelperWidgets + +T.AbstractButton { + id: control + + property StudioTheme.ControlStyle style: StudioTheme.Values.controlStyle + + property bool globalHover: false + property bool hover: control.hovered + property bool press: control.pressed + + property alias backgroundVisible: buttonBackground.visible + property alias backgroundRadius: buttonBackground.radius + + // Inverts the checked style + property bool checkedInverted: false + + property int warningCount: 0 + property int errorCount: 0 + + property bool hasWarnings: control.warningCount > 0 + property bool hasErrors: control.errorCount > 0 + + property alias tooltip: toolTipArea.tooltip + + ToolTipArea { + id: toolTipArea + anchors.fill: parent + // Without setting the acceptedButtons property the clicked event won't + // reach the AbstractButton, it will be consumed by the ToolTipArea + acceptedButtons: Qt.NoButton + } + + implicitWidth: Math.max(implicitBackgroundWidth + leftInset + rightInset, + implicitContentWidth + leftPadding + rightPadding) + implicitHeight: Math.max(implicitBackgroundHeight + topInset + bottomInset, + implicitContentHeight + topPadding + bottomPadding) + width: control.style.squareControlSize.width + height: control.style.squareControlSize.height + z: control.checked ? 10 : 3 + activeFocusOnTab: false + + background: Rectangle { + id: buttonBackground + color: control.style.background.idle + border.color: control.style.border.idle + border.width: control.style.borderWidth + radius: control.style.radius + } + + component CustomLabel : T.Label { + id: customLabel + color: control.style.icon.idle + font.pixelSize: control.style.baseIconFontSize + verticalAlignment: Text.AlignVCenter + horizontalAlignment: Text.AlignHCenter + + property bool active: false + property color activeColor: "red" + + states: [ + State { + name: "default" + when: control.enabled && !control.press && !control.checked && !control.hover + PropertyChanges { + target: customLabel + color: customLabel.active ? customLabel.activeColor : control.style.icon.idle + } + }, + State { + name: "hover" + when: control.enabled && !control.press && !control.checked && control.hover + PropertyChanges { + target: customLabel + color: customLabel.active ? customLabel.activeColor : control.style.icon.hover + } + }, + State { + name: "press" + when: control.enabled && control.press + PropertyChanges { + target: customLabel + color: control.style.icon.interaction + } + }, + State { + name: "check" + when: control.enabled && !control.press && control.checked + PropertyChanges { + target: customLabel + color: control.checkedInverted ? control.style.text.selectedText // TODO rather something in icon + : control.style.icon.selected + } + }, + State { + name: "disable" + when: !control.enabled + PropertyChanges { + target: customLabel + color: control.style.icon.disabled + } + } + ] + } + + indicator: Item { + x: 0 + y: 0 + width: control.width + height: control.height + + Row { + anchors.verticalCenter: parent.verticalCenter + anchors.horizontalCenter: parent.horizontalCenter + spacing: 8 + + CustomLabel { + height: control.height + font.pixelSize: StudioTheme.Values.baseFontSize + text: control.warningCount + active: control.hasWarnings + activeColor: StudioTheme.Values.themeAmberLight + } + + CustomLabel { + height: control.height + text: StudioTheme.Constants.warning2_medium + font.family: StudioTheme.Constants.iconFont.family + active: control.hasWarnings + activeColor: StudioTheme.Values.themeAmberLight + } + + CustomLabel { + height: control.height + text: StudioTheme.Constants.error_medium + font.family: StudioTheme.Constants.iconFont.family + active: control.hasErrors + activeColor: StudioTheme.Values.themeRedLight + } + + CustomLabel { + height: control.height + font.pixelSize: StudioTheme.Values.baseFontSize + text: control.errorCount + active: control.hasErrors + activeColor: StudioTheme.Values.themeRedLight + } + } + } + + states: [ + State { + name: "default" + when: control.enabled && !control.globalHover && !control.hover + && !control.press && !control.checked + PropertyChanges { + target: buttonBackground + color: control.style.background.idle + border.color: control.style.border.idle + } + PropertyChanges { + target: control + z: 3 + } + }, + State { + name: "globalHover" + when: control.globalHover && !control.hover && !control.press && control.enabled + PropertyChanges { + target: buttonBackground + color: control.style.background.idle + border.color: control.style.border.idle + } + }, + State { + name: "hover" + when: !control.checked && control.hover && !control.press && control.enabled + PropertyChanges { + target: buttonBackground + color: control.style.background.hover + border.color: control.style.border.hover + } + PropertyChanges { + target: control + z: 100 + } + }, + State { + name: "hoverCheck" + when: control.checked && control.hover && !control.press && control.enabled + PropertyChanges { + target: buttonBackground + color: control.checkedInverted ? control.style.interactionHover + : control.style.background.hover + border.color: control.checkedInverted ? control.style.interactionHover + : control.style.border.hover + } + PropertyChanges { + target: control + z: 100 + } + }, + State { + name: "press" + when: control.hover && control.press && control.enabled + PropertyChanges { + target: buttonBackground + color: control.style.interaction + border.color: control.style.interaction + } + PropertyChanges { + target: control + z: 100 + } + }, + State { + name: "check" + when: control.enabled && !control.press && control.checked + PropertyChanges { + target: buttonBackground + color: control.checkedInverted ? control.style.interaction + : control.style.background.idle + border.color: control.checkedInverted ? control.style.interaction + : control.style.border.idle + } + }, + State { + name: "disable" + when: !control.enabled + PropertyChanges { + target: buttonBackground + color: control.style.background.disabled + border.color: control.style.border.disabled + } + } + ] +} diff --git a/share/qtcreator/qmldesigner/statusbar/NotificationButton.ui.qml b/share/qtcreator/qmldesigner/statusbar/NotificationButton.ui.qml deleted file mode 100644 index 2f8adef1d91..00000000000 --- a/share/qtcreator/qmldesigner/statusbar/NotificationButton.ui.qml +++ /dev/null @@ -1,351 +0,0 @@ -// Copyright (C) 2024 The Qt Company Ltd. -// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR GPL-3.0+ OR GPL-3.0 WITH Qt-GPL-exception-1.0 -import QtQuick -import QtQuick.Controls -import QtQuick.Templates as T - -T.Button { - id: root - - property int warningCount: 0 - property int errorCount: 0 - - property bool hasWarnings: warningCount > 0 - property bool hasErrors: errorCount > 0 - - width: 136 - height: 29 - checkable: true - state: "idleEmpty" - - Rectangle { - id: bck - color: "#202020" - radius: 5 - border.color: "#444444" - anchors.fill: parent - - Text { - id: warningNumLabel - color: "#ffffff" - text: root.warningCount - anchors.verticalCenter: parent.verticalCenter - anchors.right: warningsIcon.left - anchors.rightMargin: 8 - font.pixelSize: 12 - horizontalAlignment: Text.AlignRight - } - - Text { - id: errorNumLabel - color: "#ffffff" - text: root.errorCount - anchors.verticalCenter: parent.verticalCenter - anchors.left: errorIcon.right - anchors.leftMargin: 8 - font.pixelSize: 12 - horizontalAlignment: Text.AlignLeft - } - - Image { - id: errorIcon - anchors.verticalCenter: parent.verticalCenter - anchors.right: parent.right - anchors.rightMargin: 47 - source: "images/errorPassive.png" - fillMode: Image.PreserveAspectFit - } - - Image { - id: warningsIcon - anchors.verticalCenter: parent.verticalCenter - anchors.left: parent.left - anchors.leftMargin: 47 - source: "images/warningsPassive.png" - fillMode: Image.PreserveAspectFit - } - } - states: [ - State { - name: "idleEmpty" - when: !root.hovered && !root.checked && !root.pressed - && !root.hasErrors && !root.hasWarnings - - PropertyChanges { - target: warningNumLabel - text: "0" - } - - PropertyChanges { - target: errorNumLabel - text: "0" - } - }, - State { - name: "idleHover" - when: root.hovered && !(root.checked || root.pressed) - && !root.hasErrors && !root.hasWarnings - PropertyChanges { - target: warningNumLabel - text: "0" - } - - PropertyChanges { - target: errorNumLabel - text: "0" - } - - PropertyChanges { - target: bck - color: "#2d2d2d" - } - }, - - State { - name: "pressCheck" - when: (root.checked || root.pressed) && !root.hasErrors && !root.hasWarnings - PropertyChanges { - target: warningNumLabel - text: "0" - } - - PropertyChanges { - target: errorNumLabel - text: "0" - } - - PropertyChanges { - target: bck - color: "#2d2d2d" - border.color: "#2eb0f9" - } - }, - - State { - name: "idleWarningsOnly" - when: !root.hovered && !root.checked && !root.pressed - && !root.hasErrors && root.hasWarnings - - PropertyChanges { - target: warningsIcon - source: "images/warningsActive.png" - } - - PropertyChanges { - target: warningNumLabel - color: "#ffbb0c" - } - - PropertyChanges { - target: errorNumLabel - text: "0" - } - }, - State { - name: "hoverWarningsOnly" - when: root.hovered && !root.checked && !root.pressed - && !root.hasErrors && root.hasWarnings - PropertyChanges { - target: warningsIcon - source: "images/warningsActive.png" - } - - PropertyChanges { - target: warningNumLabel - color: "#ffbb0c" - } - - PropertyChanges { - target: errorNumLabel - text: "0" - } - - PropertyChanges { - target: bck - color: "#2d2d2d" - } - }, - - State { - name: "pressCheckWarningsOnly" - when: (root.checked || root.pressed) && !root.hasErrors - && root.hasWarnings - PropertyChanges { - target: warningsIcon - source: "images/warningsActive.png" - } - - PropertyChanges { - target: warningNumLabel - color: "#ffbb0c" - } - - PropertyChanges { - target: errorNumLabel - text: "0" - } - - PropertyChanges { - target: bck - color: "#2d2d2d" - border.color: "#57b9fc" - } - }, - - State { - name: "idleErrorsOnly" - when: !root.hovered && !root.checked && !root.pressed - && root.hasErrors && !root.hasWarnings - - PropertyChanges { - target: warningNumLabel - text: "0" - } - - PropertyChanges { - target: errorIcon - source: "images/errorActive.png" - } - - PropertyChanges { - target: errorNumLabel - color: "#ff4848" - } - }, - State { - name: "hoverErrorsOnly" - when: root.hovered && !root.checked && !root.pressed - && root.hasErrors && !root.hasWarnings - PropertyChanges { - target: warningNumLabel - text: "0" - } - - PropertyChanges { - target: errorIcon - source: "images/errorActive.png" - } - - PropertyChanges { - target: errorNumLabel - color: "#ff4848" - } - - PropertyChanges { - target: bck - color: "#2d2d2d" - } - }, - - State { - name: "pressCheckErrorsOnly" - when: (root.checked || root.pressed) && root.hasErrors - && !root.hasWarnings - PropertyChanges { - target: warningNumLabel - text: "0" - } - - PropertyChanges { - target: errorIcon - source: "images/errorActive.png" - } - - PropertyChanges { - target: errorNumLabel - color: "#ff4848" - } - - PropertyChanges { - target: bck - color: "#2d2d2d" - border.color: "#57b9fc" - } - }, - - State { - name: "idlesErrorsAndWarnings" - when: !root.hovered && !root.checked && !root.pressed - && root.hasErrors && root.hasWarnings - - PropertyChanges { - target: warningNumLabel - color: "#ffbb0c" - } - - PropertyChanges { - target: warningsIcon - source: "images/warningsActive.png" - } - - PropertyChanges { - target: errorNumLabel - color: "#ff4848" - } - - PropertyChanges { - target: errorIcon - source: "images/errorActive.png" - } - }, - State { - name: "hoverErrorsAndWarnings" - when: root.hovered && !root.checked && !root.pressed - && root.hasErrors && root.hasWarnings - PropertyChanges { - target: warningNumLabel - color: "#ffbb0c" - } - - PropertyChanges { - target: warningsIcon - source: "images/warningsActive.png" - } - - PropertyChanges { - target: errorNumLabel - color: "#ff4848" - } - - PropertyChanges { - target: errorIcon - source: "images/errorActive.png" - } - - PropertyChanges { - target: bck - color: "#2d2d2d" - } - }, - State { - name: "pressCheckWarningsErrors" - when: (root.checked || root.pressed) && root.hasErrors - && root.hasWarnings - PropertyChanges { - target: warningNumLabel - color: "#ffbb0c" - } - - PropertyChanges { - target: warningsIcon - source: "images/warningsActive.png" - } - - PropertyChanges { - target: errorNumLabel - color: "#ff4848" - } - - PropertyChanges { - target: errorIcon - source: "images/errorActive.png" - } - - PropertyChanges { - target: bck - color: "#2d2d2d" - border.color: "#2eb0f9" - } - } - ] -} diff --git a/share/qtcreator/qmldesigner/statusbar/OutputPanel.qml b/share/qtcreator/qmldesigner/statusbar/OutputPanel.qml index 781fc159ae9..56b1083ee80 100644 --- a/share/qtcreator/qmldesigner/statusbar/OutputPanel.qml +++ b/share/qtcreator/qmldesigner/statusbar/OutputPanel.qml @@ -1,21 +1,34 @@ // Copyright (C) 2024 The Qt Company Ltd. // SPDX-License-Identifier: LicenseRef-Qt-Commercial OR GPL-3.0+ OR GPL-3.0 WITH Qt-GPL-exception-1.0 + import QtQuick import QtQuick.Controls import QtQuick.Layouts -import OutputPane + import StudioControls as StudioControls import StudioTheme as StudioTheme +import OutputPane + ScrollView { id: root + property int unreadMessages: 0 + ScrollBar.horizontal.policy: ScrollBar.AlwaysOff function clearOutput() { parentListModel.resetModel() + root.markMessagesRead() } + onVisibleChanged: { + if (root.visible === true) + root.markMessagesRead() + } + + function markMessagesRead() { root.unreadMessages = 0 } + clip: true ScrollBar.vertical: StudioControls.TransientScrollBar { @@ -26,21 +39,25 @@ ScrollView { y: 0 height: root.availableHeight orientation: Qt.Vertical - - show: (root.hovered || root.focus) - && verticalScrollBar.isNeeded + show: (root.hovered || root.focus) && verticalScrollBar.isNeeded } - ColumnLayout { + Column { id: clayout Repeater { id: parentList + model: AppOutputParentModel { id: parentListModel historyColor: "grey" messageColor: "#007b7b" errorColor: "#ff6666" + + onMessageAdded: { + if (!root.visible) + root.unreadMessages++ + } } delegate: ColumnLayout { @@ -53,8 +70,8 @@ ScrollView { Text { id: timeStampText - text: run - color: blockColor + text: parentDelegate.run + color: parentDelegate.blockColor } Repeater { @@ -66,16 +83,19 @@ ScrollView { row: parentDelegate.index } + onItemAdded: verticalScrollBar.position = 1.0 // Scroll to bottom + delegate: Column { id: childDelegate required property string message required property color messageColor + Text { wrapMode: Text.WordWrap - text: message - color: messageColor - width: root.width - verticalScrollBar.width + text: childDelegate.message + color: childDelegate.messageColor + width: root.width } } } diff --git a/share/qtcreator/qmldesigner/statusbar/TabBarButton.qml b/share/qtcreator/qmldesigner/statusbar/TabBarButton.qml new file mode 100644 index 00000000000..883babc78e9 --- /dev/null +++ b/share/qtcreator/qmldesigner/statusbar/TabBarButton.qml @@ -0,0 +1,167 @@ +// Copyright (C) 2024 The Qt Company Ltd. +// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR GPL-3.0-only WITH Qt-GPL-exception-1.0 + +import QtQuick +import QtQuick.Templates as T +import StudioTheme as StudioTheme + +T.AbstractButton { + id: control + + property StudioTheme.ControlStyle style: StudioTheme.Values.controlStyle + + property bool hover: control.hovered + property bool press: control.pressed + + // Inverts the checked style + property bool checkedInverted: false + + implicitWidth: Math.max(implicitBackgroundWidth + leftInset + rightInset, + implicitContentWidth + leftPadding + rightPadding) + implicitHeight: Math.max(implicitBackgroundHeight + topInset + bottomInset, + implicitContentHeight + topPadding + bottomPadding) + width: 100 + height: control.style.squareControlSize.height + activeFocusOnTab: false + + background: Rectangle { + id: buttonBackground + color: control.style.background.idle + border.color: control.style.border.idle + border.width: control.style.borderWidth + radius: control.style.radius + } + + indicator: T.Label { + id: buttonIcon + text: control.text + color: control.style.icon.idle + font.pixelSize: control.style.baseFontSize + width: control.width + height: control.height + horizontalAlignment: Text.AlignHCenter + verticalAlignment: Text.AlignVCenter + + states: [ + State { + name: "default" + when: control.enabled && !control.press && !control.checked && !control.hover + PropertyChanges { + target: buttonIcon + color: control.style.icon.idle + } + }, + State { + name: "hover" + when: control.enabled && !control.press && !control.checked && control.hover + PropertyChanges { + target: buttonIcon + color: control.style.icon.hover + } + }, + State { + name: "press" + when: control.enabled && control.press + PropertyChanges { + target: buttonIcon + color: control.style.icon.interaction + } + }, + State { + name: "check" + when: control.enabled && !control.press && control.checked + PropertyChanges { + target: buttonIcon + color: control.checkedInverted ? control.style.text.selectedText // TODO rather something in icon + : control.style.icon.selected + } + }, + State { + name: "disable" + when: !control.enabled + PropertyChanges { + target: buttonIcon + color: control.style.icon.disabled + } + } + ] + } + + states: [ + State { + name: "default" + when: control.enabled && !control.hover + && !control.press && !control.checked + PropertyChanges { + target: buttonBackground + color: control.style.background.idle + border.color: control.style.border.idle + } + PropertyChanges { + target: control + z: 3 + } + }, + State { + name: "hover" + when: !control.checked && control.hover && !control.press && control.enabled + PropertyChanges { + target: buttonBackground + color: control.style.background.hover + border.color: control.style.border.hover + } + PropertyChanges { + target: control + z: 100 + } + }, + State { + name: "hoverCheck" + when: control.checked && control.hover && !control.press && control.enabled + PropertyChanges { + target: buttonBackground + color: control.checkedInverted ? control.style.interactionHover + : control.style.background.hover + border.color: control.checkedInverted ? control.style.interactionHover + : control.style.border.hover + } + PropertyChanges { + target: control + z: 100 + } + }, + State { + name: "press" + when: control.hover && control.press && control.enabled + PropertyChanges { + target: buttonBackground + color: control.style.interaction + border.color: control.style.interaction + } + PropertyChanges { + target: control + z: 100 + } + }, + State { + name: "check" + when: control.enabled && !control.press && control.checked + PropertyChanges { + target: buttonBackground + color: control.checkedInverted ? control.style.interaction + : control.style.background.idle + border.color: control.checkedInverted ? control.style.interaction + : control.style.border.idle + } + }, + State { + name: "disable" + when: !control.enabled + PropertyChanges { + target: buttonBackground + color: control.style.background.disabled + border.color: control.style.border.disabled + } + } + ] +} diff --git a/share/qtcreator/qmldesigner/statusbar/TabBarButton.ui.qml b/share/qtcreator/qmldesigner/statusbar/TabBarButton.ui.qml deleted file mode 100644 index 9bcff61bb19..00000000000 --- a/share/qtcreator/qmldesigner/statusbar/TabBarButton.ui.qml +++ /dev/null @@ -1,56 +0,0 @@ -// Copyright (C) 2024 The Qt Company Ltd. -// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR GPL-3.0+ OR GPL-3.0 WITH Qt-GPL-exception-1.0 -import QtQuick -import QtQuick.Controls -import QtQuick.Templates as T - -T.Button { - id: root - width: 100 - height: 29 - property alias labelText: label.text - state: "idle" - checkable: true - - Rectangle { - id: background - color: "#282828" - radius: 5 - border.color: "#424242" - anchors.fill: parent - } - - Text { - id: label - color: "#ffffff" - text: qsTr("Issues") - anchors.verticalCenter: parent.verticalCenter - font.pixelSize: 12 - anchors.horizontalCenter: parent.horizontalCenter - } - states: [ - State { - name: "idle" - when: !root.hovered && !root.pressed & !root.checked - }, - State { - name: "hover" - when: root.hovered && !root.pressed & !root.checked - - PropertyChanges { - target: background - color: "#2f2f2f" - } - }, - State { - name: "pressCheck" - when: (root.pressed || root.checked) - - PropertyChanges { - target: background - color: "#57b9fc" - border.color: "#57b9fc" - } - } - ] -} diff --git a/share/qtcreator/qmldesigner/statusbar/images/CodeView.png b/share/qtcreator/qmldesigner/statusbar/images/CodeView.png deleted file mode 100644 index 56107927f4f1ecafd1e9453f10c1eb004b882cc9..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 24757 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 TESk%}z`)??>gTe~DWM4f#LO)7 diff --git a/share/qtcreator/qmldesigner/statusbar/images/OutputView.png b/share/qtcreator/qmldesigner/statusbar/images/OutputView.png deleted file mode 100644 index 6b8cadc39aab6e58d6e8f94c1aaae9bf0896a1de..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 9351 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 Xq)!P+Z5Lx;U|{fc^>bP0l+XkK^>4OD diff --git a/share/qtcreator/qmldesigner/statusbar/images/delete_trash.png b/share/qtcreator/qmldesigner/statusbar/images/delete_trash.png deleted file mode 100644 index 3dd7cd401af953d70f1e25c453b29d6c53699806..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 299 zcmeAS@N?(olHy`uVBq!ia0y~yVBlt8VBqIqV_;w~vNbheU|`@Z@Q5sCVBi)8VMc~o zb0ioT7#NF#+?^QKos)UVz`($g?&#~tz_78O`%fY(0|UbWPZ!6K3dXGy6L}9A2(;c# zWqQ`|FhL`MZ$*nG1E&HbD>M5725wizsRry%ZFjUSHc|ZZKsA2X*L$)0<<~ThN>s~e zUufWbvv#YaG+TkNmzQDq;r9nG)=b|XwD;&nw%CIr2m0Pd7{)C*ADosG(&+li((6)t zh5pBdhyEWvl3uWpb@2?h4S|<4Uat`lPJi{=cj`~a|HjX4s~fFmKR*>8wD>jmQHl2| z?{U5Bi_~<|xvhdp7V1NBiCqE933A zpEh<$)HF5hzse92Q)&_8!F_@6y^q}|Tc=gs4%@Wj)~mUs=JeK0kRXk^Q zr*UI^O7KyYr@{p@K6K~GzAxMyY8sfM*tyq8f?;jV$=`1(Q`i^W;(cj2Womq~u=20M z1ZkI_*LAp4_p>uCQ?RW(+gW{hwm0{MK5Z3waiPD5-wSemI(^~RnoY-(xoX??*PeQ{ z{j9KVf!66Fy~e}a=c+C5ciDP7?~BQ_Y4KNu&u^Nb7{^&t!N9=4;OXk;vd$@?2>`7X Bn-2g0 diff --git a/share/qtcreator/qmldesigner/statusbar/images/errorPassive.png b/share/qtcreator/qmldesigner/statusbar/images/errorPassive.png deleted file mode 100644 index 0b5749c630e4b275066bdd9994c0b11d9e7db181..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 342 zcmeAS@N?(olHy`uVBq!ia0y~yVBiN~4mJh`2J356y%-o6I14-?iy0WWg+Z8+Vb&Z8 z1_lPk;vjb?hIQv;UNSH+u%tWsIx;Y9?C1WI$jZRL@Y>VGF{FZVYA`qNAp?QELM$Op zfd^y^R2DQ?GH_bl2yh5!XnDvWV<3{lcgni#?5$<0k5%>m-rc?Jebge3Yqz*^4&Li~ zks5P!<0)ZD6Y~kTjeoGPN2Wb=`xU)3_wd2j<0~ri+ z4L7=N)_Z2<=d@fo{mXNsw`nfUrKU+OJ&G&-3;OAANh%Ia3JLk@R)1ADXO_MDR1U!n t%a5&2Vc2kEhO&K;wn56CoLP@2?q=NJ;LiBs6&uKr44$rjF6*2UngEy=P;~$R diff --git a/share/qtcreator/qmldesigner/statusbar/images/thinBin.png b/share/qtcreator/qmldesigner/statusbar/images/thinBin.png deleted file mode 100644 index 5df002cf896e8856048ec2fd81a7328bd5e45fb7..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 216 zcmeAS@N?(olHy`uVBq!ia0y~yVBiF?IoKE&7^)duKonU}oXkrG1_qXNM_)$E)e-c?47#MOrT^vIy7}o|gavo6Nd3}uUV{_#x zyBX?Lr}i8Wwpp0%-lBBsn1O)QswJ7?Y2RE*ILfbdY4}8$U-o(6e_}^)#E$+o?^zzQ zvH9_a7)Z%^Z<&?*Vb{&88Bs5ppVe-f`N+Zk<>}L$o4OjJzb;^V$fokCk@rLLqmv8_ O3=E#GelF{r5}E*C4M}YP diff --git a/share/qtcreator/qmldesigner/statusbar/images/warningsActive.png b/share/qtcreator/qmldesigner/statusbar/images/warningsActive.png deleted file mode 100644 index aed92e6933095bb8bc5ae61e6fe52359e225cf27..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 403 zcmeAS@N?(olHy`uVBq!ia0y~yVBlw9VBq6mV_;zT(B<}?fq{Xuz$3Dlfq`2Xgc%uT z&5>YWU|=i`a(7}_cTVOd0|Ns~x}&cn1H;CC?mvmF3=E7Ko-U3d6^v7Z-ufOk5ZLQ| zcz@U_4!NZqD~0|iFk3kuV#!o*@N+PGQNLnJ-v!=Tf=Y@iEZh3i&D}C*)!DvWbmQdR z>bmnTwiAp3KN;!-Hl2FOvFKiGa*FKp=A(?9P|m1)eWtSv|Diss#% zA#~o<-;R6#zux(tDhuW3&dvFjqtsPm!+N_p`N{8HhnBPc^V$6-&^xaw)bC7deuCE@ zg?5X&R(8|Ox!;YW=T0g$V*k9(X5ZTETQjF`J=@*nnK4K3wyU!6;U!GbU+oi~AC%fE zFMIA=+vmKOJTj~Ond;u;n_S#t6HqJ8@?TWZO8xiI*&>TLf0RW<%3iq7vq?bKI;^YW zRQcRzmp@IHh%wF+NLnyuUF%c#Jhk3~>-6$W$_`Ine^!2L-^}nu*P8Pg7#J8lUHx3v IIVCg!0K1u^r2qf` diff --git a/share/qtcreator/qmldesigner/statusbar/images/warningsPassive.png b/share/qtcreator/qmldesigner/statusbar/images/warningsPassive.png deleted file mode 100644 index 4d3ad8521190c49ac1e6c5a2f9c77f266e26de51..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 286 zcmeAS@N?(olHy`uVBq!ia0y~yVBlw9VBq6mV_;zT(B<}?fq{Xuz$3Dlfq`2Xgc%uT z&5>YWU|=i`a(7}_cTVOd0|Ns~x}&cn1H;CC?mvmF3=9mLJzX3_Dj4Smatj_-;9+I= zaNrV}(9mMJfX|HmjH9YTVyOY=;PFPUI^=WY1%oqk8+>kn1f oJcx2V{lAyL{!q>4YkBdzS9 WindowManager::m_instance = nullptr; WindowManager::WindowManager() { connect(qGuiApp, &QGuiApplication::focusWindowChanged, this, &WindowManager::focusWindowChanged); - connect(qGuiApp, &QGuiApplication::aboutToQuit, this, &WindowManager::aboutToQuit); - connect(Core::ICore::instance()->mainWindow()->windowHandle(), - &QWindow::visibleChanged, - this, - &WindowManager::mainWindowVisibleChanged); + connect( + Core::ICore::instance(), &Core::ICore::coreAboutToClose, this, &WindowManager::aboutToQuit); + connect( + Core::ICore::instance()->mainWindow()->windowHandle(), + &QWindow::visibleChanged, + this, + &WindowManager::mainWindowVisibleChanged); } void WindowManager::registerDeclarativeType()