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

kget

  • sources
  • kde-4.14
  • 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 #include <KFileItem>
27 #include <kfileitemlistproperties.h>
28 #include <kfileitemactions.h>
29 
30 KMenu * ContextMenu::createTransferContextMenu(QList<TransferHandler*> transfers, QWidget *parent)
31 {
32  if (transfers.empty())
33  return 0;
34 
35  //First check whether all the transfers in the list belong to the same
36  //transferfactory
37  //bool sameFactory = true;
38 
39  /*QList<TransferHandler *>::iterator it = transfers.begin();
40  QList<TransferHandler *>::iterator itEnd = transfers.end();
41 
42  for(; (it!=itEnd) && (sameFactory) ; ++it)
43  {
44  //sameFactory = ( (*it)->m_transfer->factory() == //Port factory() to transferhandler
45  // transfers.first()->m_transfer->factory() );
46  }*/
47 
48  KMenu *popup = new KMenu(parent);
49  popup->addTitle(transfers.first()->dest().fileName());
50  //Get the transfer factory actions
51  QList<QAction*> actionList = transfers.first()->factoryActions();
52 // popup->addTitle( i18np("%1 Download selected", "%1 Downloads selected", transfers.count()) );
53 
54  //Plug all the actions in the popup menu
55  popup->addActions(transfers.first()->contextActions());
56  popup->addSeparator();
57  popup->addAction( KGet::actionCollection()->action("transfer_settings") );
58  popup->addSeparator();
59 
60  foreach (QAction * it, actionList)
61  {
62  //Plug each action in the popup menu
63  popup->addAction( it );
64  }
65 
66  if (!actionList.isEmpty())
67  popup->addSeparator();
68 
69 #ifdef HAVE_NEPOMUK
70  QList<KFileItem> items;
71  foreach (TransferHandler *transfer, KGet::selectedTransfers()) {
72  items << transfer->nepomukHandler()->fileItems();
73  }
74 
75  KMenu *nepomukMenu = new KMenu(i18n("Semantic Desktop"), parent);
76  nepomukMenu->setIcon(KIcon("nepomuk"));
77  QWidgetAction *nepomukWidgetAction = new QWidgetAction(parent);
78  Nepomuk2::FileMetaDataWidget *nepomukWidget = new Nepomuk2::FileMetaDataWidget(parent);
79  nepomukWidget->setItems(items);
80  nepomukWidgetAction->setDefaultWidget(nepomukWidget);
81  nepomukMenu->addAction(nepomukWidgetAction);
82  popup->addMenu(nepomukMenu);
83 #endif
84 
85  popup->addAction( KGet::actionCollection()->action("transfer_open_dest") );
86  //popup->addAction( KGet::actionCollection()->action("transfer_open_file") );
87  popup->addAction( KGet::actionCollection()->action("transfer_show_details") );
88  popup->addAction( KGet::actionCollection()->action("transfer_copy_source_url") );
89 
90  return popup;
91 }
92 
93 KMenu * ContextMenu::createTransferContextMenu(TransferHandler* handler, QWidget *parent)
94 {
95  KMenu *popup = ContextMenu::createTransferContextMenu(QList<TransferHandler*>() << handler, parent);
96 
97  // only shows the open with actions if the transfer is finished
98  if (handler->status() == Job::Finished || handler->status() == Job::FinishedKeepAlive) {
99  KFileItemList items;
100  items << KFileItem(KFileItem::Unknown, KFileItem::Unknown, handler->dest());
101 
102  KFileItemActions menuActions;
103 
104  menuActions.setItemListProperties(KFileItemListProperties(items));
105  menuActions.setParentWidget(parent);
106 
107  menuActions.addServiceActionsTo(popup);
108  menuActions.addOpenWithActionsTo(popup, "DesktopEntryName != 'kget'");
109 
110  // TODO : seems like the popup menu has to be showed while the KonqMenuActions instance exists ?
111  popup->exec(QCursor::pos());
112  popup->deleteLater();
113 
114  return 0;
115  }
116 
117  return popup;
118 }
119 
120 KMenu * ContextMenu::createTransferGroupContextMenu(TransferGroupHandler *handler, QWidget *parent)
121 {
122  if (!handler)
123  return 0;
124 
125  KMenu * popup = new KMenu(parent);
126  popup->addTitle(handler->name());
127 
128  popup->addActions(handler->actions());
129  popup->addSeparator();
130  popup->addAction(KGet::actionCollection()->action("transfer_group_settings"));
131  popup->addSeparator();
132 
133  QList<TransferGroupHandler *> transferGroups = KGet::selectedTransferGroups();
134  if (transferGroups.count() != KGet::allTransferGroups().count()) {
135  const int numGroups = transferGroups.count();
136  QAction *action = KGet::actionCollection()->action("delete_groups");
137  action->setText(i18np("Delete Group", "Delete Groups", numGroups));
138  popup->addAction(action);
139 
140  action = KGet::actionCollection()->action("rename_groups");
141  action->setText(i18np("Rename Group...", "Rename Groups...", numGroups));
142  popup->addAction(action);
143  }
144  popup->addAction( KGet::actionCollection()->action("seticon_groups") );
145  return popup;
146 }
QAction::setText
void setText(const QString &text)
TransferHandler::status
Job::Status status() const
Definition: transferhandler.h:64
QWidget
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
nepomukhandler.h
ContextMenu::createTransferGroupContextMenu
KMenu * createTransferGroupContextMenu(TransferGroupHandler *handler, QWidget *parent)
Definition: contextmenu.cpp:120
KGet::allTransferGroups
static QList< TransferGroupHandler * > allTransferGroups()
Gets all transfer-groups.
Definition: kget.cpp:668
transferfactory.h
QList::count
int count(const T &value) const
QWidgetAction
TransferHandler::dest
const KUrl & dest() const
Definition: transferhandler.h:98
QList::empty
bool empty() const
TransferGroupHandler::name
const QString & name()
Definition: transfergrouphandler.h:83
transfergrouphandler.h
QList::isEmpty
bool isEmpty() const
TransferGroupHandler::actions
const QList< QAction * > & actions()
Definition: transfergrouphandler.cpp:148
KGet::actionCollection
static KActionCollection * actionCollection()
Definition: kget.cpp:631
QList::first
T & first()
QList< TransferHandler * >
ContextMenu::createTransferContextMenu
KMenu * createTransferContextMenu(QList< TransferHandler * > transfer, QWidget *parent)
Definition: contextmenu.cpp:30
transferhandler.h
QCursor::pos
QPoint pos()
KGet::selectedTransfers
static QList< TransferHandler * > selectedTransfers()
Definition: kget.cpp:416
QWidgetAction::setDefaultWidget
void setDefaultWidget(QWidget *widget)
QAction
kget.h
This file is part of the KDE documentation.
Documentation copyright © 1996-2020 The KDE developers.
Generated on Mon Jun 22 2020 13:28:43 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