File indexing completed on 2024-12-01 06:45:40
0001 /* 0002 This file is part of the KDE libraries 0003 SPDX-FileCopyrightText: 2000 Stephan Kulow <coolo@kde.org> 0004 SPDX-FileCopyrightText: 1999-2008 David Faure <faure@kde.org> 0005 SPDX-FileCopyrightText: 2001 Holger Freyther <freyther@kde.org> 0006 0007 SPDX-License-Identifier: LGPL-2.0-or-later 0008 */ 0009 0010 #ifndef KIO_RENAMEDIALOG_H 0011 #define KIO_RENAMEDIALOG_H 0012 0013 #include <QDateTime> 0014 #include <QDialog> 0015 #include <QString> 0016 #include <kio/jobuidelegateextension.h> 0017 0018 #include "kiowidgets_export.h" 0019 #include <kio/global.h> 0020 0021 #include <memory> 0022 0023 class QScrollArea; 0024 class QLabel; 0025 class QPixmap; 0026 class KFileItem; 0027 class KSqueezedTextLabel; 0028 0029 namespace KIO 0030 { 0031 /** 0032 * @class KIO::RenameDialog renamedialog.h <KIO/RenameDialog> 0033 * 0034 * The dialog shown when a CopyJob realizes that a destination file already exists, 0035 * and wants to offer the user with the choice to either Rename, Overwrite, Skip; 0036 * this dialog is also used when a .part file exists and the user can choose to 0037 * Resume a previous download. 0038 */ 0039 class KIOWIDGETS_EXPORT RenameDialog : public QDialog 0040 { 0041 Q_OBJECT 0042 public: 0043 /** 0044 * Construct a "rename" dialog to let the user know that @p src is about to overwrite @p dest. 0045 * 0046 * @param parent parent widget (often 0) 0047 * @param title the title for the dialog box 0048 * @param src the url to the file/dir we're trying to copy, as it's part of the text message 0049 * @param dest the path to destination file/dir, i.e. the one that already exists 0050 * @param options parameters for the dialog (which buttons to show...), 0051 * @param sizeSrc size of source file 0052 * @param sizeDest size of destination file 0053 * @param ctimeSrc creation time of source file 0054 * @param ctimeDest creation time of destination file 0055 * @param mtimeSrc modification time of source file 0056 * @param mtimeDest modification time of destination file 0057 */ 0058 RenameDialog(QWidget *parent, 0059 const QString &title, 0060 const QUrl &src, 0061 const QUrl &dest, 0062 RenameDialog_Options options, 0063 KIO::filesize_t sizeSrc = KIO::filesize_t(-1), 0064 KIO::filesize_t sizeDest = KIO::filesize_t(-1), 0065 const QDateTime &ctimeSrc = QDateTime(), 0066 const QDateTime &ctimeDest = QDateTime(), 0067 const QDateTime &mtimeSrc = QDateTime(), 0068 const QDateTime &mtimeDest = QDateTime()); 0069 ~RenameDialog() override; 0070 0071 /** 0072 * @return the new destination 0073 * valid only if RENAME was chosen 0074 */ 0075 QUrl newDestUrl(); 0076 0077 /** 0078 * @return an automatically renamed destination 0079 * valid always 0080 */ 0081 QUrl autoDestUrl() const; 0082 0083 public Q_SLOTS: 0084 void cancelPressed(); 0085 void renamePressed(); 0086 void skipPressed(); 0087 void overwritePressed(); 0088 void overwriteAllPressed(); 0089 void overwriteWhenOlderPressed(); 0090 void resumePressed(); 0091 void resumeAllPressed(); 0092 void suggestNewNamePressed(); 0093 0094 protected Q_SLOTS: 0095 void enableRenameButton(const QString &); 0096 private Q_SLOTS: 0097 KIOWIDGETS_NO_EXPORT void applyAllPressed(); 0098 KIOWIDGETS_NO_EXPORT void showSrcIcon(const KFileItem &); 0099 KIOWIDGETS_NO_EXPORT void showDestIcon(const KFileItem &); 0100 KIOWIDGETS_NO_EXPORT void showSrcPreview(const KFileItem &, const QPixmap &); 0101 KIOWIDGETS_NO_EXPORT void showDestPreview(const KFileItem &, const QPixmap &); 0102 KIOWIDGETS_NO_EXPORT void resizePanels(); 0103 0104 private: 0105 KIOWIDGETS_NO_EXPORT QWidget *createContainerWidget(QLabel *preview, QLabel *SizeLabel, QLabel *DateLabel); 0106 0107 class RenameDialogPrivate; 0108 std::unique_ptr<RenameDialogPrivate> const d; 0109 }; 0110 0111 } 0112 0113 #endif