File indexing completed on 2024-04-21 04:51:27

0001 /*
0002 SPDX-FileCopyrightText: 2016 Jean-Baptiste Mardelle <jb@kdenlive.org>
0003 This file is part of Kdenlive. See www.kdenlive.org.
0004 
0005 SPDX-License-Identifier: GPL-3.0-only OR LicenseRef-KDE-Accepted-GPL
0006 */
0007 
0008 #include "titletemplatedialog.h"
0009 #include "doc/kthumb.h"
0010 #include "kdenlivesettings.h"
0011 
0012 #include "klocalizedstring.h"
0013 #include <KComboBox>
0014 #include <QDir>
0015 #include <QStandardPaths>
0016 
0017 TitleTemplateDialog::TitleTemplateDialog(const QString &folder, QWidget *parent)
0018     : QDialog(parent)
0019 {
0020     m_view.setupUi(this);
0021     // Get the list of existing templates
0022     const QStringList filter = {QStringLiteral("*.kdenlivetitle")};
0023     const QString path = folder + QStringLiteral("/titles/");
0024 
0025     // Project templates
0026     QDir dir(path);
0027     const QStringList templateFiles = dir.entryList(filter, QDir::Files);
0028     for (const QString &fname : templateFiles) {
0029         m_view.template_list->comboBox()->addItem(fname, dir.absoluteFilePath(fname));
0030     }
0031 
0032     // System templates
0033     QStringList titleTemplates = QStandardPaths::locateAll(QStandardPaths::AppLocalDataLocation, QStringLiteral("titles/"), QStandardPaths::LocateDirectory);
0034     titleTemplates.removeDuplicates();
0035     for (const QString &folderpath : qAsConst(titleTemplates)) {
0036         QDir sysdir(folderpath);
0037         const QStringList filesnames = sysdir.entryList(filter, QDir::Files);
0038         for (const QString &fname : filesnames) {
0039             m_view.template_list->comboBox()->addItem(fname, sysdir.absoluteFilePath(fname));
0040         }
0041     }
0042 
0043     if (m_view.template_list->comboBox()->count() > 0) {
0044         m_view.buttonBox->button(QDialogButtonBox::Ok)->setFocus();
0045     }
0046     int current = m_view.template_list->comboBox()->findText(KdenliveSettings::selected_template());
0047     if (current > -1) {
0048         m_view.template_list->comboBox()->setCurrentIndex(current);
0049     }
0050     const QStringList mimeTypeFilters = {QStringLiteral("application/x-kdenlivetitle")};
0051     m_view.template_list->setMimeTypeFilters(mimeTypeFilters);
0052     connect(m_view.template_list->comboBox(), static_cast<void (KComboBox::*)(int)>(&KComboBox::currentIndexChanged), this,
0053             &TitleTemplateDialog::updatePreview);
0054     updatePreview();
0055 }
0056 
0057 QString TitleTemplateDialog::selectedTemplate() const
0058 {
0059     QString textTemplate = m_view.template_list->comboBox()->itemData(m_view.template_list->comboBox()->currentIndex()).toString();
0060     if (textTemplate.isEmpty()) {
0061         textTemplate = m_view.template_list->comboBox()->currentText();
0062     }
0063     return textTemplate;
0064 }
0065 
0066 QString TitleTemplateDialog::selectedText() const
0067 {
0068     return m_view.description->toPlainText();
0069 }
0070 
0071 void TitleTemplateDialog::resizeEvent(QResizeEvent *event)
0072 {
0073     updatePreview();
0074     QWidget::resizeEvent(event);
0075 }
0076 
0077 void TitleTemplateDialog::updatePreview()
0078 {
0079     QString textTemplate = m_view.template_list->comboBox()->itemData(m_view.template_list->comboBox()->currentIndex()).toString();
0080     if (textTemplate.isEmpty()) {
0081         textTemplate = m_view.template_list->comboBox()->currentText();
0082     }
0083     QPixmap pix = KThumb::getImage(QUrl::fromLocalFile(textTemplate), m_view.preview->width());
0084     m_view.preview->setPixmap(pix);
0085     KdenliveSettings::setSelected_template(m_view.template_list->comboBox()->currentText());
0086 }