kde-extraapps/gwenview/app/configdialog.cpp
Ivailo Monev 91aeab82c7 gwenview: drop OpenGL support
Signed-off-by: Ivailo Monev <xakepa10@gmail.com>
2021-02-17 03:44:19 +02:00

129 lines
4.8 KiB
C++

// vim: set tabstop=4 shiftwidth=4 expandtab:
/*
Gwenview: an image viewer
Copyright 2007 Aurélien Gâteau <agateau@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.
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, write to the Free Software
Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
*/
// Self
#include "configdialog.h"
// KDE
#include <KGlobalSettings>
#include <KLocale>
// Local
#include "ui_generalconfigpage.h"
#include "ui_imageviewconfigpage.h"
#include "ui_advancedconfigpage.h"
#include <lib/gwenviewconfig.h>
#include <lib/invisiblebuttongroup.h>
namespace Gwenview
{
struct ConfigDialogPrivate
{
InvisibleButtonGroup* mAlphaBackgroundModeGroup;
InvisibleButtonGroup* mWheelBehaviorGroup;
InvisibleButtonGroup* mAnimationMethodGroup;
InvisibleButtonGroup* mThumbnailBarOrientationGroup;
Ui_GeneralConfigPage mGeneralConfigPage;
Ui_ImageViewConfigPage mImageViewConfigPage;
Ui_AdvancedConfigPage mAdvancedConfigPage;
};
template <class Ui>
QWidget* setupPage(Ui& ui)
{
QWidget* widget = new QWidget;
ui.setupUi(widget);
widget->layout()->setMargin(0);
return widget;
}
ConfigDialog::ConfigDialog(QWidget* parent)
: KConfigDialog(parent, "Settings", GwenviewConfig::self())
, d(new ConfigDialogPrivate)
{
setFaceType(KPageDialog::List);
setButtons(KDialog::Ok | KDialog::Cancel | KDialog::Apply | KDialog::Default);
showButtonSeparator(true);
QWidget* widget;
KPageWidgetItem* pageItem;
// General
widget = setupPage(d->mGeneralConfigPage);
pageItem = addPage(widget, i18n("General"));
pageItem->setIcon(KIcon("gwenview"));
connect(d->mGeneralConfigPage.kcfg_ViewBackgroundValue, SIGNAL(valueChanged(int)), SLOT(updateViewBackgroundFrame()));
// Image View
widget = setupPage(d->mImageViewConfigPage);
d->mAlphaBackgroundModeGroup = new InvisibleButtonGroup(widget);
d->mAlphaBackgroundModeGroup->setObjectName(QLatin1String("kcfg_AlphaBackgroundMode"));
d->mAlphaBackgroundModeGroup->addButton(d->mImageViewConfigPage.checkBoardRadioButton, int(RasterImageView::AlphaBackgroundCheckBoard));
d->mAlphaBackgroundModeGroup->addButton(d->mImageViewConfigPage.solidColorRadioButton, int(RasterImageView::AlphaBackgroundSolid));
d->mWheelBehaviorGroup = new InvisibleButtonGroup(widget);
d->mWheelBehaviorGroup->setObjectName(QLatin1String("kcfg_MouseWheelBehavior"));
d->mWheelBehaviorGroup->addButton(d->mImageViewConfigPage.mouseWheelScrollRadioButton, int(MouseWheelBehavior::Scroll));
d->mWheelBehaviorGroup->addButton(d->mImageViewConfigPage.mouseWheelBrowseRadioButton, int(MouseWheelBehavior::Browse));
d->mAnimationMethodGroup = new InvisibleButtonGroup(widget);
d->mAnimationMethodGroup->setObjectName(QLatin1String("kcfg_AnimationMethod"));
d->mAnimationMethodGroup->addButton(d->mImageViewConfigPage.softwareAnimationRadioButton, int(DocumentView::SoftwareAnimation));
d->mAnimationMethodGroup->addButton(d->mImageViewConfigPage.noAnimationRadioButton, int(DocumentView::NoAnimation));
d->mThumbnailBarOrientationGroup = new InvisibleButtonGroup(widget);
d->mThumbnailBarOrientationGroup->setObjectName(QLatin1String("kcfg_ThumbnailBarOrientation"));
d->mThumbnailBarOrientationGroup->addButton(d->mImageViewConfigPage.horizontalRadioButton, int(Qt::Horizontal));
d->mThumbnailBarOrientationGroup->addButton(d->mImageViewConfigPage.verticalRadioButton, int(Qt::Vertical));
pageItem = addPage(widget, i18n("Image View"));
pageItem->setIcon(KIcon("view-preview"));
// Advanced
widget = setupPage(d->mAdvancedConfigPage);
pageItem = addPage(widget, i18n("Advanced"));
pageItem->setIcon(KIcon("preferences-other"));
updateViewBackgroundFrame();
}
ConfigDialog::~ConfigDialog()
{
delete d;
}
void ConfigDialog::updateViewBackgroundFrame()
{
QColor color = QColor::fromHsv(0, 0, d->mGeneralConfigPage.kcfg_ViewBackgroundValue->value());
QString css =
QString(
"background-color: %1;"
"border-radius: 5px;"
"border: 1px solid %1;")
.arg(color.name());
// When using Oxygen, setting the background color via palette causes the
// pixels outside the frame to be painted with the new background color as
// well. Using CSS works more like expected.
d->mGeneralConfigPage.backgroundValueFrame->setStyleSheet(css);
}
} // namespace