okular/conf/widgetconfigurationtoolsbase.cpp
Lukas Hetzenecker ecc1141e02 HiDPI Support for Okular
Summary:
This patch enables HiDPI throughout the application

Every pixmap is multiplied by the devicePixelRatioF
QPainter code is ajusted to take the DPR value into account

All pixmaps get cached with the highest DPR of all screens. When moving the application to another screen, the cache doesn't have to be invalidated.

BUGS: 362856 383589
REVIEW: D6268
2017-10-14 14:47:20 +02:00

105 lines
3.9 KiB
C++

/***************************************************************************
* Copyright (C) 2015 by Laurent Montel <montel@kde.org> *
* *
* 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 2 of the License, or *
* (at your option) any later version. *
***************************************************************************/
#include "widgetconfigurationtoolsbase.h"
#include <QIcon>
#include <KLocalizedString>
#include <QHBoxLayout>
#include <QListWidget>
#include <QListWidgetItem>
#include <QDialogButtonBox>
#include <QPushButton>
#include <QVBoxLayout>
WidgetConfigurationToolsBase::WidgetConfigurationToolsBase( QWidget * parent )
: QWidget( parent )
{
QHBoxLayout *hBoxLayout = new QHBoxLayout( this );
m_list = new QListWidget( this );
m_list->setIconSize( QSize( 32, 32 ) );
hBoxLayout->addWidget( m_list );
QVBoxLayout *vBoxLayout = new QVBoxLayout();
m_btnAdd = new QPushButton( i18n("&Add..."), this );
m_btnAdd->setIcon( QIcon::fromTheme(QStringLiteral("list-add")) );
vBoxLayout->addWidget( m_btnAdd );
m_btnEdit = new QPushButton( i18n("&Edit..."), this );
m_btnEdit->setIcon( QIcon::fromTheme(QStringLiteral("edit-rename")) );
m_btnEdit->setEnabled( false );
vBoxLayout->addWidget( m_btnEdit );
m_btnRemove = new QPushButton( i18n("&Remove"), this );
m_btnRemove->setIcon( QIcon::fromTheme(QStringLiteral("list-remove")) );
m_btnRemove->setEnabled( false );
vBoxLayout->addWidget( m_btnRemove );
m_btnMoveUp = new QPushButton( i18n("Move &Up"), this );
m_btnMoveUp->setIcon( QIcon::fromTheme(QStringLiteral("arrow-up")) );
m_btnMoveUp->setEnabled( false );
vBoxLayout->addWidget( m_btnMoveUp );
m_btnMoveDown = new QPushButton( i18n("Move &Down"), this );
m_btnMoveDown->setIcon( QIcon::fromTheme(QStringLiteral("arrow-down")) );
m_btnMoveDown->setEnabled( false );
vBoxLayout->addWidget( m_btnMoveDown );
vBoxLayout->addStretch();
hBoxLayout->addLayout( vBoxLayout );
connect(m_list, &QListWidget::itemDoubleClicked, this, &WidgetConfigurationToolsBase::slotEdit);
connect(m_list, &QListWidget::currentRowChanged, this, &WidgetConfigurationToolsBase::updateButtons);
connect(m_btnAdd, &QPushButton::clicked, this, &WidgetConfigurationToolsBase::slotAdd);
connect(m_btnEdit, &QPushButton::clicked, this, &WidgetConfigurationToolsBase::slotEdit);
connect(m_btnRemove, &QPushButton::clicked, this, &WidgetConfigurationToolsBase::slotRemove);
connect(m_btnMoveUp, &QPushButton::clicked, this, &WidgetConfigurationToolsBase::slotMoveUp);
connect(m_btnMoveDown, &QPushButton::clicked, this, &WidgetConfigurationToolsBase::slotMoveDown);
}
WidgetConfigurationToolsBase::~WidgetConfigurationToolsBase()
{
}
void WidgetConfigurationToolsBase::updateButtons()
{
const int row = m_list->currentRow();
const int last = m_list->count() - 1;
m_btnEdit->setEnabled( row != -1 );
m_btnRemove->setEnabled( row != -1 );
m_btnMoveUp->setEnabled( row > 0 );
m_btnMoveDown->setEnabled( row != -1 && row != last );
}
void WidgetConfigurationToolsBase::slotRemove()
{
const int row = m_list->currentRow();
delete m_list->takeItem(row);
updateButtons();
emit changed();
}
void WidgetConfigurationToolsBase::slotMoveUp()
{
const int row = m_list->currentRow();
m_list->insertItem( row, m_list->takeItem(row-1) );
m_list->scrollToItem( m_list->currentItem() );
updateButtons();
emit changed();
}
void WidgetConfigurationToolsBase::slotMoveDown()
{
const int row = m_list->currentRow();
m_list->insertItem( row, m_list->takeItem(row+1) );
m_list->scrollToItem( m_list->currentItem() );
updateButtons();
emit changed();
}