/* * Copyright (C) 2015 Open Source Robotics Foundation * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. * */ #include "gazebo/rendering/UserCamera.hh" #include "gazebo/rendering/Scene.hh" #include "gazebo/gui/GuiIface.hh" #include "gazebo/gui/SplashScreen.hh" #include "gazebo/gui/SplashScreenPrivate.hh" using namespace gazebo; using namespace gui; ///////////////////////////////////////////////// SplashScreen::SplashScreen() : dataPtr(new SplashScreenPrivate) { this->setObjectName("SplashScreen"); QPixmap pixmap(":/images/splash.svg"); std::string versionText; versionText = "Version " + std::string(GAZEBO_VERSION); QTextEdit *versionEdit = new QTextEdit(tr(versionText.c_str())); versionEdit->setAcceptRichText(true); versionEdit->setContentsMargins(0, 0, 0, 0); versionEdit->setFrameStyle(QFrame::NoFrame); versionEdit->setAlignment(Qt::AlignBottom | Qt::AlignRight); versionEdit->setObjectName("splashVersionTextEdit"); versionEdit->setFixedHeight(20); QHBoxLayout *versionLayout = new QHBoxLayout(); versionLayout->addWidget(versionEdit); QVBoxLayout *textLayout = new QVBoxLayout(); textLayout->addSpacerItem(new QSpacerItem(1, pixmap.size().height(), QSizePolicy::Expanding, QSizePolicy::MinimumExpanding)); textLayout->addLayout(versionLayout); this->dataPtr->splashScreen = new QSplashScreen(pixmap); this->dataPtr->splashScreen->setObjectName("splashScreenWidget"); this->dataPtr->splashScreen->setMask(pixmap.mask()); this->dataPtr->splashScreen->setWindowFlags( this->dataPtr->splashScreen->windowFlags() | Qt::WindowStaysOnTopHint); this->dataPtr->splashScreen->setLayout(textLayout); this->dataPtr->splashScreen->setFixedSize(pixmap.size()); this->dataPtr->splashScreen->show(); this->dataPtr->splashScreen->repaint(); QTimer::singleShot(2000, this, SLOT(Update())); } ///////////////////////////////////////////////// SplashScreen::~SplashScreen() { delete this->dataPtr->splashScreen; this->dataPtr->splashScreen = NULL; delete this->dataPtr; this->dataPtr = NULL; } ///////////////////////////////////////////////// void SplashScreen::Update() { rendering::UserCameraPtr cam = get_active_camera(); if (cam && cam->GetScene() && cam->GetScene()->Initialized()) { this->dataPtr->splashScreen->hide(); return; } QTimer::singleShot(100, this, SLOT(Update())); } ///////////////////////////////////////////////// bool SplashScreen::Visible() const { return this->dataPtr->splashScreen->isVisible(); }