Browse Source

Merge pull request #1260 from DonLakeFlyer/UIWork

Qml Test dialog theme selection support
QGC4.4
Don Gagne 10 years ago
parent
commit
fd6b895bfe
  1. 15
      src/QGCQmlWidgetHolder.cpp
  2. 3
      src/QGCQmlWidgetHolder.h
  3. 18
      src/QGCQuickWidget.cc
  4. 4
      src/QGCQuickWidget.h
  5. 839
      src/QmlControls/QmlTest.qml

15
src/QGCQmlWidgetHolder.cpp

@ -25,7 +25,6 @@ @@ -25,7 +25,6 @@
/// @author Don Gagne <don@thegagnes.com>
#include "QGCQmlWidgetHolder.h"
#include "QGCMessageBox.h"
QGCQmlWidgetHolder::QGCQmlWidgetHolder(QWidget *parent) :
QWidget(parent)
@ -46,17 +45,5 @@ void QGCQmlWidgetHolder::setAutoPilot(AutoPilotPlugin* autoPilot) @@ -46,17 +45,5 @@ void QGCQmlWidgetHolder::setAutoPilot(AutoPilotPlugin* autoPilot)
bool QGCQmlWidgetHolder::setSource(const QUrl& qmlUrl)
{
_ui.qmlWidget->setSource(qmlUrl);
if (_ui.qmlWidget->status() != QQuickWidget::Ready) {
QString errorList;
foreach (QQmlError error, _ui.qmlWidget->errors()) {
errorList += error.toString();
errorList += "\n";
}
QGCMessageBox::warning(tr("Qml Error"), tr("Source not ready: %1\nErrors:\n%2").arg(_ui.qmlWidget->status()).arg(errorList));
return false;
}
return true;
return _ui.qmlWidget->setSource(qmlUrl);
}

3
src/QGCQmlWidgetHolder.h

@ -49,7 +49,8 @@ public: @@ -49,7 +49,8 @@ public:
/// Sets the UAS into the widget which in turn will load facts into the context
void setAutoPilot(AutoPilotPlugin* autoPilot);
/// Sets the QML into the control
/// Sets the QML into the control. Will display errors message box if error occurs loading source.
/// @return true: source loaded, false: source not loaded, errors occured
bool setSource(const QUrl& qmlUrl);
private:

18
src/QGCQuickWidget.cc

@ -23,6 +23,7 @@ @@ -23,6 +23,7 @@
#include "QGCQuickWidget.h"
#include "AutoPilotPluginManager.h"
#include "QGCMessageBox.h"
#include <QQmlContext>
#include <QQmlEngine>
@ -43,3 +44,20 @@ void QGCQuickWidget::setAutoPilot(AutoPilotPlugin* autoPilot) @@ -43,3 +44,20 @@ void QGCQuickWidget::setAutoPilot(AutoPilotPlugin* autoPilot)
{
rootContext()->setContextProperty("autopilot", autoPilot);
}
bool QGCQuickWidget::setSource(const QUrl& qmlUrl)
{
QQuickWidget::setSource(qmlUrl);
if (status() != Ready) {
QString errorList;
foreach (QQmlError error, errors()) {
errorList += error.toString();
errorList += "\n";
}
QGCMessageBox::warning(tr("Qml Error"), tr("Source not ready: Status(%1)\nErrors:\n%2").arg(status()).arg(errorList));
return false;
}
return true;
}

4
src/QGCQuickWidget.h

@ -42,6 +42,10 @@ public: @@ -42,6 +42,10 @@ public:
/// Sets the UAS into the widget which in turn will load facts into the context
void setAutoPilot(AutoPilotPlugin* autoPilot);
/// Sets the QML into the control. Will display errors message box if error occurs loading source.
/// @return true: source loaded, false: source not loaded, errors occured
bool setSource(const QUrl& qmlUrl);
};
#endif

839
src/QmlControls/QmlTest.qml

@ -11,459 +11,478 @@ Rectangle { @@ -11,459 +11,478 @@ Rectangle {
property var palette: QGCPalette { colorGroupEnabled: true }
color: palette.window
Row {
spacing: 30
Column {
Grid {
columns: 3
spacing: 5
Row {
ExclusiveGroup { id: themeGroup }
Component {
id: colorSquare
QGCRadioButton {
text: "Light"
exclusiveGroup: themeGroup
onClicked: { palette.globalTheme = QGCPalette.Light }
}
Rectangle {
width: 80
height: 20
border.width: 1
border.color: "white"
color: parent.color
}
QGCRadioButton {
text: "Dark"
exclusiveGroup: themeGroup
onClicked: { palette.globalTheme = QGCPalette.Dark }
}
}
Row {
spacing: 30
Grid {
columns: 3
spacing: 5
Component {
id: colorSquare
Rectangle {
width: 80
height: 20
border.width: 1
border.color: "white"
color: parent.color
}
}
Component {
id: rowHeader
Text {
width: 180
height: 20
horizontalAlignment: Text.AlignRight
verticalAlignment: Text.AlignVCenter
color: palette.text
text: parent.text
}
}
Component {
id: rowHeader
// Header row
Loader {
sourceComponent: rowHeader
property var text: ""
}
Text {
width: 180
width: 80
height: 20
horizontalAlignment: Text.AlignRight
verticalAlignment: Text.AlignVCenter
color: palette.text
text: parent.text
horizontalAlignment: Text.AlignHCenter
text: "Disabled"
}
Text {
width: 80
height: 20
color: palette.text
horizontalAlignment: Text.AlignHCenter
text: "Enabled"
}
}
// window
Loader {
sourceComponent: rowHeader
property var text: "window"
}
Loader {
property var palette: QGCPalette { colorGroupEnabled: false }
property var color: palette.window
sourceComponent: colorSquare
}
Loader {
property var palette: QGCPalette { colorGroupEnabled: true }
property var color: palette.window
sourceComponent: colorSquare
}
// Header row
Loader {
sourceComponent: rowHeader
property var text: ""
}
Text {
width: 80
height: 20
color: palette.text
horizontalAlignment: Text.AlignHCenter
text: "Disabled"
}
Text {
width: 80
height: 20
color: palette.text
horizontalAlignment: Text.AlignHCenter
text: "Enabled"
}
// windowShade
Loader {
sourceComponent: rowHeader
property var text: "windowShade"
}
Loader {
property var palette: QGCPalette { colorGroupEnabled: false }
property var color: palette.windowShade
sourceComponent: colorSquare
}
Loader {
property var palette: QGCPalette { colorGroupEnabled: true }
property var color: palette.windowShade
sourceComponent: colorSquare
}
// window
Loader {
sourceComponent: rowHeader
property var text: "window"
}
Loader {
property var palette: QGCPalette { colorGroupEnabled: false }
property var color: palette.window
sourceComponent: colorSquare
}
Loader {
property var palette: QGCPalette { colorGroupEnabled: true }
property var color: palette.window
sourceComponent: colorSquare
}
// windowShadeDark
Loader {
sourceComponent: rowHeader
property var text: "windowShadeDark"
}
Loader {
property var palette: QGCPalette { colorGroupEnabled: false }
property var color: palette.windowShadeDark
sourceComponent: colorSquare
}
Loader {
property var palette: QGCPalette { colorGroupEnabled: true }
property var color: palette.windowShadeDark
sourceComponent: colorSquare
}
// windowShade
Loader {
sourceComponent: rowHeader
property var text: "windowShade"
}
Loader {
property var palette: QGCPalette { colorGroupEnabled: false }
property var color: palette.windowShade
sourceComponent: colorSquare
}
Loader {
property var palette: QGCPalette { colorGroupEnabled: true }
property var color: palette.windowShade
sourceComponent: colorSquare
}
// text
Loader {
sourceComponent: rowHeader
property var text: "text"
}
Loader {
property var palette: QGCPalette { colorGroupEnabled: false }
property var color: palette.text
sourceComponent: colorSquare
}
Loader {
property var palette: QGCPalette { colorGroupEnabled: true }
property var color: palette.text
sourceComponent: colorSquare
}
// windowShadeDark
Loader {
sourceComponent: rowHeader
property var text: "windowShadeDark"
}
Loader {
property var palette: QGCPalette { colorGroupEnabled: false }
property var color: palette.windowShadeDark
sourceComponent: colorSquare
}
Loader {
property var palette: QGCPalette { colorGroupEnabled: true }
property var color: palette.windowShadeDark
sourceComponent: colorSquare
}
// button
Loader {
sourceComponent: rowHeader
property var text: "button"
}
Loader {
property var palette: QGCPalette { colorGroupEnabled: false }
property var color: palette.button
sourceComponent: colorSquare
}
Loader {
property var palette: QGCPalette { colorGroupEnabled: true }
property var color: palette.button
sourceComponent: colorSquare
}
// text
Loader {
sourceComponent: rowHeader
property var text: "text"
}
Loader {
property var palette: QGCPalette { colorGroupEnabled: false }
property var color: palette.text
sourceComponent: colorSquare
}
Loader {
property var palette: QGCPalette { colorGroupEnabled: true }
property var color: palette.text
sourceComponent: colorSquare
}
// buttonText
Loader {
sourceComponent: rowHeader
property var text: "buttonText"
}
Loader {
property var palette: QGCPalette { colorGroupEnabled: false }
property var color: palette.buttonText
sourceComponent: colorSquare
}
Loader {
property var palette: QGCPalette { colorGroupEnabled: true }
property var color: palette.buttonText
sourceComponent: colorSquare
}
// button
Loader {
sourceComponent: rowHeader
property var text: "button"
}
Loader {
property var palette: QGCPalette { colorGroupEnabled: false }
property var color: palette.button
sourceComponent: colorSquare
}
Loader {
property var palette: QGCPalette { colorGroupEnabled: true }
property var color: palette.button
sourceComponent: colorSquare
}
// buttonHighlight
Loader {
sourceComponent: rowHeader
property var text: "buttonHighlight"
}
Loader {
property var palette: QGCPalette { colorGroupEnabled: false }
property var color: palette.buttonHighlight
sourceComponent: colorSquare
}
Loader {
property var palette: QGCPalette { colorGroupEnabled: true }
property var color: palette.buttonHighlight
sourceComponent: colorSquare
}
// buttonText
Loader {
sourceComponent: rowHeader
property var text: "buttonText"
}
Loader {
property var palette: QGCPalette { colorGroupEnabled: false }
property var color: palette.buttonText
sourceComponent: colorSquare
}
Loader {
property var palette: QGCPalette { colorGroupEnabled: true }
property var color: palette.buttonText
sourceComponent: colorSquare
}
// buttonHighlightText
Loader {
sourceComponent: rowHeader
property var text: "buttonHighlightText"
}
Loader {
property var palette: QGCPalette { colorGroupEnabled: false }
property var color: palette.buttonHighlightText
sourceComponent: colorSquare
}
Loader {
property var palette: QGCPalette { colorGroupEnabled: true }
property var color: palette.buttonHighlightText
sourceComponent: colorSquare
}
// buttonHighlight
Loader {
sourceComponent: rowHeader
property var text: "buttonHighlight"
}
Loader {
property var palette: QGCPalette { colorGroupEnabled: false }
property var color: palette.buttonHighlight
sourceComponent: colorSquare
}
Loader {
property var palette: QGCPalette { colorGroupEnabled: true }
property var color: palette.buttonHighlight
sourceComponent: colorSquare
}
// primaryButton
Loader {
sourceComponent: rowHeader
property var text: "primaryButton"
}
Loader {
property var palette: QGCPalette { colorGroupEnabled: false }
property var color: palette.primaryButton
sourceComponent: colorSquare
}
Loader {
property var palette: QGCPalette { colorGroupEnabled: true }
property var color: palette.primaryButton
sourceComponent: colorSquare
}
// buttonHighlightText
Loader {
sourceComponent: rowHeader
property var text: "buttonHighlightText"
}
Loader {
property var palette: QGCPalette { colorGroupEnabled: false }
property var color: palette.buttonHighlightText
sourceComponent: colorSquare
}
Loader {
property var palette: QGCPalette { colorGroupEnabled: true }
property var color: palette.buttonHighlightText
sourceComponent: colorSquare
}
// primaryButtonText
Loader {
sourceComponent: rowHeader
property var text: "primaryButtonText"
}
Loader {
property var palette: QGCPalette { colorGroupEnabled: false }
property var color: palette.primaryButtonText
sourceComponent: colorSquare
}
Loader {
property var palette: QGCPalette { colorGroupEnabled: true }
property var color: palette.primaryButtonText
sourceComponent: colorSquare
}
// primaryButton
Loader {
sourceComponent: rowHeader
property var text: "primaryButton"
}
Loader {
property var palette: QGCPalette { colorGroupEnabled: false }
property var color: palette.primaryButton
sourceComponent: colorSquare
}
Loader {
property var palette: QGCPalette { colorGroupEnabled: true }
property var color: palette.primaryButton
sourceComponent: colorSquare
}
// textField
Loader {
sourceComponent: rowHeader
property var text: "textField"
}
Loader {
property var palette: QGCPalette { colorGroupEnabled: false }
property var color: palette.textField
sourceComponent: colorSquare
}
Loader {
property var palette: QGCPalette { colorGroupEnabled: true }
property var color: palette.textField
sourceComponent: colorSquare
}
// primaryButtonText
Loader {
sourceComponent: rowHeader
property var text: "primaryButtonText"
}
Loader {
property var palette: QGCPalette { colorGroupEnabled: false }
property var color: palette.primaryButtonText
sourceComponent: colorSquare
}
Loader {
property var palette: QGCPalette { colorGroupEnabled: true }
property var color: palette.primaryButtonText
sourceComponent: colorSquare
}
// textFieldText
Loader {
sourceComponent: rowHeader
property var text: "textFieldText"
}
Loader {
property var palette: QGCPalette { colorGroupEnabled: false }
property var color: palette.textFieldText
sourceComponent: colorSquare
}
Loader {
property var palette: QGCPalette { colorGroupEnabled: true }
property var color: palette.textFieldText
sourceComponent: colorSquare
}
// textField
Loader {
sourceComponent: rowHeader
property var text: "textField"
}
Loader {
property var palette: QGCPalette { colorGroupEnabled: false }
property var color: palette.textField
sourceComponent: colorSquare
}
Loader {
property var palette: QGCPalette { colorGroupEnabled: true }
property var color: palette.textField
sourceComponent: colorSquare
}
// textFieldText
Loader {
sourceComponent: rowHeader
property var text: "textFieldText"
}
Loader {
property var palette: QGCPalette { colorGroupEnabled: false }
property var color: palette.textFieldText
sourceComponent: colorSquare
}
Loader {
property var palette: QGCPalette { colorGroupEnabled: true }
property var color: palette.textFieldText
sourceComponent: colorSquare
}
Grid {
columns: 3
spacing: 10
}
Component {
id: ctlRowHeader
Grid {
columns: 3
spacing: 10
Text {
width: 120
height: 20
horizontalAlignment: Text.AlignRight
verticalAlignment: Text.AlignVCenter
color: palette.text
text: parent.text
}
}
Component {
id: ctlRowHeader
// Header row
Loader {
sourceComponent: ctlRowHeader
property var text: ""
}
Text {
width: 120
width: 100
height: 20
horizontalAlignment: Text.AlignRight
verticalAlignment: Text.AlignVCenter
color: palette.text
text: parent.text
horizontalAlignment: Text.AlignHCenter
text: "Enabled"
}
Text {
width: 100
height: 20
color: palette.text
horizontalAlignment: Text.AlignHCenter
text: "Disabled"
}
}
// Header row
Loader {
sourceComponent: ctlRowHeader
property var text: ""
}
Text {
width: 100
height: 20
color: palette.text
horizontalAlignment: Text.AlignHCenter
text: "Enabled"
}
Text {
width: 100
height: 20
color: palette.text
horizontalAlignment: Text.AlignHCenter
text: "Disabled"
}
// QGCLabel
Loader {
sourceComponent: ctlRowHeader
property var text: "QGCLabel"
}
QGCLabel {
width: 100
height: 20
text: "Label"
}
QGCLabel {
width: 100
height: 20
text: "Label"
enabled: false
}
// QGCLabel
Loader {
sourceComponent: ctlRowHeader
property var text: "QGCLabel"
}
QGCLabel {
width: 100
height: 20
text: "Label"
}
QGCLabel {
width: 100
height: 20
text: "Label"
enabled: false
}
// QGCButton
Loader {
sourceComponent: ctlRowHeader
property var text: "QGCButton"
}
QGCButton {
width: 100
height: 20
text: "Button"
}
QGCButton {
width: 100
height: 20
text: "Button"
enabled: false
}
// QGCButton
Loader {
sourceComponent: ctlRowHeader
property var text: "QGCButton"
}
QGCButton {
width: 100
height: 20
text: "Button"
}
QGCButton {
width: 100
height: 20
text: "Button"
enabled: false
}
// QGCButton - primary
Loader {
sourceComponent: ctlRowHeader
property var text: "QGCButton(primary)"
}
QGCButton {
width: 100
height: 20
primary: true
text: "Button"
}
QGCButton {
width: 100
height: 20
text: "Button"
primary: true
enabled: false
}
// QGCButton - primary
Loader {
sourceComponent: ctlRowHeader
property var text: "QGCButton(primary)"
}
QGCButton {
width: 100
height: 20
primary: true
text: "Button"
}
QGCButton {
width: 100
height: 20
text: "Button"
primary: true
enabled: false
}
// QGCRadioButton
Loader {
sourceComponent: ctlRowHeader
property var text: "QGCRadioButton"
}
QGCRadioButton {
width: 100
height: 20
text: "Radio"
}
QGCRadioButton {
width: 100
height: 20
text: "Radio"
enabled: false
}
// QGCRadioButton
Loader {
sourceComponent: ctlRowHeader
property var text: "QGCRadioButton"
}
QGCRadioButton {
width: 100
height: 20
text: "Radio"
}
QGCRadioButton {
width: 100
height: 20
text: "Radio"
enabled: false
}
// QGCCheckBox
Loader {
sourceComponent: ctlRowHeader
property var text: "QGCCheckBox"
}
QGCCheckBox {
width: 100
height: 20
text: "Check Box"
}
QGCCheckBox {
width: 100
height: 20
text: "Check Box"
enabled: false
}
// QGCCheckBox
Loader {
sourceComponent: ctlRowHeader
property var text: "QGCCheckBox"
}
QGCCheckBox {
width: 100
height: 20
text: "Check Box"
}
QGCCheckBox {
width: 100
height: 20
text: "Check Box"
enabled: false
}
// QGCTextField
Loader {
sourceComponent: ctlRowHeader
property var text: "QGCTextField"
}
QGCTextField {
width: 100
height: 20
text: "QGCTextField"
}
QGCTextField {
width: 100
height: 20
text: "QGCTextField"
enabled: false
}
// QGCTextField
Loader {
sourceComponent: ctlRowHeader
property var text: "QGCTextField"
}
QGCTextField {
width: 100
height: 20
text: "QGCTextField"
}
QGCTextField {
width: 100
height: 20
text: "QGCTextField"
enabled: false
}
// FactLabel
Loader {
sourceComponent: ctlRowHeader
property var text: "FactLabel"
}
FactLabel {
width: 100
height: 20
}
FactLabel {
width: 100
height: 20
enabled: false
}
// FactLabel
Loader {
sourceComponent: ctlRowHeader
property var text: "FactLabel"
}
FactLabel {
width: 100
height: 20
}
FactLabel {
width: 100
height: 20
enabled: false
}
// FactCheckBox
Loader {
sourceComponent: ctlRowHeader
property var text: "FactCheckBox"
}
FactCheckBox {
width: 100
height: 20
text: "Fact CheckBox"
}
FactCheckBox {
width: 100
height: 20
text: "Fact CheckBox"
enabled: false
}
// FactCheckBox
Loader {
sourceComponent: ctlRowHeader
property var text: "FactCheckBox"
}
FactCheckBox {
width: 100
height: 20
text: "Fact CheckBox"
}
FactCheckBox {
width: 100
height: 20
text: "Fact CheckBox"
enabled: false
}
// FactTextField
Loader {
sourceComponent: ctlRowHeader
property var text: "FactTextField"
}
FactTextField {
width: 100
height: 20
text: "FactTextField"
}
FactTextField {
width: 100
height: 20
text: "FactTextField"
enabled: false
}
// FactTextField
Loader {
sourceComponent: ctlRowHeader
property var text: "FactTextField"
}
FactTextField {
width: 100
height: 20
text: "FactTextField"
}
FactTextField {
width: 100
height: 20
text: "FactTextField"
enabled: false
}
// SubMenuButton
Loader {
sourceComponent: ctlRowHeader
property var text: "SubMenuButton"
}
SubMenuButton {
width: 100
height: 100
text: "SUB MENU"
}
SubMenuButton {
width: 100
height: 100
text: "SUB MENU"
enabled: false
// SubMenuButton
Loader {
sourceComponent: ctlRowHeader
property var text: "SubMenuButton"
}
SubMenuButton {
width: 100
height: 100
text: "SUB MENU"
}
SubMenuButton {
width: 100
height: 100
text: "SUB MENU"
enabled: false
}
}
}
}

Loading…
Cancel
Save