this, SLOT(slotErrorMessage(QString)));
connect(m_view, SIGNAL(itemActivated(KFileItem)),
this, SLOT(slotItemActivated(KFileItem)));
+ connect(m_view, SIGNAL(itemsActivated(KFileItemList)),
+ this, SLOT(slotItemsActivated(KFileItemList)));
connect(m_view, SIGNAL(tabRequested(KUrl)),
this, SLOT(createNewWindow(KUrl)));
connect(m_view, SIGNAL(requestContextMenu(QPoint,KFileItem,KUrl,QList<QAction*>)),
emit m_extension->openUrlRequest(item.targetUrl(), args, browserArgs);
}
+void DolphinPart::slotItemsActivated(const KFileItemList& items)
+{
+ foreach (const KFileItem& item, items) {
+ slotItemActivated(item);
+ }
+}
+
void DolphinPart::createNewWindow(const KUrl& url)
{
// TODO: Check issue N176832 for the missing QAIV signal; task 177399 - maybe this code
* Handles clicking on an item
*/
void slotItemActivated(const KFileItem& item);
+ /**
+ * Handles activation of multiple items
+ */
+ void slotItemsActivated(const KFileItemList& items);
/**
* Creates a new window showing the content of \a url.
*/
#include <KDesktopFile>
#include <KFileItemDelegate>
+#include <KFileItemActions>
#include <KFilePlacesModel>
#include <KLocale>
#include <KIconEffect>
connect(m_view, SIGNAL(writeStateChanged(bool)), this, SIGNAL(writeStateChanged(bool)));
connect(m_view, SIGNAL(requestItemInfo(KFileItem)), this, SLOT(showItemInfo(KFileItem)));
connect(m_view, SIGNAL(itemActivated(KFileItem)), this, SLOT(slotItemActivated(KFileItem)));
+ connect(m_view, SIGNAL(itemsActivated(KFileItemList)), this, SLOT(slotItemsActivated(KFileItemList)));
connect(m_view, SIGNAL(redirection(KUrl,KUrl)), this, SLOT(redirect(KUrl,KUrl)));
connect(m_view, SIGNAL(directoryLoadingStarted()), this, SLOT(slotDirectoryLoadingStarted()));
connect(m_view, SIGNAL(directoryLoadingCompleted()), this, SLOT(slotDirectoryLoadingCompleted()));
item.run();
}
+void DolphinViewContainer::slotItemsActivated(const KFileItemList& items)
+{
+ Q_ASSERT(items.count() >= 2);
+
+ KFileItemActions fileItemActions(this);
+ fileItemActions.runPreferredApplications(items, QString());
+}
+
void DolphinViewContainer::showItemInfo(const KFileItem& item)
{
if (item.isNull()) {
*/
void slotItemActivated(const KFileItem& item);
+ /**
+ * Handles activation of multiple files. The files get started by
+ * the corresponding applications.
+ */
+ void slotItemsActivated(const KFileItemList& items);
+
/**
* Shows the information for the item \a item inside the statusbar. If the
* item is null, the default statusbar information is shown.
{
Q_ASSERT(indexes.count() >= 2);
- KFileItemList items;
-
- QSetIterator<int> it(indexes);
- while (it.hasNext()) {
- const int index = it.next();
- items.append(m_model->fileItem(index));
- }
-
- if (items.count() > 5) {
- QString question = i18np("Are you sure you want to open 1 item?", "Are you sure you want to open %1 items?", items.count());
+ if (indexes.count() > 5) {
+ QString question = i18np("Are you sure you want to open 1 item?", "Are you sure you want to open %1 items?", indexes.count());
const int answer = KMessageBox::warningYesNo(this, question);
if (answer != KMessageBox::Yes) {
return;
}
}
- foreach (const KFileItem& item, items) {
- if (item.isDir()) {
+ KFileItemList items;
+ items.reserve(indexes.count());
+
+ QSetIterator<int> it(indexes);
+ while (it.hasNext()) {
+ const int index = it.next();
+ KFileItem item = m_model->fileItem(index);
+
+ if (item.isDir()) { // Open folders in new tabs
emit tabRequested(item.url());
} else {
- emit itemActivated(item);
+ items.append(item);
}
}
+
+ if (items.count() == 1) {
+ emit itemActivated(items.first());
+ } else if (items.count() > 1) {
+ emit itemsActivated(items);
+ }
}
void DolphinView::slotItemMiddleClicked(int index)
*/
void itemActivated(const KFileItem& item);
+ /**
+ * Is emitted when multiple items have been activated by e. g.
+ * context menu open with.
+ */
+ void itemsActivated(const KFileItemList& items);
+
/**
* Is emitted if items have been added or deleted.
*/