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

0001 /* ============================================================
0002  *
0003  * This file is a part of digiKam project
0004  * https://www.digikam.org
0005  *
0006  * Date        : 2009-03-03
0007  * Description : queue tool tip
0008  *
0009  * SPDX-FileCopyrightText: 2009-2024 by Gilles Caulier <caulier dot gilles at gmail dot com>
0010  *
0011  * SPDX-License-Identifier: GPL-2.0-or-later
0012  *
0013  * ============================================================ */
0014 
0015 #include "queuetooltip.h"
0016 
0017 // Qt includes
0018 
0019 #include <QDateTime>
0020 #include <QPainter>
0021 #include <QPixmap>
0022 #include <QTextDocument>
0023 
0024 // Local includes
0025 
0026 #include "applicationsettings.h"
0027 #include "queuelist.h"
0028 #include "tooltipfiller.h"
0029 
0030 namespace Digikam
0031 {
0032 
0033 class Q_DECL_HIDDEN QueueToolTip::Private
0034 {
0035 public:
0036 
0037     explicit Private()
0038       : view(nullptr),
0039         item(nullptr)
0040     {
0041     }
0042 
0043     QueueListView*     view;
0044     QueueListViewItem* item;
0045 };
0046 
0047 QueueToolTip::QueueToolTip(QueueListView* const view)
0048     : DItemToolTip(),
0049       d           (new Private)
0050 {
0051     d->view = view;
0052 }
0053 
0054 QueueToolTip::~QueueToolTip()
0055 {
0056     delete d;
0057 }
0058 
0059 void QueueToolTip::setQueueItem(QueueListViewItem* const item)
0060 {
0061     d->item = item;
0062 
0063     if (!d->item || !ApplicationSettings::instance()->showToolTipsIsValid())
0064     {
0065         hide();
0066     }
0067     else
0068     {
0069         updateToolTip();
0070         reposition();
0071 
0072         if (isHidden() && !toolTipIsEmpty())
0073         {
0074             show();
0075         }
0076     }
0077 }
0078 
0079 QRect QueueToolTip::repositionRect()
0080 {
0081     if (!d->item)
0082     {
0083         return QRect();
0084     }
0085 
0086     QRect rect = d->view->visualItemRect(d->item);
0087     rect.moveTopLeft(d->view->viewport()->mapToGlobal(rect.topLeft()));
0088 
0089     return rect;
0090 }
0091 
0092 QString QueueToolTip::tipContents()
0093 {
0094     if (!d->item)
0095     {
0096         return QString();
0097     }
0098 
0099     ItemInfo info = d->item->info();
0100 
0101     return ToolTipFiller::imageInfoTipContents(info);
0102 }
0103 
0104 } // namespace Digikam
0105 
0106 #include "moc_queuetooltip.cpp"