File indexing completed on 2024-04-21 03:55:18

0001 /*
0002     This file is part of the KDE libraries
0003     SPDX-FileCopyrightText: 2017 Klarälvdalens Datakonsult AB, a KDAB Group company <info@kdab.com>
0004     Work sponsored by the LiMux project of the city of Munich
0005 
0006     SPDX-License-Identifier: LGPL-2.0-only
0007 */
0008 
0009 #include "kfilecustomdialog.h"
0010 
0011 #include <QPushButton>
0012 #include <QUrl>
0013 #include <QVBoxLayout>
0014 
0015 class KFileCustomDialogPrivate
0016 {
0017 public:
0018     explicit KFileCustomDialogPrivate(KFileCustomDialog *qq)
0019         : q(qq)
0020     {
0021     }
0022     void init(const QUrl &startDir);
0023 
0024     KFileWidget *mFileWidget = nullptr;
0025     KFileCustomDialog *const q;
0026 };
0027 
0028 void KFileCustomDialogPrivate::init(const QUrl &startDir)
0029 {
0030     QVBoxLayout *mainLayout = new QVBoxLayout(q);
0031     mainLayout->setObjectName(QStringLiteral("mainlayout"));
0032 
0033     mFileWidget = new KFileWidget(startDir, q);
0034     mFileWidget->setObjectName(QStringLiteral("filewidget"));
0035     mainLayout->addWidget(mFileWidget);
0036 
0037     mFileWidget->okButton()->show();
0038     q->connect(mFileWidget->okButton(), &QPushButton::clicked, q, [this]() {
0039         mFileWidget->slotOk();
0040     });
0041     mFileWidget->cancelButton()->show();
0042     q->connect(mFileWidget->cancelButton(), &QPushButton::clicked, q, [this]() {
0043         mFileWidget->slotCancel();
0044         q->reject();
0045     });
0046     q->connect(mFileWidget, &KFileWidget::accepted, q, [this] {
0047         q->accept();
0048     });
0049 }
0050 
0051 KFileCustomDialog::KFileCustomDialog(QWidget *parent)
0052     : QDialog(parent)
0053     , d(new KFileCustomDialogPrivate(this))
0054 {
0055     d->init(QUrl());
0056 }
0057 
0058 KFileCustomDialog::KFileCustomDialog(const QUrl &startDir, QWidget *parent)
0059     : QDialog(parent)
0060     , d(new KFileCustomDialogPrivate(this))
0061 {
0062     d->init(startDir);
0063 }
0064 
0065 KFileCustomDialog::~KFileCustomDialog() = default;
0066 
0067 void KFileCustomDialog::setUrl(const QUrl &url)
0068 {
0069     d->mFileWidget->setUrl(url);
0070 }
0071 
0072 void KFileCustomDialog::setCustomWidget(QWidget *widget)
0073 {
0074     d->mFileWidget->setCustomWidget(QString(), widget);
0075 }
0076 
0077 KFileWidget *KFileCustomDialog::fileWidget() const
0078 {
0079     return d->mFileWidget;
0080 }
0081 
0082 void KFileCustomDialog::setOperationMode(KFileWidget::OperationMode op)
0083 {
0084     d->mFileWidget->setOperationMode(op);
0085 }
0086 
0087 void KFileCustomDialog::accept()
0088 {
0089     d->mFileWidget->accept();
0090     QDialog::accept();
0091 }
0092 
0093 #include "moc_kfilecustomdialog.cpp"