File indexing completed on 2025-03-09 03:52:10

0001 /* ============================================================
0002  *
0003  * This file is a part of digiKam project
0004  * https://www.digikam.org
0005  *
0006  * Date        : 2014-09-18
0007  * Description : slideshow error view
0008  *
0009  * SPDX-FileCopyrightText: 2014-2024 by Gilles Caulier <caulier dot gilles at gmail dot com>
0010  * SPDX-FileCopyrightText: 2019-2020 by Minh Nghia Duong <minhnghiaduong997 at gmail dot com>
0011  *
0012  * SPDX-License-Identifier: GPL-2.0-or-later
0013  *
0014  * ============================================================ */
0015 
0016 #include "slideerror.h"
0017 
0018 // Qt includes
0019 
0020 #include <QLabel>
0021 #include <QGridLayout>
0022 #include <QPalette>
0023 #include <QApplication>
0024 #include <QStyle>
0025 
0026 // KDE includes
0027 
0028 #include <klocalizedstring.h>
0029 
0030 namespace DigikamGenericSlideShowPlugin
0031 {
0032 
0033 class Q_DECL_HIDDEN SlideError::Private
0034 {
0035 
0036 public:
0037 
0038     explicit Private()
0039       : errorMsg(nullptr)
0040     {
0041     }
0042 
0043     QLabel* errorMsg;
0044 };
0045 
0046 SlideError::SlideError(QWidget* const parent)
0047     : QWidget(parent),
0048       d      (new Private)
0049 {
0050     setMouseTracking(true);
0051     setAutoFillBackground(true);
0052 
0053     const int spacing       = qMin(QApplication::style()->pixelMetric(QStyle::PM_LayoutHorizontalSpacing),
0054                                    QApplication::style()->pixelMetric(QStyle::PM_LayoutVerticalSpacing));
0055 
0056     QPalette palette;
0057     palette.setColor(backgroundRole(), Qt::black);
0058     setPalette(palette);
0059 
0060     d->errorMsg             = new QLabel(this);
0061     d->errorMsg->setAlignment(Qt::AlignCenter);
0062 
0063     QGridLayout* const grid = new QGridLayout(this);
0064     grid->addWidget(d->errorMsg, 1, 0, 1, 3 );
0065     grid->setColumnStretch(0, 10);
0066     grid->setColumnStretch(2, 10);
0067     grid->setRowStretch(0, 10);
0068     grid->setRowStretch(2, 10);
0069     grid->setContentsMargins(spacing, spacing, spacing, spacing);
0070     grid->setSpacing(spacing);
0071 }
0072 
0073 SlideError::~SlideError()
0074 {
0075     delete d;
0076 }
0077 
0078 void SlideError::setCurrentUrl(const QUrl& url)
0079 {
0080     d->errorMsg->setText(i18n("An error has occurred to show item\n%1", url.fileName()));
0081 }
0082 
0083 } // namespace DigikamGenericSlideShowPlugin
0084 
0085 #include "moc_slideerror.cpp"