/* This file is part of the KDE libraries SPDX-FileCopyrightText: 2000 David Faure SPDX-License-Identifier: LGPL-2.0-or-later */ #ifndef OPENWITHDIALOG_H #define OPENWITHDIALOG_H #include "kiowidgets_export.h" #include #include #include class KOpenWithDialogPrivate; /** * @class KOpenWithDialog kopenwithdialog.h * * "Open With" dialog box. * * @note To let the user choose an application and run it immediately, * use simpler KRun::displayOpenWithDialog(). * * If the Kiosk "shell_access" action is not authorized (see * KAuthorized::authorize()), arbitrary commands are not allowed; instead, the * user must browse to and choose an executable. * * @author David Faure */ class KIOWIDGETS_EXPORT KOpenWithDialog : public QDialog { Q_OBJECT public: /** * Create a dialog that asks for a application to open a given * URL(s) with. * * @param urls the URLs that should be opened. The list can be empty, * if the dialog is used to choose an application but not for some particular URLs. * @param parent parent widget */ explicit KOpenWithDialog(const QList &urls, QWidget *parent = nullptr); /** * Create a dialog that asks for a application to open a given * URL(s) with. * * @param urls is the URL that should be opened * @param text appears as a label on top of the entry box. Leave empty for default text (since 5.20). * @param value is the initial value of the line * @param parent parent widget */ KOpenWithDialog(const QList &urls, const QString &text, const QString &value, QWidget *parent = nullptr); /** * Create a dialog to select a service for a given MIME type. * Note that this dialog doesn't apply to URLs. * * @param mimeType the MIME type we want to choose an application for. * @param value is the initial value of the line * @param parent parent widget */ KOpenWithDialog(const QString &mimeType, const QString &value, QWidget *parent = nullptr); /** * Create a dialog that asks for a application for opening a given * URL (or more than one), when we already know the MIME type of the URL(s). * * @param urls is the URLs that should be opened * @param mimeType the MIME type of the URL * @param text appears as a label on top of the entry box. * @param value is the initial value of the line * @param parent parent widget * @since 5.71 */ KOpenWithDialog(const QList &urls, const QString &mimeType, const QString &text, const QString &value, QWidget *parent = nullptr); /** * Create a dialog to select an application * Note that this dialog doesn't apply to URLs. * * @param parent parent widget */ KOpenWithDialog(QWidget *parent = nullptr); /** * Destructor */ ~KOpenWithDialog() override; /** * @return the text the user entered */ QString text() const; /** * Hide the "Do not &close when command exits" Checkbox */ void hideNoCloseOnExit(); /** * Hide the "Run in &terminal" Checkbox */ void hideRunInTerminal(); /** * @return the chosen service in the application tree * Can be null, if the user typed some text and didn't select a service. */ KService::Ptr service() const; /** * Set whether a new .desktop file should be created if the user selects an * application for which no corresponding .desktop file can be found. * * Regardless of this setting a new .desktop file may still be created if * the user has chosen to remember the file association. * * The default is false: no .desktop files are created. */ void setSaveNewApplications(bool b); public Q_SLOTS: // TODO KDE5: move all those slots to the private class! void slotSelected(const QString &_name, const QString &_exec); void slotHighlighted(const QString &_name, const QString &_exec); void slotTextChanged(); void slotTerminalToggled(bool); protected Q_SLOTS: /** * Reimplemented from QDialog::accept() */ void accept() override; private: bool eventFilter(QObject *object, QEvent *event) override; friend class KOpenWithDialogPrivate; std::unique_ptr const d; Q_DISABLE_COPY(KOpenWithDialog) }; #endif