diff --git a/interface/resources/qml/AddressBarDialog.qml b/interface/resources/qml/AddressBarDialog.qml index 23dc34b784..105868d8f4 100644 --- a/interface/resources/qml/AddressBarDialog.qml +++ b/interface/resources/qml/AddressBarDialog.qml @@ -31,11 +31,6 @@ DialogContainer { property int maximumY: parent ? parent.height - height : 0 - function myQmlFunction(msg) { - console.log("Got message:", msg) - return "some return value" - } - AddressBarDialog { id: addressBarDialog @@ -54,7 +49,7 @@ DialogContainer { Image { id: backArrow - source: "../images/left-arrow.svg" + source: addressBarDialog.backEnabled ? "../images/left-arrow.svg" : "../images/redarrow.svg" anchors { fill: parent @@ -72,18 +67,22 @@ DialogContainer { } } + //onBackEnabledChanged: { parent.source: "../images/redarrow.svg" } + + /* Connections { - target: addressBarDialog - onGoBackPossible: { - console.log("BACK") + target: backArrow + onBackState: { + parent.source: "../images/redarrow.svg" + } - } + }*/ } Image { id: forwardArrow - source: "../images/darkgreyarrow.svg" + source: addressBarDialog.forwardEnabled ? "../images/darkgreyarrow.svg" : "../images/redarrow.svg" anchors { fill: parent @@ -101,12 +100,15 @@ DialogContainer { } } + //onForwardEnabledChanged: { parent.source: "../images/redarrow.svg" } + + /* Connections { - target: addressBarDialog - onGoForwardPossible: { - console.log("FORWARD") + target: forwardArrow + onForwardState: { + parent.source: "../images/redarrow.svg" } - } + }*/ } TextInput { diff --git a/interface/src/ui/AddressBarDialog.cpp b/interface/src/ui/AddressBarDialog.cpp index 49b5126b99..70a2fa165f 100644 --- a/interface/src/ui/AddressBarDialog.cpp +++ b/interface/src/ui/AddressBarDialog.cpp @@ -16,6 +16,8 @@ #include "AddressManager.h" HIFI_QML_DEF(AddressBarDialog) +Q_PROPERTY(bool backEnabled READ backEnabled CHANGED backEnabledChanged) +Q_PROPERTY(bool forwardEnabled READ forwardEnabled CHANGED forwardEnabledChanged) AddressBarDialog::AddressBarDialog(QQuickItem* parent) : OffscreenQmlDialog(parent) { auto addressManager = DependencyManager::get(); @@ -24,6 +26,8 @@ AddressBarDialog::AddressBarDialog(QQuickItem* parent) : OffscreenQmlDialog(pare connect(addressManager.data(), &AddressManager::lookupResultsFinished, this, &AddressBarDialog::hide); connect(addressManager.data(), &AddressManager::goBackPossible, this, &AddressBarDialog::changeBackAlpha); connect(addressManager.data(), &AddressManager::goForwardPossible, this, &AddressBarDialog::changeForwardAlpha); + _backEnabled = false; + _forwardEnabled = false; } void AddressBarDialog::hide() { @@ -33,25 +37,19 @@ void AddressBarDialog::hide() { void AddressBarDialog::changeBackAlpha(bool isPossible) { if (isPossible) qDebug() << "Back is possible"; else qDebug() << "Back is not possible"; + if (isPossible != _backEnabled) { + _backEnabled = isPossible; + emit backEnabledChanged(); + } } void AddressBarDialog::changeForwardAlpha(bool isPossible) { if (isPossible) qDebug() << "Forward is possible"; else qDebug() << "Forward is not possible"; - - QQmlEngine engine; - QQmlComponent component(&engine, "AddressBarDialog.qml"); - QObject *object = component.create(); - qDebug() << "Current parent's child : " << ((QQuickItem*)parent())->children()[0]->objectName(); - - QVariant returnedValue; - QVariant msg = "Hello from C++"; - QMetaObject::invokeMethod(object, "myQmlFunction", - Q_RETURN_ARG(QVariant, returnedValue), - Q_ARG(QVariant, msg)); - - qDebug() << "QML function returned:" << returnedValue.toString(); - delete object;; + if (isPossible != _forwardEnabled) { + _forwardEnabled = isPossible; + emit forwardEnabledChanged(); + } } void AddressBarDialog::loadAddress(const QString& address) { diff --git a/interface/src/ui/AddressBarDialog.h b/interface/src/ui/AddressBarDialog.h index d3548d4bd7..e822deb243 100644 --- a/interface/src/ui/AddressBarDialog.h +++ b/interface/src/ui/AddressBarDialog.h @@ -21,6 +21,12 @@ class AddressBarDialog : public OffscreenQmlDialog public: AddressBarDialog(QQuickItem* parent = nullptr); + bool backEnabled() { return _backEnabled; } + bool forwardEnabled() { return _forwardEnabled; } + +signals: + void backEnabledChanged(); + void forwardEnabledChanged(); protected: void displayAddressOfflineMessage(); @@ -32,6 +38,9 @@ protected: Q_INVOKABLE void loadAddress(const QString& address); Q_INVOKABLE void loadBack(); Q_INVOKABLE void loadForward(); + + bool _backEnabled; + bool _forwardEnabled; }; #endif