Uploaded image for project: 'Qt Design Studio'
  1. Qt Design Studio
  2. QDS-11809

Verify that Qt Insight Tracker collects identical telemetry data than KUserFeedback

    XMLWordPrintable

Details

    • Task
    • Resolution: Done
    • P2: Important
    • QDS 4.6.0
    • None
    • Insights tracker
    • None
    • 3
    • e45da87e1 (qds/userstatistics)
    • QDS Oulu - 2024 Week 5/6

    Description

      The Qt Design Studio specific data has this format in KUserFeedback:

      {
          "qmlDesignerEvents": {
              "bindingEditorOpened": 1,
              "stateAdded": 2
          },
          "qmlDesignerFeedbackPoppedKey": {
              "3DEditor": null,
              "assetsLibrary": true,
              "contentLibrary": null,
              "curveEditor": null,
              "designMode": true,
              "formEditor": true,
              "insight": null,
              "itemLibrary": true,
              "materialBrowser": null,
              "materialEditor": null,
              "navigatorView": true,
              "propertyEditor": true,
              "qmlDesigner.AssetImporter.ImportPureDuration": null,
              "statesEditor": true,
              "textEditor": true,
              "textureEditor": null,
              "timeline": true,
              "transitionEditor": null,
              "translationView": null
          },
          "qmlDesignerFeedbackRatingKey": {
              "Qt Design Studio": 3,
              "designMode": 4,
              "formEditor": 4,
              "itemLibrary": 4,
              "propertyEditor": 4,
              "textEditor": 4
          },
          "qmlDesignerFeedbackTextKey": {
          },
          "qmlDesignerTimes": {
              "3DEditor": 944452,
              "assetsLibrary": 503836,
              "contentLibrary": 879283,
              "curveEditor": 521890,
              "designMode": 473997228,
              "formEditor": 19891502,
              "insight": 61086,
              "itemLibrary": 4000188,
              "materialBrowser": 85388,
              "materialEditor": 49351,
              "navigatorView": 10411721,
              "propertyEditor": 14638833,
              "qmlDesigner.AssetImporter.ImportPureDuration": 4488,
              "statesEditor": 2724760,
              "textEditor": 34517508,
              "textureEditor": 145,
              "timeline": 1943364,
              "transitionEditor": 10399,
              "translationView": 106405
          }
      }
      

      Ideally we should collect every id under qmlDesignerEvents, qmlDesignerFeedbackPoppedKey, qmlDesignerFeedbackRatingKey, qmlDesignerFeedbackTextKey and qmlDesignerTimes.

      The actual ids are coming from constants, but since new views and functionality is constantly added it will be hard to keep track of all events and view ids.

      Current event ids:

      const char EVENT_TIMELINE_ADDED[] = "timelineAdded";
      
      const char EVENT_TRANSITION_ADDED[] = "transitionAdded";
      
      const char EVENT_STATE_ADDED[] = "stateAdded";
      
      const char EVENT_STATE_ADDED_AND_CLONED[] = "stateAddedAndCloned";
      
      const char EVENT_STATE_CLONED[] = "stateCloned";
      
      const char EVENT_STATE_EXTENDED[] = "stateExtended";
      
      const char EVENT_CONNECTION_ADDED[] = "connectionAdded";
      
      const char EVENT_PROPERTY_ADDED[] = "propertyAdded";
      
      const char EVENT_ANNOTATION_ADDED[] = "annotationAdded";
      
      const char EVENT_RESOURCE_IMPORTED[] = "resourceImported";
      
      const char EVENT_ACTION_EXECUTED[] = "actionExecuted";
      
      const char EVENT_HELP_REQUESTED[] = "helpRequested";
      
      const char EVENT_IMPORT_ADDED[] = "importAdded:";
      
      const char EVENT_BINDINGEDITOR_OPENED[] = "bindingEditorOpened";
      
      const char EVENT_RICHTEXT_OPENED[] = "richtextEditorOpened";
      
      const char EVENT_FORMEDITOR_TIME[] = "formEditor";
      
      const char EVENT_3DEDITOR_TIME[] = "3DEditor";
      
      const char EVENT_TIMELINE_TIME[] = "timeline";
      
      const char EVENT_TRANSITIONEDITOR_TIME[] = "transitionEditor";
      
      const char EVENT_CURVEDITOR_TIME[] = "curveEditor";
      
      const char EVENT_STATESEDITOR_TIME[] = "statesEditor";
      
      const char EVENT_TEXTEDITOR_TIME[] = "textEditor";
      
      const char EVENT_TEXTUREEDITOR_TIME[] = "textureEditor";
      
      const char EVENT_PROPERTYEDITOR_TIME[] = "propertyEditor";
      
      const char EVENT_ASSETSLIBRARY_TIME[] = "assetsLibrary";
      
      const char EVENT_EFFECTCOMPOSER_NODE[] = "effectComposerNode";
      
      const char EVENT_EFFECTCOMPOSER_TIME[] = "effectComposerTime";
      
      const char EVENT_ITEMLIBRARY_TIME[] = "itemLibrary";
      
      const char EVENT_TRANSLATIONVIEW_TIME[] = "translationView";
      
      const char EVENT_NAVIGATORVIEW_TIME[] = "navigatorView";
      
      const char EVENT_DESIGNMODE_TIME[] = "designMode";
      
      const char EVENT_MATERIALEDITOR_TIME[] = "materialEditor";
      
      const char EVENT_MATERIALBROWSER_TIME[] = "materialBrowser";
      
      const char EVENT_CONTENTLIBRARY_TIME[] = "contentLibrary";
      
      const char EVENT_INSIGHT_TIME[] = "insight";
      
      const char EVENT_MODELEDITOR_TIME[] = "modelEditor";
      
      const char EVENT_TOOLBAR_MODE_CHANGE[] = "ToolBarTriggerModeChange";
      
      const char EVENT_TOOLBAR_PROJECT_SETTINGS[] = "ToolBarTriggerProjectSettings";
      
      const char EVENT_TOOLBAR_RUN_PROJECT[] = "ToolBarRunProject";
      
      const char EVENT_TOOLBAR_GO_FORWARD[] = "ToolBarGoForward";
      
      const char EVENT_TOOLBAR_GO_BACKWARD[] = "ToolBarGoBackward";
      
      const char EVENT_TOOLBAR_OPEN_FILE[] = "ToolBarOpenFile";
      
      const char EVENT_TOOLBAR_CLOSE_DOCUMENT[] = "ToolBarCloseCurrentDocument";
      
      const char EVENT_TOOLBAR_SHARE_APPLICATION[] = "ToolBarShareApplication";
      
      const char EVENT_TOOLBAR_SET_CURRENT_WORKSPACE[] = "ToolBarSetCurrentWorkspace";
      
      const char EVENT_TOOLBAR_EDIT_GLOBAL_ANNOTATION[] = "ToolBarEditGlobalAnnotation";
      
      const char EVENT_STATUSBAR_SHOW_ZOOM[] = "StatusBarShowZoomMenu";
      
      const char EVENT_STATUSBAR_SET_STYLE[] = "StatusBarSetCurrentStyle";
      

      From Asset importer:

      
      //***************************************************************************
      // Telemetry constants
      //***************************************************************************
      const char ImportLaunchEvent[] = "QmlDesigner.AssetImporter.Launch";
      const char ImportLicenseFailEvent[] = "QmlDesigner.AssetImporter.Launch.LicenseFail";
      const char ImportMetadataEvent[] = "QmlDesigner.AssetImporter.Import";
      const char FeatureMergeEvent[] = "QmlDesigner.AssetImporter.Import.FeatureMerge";
      const char FeatureTemplateEvent[] = "QmlDesigner.AssetImporter.Import.FeatureTemplate";
      const char FeatureVariantEvent[] = "QmlDesigner.AssetImporter.Import.FeatureVariant";
      const char ImportFinishedEvent[] = "QmlDesigner.AssetImporter.ImportFinished";
      const char ImportDurationEvent[] = "QmlDesigner.AssetImporter.ImportDuration";
      const char ImportPureDurationEvent[] = "QmlDesigner.AssetImporter.ImportPureDuration";
      const char PreviewAfterImportEvent[] = "QmlDesigner.AssetImporter.PreviewAfterImport";
      

      Design Viewer sharing:

      QmlDesigner::QmlDesignerPlugin::emitUsageStatistics("ShareDesignFilePasswordSet");
      QmlDesigner::QmlDesignerPlugin::emitUsageStatistics("ShareDesignFileUploaded");
      QmlDesigner::QmlDesignerPlugin::emitUsageStatistics("ShareDesignFileUploadFailed");
      QmlDesigner::QmlDesignerPlugin::emitUsageStatistics("ShareDesignFileUploaded");
      QmlDesigner::QmlDesignerPlugin::emitUsageStatistics("ShareDesignUIOpened");
      

      Some more events from the welcome page:

      emitUsageStatistics("qdsShutdownCount");
      emitUsageStatistics("StandaloneMode");
      emitUsageStatistics("QDSlaunchedFromQtC");
      emitUsageStatistics("qdsStartupCount");
      

      We also collect the durations for certain events like QmlDesigner.AssetImporter.ImportDuration.
      In this case we select the duration for each import seperatly.

         "qmlDesignerEvents": {
              "QmlDesigner.AssetImporter.ImportDuration": [
                  4972
              ],
              "QmlDesigner.AssetImporter.ImportPureDuration": [
                  3390
              ],
              "bindingEditorOpened": 1,
              "qmlDesigner.AssetImporter.Import.FeatureMerge": 5,
              "qmlDesigner.AssetImporter.Import:Artboardcount:5": 1,
              "qmlDesigner.AssetImporter.Import:QtBridgePluginid:Generic,Version:4.3,Hostappversion:70": 1,
              "qmlDesigner.AssetImporter.ImportFinished": 1,
              "qmlDesigner.AssetImporter.Launch": 1,
              "resourceImportedCompressedMetadata": 1,
              "stateAdded": 2
          },
      

      There are special cases in which we generate an id from data:

      QmlDesigner::QmlDesignerPlugin::emitUsageStatistics("exampleOpened:"
                                                                  + exampleName);
      

      In this case the id is "exampleOpened:" + the name of the example.

      void QmlDesignerPlugin::emitUsageStatisticsContextAction(const QString &identifier)
      {
          emitUsageStatistics(Constants::EVENT_ACTION_EXECUTED + identifier);
      }
      

      In this case the id is "actionExecuted" + the identifier for the action.

      This is a list of most context action ids:

      const char toFrontCommandId[] = "ToFront";
      const char toBackCommandId[] = "ToBack";
      const char raiseCommandId[] = "Raise";
      const char lowerCommandId[] = "Lower";
      const char resetZCommandId[] = "ResetZ";
      const char reverseCommandId[] = "Reverse";
      const char resetSizeCommandId[] = "ResetSize";
      const char resetPositionCommandId[] = "ResetPosition";
      const char copyFormatCommandId[] = "CopyFormat";
      const char applyFormatCommandId[] = "ApplyFormat";
      const char visiblityCommandId[] = "ToggleVisiblity";
      const char anchorsFillCommandId[] = "AnchorsFill";
      const char anchorsResetCommandId[] = "AnchorsReset";
      
      const char anchorParentTopAndBottomCommandId[] = "AnchorParentTopAndBottom";
      const char anchorParentLeftAndRightCommandId[] = "AnchorParentLeftAndRight";
      const char anchorParentTopCommandId[] = "AnchorParentTop";
      const char anchorParentRightCommandId[] = "AnchorParentRight";
      const char anchorParentBottomCommandId[] = "AnchorParentBottom";
      const char anchorParentLeftCommandId[] = "AnchorParentLeft";
      
      const char removePositionerCommandId[] = "RemovePositioner";
      const char createFlowActionAreaCommandId[] = "CreateFlowActionArea";
      const char setFlowStartCommandId[] = "SetFlowStart";
      const char selectFlowEffectCommandId[] = "SelectFlowEffect";
      const char layoutRowPositionerCommandId[] = "LayoutRowPositioner";
      const char layoutColumnPositionerCommandId[] = "LayoutColumnPositioner";
      const char layoutGridPositionerCommandId[] = "LayoutGridPositioner";
      const char layoutFlowPositionerCommandId[] = "LayoutFlowPositioner";
      const char removeLayoutCommandId[] = "RemoveLayout";
      const char layoutRowLayoutCommandId[] = "LayoutRowLayout";
      const char layoutColumnLayoutCommandId[] = "LayoutColumnLayout";
      const char layoutGridLayoutCommandId[] = "LayoutGridLayout";
      const char layoutFillWidthCommandId[] = "LayoutFillWidth";
      const char layoutFillHeightCommandId[] = "LayoutFillHeight";
      const char goIntoComponentCommandId[] = "GoIntoComponent";
      const char jumpToCodeCommandId[] = "JumpToCode";
      const char mergeTemplateCommandId[] = "MergeTemplate";
      const char goToImplementationCommandId[] = "GoToImplementation";
      const char makeComponentCommandId[] = "MakeComponent";
      const char editMaterialCommandId[] = "EditMaterial";
      const char addItemToStackedContainerCommandId[] = "AddItemToStackedContainer";
      const char addTabBarToStackedContainerCommandId[] = "AddTabBarToStackedContainer";
      const char increaseIndexOfStackedContainerCommandId[] = "IncreaseIndexOfStackedContainer";
      const char decreaseIndexOfStackedContainerCommandId[] = "DecreaseIndexOfStackedContainer";
      const char flowAssignEffectCommandId[] = "AssignFlowEffect";
      const char flowAssignCustomEffectCommandId[] = "AssignFlowCustomEffect";
      const char addToGroupItemCommandId[] = "AddToGroupItem";
      const char fitRootToScreenCommandId[] = "FitRootToScreen";
      const char fitSelectionToScreenCommandId[] = "FitSelectionToScreen";
      const char editAnnotationsCommandId[] = "EditAnnotation";
      const char addMouseAreaFillCommandId[] = "AddMouseAreaFill";
      
      const char openSignalDialogCommandId[] = "OpenSignalDialog";
      const char update3DAssetCommandId[] = "Update3DAsset";
      

      For durations we have these view ids:

          "3DEditor"
          "assetsLibrary"
          "contentLibrary"
          "curveEditor"
          "designMode"
          "formEditor"
          "insight"
          "itemLibrary"
          "materialBrowser"
          "materialEditor"
          "navigatorView"
          "propertyEditor"       
          "statesEditor"
          "textEditor"
          "textureEditor"
          "timeline"
          "transitionEditor"
          "translationView"
      

      There is also this identfier for imports:

       "qmlDesigner.AssetImporter.ImportPureDuration"
      

      Note that Qt Creator and KUserFeedback also collects other data by default.

      This is a list of relevant data:

      The version of the application.
      {
          "value": "4.3.2"
      }
      
      
      The compiler used to build this application.
      {
          "type": "MSVC",
          "version": "1929"
      }
      
      The amount and type of CPUs in the system.
      {
          "architecture": "x86_64",
          "count": 16
      }
      
      The current region and language settings.
      {
          "language": "English",
          "region": "Germany"
      }
      
      The current region and language settings.
      {
          "glslVersion": "4.60",
          "profile": "compat",
          "renderer": "T1200 Laptop GPU/PCIe/SSE2",
          "type": "GL",
          "vendor": "NVIDIA Corporation",
          "vendorVersion": "NVIDIA 537.70",
          "version": "4.6"
      }
      
      Information about type, version and vendor of the OpenGL stack.
      {
          "glslVersion": "4.60",
          "profile": "compat",
          "renderer": "T1200 Laptop GPU/PCIe/SSE2",
          "type": "GL",
          "vendor": "NVIDIA Corporation",
          "vendorVersion": "NVIDIA 537.70",
          "version": "4.6"
      }
      
      
      The Qt platform abstraction plugin.
      {
          "name": "windows"
      }
      
      The Qt platform abstraction plugin.
      {
          "name": "windows"
      }
      
      The Qt version used by this application.
      {
          "value": "6.5.4"
      }
      
      Size and resolution of all connected screens.
      [    
      {
              "devicePixelRatio": 1,
              "dpi": 159,
              "height": 2160,
              "width": 3840
          },
          {
              "devicePixelRatio": 2,
              "dpi": 142,
              "height": 1200,
              "width": 1920
          }
      ]
      
      How often the application has been started.
      {
          "value": 1656
      }
      
      The total amount of time the application has been used.
      {
          "value": 27408274
      }
      
      The widget style used by the application, and information about the used color scheme.
      {
          "dark": true,
          "style": ""
      }
      
      The name and version of the application.
      {
          "applicationName": "Qt Design Studio",
          "applicationVersion": "4.3.2"
      }
      
      Qt Creator license type string: opensource, evaluation, commercial
      {
          "value": "commercial"
      }
      

      Attachments

        For Gerrit Dashboard: QDS-11809
        # Subject Branch Project Status CR V

        Activity

          People

            shgabr Shrief Gabr
            mabadri Mahmoud Badri
            Votes:
            0 Vote for this issue
            Watchers:
            3 Start watching this issue

            Dates

              Created:
              Updated:
              Resolved:

              Gerrit Reviews

                There are no open Gerrit changes