File indexing completed on 2024-12-01 06:45:11

0001 /*
0002     This file is part of the KDE libraries
0003     SPDX-FileCopyrightText: 2001, 2002, 2003 Carsten Pfeiffer <pfeiffer@kde.org>
0004     SPDX-FileCopyrightText: 2007 Kevin Ottens <ervin@kde.org>
0005 
0006     SPDX-License-Identifier: LGPL-2.0-only
0007 */
0008 
0009 #ifndef KFILEPLACEEDITDIALOG_H
0010 #define KFILEPLACEEDITDIALOG_H
0011 
0012 #include "kiofilewidgets_export.h"
0013 
0014 #include <KIconLoader>
0015 #include <QDialog>
0016 #include <QUrl>
0017 
0018 class QCheckBox;
0019 class QDialogButtonBox;
0020 class QLineEdit;
0021 class KIconButton;
0022 class KUrlRequester;
0023 
0024 /**
0025  * @class KFilePlaceEditDialog kfileplaceeditdialog.h <KFilePlaceEditDialog>
0026  *
0027  * A dialog that allows editing entries of a KFilePlacesModel.
0028  * The dialog offers to configure a given url, label and icon.
0029  * See the class-method getInformation() for easy usage.
0030  *
0031  * @author Carsten Pfeiffer <pfeiffer@kde.org>
0032  * @since 5.53
0033  */
0034 class KIOFILEWIDGETS_EXPORT KFilePlaceEditDialog : public QDialog
0035 {
0036     Q_OBJECT
0037 
0038 public:
0039     /**
0040      * A convenience method to show the dialog and retrieve all the
0041      * properties via the given parameters. The parameters are used to
0042      * initialize the dialog and then return the user-configured values.
0043      *
0044      * @p allowGlobal if you set this to true, the dialog will have a checkbox
0045      *                for the user to decide if he wants the entry to be
0046      *                available globally or just for the current application.
0047      * @p url the url of the item
0048      * @p label a short, translated description of the item
0049      * @p icon an icon for the item
0050      * @p appLocal tells whether the item should be local for this application
0051      *             or be available globally
0052      * @p iconSize determines the size of the icon that is shown/selectable
0053      * @p parent the parent-widget for the dialog
0054      *
0055      * If you leave the icon empty, the default icon for the given url will be
0056      * used (KMimeType::pixmapForUrl()).
0057      */
0058     static bool
0059     getInformation(bool allowGlobal, QUrl &url, QString &label, QString &icon, bool isAddingNewPlace, bool &appLocal, int iconSize, QWidget *parent = nullptr);
0060 
0061     /**
0062      * Constructs a KFilePlaceEditDialog.
0063      *
0064      * @p allowGlobal if you set this to true, the dialog will have a checkbox
0065      *                for the user to decide if he wants the entry to be
0066      *                available globally or just for the current application.
0067      * @p url the url of the item
0068      * @p label a short, translated description of the item
0069      * @p icon an icon for the item
0070      * @p appLocal tells whether the item should be local for this application
0071      *             or be available globally
0072      * @p iconSize determines the size of the icon that is shown/selectable
0073      * @p parent the parent-widget for the dialog
0074      *
0075      * If you leave the icon empty, the default icon for the given url will be
0076      * used (KMimeType::pixmapForUrl()).
0077      */
0078     KFilePlaceEditDialog(bool allowGlobal,
0079                          const QUrl &url,
0080                          const QString &label,
0081                          const QString &icon,
0082                          bool isAddingNewPlace,
0083                          bool appLocal = true,
0084                          int iconSize = KIconLoader::SizeMedium,
0085                          QWidget *parent = nullptr);
0086     /**
0087      * Destroys the dialog.
0088      */
0089     ~KFilePlaceEditDialog() override;
0090 
0091     /**
0092      * @returns the configured url
0093      */
0094     QUrl url() const;
0095 
0096     /**
0097      * @returns the configured label
0098      */
0099     QString label() const;
0100 
0101     /**
0102      * @returns the configured icon
0103      */
0104     QString icon() const;
0105 
0106     /**
0107      * @returns whether the item should be local to the application or global.
0108      * If allowGlobal was set to false in the constructor, this will always
0109      * return true.
0110      */
0111     bool applicationLocal() const;
0112 
0113 public Q_SLOTS:
0114     void urlChanged(const QString &);
0115 
0116 private:
0117     /**
0118      * The KUrlRequester used for editing the url
0119      */
0120     KUrlRequester *m_urlEdit;
0121     /**
0122      * The QLineEdit used for editing the label
0123      */
0124     QLineEdit *m_labelEdit;
0125     /**
0126      * The KIconButton to configure the icon
0127      */
0128     KIconButton *m_iconButton;
0129     /**
0130      * The QCheckBox to modify the local/global setting
0131      */
0132     QCheckBox *m_appLocal;
0133 
0134     QDialogButtonBox *m_buttonBox;
0135 };
0136 
0137 #endif // KFILEPLACEEDITDIALOG_H