/dev/Code/Sandbox/Plugins/MaglevControlPanel/DetailWidget/ActionWidget.cpp
https://github.com/aws/lumberyard · C++ · 171 lines · 112 code · 38 blank · 21 comment · 0 complexity · 96c10a7bb71693f590c0e2cce78ecfb4 MD5 · raw file
- /*
- * All or portions of this file Copyright (c) Amazon.com, Inc. or its affiliates or
- * its licensors.
- *
- * For complete copyright and license terms please see the LICENSE at the root of this
- * distribution (the "License"). All use of this software is governed by the License,
- * or, if provided, by the license below or the license accompanying this file. Do not
- * remove or modify any license notices. This file is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- *
- */
- #include "ActionWidget.h"
- #include <QVariant>
- #include <QVBoxLayout>
- #include <QLabel>
- #include <QPushButton>
- #include <QDesktopServices>
- #include <QUrl>
- #include <QCursor>
- #include "ButtonBarWidget.h"
- #include "HeadingWidget.h"
- #include <DetailWidget/ActionWidget.moc>
- ActionWidget::ActionWidget(QWidget* parent)
- : QFrame(parent)
- {
- CreateUI();
- // default content
- SetLearnMoreMessageText(tr(
- "Cloud Canvas enables you to use AWS resources in your Lumberyard project. For "
- "more information on getting started with Cloud Canvas, check out our Getting "
- "Started Guide, documentation, or tutorials."
- ));
- AddCloudCanvasDocumentationLink();
- AddCloudCanvasTutorialsLink();
- }
- void ActionWidget::CreateUI()
- {
- setObjectName("Action");
- // root
- auto rootLayout = new QVBoxLayout {};
- rootLayout->setSpacing(0);
- rootLayout->setMargin(0);
- setLayout(rootLayout);
- // heading
- m_headingWidget = new HeadingWidget {this};
- m_headingWidget->HideRefresh();
- rootLayout->addWidget(m_headingWidget);
- // button bar
- m_buttonBarWidget = new ButtonBarWidget {};
- rootLayout->addWidget(m_buttonBarWidget);
- // button bar - action button
- m_actionButton = new QPushButton("(SetActioButtonText)");
- m_actionButton->setObjectName("ActionButton");
- m_actionButton->setProperty("class", "Primary");
- connect(m_actionButton, &QPushButton::clicked, this, &ActionWidget::ActionClicked);
- m_buttonBarWidget->AddButton(m_actionButton);
- // learn more
- auto learnMoreWidget = new QWidget {};
- learnMoreWidget->setObjectName("LearnMore");
- rootLayout->addWidget(learnMoreWidget);
- m_learnMoreLayout = new QVBoxLayout {};
- m_learnMoreLayout->setMargin(0);
- m_learnMoreLayout->setSpacing(0);
- learnMoreWidget->setLayout(m_learnMoreLayout);
- // learn more title
- auto learnMore = new QLabel("Learn more");
- learnMore->setObjectName("Title");
- learnMore->setWordWrap(true);
- m_learnMoreLayout->addWidget(learnMore);
- // learn more text
- m_learnMoreMessageLabel = new QLabel {
- "(SetLearnMoreMessageText)"
- };
- m_learnMoreMessageLabel->setObjectName("Message");
- m_learnMoreMessageLabel->setWordWrap(true);
- m_learnMoreLayout->addWidget(m_learnMoreMessageLabel);
- // stretch
- m_learnMoreLayout->addStretch();
- }
- void ActionWidget::SetTitleText(const QString& text)
- {
- m_headingWidget->SetTitleText(text);
- }
- void ActionWidget::SetMessageText(const QString& text)
- {
- m_headingWidget->SetMessageText(text);
- }
- void ActionWidget::SetActionText(const QString& text)
- {
- m_actionButton->setText(text);
- }
- void ActionWidget::SetActionToolTip(const QString& text)
- {
- m_actionButton->setToolTip(text);
- }
- void ActionWidget::AddButton(QPushButton* button)
- {
- // insert before stretch
- m_buttonBarWidget->AddButton(button);
- }
- void ActionWidget::SetLearnMoreMessageText(const QString& text)
- {
- m_learnMoreMessageLabel->setText(text);
- }
- void ActionWidget::AddLearnMoreLink(const QString& text, const QString& url)
- {
- auto link = new QPushButton(text);
- link->setObjectName("LinkButton");
- link->setCursor(QCursor {Qt::PointingHandCursor});
- link->setSizePolicy(QSizePolicy::Policy::Fixed, QSizePolicy::Policy::Fixed);
- connect(link, &QPushButton::clicked, this, [this, url]() { OnLinkActivated(url); });
- m_learnMoreLayout->insertWidget(m_learnMoreLayout->count() - 1, link);
- }
- void ActionWidget::AddCloudCanvasDocumentationLink()
- {
- AddLearnMoreLink("Cloud Canvas documentation", "http://docs.aws.amazon.com/console/lumberyard/cloudcanvas/introduction");
- }
- void ActionWidget::AddCloudCanvasTutorialsLink()
- {
- AddLearnMoreLink("Cloud Canvas tutorial", "http://docs.aws.amazon.com/console/lumberyard/cloudcanvas/tutorial");
- }
- void ActionWidget::AddCloudFormationDocumentationLink()
- {
- AddLearnMoreLink("AWS CloudFormation documentation", "https://aws.amazon.com/cloudformation");
- }
- void ActionWidget::OnLinkActivated(const QString& link)
- {
- QDesktopServices::openUrl(link);
- }
- QPushButton* ActionWidget::GetActionButton()
- {
- return m_actionButton;
- }