1 /*
2     SPDX-FileCopyrightText: 2007 Jean-Baptiste Mardelle <jb@kdenlive.org>
3     SPDX-FileCopyrightText: 2013 Jean-Nicolas Artaud <jeannicolasartaud@gmail.com>
4 
5     SPDX-License-Identifier: GPL-3.0-only OR LicenseRef-KDE-Accepted-GPL
6 */
7 
8 // Self
9 #include "invaliddialog.h"
10 
11 // Qt
12 #include <QLabel>
13 #include <QListWidget>
14 #include <QVBoxLayout>
15 
16 // KDE
17 #include <QDialog>
18 #include <QDialogButtonBox>
19 #include <QPushButton>
20 
InvalidDialog(const QString & caption,const QString & message,bool infoOnly,QWidget * parent)21 InvalidDialog::InvalidDialog(const QString &caption, const QString &message, bool infoOnly, QWidget *parent)
22     : QDialog(parent)
23 {
24     auto *mainLayout = new QVBoxLayout(this);
25     setWindowTitle(caption);
26     // Info only means users can only click on ok
27     QDialogButtonBox *buttonBox;
28     QPushButton *okButton;
29     if (infoOnly) {
30         buttonBox = new QDialogButtonBox(QDialogButtonBox::Ok);
31         okButton = buttonBox->button(QDialogButtonBox::Ok);
32     } else {
33         buttonBox = new QDialogButtonBox(QDialogButtonBox::No | QDialogButtonBox::Yes);
34         okButton = buttonBox->button(QDialogButtonBox::Yes);
35     }
36     okButton->setDefault(true);
37     okButton->setShortcut(Qt::CTRL | Qt::Key_Return);
38     connect(buttonBox, &QDialogButtonBox::accepted, this, &InvalidDialog::accept);
39     connect(buttonBox, &QDialogButtonBox::rejected, this, &InvalidDialog::reject);
40 
41     m_clipList = new QListWidget(this);
42     mainLayout->addWidget(new QLabel(message));
43     mainLayout->addWidget(m_clipList);
44     mainLayout->addWidget(buttonBox);
45 }
46 
~InvalidDialog()47 InvalidDialog::~InvalidDialog()
48 {
49     delete m_clipList;
50 }
51 
addClip(const QString & id,const QString & path)52 void InvalidDialog::addClip(const QString &id, const QString &path)
53 {
54     auto *item = new QListWidgetItem(path);
55     item->setData(Qt::UserRole, id);
56     m_clipList->addItem(item);
57 }
58 
getIds() const59 QStringList InvalidDialog::getIds() const
60 {
61     QStringList ids;
62     ids.reserve(m_clipList->count());
63     for (int i = 0; i < m_clipList->count(); ++i) {
64         ids << m_clipList->item(i)->data(Qt::UserRole).toString();
65     }
66     return ids;
67 }
68