1
0
mirror of https://invent.kde.org/system/dolphin synced 2024-07-04 17:30:55 +00:00

reanimated the context menu

svn path=/trunk/playground/utils/dolphin/; revision=609962
This commit is contained in:
Peter Penz 2006-12-02 21:51:36 +00:00
parent 4f951f75e2
commit c94276725b
7 changed files with 87 additions and 64 deletions

View File

@ -273,12 +273,11 @@ QList<QAction*> DolphinContextMenu::insertOpenWithItems(KMenu* popup,
// 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());
@ -359,10 +358,9 @@ QList<QAction*> DolphinContextMenu::insertActionItems(KMenu* popup,
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();
@ -374,10 +372,9 @@ QList<QAction*> DolphinContextMenu::insertActionItems(KMenu* popup,
// 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();

View File

@ -21,6 +21,9 @@
#include "dolphiniconsview.h"
#include "dolphinview.h"
#include <kdirmodel.h>
#include <kfileitem.h>
DolphinIconsView::DolphinIconsView(DolphinView* parent) :
QListView(parent),
m_parentView( parent )
@ -32,9 +35,28 @@ DolphinIconsView::~DolphinIconsView()
{
}
void DolphinIconsView::mouseReleaseEvent(QMouseEvent *e)
void DolphinIconsView::mousePressEvent(QMouseEvent* event)
{
QListView::mouseReleaseEvent(e);
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(event);
m_parentView->declareViewActive();
}

View File

@ -42,10 +42,11 @@ public:
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

View File

@ -589,20 +589,7 @@ void DolphinMainWindow::deleteItems()
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);
}
@ -1461,8 +1448,8 @@ void DolphinMainWindow::updateHistory()
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 {
@ -1470,13 +1457,13 @@ void DolphinMainWindow::updateEditActions()
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();

View File

@ -20,8 +20,9 @@
#include "dolphinview.h"
#include <kdirmodel.h>
#include <QItemSelectionModel>
#include <kdirmodel.h>
#include <qlayout.h>
//Added by qt3to4:
@ -480,29 +481,42 @@ const Q3ValueList<UrlNavigator::HistoryElem> DolphinView::urlHistory(int& index)
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;
}
@ -903,14 +917,18 @@ QString DolphinView::selectionStatusBarText() const
// 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()) {

View File

@ -210,11 +210,11 @@ public:
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

View File

@ -154,8 +154,8 @@ void InfoSidebarPage::showItemInfo()
// 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;
}
@ -165,7 +165,7 @@ void InfoSidebarPage::showItemInfo()
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...
@ -429,12 +429,10 @@ void InfoSidebarPage::insertActions()
// 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.
@ -458,7 +456,7 @@ void InfoSidebarPage::insertActions()
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();
@ -470,7 +468,7 @@ void InfoSidebarPage::insertActions()
// 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();