mirror of
https://github.com/YACReader/yacreader
synced 2025-07-18 13:04:28 -04:00
Fix problems with missing safety checks in Render::fillBuffer and pdfcomic
This commit is contained in:
172
custom_widgets/yacreader_library_item_widget.cpp
Normal file
172
custom_widgets/yacreader_library_item_widget.cpp
Normal file
@ -0,0 +1,172 @@
|
||||
#include "yacreader_library_item_widget.h"
|
||||
|
||||
#include <QHBoxLayout>
|
||||
#include <QLabel>
|
||||
#include <QToolButton>
|
||||
#include <QMouseEvent>
|
||||
|
||||
YACReaderLibraryItemWidget::YACReaderLibraryItemWidget(QString n/*ame*/, QString p/*ath*/, QWidget *parent) :
|
||||
QWidget(parent),name(n),path(p),isSelected(false)
|
||||
{
|
||||
QHBoxLayout * mainLayout = new QHBoxLayout;
|
||||
mainLayout->setMargin(0);
|
||||
mainLayout->setSpacing(0);
|
||||
|
||||
//installEventFilter(this);
|
||||
|
||||
QPixmap iconPixmap(":/images/sidebar/libraryIcon.png");
|
||||
icon = new QLabel(this);
|
||||
icon->setPixmap(iconPixmap);
|
||||
|
||||
nameLabel = new QLabel(name,this);
|
||||
|
||||
options = new QToolButton(this);
|
||||
#ifdef Q_OS_MAC
|
||||
//TODO fix this crazy hack for having a propper retina icon for the options
|
||||
//this hack has been perpetrated using Qt 5.5.0
|
||||
QString sourceOptionsImage;
|
||||
if(devicePixelRatio()>1)
|
||||
sourceOptionsImage = ":/images/sidebar/libraryOptions@2x.png";
|
||||
else
|
||||
sourceOptionsImage = ":/images/sidebar/libraryOptions.png";
|
||||
QPixmap iconOptionsPixmap(sourceOptionsImage);
|
||||
iconOptionsPixmap.setDevicePixelRatio(devicePixelRatio());
|
||||
QLabel * helperLabel = new QLabel(options);
|
||||
helperLabel->move(4,2);
|
||||
helperLabel->setFixedSize(14,14);
|
||||
helperLabel->setPixmap(iconOptionsPixmap);
|
||||
#else
|
||||
options->setIcon(QIcon(":/images/sidebar/libraryOptions.png"));
|
||||
#endif
|
||||
options->setHidden(true);
|
||||
options->setFixedWidth(18);
|
||||
options->setSizePolicy(QSizePolicy::Fixed,QSizePolicy::Minimum);
|
||||
options->setStyleSheet("QToolButton {border:none;}");
|
||||
connect(options,SIGNAL(clicked()),this,SIGNAL(showOptions()));
|
||||
/*up = new QToolButton(this);
|
||||
up->setIcon(QIcon(":/images/libraryUp.png"));
|
||||
up->setHidden(true);
|
||||
up->setFixedWidth(18);
|
||||
up->setSizePolicy(QSizePolicy::Fixed,QSizePolicy::Minimum);
|
||||
|
||||
down = new QToolButton(this);
|
||||
down->setIcon(QIcon(":/images/libraryDown.png"));
|
||||
down->setHidden(true);
|
||||
down->setFixedWidth(18);
|
||||
down->setSizePolicy(QSizePolicy::Fixed,QSizePolicy::Minimum);*/
|
||||
|
||||
|
||||
mainLayout->addWidget(icon);
|
||||
mainLayout->addWidget(nameLabel,Qt::AlignLeft);
|
||||
mainLayout->addStretch();
|
||||
mainLayout->addWidget(options);
|
||||
/*mainLayout->addWidget(up);
|
||||
mainLayout->addWidget(down);*/
|
||||
|
||||
setLayout(mainLayout);
|
||||
#ifndef Q_OS_MAC
|
||||
QString styleSheet = "background-color:transparent; color:#DDDFDF;";
|
||||
setStyleSheet(styleSheet);
|
||||
#endif
|
||||
|
||||
|
||||
QString iconStyleSheet = "QLabel {padding:0 0 0 24px; margin:0px}";
|
||||
icon->setStyleSheet(iconStyleSheet);
|
||||
|
||||
QString nameLabelStyleSheet = "QLabel {padding:0 0 0 3px; margin:0px;}";
|
||||
nameLabel->setStyleSheet(nameLabelStyleSheet);
|
||||
|
||||
setMinimumHeight(20);
|
||||
}
|
||||
|
||||
void YACReaderLibraryItemWidget::showUpDownButtons(bool show)
|
||||
{
|
||||
up->setHidden(!show);
|
||||
down->setHidden(!show);
|
||||
}
|
||||
|
||||
/*
|
||||
bool YACReaderLibraryItemWidget::eventFilter(QObject *object, QEvent *event){
|
||||
if(!isSelected && object==this && (event->type()==QEvent::Enter))
|
||||
{
|
||||
QString styleSheet = "background-color:#5E5E5E; border-top: 1px solid #5E5E5E;border-bottom: 1px solid #5E5E5E; ";
|
||||
setStyleSheet(styleSheet);
|
||||
|
||||
up->setHidden(false);
|
||||
down->setHidden(false);
|
||||
options->setHidden(false);
|
||||
|
||||
return true;
|
||||
}
|
||||
if(!isSelected && object==this && (event->type()==QEvent::Leave))
|
||||
{
|
||||
QString styleSheet = "background-color:#454545; border-top: 1px solid #454545;border-bottom: 1px solid #454545;";
|
||||
setStyleSheet(styleSheet);
|
||||
|
||||
up->setHidden(true);
|
||||
down->setHidden(true);
|
||||
options->setHidden(true);
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
if(object==this && (event->type()==QEvent::MouseButtonRelease))
|
||||
{
|
||||
QString styleSheet = "background-color:#2E2E2E; border-top: 1px solid #1F1F1F;border-bottom: 1px solid #636363; padding-top:1px; padding-bottom:1px;";
|
||||
setStyleSheet(styleSheet);
|
||||
emit(selected(name,path));
|
||||
isSelected = true;
|
||||
return true;
|
||||
}
|
||||
|
||||
return false;
|
||||
}*/
|
||||
|
||||
|
||||
|
||||
void YACReaderLibraryItemWidget::deselect()
|
||||
{
|
||||
|
||||
#ifdef Q_OS_MAC
|
||||
QString styleSheet = "background-color:transparent;";
|
||||
setStyleSheet(styleSheet);
|
||||
#else
|
||||
QString styleSheet = "background-color:transparent; color:#DDDFDF;";
|
||||
setStyleSheet(styleSheet);
|
||||
#endif
|
||||
|
||||
QPixmap iconPixmap(":/images/sidebar/libraryIcon.png");
|
||||
icon->setPixmap(iconPixmap);
|
||||
|
||||
/*up->setHidden(true);
|
||||
down->setHidden(true);*/
|
||||
options->setHidden(true);
|
||||
|
||||
isSelected = false;
|
||||
|
||||
|
||||
}
|
||||
|
||||
void YACReaderLibraryItemWidget::select()
|
||||
{
|
||||
#ifdef Q_OS_MAC
|
||||
//QString styleSheet ="color: white; background-color:qlineargradient(x1: 0, y1: 0, x2: 0, y2: 1, stop: 0 #6BAFE4, stop: 1 #3984D2); border-top: 2px solid qlineargradient(x1: 0, y1: 0, x2: 0, y2: 1, stop: 0 #5EA3DF, stop: 1 #73B8EA); border-left:none;border-right:none;border-bottom:1px solid #3577C2;";
|
||||
QString styleSheet = "color: white; background-color:#91c4f4; border-bottom:1px solid #91c4f4;";
|
||||
#else
|
||||
QString styleSheet = "color: white; background-color:#2E2E2E; font-weight:bold;";
|
||||
#endif
|
||||
setStyleSheet(styleSheet);
|
||||
|
||||
options->setHidden(false);
|
||||
|
||||
QPixmap iconPixmap(":/images/sidebar/libraryIconSelected.png");
|
||||
icon->setPixmap(iconPixmap);
|
||||
|
||||
isSelected = true;
|
||||
}
|
||||
|
||||
void YACReaderLibraryItemWidget::setName(const QString & name)
|
||||
{
|
||||
this->name = name;
|
||||
nameLabel->setText(name);
|
||||
}
|
Reference in New Issue
Block a user