KIO
fileundomanager.cpp
39 static const char *const s_undoStateToString[] = {"MAKINGDIRS", "MOVINGFILES", "STATINGFILE", "REMOVINGDIRS", "REMOVINGLINKS"};
45 stream << op.m_valid << (qint8)op.m_type << op.m_renamed << op.m_src << op.m_dst << op.m_target << qint64(op.m_mtime.toMSecsSinceEpoch() / 1000);
76 dbg << "BasicOperation: type" << s_types[op.m_type] << "src" << op.m_src << "dest" << op.m_dst << "target" << op.m_target << "renamed" << op.m_renamed;
93 * move files -> works (TODO: optimize (change FileCopyJob to use the renamed arg for copyingDone)
119 d_ptr->m_message = i18n("Undoing this operation requires root privileges. Do you want to continue?");
132 Q_EMIT description(this, i18n("Creating directory"), qMakePair(i18n("Directory"), dir.toDisplayString()));
135 void emitMovingOrRenaming(const QUrl &src, const QUrl &dest, FileUndoManager::CommandType cmdType)
156 CommandRecorder::CommandRecorder(FileUndoManager::CommandType op, const QList<QUrl> &src, const QUrl &dst, KIO::Job *job)
165 connect(mkpathJob, &KIO::MkpathJob::directoryCreated, this, &CommandRecorder::slotDirectoryCreated);
167 connect(batchRenameJob, &KIO::BatchRenameJob::fileRenamed, this, &CommandRecorder::slotBatchRenamingDone);
176 qCDebug(KIO_WIDGETS) << "CommandRecorder::slotResult:" << job->errorString() << " - no undo command will be added";
195 void CommandRecorder::slotCopyingDone(KIO::Job *, const QUrl &from, const QUrl &to, const QDateTime &mtime, bool directory, bool renamed)
201 void CommandRecorder::slotCopyingLinkDone(KIO::Job *, const QUrl &from, const QString &target, const QUrl &to)
245 dbus.connect(QString(), dbusPath, dbusInterface, QStringLiteral("lock"), this, SLOT(slotLock()));
247 dbus.connect(QString(), dbusPath, dbusInterface, QStringLiteral("push"), this, SLOT(slotPush(QByteArray)));
248 dbus.connect(QString(), dbusPath, dbusInterface, QStringLiteral("unlock"), this, SLOT(slotUnlock()));
258 void FileUndoManager::recordJob(CommandType op, const QList<QUrl> &src, const QUrl &dst, KIO::Job *job)
385 QObject::connect(askUserInterface, &KIO::AskUserActionInterface::askUserDeleteResult, this, [=](bool allowDelete) {
483 const QDateTime mtime = QDateTime::fromSecsSinceEpoch(statJob->statResult().numberValue(KIO::UDSEntry::UDS_MODIFICATION_TIME, -1), Qt::UTC);
485 qCDebug(KIO_WIDGETS) << op.m_dst << "was modified after being copied. Initial timestamp" << mtime << "now" << op.m_mtime;
579 m_currentJob->uiDelegateExtension()->createClipboardUpdater(m_currentJob, JobUiDelegateExtension::UpdateContent);
720 bool FileUndoManager::UiInterface::copiedFileWasModified(const QUrl &src, const QUrl &dest, const QDateTime &srcTime, const QDateTime &destTime)
749 return uiDelegate.askDeleteConfirmation(files, KIO::JobUiDelegate::Delete, KIO::JobUiDelegate::ForceConfirmation);
777 static auto *askUserInterface = delegate ? delegate->findChild<AskUserActionInterface *>(QString(), Qt::FindDirectChildrenOnly) : nullptr;
@ Overwrite
When set, automatically overwrite the destination if it exists already.
Definition: job_base.h:290
Definition: jobuidelegate.h:39
Q_OBJECTQ_OBJECT
void append(const T &value)
void setParentWidget(QWidget *parentWidget)
Sets the parent widget to use for message boxes.
Definition: fileundomanager.cpp:757
bool connect(const QString &service, const QString &path, const QString &interface, const QString &name, QObject *receiver, const char *slot)
Interface for the gui handling of FileUndoManager.
Definition: fileundomanager.h:56
CopyMode operationMode() const
Returns the mode of the operation (copy, move, or link), depending on whether KIO::copy(),...
Definition: copyjob.cpp:2605
virtual void registerJob(KJob *job)
KIOCORE_EXPORT SimpleJob * rename(const QUrl &src, const QUrl &dest, JobFlags flags=DefaultFlags)
Rename a file or directory.
Definition: simplejob.cpp:363
KIOCORE_EXPORT SimpleJob * file_delete(const QUrl &src, JobFlags flags=DefaultFlags)
Delete a single file.
Definition: job.cpp:380
ReadOnly
virtual bool confirmDeletion(const QList< QUrl > &files)
Called when we are about to remove those files.
Definition: fileundomanager.cpp:744
ButtonCode warningContinueCancel(QWidget *parent, const QString &text, const QString &title=QString(), const KGuiItem &buttonContinue=KStandardGuiItem::cont(), const KGuiItem &buttonCancel=KStandardGuiItem::cancel(), const QString &dontAskAgainName=QString(), Options options=Notify)
UTC
Q_EMITQ_EMIT
void result(KJob *job)
quint64 newCommandSerialNumber()
These two functions are useful when wrapping FileUndoManager and adding custom commands.
Definition: fileundomanager.cpp:333
Type type(const QSqlDatabase &db)
The AskUserActionInterface class allows a KIO::Job to prompt the user for a decision when e....
Definition: askuseractioninterface.h:41
KJOBWIDGETS_EXPORT void setWindow(KJob *job, QWidget *widget)
Definition: fileundomanager.h:37
QDataStream & operator<<(QDataStream &out, const KDateTime &dateTime)
bool registerObject(const QString &path, QObject *object, QDBusConnection::RegisterOptions options)
void copyingLinkDone(KIO::Job *job, const QUrl &from, const QString &target, const QUrl &to)
The job is copying or moving a symbolic link, that points to target.
virtual void showErrorMessage()
bool kill(KillVerbosity verbosity=Quietly)
bool exists() const const
void setShowProgressInfo(bool b)
Sets whether to show progress info when running the KIO jobs for undoing.
Definition: fileundomanager.cpp:762
QMetaObject::Connection connect(const QObject *sender, const char *signal, const QObject *receiver, const char *method, Qt::ConnectionType type)
KJobUiDelegate * uiDelegate() const
void setWindow(QWidget *window) override
Associate this job with a window given by window.
Definition: jobuidelegate.cpp:168
Q_GLOBAL_STATIC(Internal::StaticControl, s_instance) class ControlPrivate
KIOCORE_EXPORT KJobTrackerInterface * getJobTracker()
Returns the job tracker to be used by all KIO jobs (in which HideProgressInfo is not set)
Definition: jobtracker.cpp:14
@ Put
Represents the creation of a file from data in memory. Used when pasting data from clipboard or drag-...
Definition: fileundomanager.h:135
KGuiItem cancel()
Dangerous
QWidget * parentWidget() const
Definition: fileundomanager.cpp:752
QString i18n(const char *text, const TYPE &arg...)
QDBusConnection sessionBus()
Definition: copyjob.h:53
RemoveFilename
void copyingDone(KIO::Job *job, const QUrl &from, const QUrl &to, const QDateTime &mtime, bool directory, bool renamed)
The job emits this signal when copying or moving a file or directory successfully finished.
void recordJob(CommandType op, const QList< QUrl > &src, const QUrl &dst, KIO::Job *job)
Record this job while it's happening and add a command for it so that the user can undo it.
Definition: fileundomanager.cpp:258
void recordCopyJob(KIO::CopyJob *copyJob)
Record this CopyJob while it's happening and add a command for it so that the user can undo it.
Definition: fileundomanager.cpp:265
FindDirectChildrenOnly
bool showProgressInfo() const
Definition: fileundomanager.cpp:767
QString toDisplayString(QUrl::FormattingOptions options) const const
void description(KJob *job, const QString &title, const QPair< QString, QString > &field1=QPair< QString, QString >(), const QPair< QString, QString > &field2=QPair< QString, QString >())
Definition: job_base.h:44
QString toString(qlonglong i) const const
virtual void jobError(KIO::Job *job)
Called when an undo job errors; default implementation displays a message box.
Definition: fileundomanager.cpp:715
KIOCORE_EXPORT KJobUiDelegate * createDefaultJobUiDelegate()
Convenience method: use default factory, if there's one, to create a delegate and return it.
Definition: jobuidelegatefactory.cpp:23
QueuedConnection
bool isEmpty() const const
bool isUndoAvailable() const
Definition: fileundomanager.cpp:297
KIOCORE_EXPORT FileCopyJob * file_move(const QUrl &src, const QUrl &dest, int permissions=-1, JobFlags flags=DefaultFlags)
Move a single file.
Definition: filecopyjob.cpp:644
UiInterface * uiInterface() const
Definition: fileundomanager.cpp:694
QDateTime toLocalTime() const const
T findChild(const QString &name, Qt::FindChildOptions options) const const
void setUiInterface(UiInterface *ui)
Set a new UiInterface implementation.
Definition: fileundomanager.cpp:689
long long numberValue(uint field, long long defaultValue=0) const
Definition: udsentry.cpp:381
ShortFormat
KIOFILEWIDGETS_EXPORT QString dir(const QString &fileClass)
Returns the most recently used directory associated with this file-class.
Definition: krecentdirs.cpp:47
@ UDS_MODIFICATION_TIME
The last time the file was modified. Required time format: seconds since UNIX epoch.
Definition: udsentry.h:259
bool invokeMethod(QObject *obj, const char *member, Qt::ConnectionType type, QGenericReturnArgument ret, QGenericArgument val0, QGenericArgument val1, QGenericArgument val2, QGenericArgument val3, QGenericArgument val4, QGenericArgument val5, QGenericArgument val6, QGenericArgument val7, QGenericArgument val8, QGenericArgument val9)
QUrl adjusted(QUrl::FormattingOptions options) const const
QDateTime fromSecsSinceEpoch(qint64 secs, Qt::TimeSpec spec, int offsetSeconds)
virtual bool copiedFileWasModified(const QUrl &src, const QUrl &dest, const QDateTime &srcTime, const QDateTime &destTime)
Called when dest was modified since it was copied from src.
Definition: fileundomanager.cpp:720
KGuiItem cont()
KIOCORE_EXPORT SimpleJob * rmdir(const QUrl &url)
Removes a single directory.
Definition: simplejob.cpp:336
Definition: statjob.h:25
QString i18nc(const char *context, const char *text, const TYPE &arg...)
void askUserDeleteResult(bool allowDelete, const QList< QUrl > &urls, KIO::AskUserActionInterface::DeletionType deletionType, QWidget *parent)
Implementations of this interface must emit this signal when the dialog invoked by askUserDelete() fi...
virtual void askUserDelete(const QList< QUrl > &urls, DeletionType deletionType, ConfirmationType confirmationType, QWidget *parent=nullptr)=0
Ask for confirmation before moving urls (files/directories) to the Trash, emptying the Trash,...
@ HideProgressInfo
Hide progress information dialog, i.e. don't show a GUI.
Definition: job_base.h:274
void jobRecordingStarted(CommandType op)
Emitted when a job recording has been started by FileUndoManager::recordJob() or FileUndoManager::rec...
@ BatchRename
Represents a KIO::batchRename() job. Used when renaming multiple files.
Definition: fileundomanager.h:137
void fileRenamed(const QUrl &oldUrl, const QUrl &newUrl)
Signals that a file was renamed.
void emitResult()
void directoryCreated(const QUrl &url)
Signals that a directory was created.
void undo()
Undoes the last command Remember to call uiInterface()->setParentWidget(parentWidget) first,...
Definition: fileundomanager.cpp:349
virtual QString errorString() const
KIOCORE_EXPORT StatJob * stat(const QUrl &url, JobFlags flags=DefaultFlags)
Find all details for one file or directory.
Definition: statjob.cpp:215
int error() const
KIOCORE_EXPORT SimpleJob * symlink(const QString &target, const QUrl &dest, JobFlags flags=DefaultFlags)
Create or move a symlink.
Definition: simplejob.cpp:370
QDataStream & operator>>(QDataStream &in, KDateTime &dateTime)
virtual void virtual_hook(int id, void *data)
Definition: fileundomanager.cpp:772
Notify
bool askDeleteConfirmation(const QList< QUrl > &urls, DeletionType deletionType, ConfirmationType confirmationType) override
Ask for confirmation before deleting/trashing urls.
Definition: jobuidelegate.cpp:229
virtual QVariant get(ScriptableExtension *callerPrincipal, quint64 objId, const QString &propName)
KIOCORE_EXPORT MkdirJob * mkdir(const QUrl &url, int permissions=-1)
Creates a single directory.
Definition: mkdirjob.cpp:110
This file is part of the KDE documentation.
Documentation copyright © 1996-2023 The KDE developers.
Generated on Tue Feb 7 2023 04:00:35 by doxygen 1.8.17 written by Dimitri van Heesch, © 1997-2006
Documentation copyright © 1996-2023 The KDE developers.
Generated on Tue Feb 7 2023 04:00:35 by doxygen 1.8.17 written by Dimitri van Heesch, © 1997-2006
KDE's Doxygen guidelines are available online.