m_tabsForFiles(false),
m_assureVisibleCurrentIndex(false),
m_isFolderWritable(true),
+ m_dragging(false),
m_url(url),
m_mode(DolphinView::IconsView),
m_additionalInfoList(),
}
KItemListView* view = controller->view();
+ view->installEventFilter(this);
connect(view, SIGNAL(sortOrderChanged(Qt::SortOrder,Qt::SortOrder)),
this, SLOT(slotSortOrderChangedByHeader(Qt::SortOrder,Qt::SortOrder)));
connect(view, SIGNAL(sortRoleChanged(QByteArray,QByteArray)),
this, SLOT(slotSortRoleChangedByHeader(QByteArray,QByteArray)));
+ connect(view, SIGNAL(visibleRolesChanged(QList<QByteArray>,QList<QByteArray>)),
+ this, SLOT(slotVisibleRolesChangedByHeader(QList<QByteArray>,QList<QByteArray>)));
KItemListSelectionManager* selectionManager = controller->selectionManager();
connect(selectionManager, SIGNAL(selectionChanged(QSet<int>,QSet<int>)),
void DolphinView::readSettings()
{
const int oldZoomLevel = m_container->zoomLevel();
-
+
GeneralSettings::self()->readConfig();
m_container->readSettings();
applyViewProperties();
-
+
const int newZoomLevel = m_container->zoomLevel();
if (newZoomLevel != oldZoomLevel) {
emit zoomLevelChanged(newZoomLevel, oldZoomLevel);
}
break;
+ case QEvent::GraphicsSceneDragEnter:
+ if (watched == m_container->controller()->view()) {
+ m_dragging = true;
+ }
+ break;
+
+ case QEvent::GraphicsSceneDragLeave:
+ if (watched == m_container->controller()->view()) {
+ m_dragging = false;
+ }
+ break;
+
+ case QEvent::GraphicsSceneDrop:
+ if (watched == m_container->controller()->view()) {
+ m_dragging = false;
+ }
default:
break;
}
}
}
+void DolphinView::hideEvent(QHideEvent* event)
+{
+ hideToolTip();
+ QWidget::hideEvent(event);
+}
+
void DolphinView::activate()
{
setActive(true);
{
const KFileItem item = fileItemModel()->fileItem(index);
- if (GeneralSettings::showToolTips() && QApplication::mouseButtons() == Qt::NoButton) {
+ if (GeneralSettings::showToolTips() && !m_dragging) {
QRectF itemRect = m_container->controller()->view()->itemContextRect(index);
const QPoint pos = m_container->mapToGlobal(itemRect.topLeft().toPoint());
itemRect.moveTo(pos);
{
KUrl destUrl;
KFileItem destItem = fileItemModel()->fileItem(index);
- if (destItem.isNull()) {
+ if (destItem.isNull() || (!destItem.isDir() && !destItem.isDesktopFile())) {
+ // Use the URL of the view as drop target if the item is no directory
+ // or desktop-file
destItem = fileItemModel()->rootItem();
destUrl = url();
} else {
+ // The item represents a directory or desktop-file
destUrl = destItem.url();
}
emit sortingChanged(sorting);
}
+void DolphinView::slotVisibleRolesChangedByHeader(const QList<QByteArray>& current,
+ const QList<QByteArray>& previous)
+{
+ Q_UNUSED(previous);
+ Q_ASSERT(m_container->controller()->view()->visibleRoles() == current);
+
+ const QList<AdditionalInfo> previousAdditionalInfoList = m_additionalInfoList;
+
+ m_additionalInfoList.clear();
+ m_additionalInfoList.reserve(current.count());
+ const AdditionalInfoAccessor& infoAccessor = AdditionalInfoAccessor::instance();
+ foreach (const QByteArray& role, current) {
+ if (role != "name") {
+ m_additionalInfoList.append(infoAccessor.additionalInfo(role));
+ }
+ }
+
+ ViewProperties props(url());
+ props.setAdditionalInfoList(m_additionalInfoList);
+
+ emit additionalInfoListChanged(m_additionalInfoList, previousAdditionalInfoList);
+}
+
KFileItemModel* DolphinView::fileItemModel() const
{
return static_cast<KFileItemModel*>(m_container->controller()->model());
const Mode mode = props.viewMode();
if (m_mode != mode) {
- // Prevent an animated transition of the position and size of the items when switching
- // the view-mode by temporary clearing the model and updating it again after the view mode
- // has been modified.
- const bool restoreModel = (model->count() > 0);
- if (restoreModel) {
- const int currentItemIndex = m_container->controller()->selectionManager()->currentItem();
- if (currentItemIndex >= 0) {
- m_currentItemUrl = model->fileItem(currentItemIndex).url();
- }
- m_selectedUrls = selectedItems().urlList();
- model->clear();
- }
-
const Mode previousMode = m_mode;
m_mode = mode;
if (m_container->zoomLevel() != oldZoomLevel) {
emit zoomLevelChanged(m_container->zoomLevel(), oldZoomLevel);
}
-
- if (restoreModel) {
- loadDirectory(url());
- }
}
const bool hiddenFilesShown = props.hiddenFilesShown();