• Skip to content
  • Skip to link menu
KDE API Reference
  • KDE API Reference
  • kdenetwork API Reference
  • KDE Home
  • Contact Us
 

kget

  • sources
  • kde-4.12
  • kdenetwork
  • kget
  • ui
contextmenu.cpp
Go to the documentation of this file.
1 /* This file is part of the KDE project
2 
3  Copyright (C) 2004 Dario Massarin <nekkar@libero.it>
4  Copyright (C) 2008 Lukas Appelhans <l.appelhans@gmx.de>
5 
6  This program is free software; you can redistribute it and/or
7  modify it under the terms of the GNU General Public
8  License as published by the Free Software Foundation; either
9  version 2 of the License, or (at your option) any later version.
10 */
11 
12 #include "contextmenu.h"
13 
14 #ifdef HAVE_NEPOMUK
15  #include "nepomuk2/filemetadatawidget.h"
16  #include "core/nepomukhandler.h"
17 #endif
18 
19 #include "core/kget.h"
20 #include "core/plugin/transferfactory.h"
21 #include "core/transferhandler.h"
22 #include "core/transfergrouphandler.h"
23 #include <KMenu>
24 #include <QWidgetAction>
25 
26 #ifdef HAVE_KONQUEROR
27  #include <KFileItem>
28  #include <kfileitemlistproperties.h>
29  #include <konq_menuactions.h>
30 #endif
31 
32 KMenu * ContextMenu::createTransferContextMenu(QList<TransferHandler*> transfers, QWidget *parent)
33 {
34  if (transfers.empty())
35  return 0;
36 
37  //First check whether all the transfers in the list belong to the same
38  //transferfactory
39  //bool sameFactory = true;
40 
41  /*QList<TransferHandler *>::iterator it = transfers.begin();
42  QList<TransferHandler *>::iterator itEnd = transfers.end();
43 
44  for(; (it!=itEnd) && (sameFactory) ; ++it)
45  {
46  //sameFactory = ( (*it)->m_transfer->factory() == //Port factory() to transferhandler
47  // transfers.first()->m_transfer->factory() );
48  }*/
49 
50  KMenu *popup = new KMenu(parent);
51  popup->addTitle(transfers.first()->dest().fileName());
52  //Get the transfer factory actions
53  QList<QAction*> actionList = transfers.first()->factoryActions();
54 // popup->addTitle( i18np("%1 Download selected", "%1 Downloads selected", transfers.count()) );
55 
56  //Plug all the actions in the popup menu
57  popup->addActions(transfers.first()->contextActions());
58  popup->addSeparator();
59  popup->addAction( KGet::actionCollection()->action("transfer_settings") );
60  popup->addSeparator();
61 
62  foreach (QAction * it, actionList)
63  {
64  //Plug each action in the popup menu
65  popup->addAction( it );
66  }
67 
68  if (!actionList.isEmpty())
69  popup->addSeparator();
70 
71 #ifdef HAVE_NEPOMUK
72  QList<KFileItem> items;
73  foreach (TransferHandler *transfer, KGet::selectedTransfers()) {
74  items << transfer->nepomukHandler()->fileItems();
75  }
76 
77  KMenu *nepomukMenu = new KMenu(i18n("Semantic Desktop"), parent);
78  nepomukMenu->setIcon(KIcon("nepomuk"));
79  QWidgetAction *nepomukWidgetAction = new QWidgetAction(parent);
80  Nepomuk2::FileMetaDataWidget *nepomukWidget = new Nepomuk2::FileMetaDataWidget(parent);
81  nepomukWidget->setItems(items);
82  nepomukWidgetAction->setDefaultWidget(nepomukWidget);
83  nepomukMenu->addAction(nepomukWidgetAction);
84  popup->addMenu(nepomukMenu);
85 #endif
86 
87  popup->addAction( KGet::actionCollection()->action("transfer_open_dest") );
88  //popup->addAction( KGet::actionCollection()->action("transfer_open_file") );
89  popup->addAction( KGet::actionCollection()->action("transfer_show_details") );
90  popup->addAction( KGet::actionCollection()->action("transfer_copy_source_url") );
91 
92  return popup;
93 }
94 
95 KMenu * ContextMenu::createTransferContextMenu(TransferHandler* handler, QWidget *parent)
96 {
97  KMenu *popup = ContextMenu::createTransferContextMenu(QList<TransferHandler*>() << handler, parent);
98 
99 #ifdef HAVE_KONQUEROR
100  // only shows the open with actions if the transfer is finished
101  if (handler->status() == Job::Finished || handler->status() == Job::FinishedKeepAlive) {
102  KFileItemList items;
103  items << KFileItem(KFileItem::Unknown, KFileItem::Unknown, handler->dest());
104 
105  KonqMenuActions menuActions;
106 
107  menuActions.setItemListProperties(KFileItemListProperties(items));
108  menuActions.setParentWidget(parent);
109 
110  menuActions.addActionsTo(popup);
111  menuActions.addOpenWithActionsTo(popup, "DesktopEntryName != 'kget'");
112 
113  // TODO : seems like the popup menu has to be showed while the KonqMenuActions instance exists ?
114  popup->exec(QCursor::pos());
115  popup->deleteLater();
116 
117  return 0;
118  }
119 #endif
120 
121  return popup;
122 }
123 
124 KMenu * ContextMenu::createTransferGroupContextMenu(TransferGroupHandler *handler, QWidget *parent)
125 {
126  if (!handler)
127  return 0;
128 
129  KMenu * popup = new KMenu(parent);
130  popup->addTitle(handler->name());
131 
132  popup->addActions(handler->actions());
133  popup->addSeparator();
134  popup->addAction(KGet::actionCollection()->action("transfer_group_settings"));
135  popup->addSeparator();
136 
137  QList<TransferGroupHandler *> transferGroups = KGet::selectedTransferGroups();
138  if (transferGroups.count() != KGet::allTransferGroups().count()) {
139  const int numGroups = transferGroups.count();
140  QAction *action = KGet::actionCollection()->action("delete_groups");
141  action->setText(i18np("Delete Group", "Delete Groups", numGroups));
142  popup->addAction(action);
143 
144  action = KGet::actionCollection()->action("rename_groups");
145  action->setText(i18np("Rename Group...", "Rename Groups...", numGroups));
146  popup->addAction(action);
147  }
148  popup->addAction( KGet::actionCollection()->action("seticon_groups") );
149  return popup;
150 }
TransferHandler::status
Job::Status status() const
Definition: transferhandler.h:64
TransferHandler
Class TransferHandler:
Definition: transferhandler.h:48
Job::Finished
The job is stopped, but this also indicates that it stopped because an error occurred.
Definition: job.h:47
TransferGroupHandler
Definition: transfergrouphandler.h:30
contextmenu.h
KGet::selectedTransferGroups
static QList< TransferGroupHandler * > selectedTransferGroups()
Definition: kget.cpp:469
Job::FinishedKeepAlive
The job exited from its Running state successfully.
Definition: job.h:48
QWidget
nepomukhandler.h
ContextMenu::createTransferGroupContextMenu
KMenu * createTransferGroupContextMenu(TransferGroupHandler *handler, QWidget *parent)
Definition: contextmenu.cpp:124
KGet::allTransferGroups
static QList< TransferGroupHandler * > allTransferGroups()
Gets all transfer-groups.
Definition: kget.cpp:668
transferfactory.h
TransferHandler::dest
const KUrl & dest() const
Definition: transferhandler.h:98
TransferGroupHandler::name
const QString & name()
Definition: transfergrouphandler.h:83
transfergrouphandler.h
TransferGroupHandler::actions
const QList< QAction * > & actions()
Definition: transfergrouphandler.cpp:148
KGet::actionCollection
static KActionCollection * actionCollection()
Definition: kget.cpp:631
ContextMenu::createTransferContextMenu
KMenu * createTransferContextMenu(QList< TransferHandler * > transfer, QWidget *parent)
Definition: contextmenu.cpp:32
transferhandler.h
KGet::selectedTransfers
static QList< TransferHandler * > selectedTransfers()
Definition: kget.cpp:416
kget.h
This file is part of the KDE documentation.
Documentation copyright © 1996-2014 The KDE developers.
Generated on Tue Oct 14 2014 22:53:17 by doxygen 1.8.7 written by Dimitri van Heesch, © 1997-2006

KDE's Doxygen guidelines are available online.

kget

Skip menu "kget"
  • Main Page
  • Namespace List
  • Namespace Members
  • Alphabetical List
  • Class List
  • Class Hierarchy
  • Class Members
  • File List
  • File Members

kdenetwork API Reference

Skip menu "kdenetwork API Reference"
  • kget
  • kopete
  •   kopete
  •   libkopete
  • krdc
  • krfb

Search



Report problems with this website to our bug tracking system.
Contact the specific authors with questions and comments about the page contents.

KDE® and the K Desktop Environment® logo are registered trademarks of KDE e.V. | Legal