| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172 |
- /*
- * Copyright (c) Contributors to the Open 3D Engine Project.
- * For complete copyright and license terms please see the LICENSE at the root of this distribution.
- *
- * SPDX-License-Identifier: Apache-2.0 OR MIT
- *
- */
- #include "QtViewPaneEffects.h"
- #include <AzCore/std/smart_ptr/unique_ptr.h>
- #include <QGraphicsEffect>
- #include <QWidget>
- #include <QVariant>
- namespace AzQtComponents
- {
- static const char* s_viewPaneManagerDisableEffectPropertyName = "QtViewPaneManagerDisableEffect";
- static const float s_disabledPaneOpacity = 0.4f;
- // put the widget into a grayed out state to indicate it cannot be interacted with
- static void DisableViewPaneDisabledGraphicsEffect(QWidget* widget)
- {
- // only remove effects from widgets that we added them to
- QGraphicsEffect* effect = widget->graphicsEffect();
- if (effect != nullptr && !effect->property(s_viewPaneManagerDisableEffectPropertyName).isNull())
- {
- widget->setGraphicsEffect(nullptr);
- }
- }
- // force the widget to be repainted
- static void ForceWidgetRedraw(QWidget* widget)
- {
- widget->hide();
- widget->resize(widget->size());
- widget->show();
- }
- // restore the widget to its normal state to show it can now be interacted with
- static void EnableViewPaneDisabledGraphicsEffect(QWidget* widget)
- {
- // only apply effects to widgets that didn't have them already...
- if (widget->graphicsEffect() == nullptr)
- {
- auto effect = AZStd::make_unique<QGraphicsOpacityEffect>();
- effect->setOpacity(s_disabledPaneOpacity);
- // flag this as our effect so we can get rid of it later
- effect->setProperty(s_viewPaneManagerDisableEffectPropertyName, true);
- widget->setGraphicsEffect(effect.release());
- // ensure the widget is redrawn with the updated graphical effect
- ForceWidgetRedraw(widget);
- }
- }
- void SetWidgetInteractEnabled(QWidget* widget, const bool on)
- {
- widget->setEnabled(on);
- if (on)
- {
- DisableViewPaneDisabledGraphicsEffect(widget);
- }
- else
- {
- EnableViewPaneDisabledGraphicsEffect(widget);
- }
- }
- } // namespace AzQtComponents
|