// Copyright (c) 2012-2017 VideoStitch SAS // Copyright (c) 2018 stitchEm #include "welcomescreenwidget.hpp" #include "ui_welcomescreenwidget.h" #include "softwarehelpwidget.hpp" #include "projectselectionwidget.hpp" #include "libvideostitch-gui/mainwindow/versionHelper.hpp" static const int IMAGE_H_SCALE(2); static const float IMAGE_V_SCALE(6); static const int MIN_ADAPTED_WIDTH(950); static const float DEFAULT_ASPECT_RATIO(2.0f); WelcomeScreenWidget::WelcomeScreenWidget(QWidget *parent) : QFrame(parent), ui(new Ui::WelcomeScreenWidget), helpWidget(new SoftwareHelpWidget(this)), projectWidget(new ProjectSelectionWidget(this)) { ui->setupUi(this); const QString appInfo = VideoStitch::Helper::AppsInfo(QCoreApplication::applicationVersion()).toString(); ui->labelProductName->setText(appInfo); addWidgets(); } WelcomeScreenWidget::~WelcomeScreenWidget() { delete ui; } void WelcomeScreenWidget::addWidgets() { connect(projectWidget, &ProjectSelectionWidget::notifyNewProject, this, &WelcomeScreenWidget::notifyNewProject); connect(projectWidget, &ProjectSelectionWidget::notifyProjectSelected, this, &WelcomeScreenWidget::notifyProjectSelected); connect(projectWidget, &ProjectSelectionWidget::notifyFilesDropped, this, &WelcomeScreenWidget::notifyFilesDropped); connect(projectWidget, &ProjectSelectionWidget::notifyProjectOpened, this, &WelcomeScreenWidget::notifyProjectOpened); } float WelcomeScreenWidget::getLogoRatio() const { const QPixmap *logo = ui->labelLogo->pixmap(); if (logo) { return float(logo->width()) / float(logo->height()); } else { return DEFAULT_ASPECT_RATIO; } } void WelcomeScreenWidget::updateContent() { projectWidget->onContentUpdated(); } void WelcomeScreenWidget::resizeEvent(QResizeEvent *) { // Resize logo according to the screen resolution setLogoSize(); if (ui->scrollArea->width() < MIN_ADAPTED_WIDTH) { setSmallSizeOrder(); } else { setBigSizeOrder(); } } void WelcomeScreenWidget::setSmallSizeOrder() { ui->bottomLayout->removeWidget(projectWidget); ui->leftcolumnlayout->insertWidget(0, projectWidget); ui->leftcolumnlayout->insertWidget(1, helpWidget); } void WelcomeScreenWidget::setBigSizeOrder() { ui->leftcolumnlayout->insertWidget(0, helpWidget); ui->leftcolumnlayout->removeWidget(projectWidget); ui->bottomLayout->addWidget(projectWidget, 0, 2, 1, 1); } void WelcomeScreenWidget::setLogoSize() { int newHeight; int newWidth; if (ui->scrollArea->width() < MIN_ADAPTED_WIDTH) { newWidth = width() / IMAGE_H_SCALE; newHeight = newWidth / getLogoRatio(); } else { newHeight = height() / IMAGE_V_SCALE; newWidth = newHeight * getLogoRatio(); } ui->labelLogo->setFixedSize(newWidth, newHeight); }