новые иконки в OpenBoard
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 
 
OpenBoard/src/gui/UBLibItemProperties.cpp

313 lines
8.2 KiB

/*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
#include "UBLibItemProperties.h"
#include "core/UBApplication.h"
#include "board/UBBoardController.h"
#include "frameworks/UBFileSystemUtils.h"
#include "core/memcheck.h"
/**
* \brief Constructor
* @param parent as the parent widget
* @param name as the object name
*/
UBLibItemProperties::UBLibItemProperties(QWidget *parent, const char *name):QWidget(parent)
, mpLayout(NULL)
, mpButtonLayout(NULL)
, mpAddPageButton(NULL)
, mpAddToLibButton(NULL)
, mpSetAsBackgroundButton(NULL)
, mpObjInfoLabel(NULL)
, mpObjInfos(NULL)
, mpThumbnail(NULL)
, mpOrigPixmap(NULL)
, mpElement(NULL)
, mpNavigBar(NULL)
, mpNavigLayout(NULL)
, mpNavigBack(NULL)
, mpNavigBackAction(NULL)
{
setObjectName(name);
// Create the GUI
mpLayout = new QVBoxLayout(this);
setLayout(mpLayout);
mpNavigBar = new QWidget(this);
mpNavigLayout = new QHBoxLayout(mpNavigBar);
mpNavigBar->setLayout(mpNavigLayout);
mpNavigBar->setStyleSheet(QString("background-color : white; border-radius : 10px;"));
mpNavigBar->setMaximumHeight(42);
mpNavigBackAction = new QAction(QIcon(":/images/libpalette/back.png"), tr("Back"), mpNavigBar);
mpNavigBack = new QToolButton(mpNavigBar);
mpNavigBar->addAction(mpNavigBackAction);
mpNavigBack->setDefaultAction(mpNavigBackAction);
mpNavigBack->setIconSize(QSize(32,32));
mpNavigBack->setToolButtonStyle(Qt::ToolButtonIconOnly);
mpNavigBack->setStyleSheet(QString("QToolButton {color: white; font-weight: bold; font-family: Arial; background-color: transparent; border: none}"));
mpNavigBack->setFocusPolicy(Qt::NoFocus);
mpNavigLayout->addWidget(mpNavigBack, 0);
connect(mpNavigBackAction, SIGNAL(triggered()), this, SLOT(onBack()));
mpNavigLayout->addStretch(1);
mpLayout->addWidget(mpNavigBar);
maxThumbHeight = height() / 4;
mpThumbnail = new QLabel();
QPixmap icon(":images/libpalette/notFound.png");
icon.scaledToWidth(THUMBNAIL_WIDTH);
mpThumbnail->setPixmap(icon);
mpThumbnail->setStyleSheet(QString("background-color : white; padding : 10 px; border-radius : 10px;"));
mpThumbnail->setAlignment(Qt::AlignHCenter);
mpLayout->addWidget(mpThumbnail, 0);
mpButtonLayout = new QHBoxLayout();
mpLayout->addLayout(mpButtonLayout, 0);
mpAddPageButton = new UBLibItemButton();
mpAddPageButton->setText(tr("Add to page"));
mpButtonLayout->addWidget(mpAddPageButton);
mpSetAsBackgroundButton = new UBLibItemButton();
mpSetAsBackgroundButton->setText(tr("Set as background"));
mpButtonLayout->addWidget(mpSetAsBackgroundButton);
mpAddToLibButton = new UBLibItemButton();
mpAddToLibButton->setText(tr("Add to library"));
mpButtonLayout->addWidget(mpAddToLibButton);
mpButtonLayout->addStretch(1);
mpObjInfoLabel = new QLabel(tr("Object informations"));
mpObjInfoLabel->setStyleSheet(QString("color: #888888; font-size : 18px; font-weight:bold;"));
mpLayout->addWidget(mpObjInfoLabel, 0);
mpObjInfos = new QTextEdit(this);
mpObjInfos->setReadOnly(true);
mpObjInfos->setStyleSheet(QString("background-color: white; border-radius : 10px;"));
mpLayout->addWidget(mpObjInfos, 1);
connect(mpAddPageButton, SIGNAL(clicked()), this, SLOT(onAddToPage()));
connect(mpSetAsBackgroundButton, SIGNAL(clicked()), this, SLOT(onSetAsBackground()));
connect(mpAddToLibButton, SIGNAL(clicked()), this, SLOT(onAddToLib()));
}
/**
* \brief Destructor
*/
UBLibItemProperties::~UBLibItemProperties()
{
if(NULL != mpNavigBackAction)
{
delete mpNavigBackAction;
mpNavigBackAction = NULL;
}
if(NULL != mpNavigBack)
{
delete mpNavigBack;
mpNavigBack = NULL;
}
if(NULL != mpNavigLayout)
{
delete mpNavigLayout;
mpNavigLayout = NULL;
}
if(NULL != mpNavigBar)
{
delete mpNavigLayout;
mpNavigLayout = NULL;
}
if(NULL != mpOrigPixmap)
{
delete mpOrigPixmap;
mpOrigPixmap = NULL;
}
if(NULL != mpLayout)
{
delete mpLayout;
mpLayout = NULL;
}
//if(NULL != mpButtonLayout)
//{
// delete mpButtonLayout;
// mpButtonLayout = NULL;
//}
if(NULL != mpSetAsBackgroundButton)
{
delete mpSetAsBackgroundButton;
mpSetAsBackgroundButton = NULL;
}
if(NULL != mpAddPageButton)
{
delete mpAddPageButton;
mpAddPageButton = NULL;
}
if(NULL != mpAddToLibButton)
{
delete mpAddToLibButton;
mpAddToLibButton = NULL;
}
if(NULL != mpObjInfoLabel)
{
delete mpObjInfoLabel;
mpObjInfoLabel = NULL;
}
if(NULL != mpObjInfos)
{
delete mpObjInfos;
mpObjInfos = NULL;
}
if(NULL != mpThumbnail)
{
delete mpThumbnail;
mpThumbnail = NULL;
}
}
/**
* \brief Handle the resize event
* @param event as the resize event
*/
void UBLibItemProperties::resizeEvent(QResizeEvent *event)
{
Q_UNUSED(event);
adaptSize();
}
/**
* \brief Adapt the thumbnail size
*/
void UBLibItemProperties::adaptSize()
{
if(NULL != mpOrigPixmap)
{
if(width() < THUMBNAIL_WIDTH + 40)
{
mpThumbnail->setPixmap(mpOrigPixmap->scaledToWidth(width() - 40));
}
else
{
mpThumbnail->setPixmap(mpOrigPixmap->scaledToWidth(THUMBNAIL_WIDTH));
}
}
if(NULL != mpNavigBar)
{
mpNavigBar->resize(width(), mpNavigBar->height());
}
}
/**
* \brief Add the element to the page
*/
void UBLibItemProperties::onAddToPage()
{
UBApplication::boardController->libraryController()->addItemToPage(mpElement);
}
/**
* \brief Add the item to the library
*/
void UBLibItemProperties::onAddToLib()
{
}
/**
* \brief Set the item as background
*/
void UBLibItemProperties::onSetAsBackground()
{
UBApplication::boardController->libraryController()->setItemAsBackground(mpElement);
}
/**
* \brief Show the given element properties
* @param elem as the given element
*/
void UBLibItemProperties::showElement(UBLibElement *elem)
{
if(NULL != mpOrigPixmap)
{
delete mpOrigPixmap;
mpOrigPixmap = NULL;
}
if(NULL != elem)
{
mpElement = elem;
mpOrigPixmap = new QPixmap(QPixmap::fromImage(*elem->thumbnail()));
mpThumbnail->setPixmap(QPixmap::fromImage(*elem->thumbnail()).scaledToWidth(THUMBNAIL_WIDTH));
mpObjInfos->setText(elem->information());
}
if(UBFileSystemUtils::mimeTypeFromFileName(elem->path().toLocalFile()).contains("image"))
{
// Show the Set as background button
mpAddToLibButton->hide();
mpSetAsBackgroundButton->show();
}
else
{
// TODO: if we are browsing ONLINE objects, we must show mpAddToLibButton !
mpSetAsBackgroundButton->hide();
mpAddToLibButton->hide();
}
}
/**
* \brief Navigate backward
*/
void UBLibItemProperties::onBack()
{
emit showFolderContent();
}
/**
* \brief Handle the show event
* @param event as the show event
*/
void UBLibItemProperties::showEvent(QShowEvent *event)
{
Q_UNUSED(event);
adaptSize();
}
/**
* \brief Constructor
* @param parent as the parent widget
* @param name as the object name
*/
UBLibItemButton::UBLibItemButton(QWidget *parent, const char *name):QPushButton(parent)
{
setObjectName(name);
setStyleSheet(QString("background-color : #DDDDDD; color : #555555; border-radius : 6px; padding : 5px; font-weight : bold; font-size : 12px;"));
}
/**
* \brief Destructor
*/
UBLibItemButton::~UBLibItemButton()
{
}