You cannot select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
281 lines
11 KiB
C++
281 lines
11 KiB
C++
/*
|
|
* All or portions of this file Copyright (c) Amazon.com, Inc. or its affiliates, or
|
|
* a third party where indicated.
|
|
*
|
|
* 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 "mainwidget.h"
|
|
#include <AzQtComponents/StyleGallery/ui_mainwidget.h>
|
|
#include <AzQtComponents/Components/ButtonStripe.h>
|
|
#include <AzQtComponents/Components/DockBarButton.h>
|
|
|
|
#include <QButtonGroup>
|
|
#include <QMenu>
|
|
#include <QMouseEvent>
|
|
#include <QStringList>
|
|
#include <QStandardItemModel>
|
|
#include <QMainWindow>
|
|
#include <QMenuBar>
|
|
#include <QDebug>
|
|
|
|
using namespace AzQtComponents;
|
|
|
|
MainWidget::MainWidget(QWidget *parent) :
|
|
QWidget(parent),
|
|
ui(new Ui::MainWidget)
|
|
{
|
|
ui->setupUi(this);
|
|
|
|
QStringList stripeButtonsNames = QStringList();
|
|
stripeButtonsNames << "Controls" << "ItemViews" << "Styles" << "Layouts";
|
|
ui->buttonStripe->addButtons(stripeButtonsNames, ui->stackedWidget->currentIndex());
|
|
connect(ui->buttonStripe, &AzQtComponents::ButtonStripe::buttonClicked,
|
|
ui->stackedWidget, &QStackedWidget::setCurrentIndex);
|
|
|
|
initializeControls();
|
|
initializeItemViews();
|
|
|
|
connect(ui->button1, &QPushButton::clicked, this, []{
|
|
auto mainwindow = new QMainWindow();
|
|
auto menu = new QMenu("File");
|
|
auto mb = new QMenuBar();
|
|
menu->addAction("Action1");
|
|
menu->addAction("Action2");
|
|
menu->addAction("Action3");
|
|
mb->addMenu(menu);
|
|
mb->addAction("Edit");
|
|
mb->addMenu("Create");
|
|
mb->addMenu("Select");
|
|
mb->addMenu("Modify");
|
|
mb->addMenu("Display");
|
|
mainwindow->setMenuBar(mb);
|
|
mainwindow->resize(400, 400);
|
|
mainwindow->show();
|
|
mainwindow->raise();
|
|
});
|
|
}
|
|
|
|
MainWidget::~MainWidget()
|
|
{
|
|
delete ui;
|
|
qDebug() << "Deleted main widget";
|
|
}
|
|
|
|
void MainWidget::mouseReleaseEvent(QMouseEvent *event)
|
|
{
|
|
if (event->button() == Qt::MiddleButton) {
|
|
emit reloadCSS();
|
|
}
|
|
}
|
|
|
|
void MainWidget::initializeControls()
|
|
{
|
|
auto menu = new QMenu();
|
|
menu->addAction("Test 1");
|
|
menu->addAction("Test 2");
|
|
ui->button3->setMenu(menu);
|
|
|
|
auto menu2 = new QMenu();
|
|
menu2->addAction("Test 1");
|
|
menu2->addAction("Test 2");
|
|
ui->disabledButton3->setMenu(menu2);
|
|
|
|
ui->selectedCheckBox->setCheckState(Qt::Checked);
|
|
ui->enabledCheckBox->setCheckState(Qt::Unchecked);
|
|
ui->tristateCheckBox->setCheckState(Qt::PartiallyChecked);
|
|
|
|
// TODO: Move these into subclass, can't be done from .css
|
|
// Nicolas: or do it in the proxy style
|
|
// Sergio: css doesn't work well with proxy style , says Qt's docs.
|
|
ui->progressBar->setFormat(QString());
|
|
ui->progressBar->setMaximumHeight(8);
|
|
ui->progressBarFull->setFormat(QString());
|
|
ui->progressBarFull->setMaximumHeight(8);
|
|
|
|
ui->button2->setProperty("class", "Primary");
|
|
ui->disabledButton1->setProperty("class", "Primary");
|
|
|
|
ui->invalidLineEdit->setFlavor(AzQtComponents::StyledLineEdit::Invalid);
|
|
ui->validLineEdit->setFlavor(AzQtComponents::StyledLineEdit::Valid);
|
|
ui->questionLineEdit->setFlavor(AzQtComponents::StyledLineEdit::Question);
|
|
ui->infoLineEdit->setFlavor(AzQtComponents::StyledLineEdit::Information);
|
|
|
|
// In order to try out validator impact on flavor
|
|
ui->invalidLineEdit->setPlaceholderText("Enter 4 digits");
|
|
ui->invalidLineEdit->setValidator(new QRegExpValidator(QRegExp("[1-9]\\d{3,3}")));
|
|
|
|
ui->disabledVectorEdit->setColors(qRgb(84, 190, 93), qRgb(226, 82, 67), qRgb(66, 133, 244));
|
|
ui->vectorEdit->setColors(qRgb(84, 190, 93), qRgb(226, 82, 67), qRgb(66, 133, 244));
|
|
ui->unknownVectorEdit->setColors(qRgb(84, 190, 93), qRgb(226, 82, 67), qRgb(66, 133, 244));
|
|
ui->warningVectorEdit->setColors(qRgb(84, 190, 93), qRgb(226, 82, 67), qRgb(66, 133, 244));
|
|
ui->warningVectorEdit->setFlavor(AzQtComponents::VectorEditElement::Invalid);
|
|
|
|
QStringList rpy = {tr("R"), tr("P"), tr("Y")};
|
|
ui->disabledRPYVectorEdit->setLabels(rpy);
|
|
ui->rPYVectorEdit->setLabels(rpy);
|
|
ui->unknownRPYVectorEdit->setLabels(rpy);
|
|
ui->warningRPYVectorEdit->setLabels(rpy);
|
|
|
|
ui->filterNameLineEdit->setClearButtonEnabled(true);
|
|
|
|
ui->comboBox_4->setEnabled(false);
|
|
for (int i = 0; i < 10; ++i) {
|
|
ui->comboBox->addItem(QStringLiteral("combo 0: Item %1").arg(i));
|
|
ui->comboBox_2->addItem(QStringLiteral("combo 2: Item %1").arg(i));
|
|
ui->comboBox_3->addItem(QStringLiteral("combo 3: Item %1").arg(i));
|
|
ui->comboBox_4->addItem(QStringLiteral("combo 4: Item %1").arg(i));
|
|
ui->comboBox_5->addItem(QStringLiteral("combo 5: Item %1").arg(i));
|
|
ui->comboBox_6->addItem(QStringLiteral("combo 6: Item %1").arg(i));
|
|
}
|
|
|
|
ui->allCombo->setProperty("class", "condition");
|
|
ui->allCombo->setFixedWidth(37);
|
|
ui->allCombo->setFixedHeight(21);
|
|
ui->allCombo->addItem("all");
|
|
ui->allCombo->addItem("any");
|
|
|
|
|
|
// Construct the available tag list.
|
|
const int numAvailableTags = 128;
|
|
QVector<QString> availableTags;
|
|
availableTags.reserve(numAvailableTags+8);
|
|
|
|
availableTags.push_back("Healthy");
|
|
availableTags.push_back("Tired");
|
|
availableTags.push_back("Laughing");
|
|
availableTags.push_back("Happy");
|
|
availableTags.push_back("Smiling");
|
|
availableTags.push_back("Weapon Left");
|
|
availableTags.push_back("Weapon Right");
|
|
availableTags.push_back("Loooooooooooooooooong Tag");
|
|
|
|
for (const QString& tag : availableTags)
|
|
{
|
|
ui->searchWidget->AddTypeFilter("Foo", tag);
|
|
}
|
|
|
|
for (int i = 0; i < numAvailableTags; ++i)
|
|
{
|
|
QString tagName = "tag" + QString::number(i + 1);
|
|
availableTags.push_back(tagName);
|
|
if (i < 10)
|
|
{
|
|
ui->searchWidget->AddTypeFilter("Bar", tagName);
|
|
}
|
|
}
|
|
|
|
ui->tagSelector->Reinit(availableTags);
|
|
|
|
// Pre-select some of the tags.
|
|
ui->tagSelector->SelectTag("Healthy");
|
|
ui->tagSelector->SelectTag("Laughing");
|
|
ui->tagSelector->SelectTag("Smiling");
|
|
ui->tagSelector->SelectTag("Happy");
|
|
ui->tagSelector->SelectTag("Weapon Left");
|
|
|
|
|
|
ui->toolButton->setProperty("class", "QToolBar");
|
|
ui->toolButton_2->setProperty("class", "QToolBar");
|
|
ui->toolButton_3->setProperty("class", "QToolBar");
|
|
ui->toolButton_4->setProperty("class", "QToolBar");
|
|
ui->toolButton_5->setProperty("class", "QToolBar");
|
|
ui->toolButton_6->setProperty("class", "QToolBar");
|
|
ui->toolButton_7->setProperty("class", "QToolBar");
|
|
ui->toolButton_8->setProperty("class", "QToolBar");
|
|
ui->toolButton_9->setProperty("class", "QToolBar");
|
|
ui->toolButton_10->setProperty("class", "QToolBar");
|
|
ui->toolButton_11->setProperty("class", "QToolBar");
|
|
ui->toolButton_12->setProperty("class", "QToolBar");
|
|
|
|
ui->conditionGroup->appendCondition();
|
|
|
|
// place the viewportTitle menu into the place holder we prepared in the ui file
|
|
/*ViewportTitleDlg* viewPortTitleDlg = new ViewportTitleDlg(ui->ViewportTitle);
|
|
auto viewPortTitleLayout = new QHBoxLayout();
|
|
viewPortTitleLayout->addWidget(viewPortTitleDlg);
|
|
ui->ViewportTitle->setLayout(viewPortTitleLayout);*/
|
|
|
|
QStringList fontSizeMockup = {"8pt", "9pt", "10pt", "11pt", "12pt", "14pt", "16pt", "18pt", "24pt", "30pt",};
|
|
QStringList viewZoomMockup = {"20", "32", "40", "80", "160", "240"};
|
|
const auto tbcbList = ui->toolButtonsComboBoxWidget->findChildren<AzQtComponents::ToolButtonComboBox*>();
|
|
foreach (auto tbcb, tbcbList) {
|
|
if (tbcb->objectName().contains("1")) {
|
|
tbcb->setIcon(QIcon(QStringLiteral(":/stylesheet/img/16x16/Font_text.png")));
|
|
tbcb->comboBox()->addItems(fontSizeMockup);
|
|
} else if (tbcb->objectName().contains("2")) {
|
|
tbcb->setIcon(QIcon(QStringLiteral(":/stylesheet/img/16x16/Picture_view.png")));
|
|
tbcb->comboBox()->addItems(viewZoomMockup);
|
|
} else if (tbcb->objectName().contains("3")) {
|
|
tbcb->setIcon(QIcon(QStringLiteral(":/stylesheet/img/16x16/List_view.png")));
|
|
tbcb->comboBox()->addItems(fontSizeMockup);
|
|
}
|
|
}
|
|
|
|
ui->WidgetHeader1->setForceInactive(true);
|
|
ui->WidgetHeader1->setButtons({ AzQtComponents::DockBarButton::DividerButton, AzQtComponents::DockBarButton::MaximizeButton,
|
|
AzQtComponents::DockBarButton::DividerButton, AzQtComponents::DockBarButton::CloseButton });
|
|
ui->WidgetHeader1->setWindowTitleOverride("Widget Header");
|
|
ui->WidgetHeader2->setButtons({AzQtComponents::DockBarButton::DividerButton, AzQtComponents::DockBarButton::MaximizeButton,
|
|
AzQtComponents::DockBarButton::DividerButton, AzQtComponents::DockBarButton::CloseButton});
|
|
ui->WidgetHeader2->setWindowTitleOverride("Widget Header");
|
|
|
|
ui->NonDockableWidget1->setForceInactive(true);
|
|
ui->NonDockableWidget1->setWindowTitleOverride("Non-Dockable Widget");
|
|
ui->NonDockableWidget1->setButtons({ AzQtComponents::DockBarButton::CloseButton });
|
|
ui->NonDockableWidget1->setTearEnabled(false);
|
|
ui->NonDockableWidget1->setDragEnabled(false);
|
|
ui->NonDockableWidget2->setWindowTitleOverride("Non-Dockable Widget");
|
|
ui->NonDockableWidget2->setButtons({ AzQtComponents::DockBarButton::CloseButton });
|
|
ui->NonDockableWidget2->setTearEnabled(false);
|
|
ui->NonDockableWidget2->setDragEnabled(false);
|
|
|
|
const auto rpbList = ui->RoundedButtonWidget->findChildren<QPushButton*>();
|
|
foreach (auto rpb, rpbList) {
|
|
if (rpb->objectName().contains("Small"))
|
|
rpb->setProperty("class", "smallRounded");
|
|
else
|
|
rpb->setProperty("class", "rounded");
|
|
}
|
|
|
|
ui->buttonOrange1->setProperty("class", "Primary");
|
|
ui->buttonOrange2->setProperty("class", "Primary");
|
|
|
|
ui->tabWidget->tabBar()->setTabsClosable(true);
|
|
connect(ui->tabWidget->tabBar(), &QTabBar::tabCloseRequested, this, [this](int index) {
|
|
ui->tabWidget->removeTab(index);
|
|
});
|
|
}
|
|
|
|
void MainWidget::initializeItemViews()
|
|
{
|
|
auto model = new QStandardItemModel(this);
|
|
model->setHorizontalHeaderLabels({QString(), tr("Priority"), tr("State"), tr("ID"), tr("Completed"), tr("Platform")});
|
|
|
|
for (int i = 0; i < 20; ++i) {
|
|
auto col0Item = new QStandardItem();
|
|
col0Item->setCheckState(Qt::Checked);
|
|
col0Item->setData(QVariant(QSize(10, 20)), Qt::SizeHintRole);
|
|
col0Item->setFlags(Qt::ItemIsEnabled | Qt::ItemIsUserCheckable);
|
|
auto col1Item = new QStandardItem((i < 10) ? tr("Top"): "");
|
|
model->appendRow({
|
|
col0Item,
|
|
col1Item,
|
|
new QStandardItem(i == 0 ? tr("Running") : (i < 10 ? tr("Failed") : tr("Waiting"))),
|
|
new QStandardItem("Environnment/Sky/Cloud/Cloudy-cloud"),
|
|
new QStandardItem(QString::number(i)),
|
|
new QStandardItem(i % 2 ? tr("Android") : tr("iPhone"))
|
|
});
|
|
}
|
|
|
|
ui->treeView->setModel(model);
|
|
ui->treeView->setSortingEnabled(true);
|
|
ui->treeView->setColumnWidth(0, 50);
|
|
}
|
|
|
|
#include "StyleGallery/moc_mainwidget.cpp"
|