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.
321 lines
8.7 KiB
321 lines
8.7 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 "UBLibWidget.h"
|
|
#include "UBLibItemProperties.h"
|
|
|
|
#include "core/UBApplication.h"
|
|
#include "core/UBDownloadManager.h"
|
|
|
|
#include "frameworks/UBFileSystemUtils.h"
|
|
|
|
#include "globals/UBGlobals.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)
|
|
, mpItem(NULL)
|
|
{
|
|
setObjectName(name);
|
|
|
|
SET_STYLE_SHEET();
|
|
|
|
// Create the GUI
|
|
mpLayout = new QVBoxLayout(this);
|
|
setLayout(mpLayout);
|
|
|
|
maxThumbHeight = height() / 4;
|
|
|
|
mpThumbnail = new QLabel();
|
|
QPixmap icon(":images/libpalette/notFound.png");
|
|
icon.scaledToWidth(THUMBNAIL_WIDTH);
|
|
|
|
mpThumbnail->setPixmap(icon);
|
|
mpThumbnail->setObjectName("DockPaletteWidgetBox");
|
|
mpThumbnail->setStyleSheet("background:white;");
|
|
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 QTreeWidget(this);
|
|
mpObjInfos->setColumnCount(2);
|
|
mpObjInfos->header()->hide();
|
|
mpObjInfos->setAlternatingRowColors(true);
|
|
mpObjInfos->setRootIsDecorated(false);
|
|
mpObjInfos->setObjectName("DockPaletteWidgetBox");
|
|
mpObjInfos->setStyleSheet("background:white;");
|
|
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 != mpOrigPixmap)
|
|
{
|
|
delete mpOrigPixmap;
|
|
mpOrigPixmap = NULL;
|
|
}
|
|
if(NULL != mpLayout)
|
|
{
|
|
delete mpLayout;
|
|
mpLayout = 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));
|
|
}
|
|
}
|
|
}
|
|
|
|
/**
|
|
* \brief Add the element to the page
|
|
*/
|
|
void UBLibItemProperties::onAddToPage()
|
|
{
|
|
if(UBApplication::isFromWeb(mpElement->path().toString())){
|
|
sDownloadFileDesc desc;
|
|
desc.isBackground = false;
|
|
desc.modal = true;
|
|
desc.name = QFileInfo(mpElement->path().toString()).fileName();
|
|
desc.url = mpElement->path().toString();
|
|
UBDownloadManager::downloadManager()->addFileToDownload(desc);
|
|
|
|
}else{
|
|
UBLibWidget* libWidget = dynamic_cast<UBLibWidget*>(parentWidget()->parentWidget());
|
|
libWidget->libNavigator()->libraryWidget()->libraryController()->addItemToPage(mpElement);
|
|
}
|
|
}
|
|
|
|
/**
|
|
* \brief Add the item to the library
|
|
*/
|
|
void UBLibItemProperties::onAddToLib()
|
|
{
|
|
if(UBApplication::isFromWeb(mpElement->path().toString())){
|
|
sDownloadFileDesc desc;
|
|
desc.isBackground = false;
|
|
desc.modal = false;
|
|
desc.name = QFileInfo(mpElement->path().toString()).fileName();
|
|
desc.url = mpElement->path().toString();
|
|
UBDownloadManager::downloadManager()->addFileToDownload(desc);
|
|
}
|
|
}
|
|
|
|
/**
|
|
* \brief Set the item as background
|
|
*/
|
|
void UBLibItemProperties::onSetAsBackground()
|
|
{
|
|
if(UBApplication::isFromWeb(mpElement->path().toString())){
|
|
sDownloadFileDesc desc;
|
|
desc.isBackground = true;
|
|
desc.modal = true;
|
|
desc.name = QFileInfo(mpElement->path().toString()).fileName();
|
|
desc.url = mpElement->path().toString();
|
|
UBDownloadManager::downloadManager()->addFileToDownload(desc);
|
|
|
|
}else{
|
|
UBLibWidget* libWidget = dynamic_cast<UBLibWidget*>(parentWidget()->parentWidget());
|
|
libWidget->libNavigator()->libraryWidget()->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));
|
|
populateMetadata();
|
|
}
|
|
|
|
if(UBApplication::isFromWeb(elem->path().toString())){
|
|
mpAddToLibButton->show();
|
|
if(elem->metadatas()["Type"].toLower().contains("image")){
|
|
mpSetAsBackgroundButton->show();
|
|
}else{
|
|
mpSetAsBackgroundButton->hide();
|
|
}
|
|
}else{
|
|
mpAddToLibButton->hide();
|
|
if(UBFileSystemUtils::mimeTypeFromFileName(elem->path().toLocalFile()).contains("image")){
|
|
mpSetAsBackgroundButton->show();
|
|
}else{
|
|
mpSetAsBackgroundButton->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();
|
|
}
|
|
|
|
void UBLibItemProperties::populateMetadata()
|
|
{
|
|
if(NULL != mpObjInfos){
|
|
mpObjInfos->clear();
|
|
QMap<QString, QString> metas = mpElement->metadatas();
|
|
QList<QString> lKeys = metas.keys();
|
|
QList<QString> lValues = metas.values();
|
|
|
|
for(int i=0; i< metas.size(); i++){
|
|
QStringList values;
|
|
values << lKeys.at(i);
|
|
values << lValues.at(i);
|
|
mpItem = new QTreeWidgetItem(values);
|
|
mpObjInfos->addTopLevelItem(mpItem);
|
|
}
|
|
mpObjInfos->resizeColumnToContents(0);
|
|
}
|
|
}
|
|
|
|
/**
|
|
* \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()
|
|
{
|
|
|
|
}
|
|
|