2 * SPDX-FileCopyrightText: 2024 Ahmet Hakan Çelik <mail@ahakan.com>
4 * SPDX-License-Identifier: GPL-2.0-or-later
7 #include "movetonewfolderitemaction.h"
10 #include <KLocalizedString>
11 #include <KPluginFactory>
12 #include <KNewFileMenu>
13 #include <KIO/CopyJob>
14 #include <KIO/JobUiDelegate>
15 #include <KIO/FileUndoManager>
19 K_PLUGIN_CLASS_WITH_JSON(MoveToNewFolderItemAction
, "movetonewfolderitemaction.json")
21 MoveToNewFolderItemAction::MoveToNewFolderItemAction(QObject
*parent
)
22 : KAbstractFileItemActionPlugin(parent
)
27 QList
<QAction
*> MoveToNewFolderItemAction::actions(const KFileItemListProperties
&fileItemInfos
, QWidget
*parentWidget
)
29 const KFileItemList
&selectedItems
= fileItemInfos
.items();
31 QAction
*createFolderFromSelected
= new QAction(i18nc("@action:inmenu", "Move to New Folder…"), parentWidget
);
32 createFolderFromSelected
->setIcon(QIcon::fromTheme(QStringLiteral("folder-new")));
33 connect(createFolderFromSelected
, &QAction::triggered
, this, [=, this]() {
34 QString selectedFileDirPath
= selectedItems
.at(0).url().toString().remove(selectedItems
.at(0).name());
35 if (selectedFileDirPath
.endsWith(QStringLiteral("/"))) {
36 selectedFileDirPath
.removeLast();
38 const QUrl
newFolderDirUrl(selectedFileDirPath
);
40 auto newFileMenu
= new KNewFileMenu(parentWidget
);
41 newFileMenu
->setWorkingDirectory(newFolderDirUrl
);
42 newFileMenu
->createDirectory();
44 connect(newFileMenu
, &KNewFileMenu::directoryCreated
, this, [=](const QUrl
&createdUrl
) {
45 KIO::CopyJob
*job
= KIO::move(selectedItems
.urlList(), createdUrl
);
46 KIO::FileUndoManager::self()->recordCopyJob(job
);
47 newFileMenu
->deleteLater();
51 return {createFolderFromSelected
};
54 #include "movetonewfolderitemaction.moc"
56 #include "moc_movetonewfolderitemaction.cpp"