// are listed which are registered to open the item. As last entry "Other..." will be
// attached which allows to select a custom application. If no applications are registered
// no sub menu is created at all, only "Open With..." will be offered.
- const KFileItemList* list = m_dolphinView->selectedItems();
- assert(list != 0);
+ const KFileItemList list = m_dolphinView->selectedItems();
bool insertOpenWithItems = true;
const QString contextMimeType(m_fileInfo->mimetype());
- QListIterator<KFileItem*> mimeIt(*list);
+ QListIterator<KFileItem*> mimeIt(list);
while (insertOpenWithItems && mimeIt.hasNext()) {
KFileItem* item = mimeIt.next();
insertOpenWithItems = (contextMimeType == item->mimetype());
if ((*it) == "all/allfiles") {
// The service type is valid for all files, but not for directories.
// Check whether the selected items only consist of files...
- const KFileItemList* list = m_dolphinView->selectedItems();
- assert(list != 0);
+ const KFileItemList list = m_dolphinView->selectedItems();
- QListIterator<KFileItem*> mimeIt(*list);
+ QListIterator<KFileItem*> mimeIt(list);
insert = true;
while (insert && mimeIt.hasNext()) {
KFileItem* item = mimeIt.next();
// Check whether the MIME types of all selected files match
// to the mimetype of the service action. As soon as one MIME
// type does not match, no service menu is shown at all.
- const KFileItemList* list = m_dolphinView->selectedItems();
- assert(list != 0);
+ const KFileItemList list = m_dolphinView->selectedItems();
- QListIterator<KFileItem*> mimeIt(*list);
+ QListIterator<KFileItem*> mimeIt(list);
insert = true;
while (insert && mimeIt.hasNext()) {
KFileItem* item = mimeIt.next();
#include "dolphiniconsview.h"
#include "dolphinview.h"
+#include <kdirmodel.h>
+#include <kfileitem.h>
+
DolphinIconsView::DolphinIconsView(DolphinView* parent) :
QListView(parent),
m_parentView( parent )
{
}
-void DolphinIconsView::mouseReleaseEvent(QMouseEvent *e)
+void DolphinIconsView::mousePressEvent(QMouseEvent* event)
+{
+ QListView::mousePressEvent(event);
+
+ if (event->button() != Qt::RightButton) {
+ return;
+ }
+
+ KFileItem* item = 0;
+
+ const QModelIndex index = indexAt(event->pos());
+ if (index.isValid()) {
+ KDirModel* dirModel = static_cast<KDirModel*>(model());
+ item = dirModel->itemForIndex(index);
+ }
+
+ m_parentView->openContextMenu(item, event->globalPos());
+}
+
+void DolphinIconsView::mouseReleaseEvent(QMouseEvent* event)
{
- QListView::mouseReleaseEvent(e);
+ QListView::mouseReleaseEvent(event);
m_parentView->declareViewActive();
}
virtual ~DolphinIconsView();
protected:
- void mouseReleaseEvent(QMouseEvent* event);
+ virtual void mousePressEvent(QMouseEvent* event);
+ virtual void mouseReleaseEvent(QMouseEvent* event);
private:
- DolphinView *m_parentView;
+ DolphinView* m_parentView;
};
#endif
void DolphinMainWindow::properties()
{
- const KFileItemList* sourceList = m_activeView->selectedItems();
- if (sourceList == 0) {
- return;
- }
-
- KFileItemList list;
- KFileItemList::const_iterator it = sourceList->begin();
- const KFileItemList::const_iterator end = sourceList->end();
- KFileItem* item = 0;
- while (it != end) {
- list.append(item);
- ++it;
- }
-
+ const KFileItemList list = m_activeView->selectedItems();
new KPropertiesDialog(list, this);
}
void DolphinMainWindow::updateEditActions()
{
- const KFileItemList* list = m_activeView->selectedItems();
- if ((list == 0) || (*list).isEmpty()) {
+ const KFileItemList list = m_activeView->selectedItems();
+ if (list.isEmpty()) {
stateChanged("has_no_selection");
}
else {
KAction* renameAction = actionCollection()->action("rename");
if (renameAction != 0) {
- renameAction->setEnabled(list->count() >= 1);
+ renameAction->setEnabled(list.count() >= 1);
}
bool enableMoveToTrash = true;
- KFileItemList::const_iterator it = list->begin();
- const KFileItemList::const_iterator end = list->end();
+ KFileItemList::const_iterator it = list.begin();
+ const KFileItemList::const_iterator end = list.end();
while (it != end) {
KFileItem* item = *it;
const KUrl& url = item->url();
#include "dolphinview.h"
-#include <kdirmodel.h>
+#include <QItemSelectionModel>
+#include <kdirmodel.h>
#include <qlayout.h>
//Added by qt3to4:
bool DolphinView::hasSelection() const
{
- const KFileItemList* list = selectedItems();
- return (list != 0) && !list->isEmpty();
+ return m_iconsView->selectionModel()->hasSelection();
}
-const KFileItemList* DolphinView::selectedItems() const
+KFileItemList DolphinView::selectedItems() const
{
- return 0; //fileView()->selectedItems();
+ QItemSelectionModel* selModel = m_iconsView->selectionModel();
+ assert(selModel != 0);
+
+ KFileItemList itemList;
+ if (selModel->hasSelection()) {
+ KDirModel* dirModel = static_cast<KDirModel*>(m_iconsView->model());
+ const QModelIndexList indexList = selModel->selectedIndexes();
+
+ QModelIndexList::const_iterator end = indexList.end();
+ for (QModelIndexList::const_iterator it = indexList.begin(); it != end; ++it) {
+ KFileItem* item = dirModel->itemForIndex(*it);
+ if (item != 0) {
+ itemList.append(item);
+ }
+ }
+ }
+ return itemList;
}
KUrl::List DolphinView::selectedUrls() const
{
KUrl::List urls;
- /*const KFileItemList* list = fileView()->selectedItems();
- if (list != 0) {
- KFileItemList::const_iterator it = list->begin();
- const KFileItemList::const_iterator end = list->end();
- while (it != end) {
- KFileItem* item = *it;
- urls.append(item->url());
- ++it;
- }
- }*/
+ const KFileItemList list = selectedItems();
+ KFileItemList::const_iterator it = list.begin();
+ const KFileItemList::const_iterator end = list.end();
+ while (it != end) {
+ KFileItem* item = *it;
+ urls.append(item->url());
+ ++it;
+ }
return urls;
}
// TODO: the following code is not suitable for languages where multiple forms
// of plurals are given (e. g. in Poland three forms of plurals exist).
QString text;
- const KFileItemList* list = selectedItems();
- assert((list != 0) && !list->isEmpty());
+ const KFileItemList list = selectedItems();
+ if (list.isEmpty()) {
+ // TODO: assert(!list.isEmpty()) should be used, as this method is only invoked if
+ // DolphinView::hasSelection() is true. Inconsistent behavior?
+ return QString();
+ }
int fileCount = 0;
int folderCount = 0;
KIO::filesize_t byteSize = 0;
- KFileItemList::const_iterator it = list->begin();
- const KFileItemList::const_iterator end = list->end();
+ KFileItemList::const_iterator it = list.begin();
+ const KFileItemList::const_iterator end = list.end();
while (it != end){
KFileItem* item = *it;
if (item->isDir()) {
bool hasSelection() const;
/**
- * Returns the selected items. 0 is returned, if no item
- * is selected.
+ * Returns the selected items. The list is empty if no item has been
+ * selected.
* @see DolphinView::selectedUrls()
*/
- const KFileItemList* selectedItems() const;
+ KFileItemList selectedItems() const;
/**
* Returns a list of Urls for all selected items. An empty list
// show the preview...
DolphinView* view = mainWindow()->activeView();
- const KFileItemList* selectedItems = view->selectedItems();
- if ((selectedItems != 0) && selectedItems->count() > 1) {
+ const KFileItemList selectedItems = view->selectedItems();
+ if (selectedItems.count() > 1) {
m_multipleSelection = true;
}
K3Icon::NoGroup,
K3Icon::SizeEnormous);
m_preview->setPixmap(icon);
- m_name->setText(i18n("%1 items selected",selectedItems->count()));
+ m_name->setText(i18n("%1 items selected",selectedItems.count()));
}
else if (!applyBookmark()) {
// try to get a preview pixmap from the item...
// of KFileItems. If no selection is given, a temporary KFileItem
// by the given Url 'url' is created and added to the list.
KFileItem fileItem(S_IFDIR, KFileItem::Unknown, m_shownUrl);
- KFileItemList localList;
- const KFileItemList* itemList = mainWindow()->activeView()->selectedItems();
- if ((itemList == 0) || itemList->isEmpty()) {
+ KFileItemList itemList = mainWindow()->activeView()->selectedItems();
+ if (itemList.isEmpty()) {
fileItem.refresh();
- localList.append(&fileItem);
- itemList = &localList;
+ itemList.append(&fileItem);
}
// 'itemList' contains now all KFileItems, where an item information should be shown.
if ((*it) == "all/allfiles") {
// The service type is valid for all files, but not for directories.
// Check whether the selected items only consist of files...
- QListIterator<KFileItem*> mimeIt(*itemList);
+ QListIterator<KFileItem*> mimeIt(itemList);
insert = true;
while (insert && mimeIt.hasNext()) {
KFileItem* item = mimeIt.next();
// Check whether the MIME types of all selected files match
// to the mimetype of the service action. As soon as one MIME
// type does not match, no service menu is shown at all.
- QListIterator<KFileItem*> mimeIt(*itemList);
+ QListIterator<KFileItem*> mimeIt(itemList);
insert = true;
while (insert && mimeIt.hasNext()) {
KFileItem* item = mimeIt.next();