File indexing completed on 2024-05-12 16:02:00
0001 /* 0002 * SPDX-FileCopyrightText: 2015 Dmitry Kazakov <dimula73@gmail.com> 0003 * 0004 * SPDX-License-Identifier: GPL-2.0-or-later 0005 */ 0006 0007 #include "kis_file_name_requester.h" 0008 #include "ui_wdg_file_name_requester.h" 0009 0010 #include <QStandardPaths> 0011 #include <QDebug> 0012 0013 #include "KoIcon.h" 0014 #include <KisFileUtils.h> 0015 0016 KisFileNameRequester::KisFileNameRequester(QWidget *parent) 0017 : QWidget(parent) 0018 , m_ui(new Ui::WdgFileNameRequester) 0019 , m_mode(KoFileDialog::OpenFile) 0020 , m_name("OpenDocument") 0021 { 0022 m_ui->setupUi(this); 0023 0024 m_ui->btnSelectFile->setIcon(kisIcon("folder")); 0025 0026 connect(m_ui->btnSelectFile, SIGNAL(clicked()), SLOT(slotSelectFile())); 0027 connect(m_ui->txtFileName, SIGNAL(textChanged(QString)), SIGNAL(textChanged(QString))); 0028 } 0029 0030 KisFileNameRequester::~KisFileNameRequester() 0031 { 0032 } 0033 0034 void KisFileNameRequester::setStartDir(const QString &path) 0035 { 0036 m_basePath = path; 0037 } 0038 0039 void KisFileNameRequester::setConfigurationName(const QString &name) 0040 { 0041 m_name = name; 0042 } 0043 0044 void KisFileNameRequester::setFileName(const QString &path) 0045 { 0046 m_ui->txtFileName->setText(path); 0047 emit fileSelected(path); 0048 } 0049 0050 QString KisFileNameRequester::fileName() const 0051 { 0052 return m_ui->txtFileName->text(); 0053 } 0054 0055 void KisFileNameRequester::setMode(KoFileDialog::DialogType mode) 0056 { 0057 m_mode = mode; 0058 } 0059 0060 KoFileDialog::DialogType KisFileNameRequester::mode() const 0061 { 0062 return m_mode; 0063 } 0064 0065 void KisFileNameRequester::setReadOnlyText(bool readonly) 0066 { 0067 m_ui->txtFileName->setReadOnly(readonly); 0068 } 0069 0070 void KisFileNameRequester::setMimeTypeFilters(const QStringList &filterList, QString defaultFilter) 0071 { 0072 m_mime_filter_list = filterList; 0073 m_mime_default_filter = defaultFilter; 0074 } 0075 0076 void KisFileNameRequester::slotSelectFile() 0077 { 0078 KoFileDialog dialog(this, m_mode, m_name); 0079 if (m_mode == KoFileDialog::OpenFile) 0080 { 0081 dialog.setCaption(i18n("Select a file to load...")); 0082 } 0083 else if (m_mode == KoFileDialog::OpenDirectory) 0084 { 0085 dialog.setCaption(i18n("Select a directory to load...")); 0086 } 0087 0088 const QString basePath = 0089 KritaUtils::resolveAbsoluteFilePath(QStandardPaths::writableLocation(QStandardPaths::PicturesLocation), 0090 m_basePath); 0091 0092 const QString filePath = 0093 KritaUtils::resolveAbsoluteFilePath(basePath, m_ui->txtFileName->text()); 0094 0095 dialog.setDefaultDir(filePath, true); 0096 dialog.setMimeTypeFilters(m_mime_filter_list, m_mime_default_filter); 0097 0098 QString newFileName = dialog.filename(); 0099 0100 if (!newFileName.isEmpty()) { 0101 setFileName(newFileName); 0102 } 0103 }