return itemList;
}
-KUrl::List DolphinView::selectedUrls() const
-{
- KUrl::List urls;
- const KFileItemList list = selectedItems();
- foreach (const KFileItem &item, list) {
- urls.append(item.url());
- }
- return urls;
-}
-
int DolphinView::selectedItemsCount() const
{
const QAbstractItemView* view = m_viewAccessor.itemView();
// The selection model might change in the case of the column view. Disconnect
// from the current selection model and reconnect later after the URL switch.
+ const bool hadSelection = hasSelection();
QAbstractItemView* view = m_viewAccessor.itemView();
disconnect(view->selectionModel(), SIGNAL(selectionChanged(QItemSelection, QItemSelection)),
this, SLOT(slotSelectionChanged(QItemSelection, QItemSelection)));
view = m_viewAccessor.itemView();
connect(view->selectionModel(), SIGNAL(selectionChanged(QItemSelection, QItemSelection)),
this, SLOT(slotSelectionChanged(QItemSelection, QItemSelection)));
+ if (hadSelection || hasSelection()) {
+ emitSelectionChangedSignal();
+ }
}
void DolphinView::selectAll()
emit categorizedSortingChanged();
}
-void DolphinView::toggleSortOrder()
-{
- const Qt::SortOrder order = (sortOrder() == Qt::AscendingOrder) ?
- Qt::DescendingOrder :
- Qt::AscendingOrder;
- setSortOrder(order);
-}
-
-void DolphinView::toggleSortFoldersFirst()
-{
- setSortFoldersFirst(!sortFoldersFirst());
-}
-
-void DolphinView::toggleAdditionalInfo(QAction* action)
-{
- const KFileItemDelegate::Information info =
- static_cast<KFileItemDelegate::Information>(action->data().toInt());
-
- KFileItemDelegate::InformationList list = additionalInfo();
-
- const bool show = action->isChecked();
-
- const int index = list.indexOf(info);
- const bool containsInfo = (index >= 0);
- if (show && !containsInfo) {
- list.append(info);
- setAdditionalInfo(list);
- } else if (!show && containsInfo) {
- list.removeAt(index);
- setAdditionalInfo(list);
- Q_ASSERT(list.indexOf(info) < 0);
- }
-}
-
void DolphinView::mouseReleaseEvent(QMouseEvent* event)
{
QWidget::mouseReleaseEvent(event);
void DolphinView::emitSelectionChangedSignal()
{
- emit selectionChanged(DolphinView::selectedItems());
+ m_selectionChangedTimer->stop();
+ emit selectionChanged(selectedItems());
}
void DolphinView::openContextMenu(const QPoint& pos,
void DolphinView::createView()
{
- QAbstractItemView* view = m_viewAccessor.itemView();
- if ((view != 0) && (view->selectionModel() != 0)) {
- disconnect(view->selectionModel(), SIGNAL(selectionChanged(QItemSelection, QItemSelection)),
- this, SLOT(slotSelectionChanged(QItemSelection, QItemSelection)));
- }
-
deleteView();
Q_ASSERT(m_viewAccessor.itemView() == 0);
+ Q_ASSERT(m_dolphinViewController->itemView() == 0);
m_viewAccessor.createView(this, m_dolphinViewController, m_viewModeController, m_mode);
- view = m_viewAccessor.itemView();
+ QAbstractItemView* view = m_viewAccessor.itemView();
Q_ASSERT(view != 0);
view->installEventFilter(this);
view->viewport()->installEventFilter(this);
void DolphinView::deleteView()
{
QAbstractItemView* view = m_viewAccessor.itemView();
+ Q_ASSERT((m_dolphinViewController->itemView() == 0) || (m_dolphinViewController->itemView() == view));
+ m_dolphinViewController->setItemView(0);
+
if (view != 0) {
+ if (view->selectionModel() != 0) {
+ disconnect(view->selectionModel(), SIGNAL(selectionChanged(QItemSelection, QItemSelection)),
+ this, SLOT(slotSelectionChanged(QItemSelection, QItemSelection)));
+ }
+
// It's important to set the keyboard focus to the parent
// before deleting the view: Otherwise when having a split
// view the other view will get the focus and will request
setFocusProxy(0);
setFocus();
- m_topLayout->removeWidget(view);
- view->close();
-
- // disconnect all signal/slots
- disconnect(view);
m_viewModeController->disconnect(view);
- view->disconnect();
m_viewAccessor.deleteView();
}
KUrl::List DolphinView::simplifiedSelectedUrls() const
{
- KUrl::List list = selectedUrls();
- if (itemsExpandable() ) {
- list = KDirModel::simplifiedUrlList(list);
+ KUrl::List urls;
+
+ const KFileItemList items = selectedItems();
+ foreach (const KFileItem &item, items) {
+ urls.append(item.url());
+ }
+
+
+ if (itemsExpandable()) {
+ urls = KDirModel::simplifiedUrlList(urls);
}
- return list;
+
+ return urls;
}
QMimeData* DolphinView::selectionMimeData() const
void DolphinView::ViewAccessor::deleteView()
{
- QAbstractItemView* view = itemView();
- if (view != 0) {
- if (DragAndDropHelper::instance().isDragSource(view)) {
- // The view is a drag source (the feature "Open folders
- // during drag operations" is used). Deleting the view
- // during an ongoing drag operation is not allowed, so
- // this will postponed.
- if (m_dragSource != 0) {
- // the old stored view is obviously not the drag source anymore
- m_dragSource->deleteLater();
- m_dragSource = 0;
+ if (m_columnsContainer != 0) {
+ m_columnsContainer->close();
+ m_columnsContainer->disconnect();
+ m_columnsContainer->deleteLater();
+ m_columnsContainer = 0;
+ } else {
+ QAbstractItemView* view = itemView();
+ if (view != 0) {
+ view->close();
+ view->disconnect();
+
+ if (DragAndDropHelper::instance().isDragSource(view)) {
+ // The view is a drag source (the feature "Open folders
+ // during drag operations" is used). Deleting the view
+ // during an ongoing drag operation is not allowed, so
+ // this will postponed.
+ if (m_dragSource != 0) {
+ // the old stored view is obviously not the drag source anymore
+ m_dragSource->deleteLater();
+ m_dragSource = 0;
+ }
+ view->hide();
+ m_dragSource = view;
+ } else {
+ view->deleteLater();
+ view = 0;
}
- view->hide();
- m_dragSource = view;
- } else {
- view->deleteLater();
}
- }
- m_iconsView = 0;
- m_detailsView = 0;
-
- if (m_columnsContainer != 0) {
- m_columnsContainer->deleteLater();
+ m_iconsView = 0;
+ m_detailsView = 0;
}
- m_columnsContainer = 0;
}