40
40
#include <lib/document/documentfactory.h>
41
41
#include <lib/thumbnailloadjob.h>
45
namespace FileOperations {
47
static void copyMoveOrLink(KonqOperations::Operation operation, const KUrl::List& urlList, QWidget* parent) {
48
Q_ASSERT(urlList.count() > 0);
51
KUrl("kfiledialog:///<copyMoveOrLink>"),
52
QString() /* filter */,
54
dialog.setOperationMode(KFileDialog::Saving);
56
case KonqOperations::COPY:
57
dialog.setCaption(i18nc("@title:window", "Copy To"));
58
dialog.okButton()->setText(i18nc("@action:button", "Copy"));
60
case KonqOperations::MOVE:
61
dialog.setCaption(i18nc("@title:window", "Move To"));
62
dialog.okButton()->setText(i18nc("@action:button", "Move"));
64
case KonqOperations::LINK:
65
dialog.setCaption(i18nc("@title:window", "Link To"));
66
dialog.okButton()->setText(i18nc("@action:button", "Link"));
71
if (urlList.count() == 1) {
72
dialog.setMode(KFile::File);
73
dialog.setSelection(urlList[0].fileName());
75
dialog.setMode(KFile::ExistingOnly | KFile::Directory);
81
KUrl destUrl = dialog.selectedUrl();
82
KonqOperations::copy(parent, operation, urlList, destUrl);
86
static void delOrTrash(KonqOperations::Operation operation, const KUrl::List& urlList, QWidget* parent) {
87
Q_ASSERT(urlList.count() > 0);
89
if (!KonqOperations::askDeleteConfirmation(urlList, operation, KonqOperations::DEFAULT_CONFIRMATION, parent)) {
94
// KonqOperations::delOrTrash() handles the confirmation and does not provide
95
// a way to know if the deletion has been accepted.
96
// We need to know about the confirmation so that DocumentFactory can forget
97
// about the deleted urls. That's why we can't use KonqOperations::delOrTrash()
99
case KonqOperations::TRASH:
100
job = KIO::trash(urlList);
103
case KonqOperations::DEL:
104
job = KIO::del(urlList);
108
kWarning() << "Unknown operation" << operation;
112
job->ui()->setWindow(parent);
114
Q_FOREACH(const KUrl& url, urlList) {
115
DocumentFactory::instance()->forget(url);
120
void copyTo(const KUrl::List& urlList, QWidget* parent) {
121
copyMoveOrLink(KonqOperations::COPY, urlList, parent);
125
void moveTo(const KUrl::List& urlList, QWidget* parent) {
126
copyMoveOrLink(KonqOperations::MOVE, urlList, parent);
130
void linkTo(const KUrl::List& urlList, QWidget* parent) {
131
copyMoveOrLink(KonqOperations::LINK, urlList, parent);
135
void trash(const KUrl::List& urlList, QWidget* parent) {
136
delOrTrash(KonqOperations::TRASH, urlList, parent);
140
void del(const KUrl::List& urlList, QWidget* parent) {
141
delOrTrash(KonqOperations::DEL, urlList, parent);
145
void showMenuForDroppedUrls(QWidget* parent, const KUrl::List& urlList, const KUrl& destUrl) {
146
if (urlList.isEmpty()) {
147
kWarning() << "urlList is empty!";
151
if (!destUrl.isValid()) {
152
kWarning() << "destUrl is not valid!";
157
QAction* moveAction = menu.addAction(
160
QAction* copyAction = menu.addAction(
163
QAction* linkAction = menu.addAction(
168
KIcon("process-stop"),
171
QAction* action = menu.exec(QCursor::pos());
174
if (action == moveAction) {
175
job = KIO::move(urlList, destUrl);
176
} else if (action == copyAction) {
177
job = KIO::copy(urlList, destUrl);
178
} else if (action == linkAction) {
179
job = KIO::link(urlList, destUrl);
184
job->ui()->setWindow(parent);
188
void rename(const KUrl& oldUrl, QWidget* parent) {
189
QString name = KInputDialog::getText(
190
i18nc("@title:window", "Rename") /* caption */,
191
i18n("Rename <filename>%1</filename> to:", oldUrl.fileName()) /* label */,
192
oldUrl.fileName() /* value */,
196
if (name.isEmpty() || name == oldUrl.fileName()) {
200
KUrl newUrl = oldUrl;
201
newUrl.setFileName(name);
202
KIO::SimpleJob* job = KIO::rename(oldUrl, newUrl, KIO::HideProgressInfo);
203
if (!KIO::NetAccess::synchronousRun(job, parent)) {
204
job->ui()->showErrorMessage();
207
ThumbnailLoadJob::moveThumbnail(oldUrl, newUrl);
46
namespace FileOperations
49
static void copyMoveOrLink(KonqOperations::Operation operation, const KUrl::List& urlList, QWidget* parent)
51
Q_ASSERT(urlList.count() > 0);
54
KUrl("kfiledialog:///<copyMoveOrLink>"),
55
QString() /* filter */,
57
dialog.setOperationMode(KFileDialog::Saving);
59
case KonqOperations::COPY:
60
dialog.setCaption(i18nc("@title:window", "Copy To"));
61
dialog.okButton()->setText(i18nc("@action:button", "Copy"));
63
case KonqOperations::MOVE:
64
dialog.setCaption(i18nc("@title:window", "Move To"));
65
dialog.okButton()->setText(i18nc("@action:button", "Move"));
67
case KonqOperations::LINK:
68
dialog.setCaption(i18nc("@title:window", "Link To"));
69
dialog.okButton()->setText(i18nc("@action:button", "Link"));
74
if (urlList.count() == 1) {
75
dialog.setMode(KFile::File);
76
dialog.setSelection(urlList[0].fileName());
78
dialog.setMode(KFile::ExistingOnly | KFile::Directory);
84
KUrl destUrl = dialog.selectedUrl();
85
KonqOperations::copy(parent, operation, urlList, destUrl);
88
static void delOrTrash(KonqOperations::Operation operation, const KUrl::List& urlList, QWidget* parent)
90
Q_ASSERT(urlList.count() > 0);
92
if (!KonqOperations::askDeleteConfirmation(urlList, operation, KonqOperations::DEFAULT_CONFIRMATION, parent)) {
97
// KonqOperations::delOrTrash() handles the confirmation and does not provide
98
// a way to know if the deletion has been accepted.
99
// We need to know about the confirmation so that DocumentFactory can forget
100
// about the deleted urls. That's why we can't use KonqOperations::delOrTrash()
102
case KonqOperations::TRASH:
103
job = KIO::trash(urlList);
106
case KonqOperations::DEL:
107
job = KIO::del(urlList);
111
kWarning() << "Unknown operation" << operation;
115
job->ui()->setWindow(parent);
117
Q_FOREACH(const KUrl & url, urlList) {
118
DocumentFactory::instance()->forget(url);
122
void copyTo(const KUrl::List& urlList, QWidget* parent)
124
copyMoveOrLink(KonqOperations::COPY, urlList, parent);
127
void moveTo(const KUrl::List& urlList, QWidget* parent)
129
copyMoveOrLink(KonqOperations::MOVE, urlList, parent);
132
void linkTo(const KUrl::List& urlList, QWidget* parent)
134
copyMoveOrLink(KonqOperations::LINK, urlList, parent);
137
void trash(const KUrl::List& urlList, QWidget* parent)
139
delOrTrash(KonqOperations::TRASH, urlList, parent);
142
void del(const KUrl::List& urlList, QWidget* parent)
144
delOrTrash(KonqOperations::DEL, urlList, parent);
147
void showMenuForDroppedUrls(QWidget* parent, const KUrl::List& urlList, const KUrl& destUrl)
149
if (urlList.isEmpty()) {
150
kWarning() << "urlList is empty!";
154
if (!destUrl.isValid()) {
155
kWarning() << "destUrl is not valid!";
160
QAction* moveAction = menu.addAction(
163
QAction* copyAction = menu.addAction(
166
QAction* linkAction = menu.addAction(
171
KIcon("process-stop"),
174
QAction* action = menu.exec(QCursor::pos());
177
if (action == moveAction) {
178
job = KIO::move(urlList, destUrl);
179
} else if (action == copyAction) {
180
job = KIO::copy(urlList, destUrl);
181
} else if (action == linkAction) {
182
job = KIO::link(urlList, destUrl);
187
job->ui()->setWindow(parent);
190
void rename(const KUrl& oldUrl, QWidget* parent)
192
QString name = KInputDialog::getText(
193
i18nc("@title:window", "Rename") /* caption */,
194
i18n("Rename <filename>%1</filename> to:", oldUrl.fileName()) /* label */,
195
oldUrl.fileName() /* value */,
199
if (name.isEmpty() || name == oldUrl.fileName()) {
203
KUrl newUrl = oldUrl;
204
newUrl.setFileName(name);
205
KIO::SimpleJob* job = KIO::rename(oldUrl, newUrl, KIO::HideProgressInfo);
206
if (!KIO::NetAccess::synchronousRun(job, parent)) {
207
job->ui()->showErrorMessage();
210
ThumbnailLoadJob::moveThumbnail(oldUrl, newUrl);