summaryrefslogtreecommitdiffstats
path: root/src/sq_navigatordropmenu.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/sq_navigatordropmenu.cpp')
-rw-r--r--src/sq_navigatordropmenu.cpp117
1 files changed, 117 insertions, 0 deletions
diff --git a/src/sq_navigatordropmenu.cpp b/src/sq_navigatordropmenu.cpp
new file mode 100644
index 0000000..efd629b
--- /dev/null
+++ b/src/sq_navigatordropmenu.cpp
@@ -0,0 +1,117 @@
+/***************************************************************************
+ sq_navigatordropmenu.cpp - description
+ -------------------
+ begin : ??? Feb 23 2005
+ copyright : (C) 2005 by Baryshev Dmitry
+ email : ksquirrel.iv@gmail.com
+ ***************************************************************************/
+
+/***************************************************************************
+ * *
+ * This program is free software; you can redistribute it and/or modify *
+ * it under the terms of the GNU General Public License as published by *
+ * the Free Software Foundation; either version 2 of the License, or *
+ * (at your option) any later version. *
+ * *
+ ***************************************************************************/
+
+#ifdef HAVE_CONFIG_H
+#include "config.h"
+#endif
+
+#include <tdelocale.h>
+#include <tdeaction.h>
+#include <tdeio/job.h>
+#include <kstringhandler.h>
+
+#include "ksquirrel.h"
+#include "sq_popupmenu.h"
+#include "sq_navigatordropmenu.h"
+
+SQ_NavigatorDropMenu * SQ_NavigatorDropMenu::m_instance= 0;
+
+SQ_NavigatorDropMenu::SQ_NavigatorDropMenu(TQObject *parent) : TQObject(parent)
+{
+ m_instance = this;
+
+ TDEActionCollection *ac = new TDEActionCollection(0, this, "Actions for drop menu");
+
+ dropmenu = new SQ_PopupMenu(0);
+
+ // "copy" action
+ TDEAction *pACopy = new TDEAction(i18n("Copy here"), "edit-paste", 0, this, TQ_SLOT(slotCopy()), ac, "sq_copy");
+
+ // "move" action
+ TDEAction *pAMove = new TDEAction(i18n("Move here"), 0, 0, this, TQ_SLOT(slotMove()), ac, "sq_move");
+
+ // "link" action
+ TDEAction *pALink = new TDEAction(i18n("Link here"), "www", 0, this, TQ_SLOT(slotLink()), ac, "sq_link");
+
+ // "cancel" action, this action will do nothing - just close popup menu
+ TDEAction *pACancel = new TDEAction(i18n("Cancel"), 0, 0, 0, 0, ac, "sq_cancel");
+
+ // plug all actions to popup menu
+ dropmenu->insertTitle(TQString());
+ pACopy->plug(dropmenu);
+ pAMove->plug(dropmenu);
+ pALink->plug(dropmenu);
+ dropmenu->insertSeparator();
+ pACancel->plug(dropmenu);
+}
+
+SQ_NavigatorDropMenu::~SQ_NavigatorDropMenu()
+{
+ delete dropmenu;
+}
+
+void SQ_NavigatorDropMenu::slotCopy()
+{
+ if(also) emit done(url, SQ_NavigatorDropMenu::Copy);
+
+ TDEIO::Job *job = TDEIO::copy(list, url);
+ connect(job, TQ_SIGNAL(result(TDEIO::Job *)), this, TQ_SLOT(slotJobResult(TDEIO::Job *)));
+}
+
+void SQ_NavigatorDropMenu::slotMove()
+{
+ if(also) emit done(url, SQ_NavigatorDropMenu::Move);
+
+ TDEIO::Job *job = TDEIO::move(list, url);
+ connect(job, TQ_SIGNAL(result(TDEIO::Job *)), this, TQ_SLOT(slotJobResult(TDEIO::Job *)));
+}
+
+void SQ_NavigatorDropMenu::slotLink()
+{
+ if(also) emit done(url, SQ_NavigatorDropMenu::Link);
+
+ TDEIO::Job *job = TDEIO::link(list, url);
+ connect(job, TQ_SIGNAL(result(TDEIO::Job *)), this, TQ_SLOT(slotJobResult(TDEIO::Job *)));
+}
+
+void SQ_NavigatorDropMenu::slotJobResult(TDEIO::Job *job)
+{
+ if(job && job->error())
+ job->showErrorDialog(KSquirrel::app());
+}
+
+/*
+ * Save destination url and urls of dropped files.
+ */
+void SQ_NavigatorDropMenu::setupFiles(const KURL::List &l, const KURL &u)
+{
+ list = l;
+ url = u;
+
+ dropmenu->changeTitle(KStringHandler::lsqueeze(u.isLocalFile() ? u.path() : u.prettyURL(), 20));
+}
+
+/*
+ * Show popup menu with available actions.
+ */
+void SQ_NavigatorDropMenu::exec(const TQPoint &pos, bool _also)
+{
+ also = _also;
+ dropmenu->exec(pos);
+}
+
+#include "sq_navigatordropmenu.moc"