1 /***************************************************************************
2 * Copyright (C) 2006 by Peter Penz <peter.penz@gmx.at> *
3 * Copyright (C) 2007 by David Faure <faure@kde.org> *
5 * This program is free software; you can redistribute it and/or modify *
6 * it under the terms of the GNU General Public License as published by *
7 * the Free Software Foundation; either version 2 of the License, or *
8 * (at your option) any later version. *
10 * This program is distributed in the hope that it will be useful, *
11 * but WITHOUT ANY WARRANTY; without even the implied warranty of *
12 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the *
13 * GNU General Public License for more details. *
15 * You should have received a copy of the GNU General Public License *
16 * along with this program; if not, write to the *
17 * Free Software Foundation, Inc., *
18 * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA *
19 ***************************************************************************/
21 #include "dolphindropcontroller.h"
24 #include <QApplication>
27 #include <konq_operations.h>
29 // TODO replace with KonqOperations::doDrop [or move doDrop code into this class]
30 // Note that this means changing the DolphinDropController controller usage
31 // to "create with new and let it autodelete" instead of on stack, since doDrop is async.
33 DolphinDropController::DolphinDropController(QWidget
* parentWidget
)
34 : QObject(parentWidget
), m_parentWidget(parentWidget
)
38 DolphinDropController::~DolphinDropController()
42 void DolphinDropController::dropUrls(const KUrl::List
& urls
,
43 const KUrl
& destination
)
45 kDebug() << "Source" << urls
;
46 kDebug() << "Destination:" << destination
;
48 Qt::DropAction action
= Qt::CopyAction
;
50 Qt::KeyboardModifiers modifier
= QApplication::keyboardModifiers();
51 const bool shiftPressed
= modifier
& Qt::ShiftModifier
;
52 const bool controlPressed
= modifier
& Qt::ControlModifier
;
53 if (shiftPressed
&& controlPressed
) {
54 // shortcut for 'Link Here' is used
55 action
= Qt::LinkAction
;
56 } else if (shiftPressed
) {
57 // shortcut for 'Move Here' is used
58 action
= Qt::MoveAction
;
59 } else if (controlPressed
) {
60 // shortcut for 'Copy Here' is used
61 action
= Qt::CopyAction
;
63 // open a context menu which offers the following actions:
69 KMenu
popup(m_parentWidget
);
71 QString seq
= QKeySequence(Qt::ShiftModifier
).toString();
72 seq
.chop(1); // chop superfluous '+'
73 QAction
* moveAction
= popup
.addAction(KIcon("go-jump"),
74 i18nc("@action:inmenu",
75 "&Move Here\t<shortcut>%1</shortcut>", seq
));
77 seq
= QKeySequence(Qt::ControlModifier
).toString();
79 QAction
* copyAction
= popup
.addAction(KIcon("edit-copy"),
80 i18nc("@action:inmenu",
81 "&Copy Here\t<shortcut>%1</shortcut>", seq
));
83 seq
= QKeySequence(Qt::ControlModifier
+ Qt::ShiftModifier
).toString();
85 QAction
* linkAction
= popup
.addAction(KIcon("insert-link"),
86 i18nc("@action:inmenu",
87 "&Link Here\t<shortcut>%1</shortcut>", seq
));
90 popup
.addAction(KIcon("process-stop"), i18nc("@action:inmenu", "Cancel"));
92 QAction
* activatedAction
= popup
.exec(QCursor::pos());
93 if (activatedAction
== moveAction
) {
94 action
= Qt::MoveAction
;
95 } else if (activatedAction
== copyAction
) {
96 action
= Qt::CopyAction
;
97 } else if (activatedAction
== linkAction
) {
98 action
= Qt::LinkAction
;
106 KonqOperations::copy(m_parentWidget
, KonqOperations::MOVE
, urls
, destination
);
107 emit
doingOperation(KonqFileUndoManager::MOVE
);
111 KonqOperations::copy(m_parentWidget
, KonqOperations::COPY
, urls
, destination
);
112 emit
doingOperation(KonqFileUndoManager::COPY
);
116 KonqOperations::copy(m_parentWidget
, KonqOperations::LINK
, urls
, destination
);
117 emit
doingOperation(KonqFileUndoManager::LINK
);
125 #include "dolphindropcontroller.moc"