KItemListController* controller = m_container->controller();
controller->setSelectionBehavior(KItemListController::MultiSelection);
- connect(controller, SIGNAL(itemActivated(int)),
- this, SLOT(slotItemActivated(int)));
+ if (GeneralSettings::autoExpandFolders()) {
+ controller->setAutoActivationDelay(750);
+ }
+ connect(controller, SIGNAL(itemActivated(int)), this, SLOT(slotItemActivated(int)));
+ connect(controller, SIGNAL(itemsActivated(QSet<int>)), this, SLOT(slotItemsActivated(QSet<int>)));
connect(controller, SIGNAL(itemMiddleClicked(int)), this, SLOT(slotItemMiddleClicked(int)));
connect(controller, SIGNAL(itemContextMenuRequested(int,QPointF)), this, SLOT(slotItemContextMenuRequested(int,QPointF)));
connect(controller, SIGNAL(viewContextMenuRequested(QPointF)), this, SLOT(slotViewContextMenuRequested(QPointF)));
connect(controller, SIGNAL(headerContextMenuRequested(QPointF)), this, SLOT(slotHeaderContextMenuRequested(QPointF)));
- connect(controller, SIGNAL(itemExpansionToggleClicked(int)), this, SLOT(slotItemExpansionToggleClicked(int)));
connect(controller, SIGNAL(itemHovered(int)), this, SLOT(slotItemHovered(int)));
connect(controller, SIGNAL(itemUnhovered(int)), this, SLOT(slotItemUnhovered(int)));
connect(controller, SIGNAL(itemDropEvent(int,QGraphicsSceneDragDropEvent*)), this, SLOT(slotItemDropEvent(int,QGraphicsSceneDragDropEvent*)));
for (int index = 0; index < model->count(); index++) {
const KFileItem item = model->fileItem(index);
- if (pattern.exactMatch(item.name())) {
+ if (pattern.exactMatch(item.text())) {
// An alternative approach would be to store the matching items in a QSet<int> and
// select them in one go after the loop, but we'd need a new function
// KItemListSelectionManager::setSelected(QSet<int>, SelectionMode mode)
void DolphinView::setNameFilter(const QString& nameFilter)
{
- Q_UNUSED(nameFilter);
- //m_viewModeController->setNameFilter(nameFilter);
+ fileItemModel()->setNameFilter(nameFilter);
}
QString DolphinView::nameFilter() const
{
- return QString(); //m_viewModeController->nameFilter();
+ return fileItemModel()->nameFilter();
}
void DolphinView::calculateItemCount(int& fileCount,
void DolphinView::slotItemActivated(int index)
{
- Q_UNUSED(index);
+ const KFileItem item = fileItemModel()->fileItem(index);
+ if (!item.isNull()) {
+ emit itemActivated(item);
+ }
+}
- const KFileItemList items = selectedItems();
- if (items.isEmpty()) {
- return;
+void DolphinView::slotItemsActivated(const QSet<int>& indexes)
+{
+ Q_ASSERT(indexes.count() >= 2);
+
+ KFileItemList items;
+
+ KFileItemModel* model = fileItemModel();
+ QSetIterator<int> it(indexes);
+ while (it.hasNext()) {
+ const int index = it.next();
+ items.append(model->fileItem(index));
}
- if (items.count() == 1) {
- emit itemActivated(items.at(0)); // caught by DolphinViewContainer or DolphinPart
- } else {
- foreach (const KFileItem& item, items) {
- if (item.isDir()) {
- emit tabRequested(item.url());
- } else {
- emit itemActivated(item);
- }
+ foreach (const KFileItem& item, items) {
+ if (item.isDir()) {
+ emit tabRequested(item.url());
+ } else {
+ emit itemActivated(item);
}
}
}
delete menu.data();
}
-void DolphinView::slotItemExpansionToggleClicked(int index)
-{
- // TODO: When doing a model->setExpanded(false) it should
- // be checked here whether the current index is part of the
- // closed sub-tree. If this is the case, the current index
- // should be adjusted to the parent index.
- KFileItemModel* model = fileItemModel();
- const bool expanded = model->isExpanded(index);
- model->setExpanded(index, !expanded);
-}
-
void DolphinView::slotItemHovered(int index)
{
const KFileItem item = fileItemModel()->fileItem(index);
event->buttons(),
event->modifiers());
- DragAndDropHelper::dropUrls(destItem, url(), &dropEvent, this);
+ DragAndDropHelper::dropUrls(destItem, url(), &dropEvent);
}
void DolphinView::slotModelChanged(KItemModelBase* current, KItemModelBase* previous)
// Restore expanded folders (only relevant for the details view - will be ignored by the view in other view modes)
QSet<KUrl> urls;
stream >> urls;
- fileItemModel()->setExpanded(urls);
+ fileItemModel()->restoreExpandedUrls(urls);
}
void DolphinView::saveState(QDataStream& stream)
const int currentIndex = m_container->controller()->selectionManager()->currentItem();
if (currentIndex != -1) {
KFileItem item = fileItemModel()->fileItem(currentIndex);
+ Q_ASSERT(!item.isNull()); // If the current index is valid a item must exist
KUrl currentItemUrl = item.url();
stream << currentItemUrl;
} else {