File indexing completed on 2024-04-21 14:44:24

0001 /*
0002     SPDX-FileCopyrightText: 2005 Jason Harris <kstars@30doradus.org>
0003 
0004     SPDX-License-Identifier: GPL-2.0-or-later
0005 */
0006 
0007 #include "thumbnaileditor.h"
0008 
0009 #include "thumbnailpicker.h"
0010 #include "ui_thumbnaileditor.h"
0011 
0012 #include <KLocalizedString>
0013 
0014 #include <QHBoxLayout>
0015 #include <QLabel>
0016 #include <QMouseEvent>
0017 #include <QPaintEvent>
0018 #include <QPixmap>
0019 
0020 #include <QDebug>
0021 #include <QDialogButtonBox>
0022 #include <QPushButton>
0023 
0024 ThumbnailEditorUI::ThumbnailEditorUI(QWidget *parent) : QFrame(parent)
0025 {
0026     setupUi(this);
0027 }
0028 
0029 ThumbnailEditor::ThumbnailEditor(ThumbnailPicker *_tp, double _w, double _h) : QDialog(_tp), tp(_tp)
0030 {
0031 #ifdef Q_OS_OSX
0032     setWindowFlags(Qt::Tool | Qt::WindowStaysOnTopHint);
0033 #endif
0034     ui = new ThumbnailEditorUI(this);
0035     w  = _w;
0036     h  = _h;
0037     ui->MessageLabel->setText(i18n("Crop region will be scaled to [ %1 * %2 ]", w, h));
0038 
0039     setWindowTitle(i18nc("@title:window", "Edit Thumbnail Image"));
0040     QVBoxLayout *mainLayout = new QVBoxLayout;
0041     mainLayout->addWidget(ui);
0042     setLayout(mainLayout);
0043 
0044     QDialogButtonBox *buttonBox = new QDialogButtonBox(QDialogButtonBox::Ok | QDialogButtonBox::Cancel);
0045     mainLayout->addWidget(buttonBox);
0046     connect(buttonBox, SIGNAL(accepted()), this, SLOT(accept()));
0047     connect(buttonBox, SIGNAL(rejected()), this, SLOT(reject()));
0048 
0049     ui->ImageCanvas->setCropRect(tp->imageRect()->x(), tp->imageRect()->y(), tp->imageRect()->width(),
0050                                  tp->imageRect()->height());
0051     ui->ImageCanvas->setImage(tp->currentListImage());
0052 
0053     //DEBUG
0054     //qDebug() << Q_FUNC_INFO << tp->currentListImage()->size();
0055 
0056     connect(ui->ImageCanvas, SIGNAL(cropRegionModified()), SLOT(slotUpdateCropLabel()));
0057     slotUpdateCropLabel();
0058 
0059     update();
0060 }
0061 
0062 QPixmap ThumbnailEditor::thumbnail()
0063 {
0064     QImage im = ui->ImageCanvas->croppedImage().toImage();
0065     im        = im.scaled(w, h, Qt::IgnoreAspectRatio, Qt::SmoothTransformation);
0066     return QPixmap::fromImage(im);
0067 }
0068 
0069 void ThumbnailEditor::slotUpdateCropLabel()
0070 {
0071     QRect *r = ui->ImageCanvas->cropRect();
0072     ui->CropLabel->setText(i18n("Crop region: [%1,%2  %3x%4]", r->left(), r->top(), r->width(), r->height()));
0073 }