┌   ┐
54
└   ┘

summaryrefslogtreecommitdiff
path: root/src/views
AgeCommit message (Collapse)Author
2025-10-25viewactionhandler: Group roles actions under KActionCategoryMéven Car
2025-10-25Revert "dolphinviewactionhandler: Improve text for roles actions"Méven Car
This reverts commit 4b7d49dfca757e28a659bd01614b8f3ee3a03fc0.
2025-10-23dolphinview: for samba use special placeholder only for /Méven Car
And no hostname set cases. For other invalid cases (invalid host, host unreachable), we get the Canceled Loading status. BUG: 509253
2025-10-23DolphinView: emit loadingCompleted at the end of the slotMéven Car
2025-10-23viewactionhandler: set parent to KActionMenu's menu with MenuButtonPopupMéven Car
Since the Menu will then be used in the chain of focused elements.
2025-10-03DolphinViewContainer, DolphinView: Fix incorrect view activation when ↵Wendi Gan
renaming folder Issue: In a split-view tab, if a folder is opened in the left view and its parent folder is opened in the right view, renaming the folder from the right view activates the left view. Reason: When renaming the folder, the emitted `DolphinView::urlChanged` will invoke `KUrlNavigator::setLocationUrl()`, which finally calls `DolphinViewContainer::setActive()` and activates the left view. Change: - Temporarily disconnect the `DolphinUrlNavigator::activated` signal to avoid activation of `DolphinViewContainer`. - Force inactivate `DolphinUrlNavigator`.
2025-10-03DolphinTabPage, DolphinView: Fix duplicate folder for MTP deviceWendi Gan
Issue: When opening an MTP device via the sidebar, Dolphin shows one "Internal shared storage" folder. However, clicking the entry again results in a duplicate folder being displayed. This regression was introduced by !865 (commit 6c7c047). Reason: The URL of an MTP device in the sidebar is `mtp:udi=/org/kde/solid/udev/sys/devices/...`. When clicking to open the MTP device, it is redirected to `mtp:/...`. - On the first click (no cache), `KCoreDirListerCache::slotUpdateResult()` calls `KCoreDirListerPrivate::emitItems()`. - On the second click (with cache), `KCoreDirListerCache::slotRedirection()` first calls `KCoreDirListerPrivate::emitItems()`. Besides, `DolphinTabPage::slotViewUrlRedirection()` calls `KCoreDirLister::openUrl()`, which triggers `CachedItemsJob::start()`, and eventually calls `KCoreDirListerPrivate::emitItems()` again. As a result, two `KCoreDirLister::itemsAdded` signals are emitted, causing `m_pendingItemsToInsert` to be appended twice. --- BUG 496414: Need to rename folder twice to make it reflect in the tab title. Reason: `m_url` is updated after emitting the `DolphinView::redirection` signal. It triggers `DolphinTabWidget::tabUrlChanged()`, which still uses the old URL and thus resets the tab title incorrectly. --- Change: - Revert the change in `DolphinTabPage::slotViewUrlRedirection()`. - Update `m_url` before `DolphinView::redirection` to fix BUG 496414. - Emit `DolphinView::urlChanged` signal to refresh the navigator of the inactive view. BUG: 506634 CCBUG: 497313 CCBUG: 496414
2025-09-26dolphinviewactionhandler: Improve text for roles actionsMéven Car
So that when those actions appear in toolbars or shortcut configuration, users can know what they correspond to.
2025-09-21dolphinview: position the focus after the last removed fileMéven Car
Previously, the code could misposition the selection after removal if the last file in the view was removed and several files were selected. And since it didn't clear the selection, the previous selection influence the selection. Instead clear the selection and position only the focus, either on the next item after the last index, or the last item still in the view if the last item was removed. BUG: 504490
2025-09-11dolphinview: add preferred sort order for rolesNathan Williams
BUG: 425457 This commit ensures that both the menu and column headers in table view will have the same default sorting (ascending/descending) for each role. It also saves the user's preferences for each role throughout the session. Previously, sorting by "Modified" would always sort by "Oldest First." If the user then changed to "Newest First" and sorted again by "Name," files would be sorted in reverse alphabetical order (Z-A). Now, sorting by "Modified" defaults to "Newest First." If a user switches between multiple roles, the default for each role will be used unless the user changes to a non-default sort order. In that case, the user's preference will be applied. Defaults: **Descending Order:** Time-based roles - modificationtime - creationtime - accesstime - deletiontime - imageDateTime - releaseYear Size/dimension roles - size - width - height - pageCount - wordCount - lineCount Quality/Quantity roles - rating - duration - bitrate - frameRate **Ascending order:** - Text based roles (A-Z) - All other roles
2025-09-03Fix several user-facing and non-user-facing typosKunda Ki
Found via `codespell -S "*.desktop,*.po,*.svg,*.xml,./po" -L aparent,childs,goup,lokal`
2025-08-26Warn when renaming a file would change its file typeKai Uwe Broulik
While the file's content won't change, applications may no longer recognize it.
2025-08-26KStandardItemListWidget: Use styleOption().iconSizeAkseli Lahtinen
We should use styleOption().iconSize instead of iconSize(), since the styleOption returns always the correct size depending on if we are showing previews or not. In DolphinItemListView we set the iconSize based on the previewSize or iconSize, and the styleOption().iconSize is whichever value it is here. KItemListWidget::iconSize always returns the settings.iconSize BUG: 508352
2025-08-19dolphinview: use QString::slice with Qt > 6.8Luc Schrijvers
QString::slice is preferable when available, as it does not allocate. Amends db92361e10f356ed0d1bf2dc7ea3453086ce876c
2025-08-17Fix Qt < 6.8 errorLuc Schrijvers
2025-07-02DolphinView: display errorMessage when copy errors occursMéven Car
when copying multiple files. CopyJob skip those by default (CopyJobPrivate::slotSubError), and emits warning. Hook this to errorMessage. We would need to improve this as only the last error Message will be visible. BUG: 506282
2025-07-02DolphinView: display errorMessage when copy errors occursMéven Car
when copying multiple files. CopyJob skip those by default (CopyJobPrivate::slotSubError), and emits warning. Hook this to errorMessage. We would need to improve this as only the last error Message will be visible. BUG: 506282
2025-06-29DolphinView: use correct slot as trashjob resultsMéven Car
When using the Delete action.
2025-06-28Add margins to the zoom menu entryGleb Kasachou
2025-06-27Combine the zoom menu entries into one LineGleb Kasachou
Replaced a KActionMenu that contained separate Zoom In, Zoom Out and Reset Zoom actions with a single QWidgetAction that provides the same functionality using three buttons arranged in a single line. Keyboard shortcuts for the three actions are preserved, and the actions still appear separately in the View submenu in the menubar.
2025-06-20New selection effectsAkseli Lahtinen
This adds a new selection effect that is similar to what we have in QtQuick file item views. There are also changes to some usability: Instead of only the icon and text being the clickable area in icon and details mode, the whole selection is now the clickable area. Otherwise the usability should stay the same, it's mostly a visual change. See also: https://invent.kde.org/teams/vdg/issues/-/issues/94
2025-06-09viewproperties: Fix leaking file descriptorsAkseli Lahtinen
File descriptors would keep leaking here since tempFile never gets deleted. This would be especially noticeable when browsing /tmp/ folder. This patch makes the QTemporaryFile an unique_ptr, so it gets deleted when it's out of scope. This also causes the files to be handled accordingly. BUG: 505215
2025-05-28dolphinview: Add a dynamic view optionVictor Blanchard
Added a 'dynamic view' option, which allows to switch from a 'compact' or 'details' view to an 'icons' view if most of the files in the directory are images or videos. It reverts to the previous view mode when we switch to a directory which doesn't meet that criteria. The view mode is only changed once so users don't have to undo that for specific folders when they don't want icon view. A setting is added in the "Display style" section of the general view setting page. BUG: 491139
2025-05-09DolphinView: Remove -1 interval, add setAutoActivationEnabledAkseli Lahtinen
In future Qt versions, Qt Timers do not allow negative intervals. Instead, they will be changed to 1. Related Qt commit: https://github.com/qt/qtbase/commit/f1f610bc67bfd5c2ef31270a6945e7bae93b5e4a Instead of relying on the interval, use a boolean variable to check if the autoactivation is enabled or not.
2025-05-02dolphinview: fix crashMéven Car
Correctly find the last element in the list instead of the one after the last Amends: 0464ea82a6850f58805bc4d6fc1df5369d83c3df BUG: 503610
2025-04-29Clazy fixMéven Car
2025-04-26DolphinView: Don't end anchored selection in updateSelectionStateAkseli Lahtinen
Do not end anchored selection when selection state is updated, such as when Dolphin is started with --select "thing.txt" flag. If we end here, and user wants to press shift to select from current item to X items, this would cause the anchored selection to start from the clicked item, not from the first selected item. BUG: 503221
2025-04-23DolphinView: If contextmenu is requested, abort twoClicksRenamingAkseli Lahtinen
When using single click to select, user can double click the file to start renaming it. If user at the same time also opens context menu, user can delete the file while the renaming prompt is open, which causes weirdness. This patch makes sure we abort the double click renaming when context menu is requested. BUG: 503185
2025-04-16Revert dd07a327 Move "Show in Groups" toggle action into Sort menuJin Liu
Now it's in the first level of the "View Settings" dropdown, no need to be nested in the "Sort" menu.
2025-04-16Add a new "view_settings" actionJin Liu
This should replace the "View Mode" button in the toolbar by default. Its dropdown menu contains more actions related to the view: zoom, sort by, show additional columns, show hidden files, grouping, show file previews. The original "view_mode" action is kept so the "Change View Mode" submenu in the main menu (or in the hamburger menu when this button is invisible) is unchanged.
2025-03-27Move "Show in Groups" toggle action into Sort menuNate Graham
This is the sort of thing a user might want to toggle temporarily, as sometimes grouping is a helpful visualization and sometimes not. Right now, doing that is easy when using the in-window menubar or the global menu: View > Show in Groups. However when using the default hamburger menu, it becomes difficult: Burger menu > More > View > Show in Groups. It's four levels of nesting and requires precision. This change addresses that by moving the action into the "Sort By" menu. This improves discoverability for people using the default UI, and makes the location of the action consistent for people using all UI styles. It also gets the item into the view context menu, where it currently isn't, providing another entry point for it.
2025-02-27dolphinview: Add widget parameter to elided QToolTip::showTextAkseli Lahtinen
Without this parameter the QToolTip can not always determine what is the parent, so it will create a toplevel window in those cases. Make sure we have dolphinview itself as a widget there, so QToolTip and thus QtWayland can resolve what is the parent. This avoids creating random windows when opening a tooltip. BUG:500009
2025-02-24Add smaller statusbar and set it as defaultAkseli Lahtinen
- Statusbar has three modes: Small, FullWidth and Disabled - FullWidth is the original statusbar - Small is the new default statusbar - This statusbar overlays on top of the items instead of taking space - It changes size according to content - Disabled turns statusbar completely off - Zoom slider and space information is only shown in full-width statusbar - Space information is now always on - If user navigates with keyboard, or scrolls to selection, the scrolling will take the statusbar into account - This makes sure the statusbar does not cover any items Related discussion: https://invent.kde.org/system/dolphin/-/issues/50
2025-02-08VersionControlObserver: start scanning earlierMéven Car
And avoid scanning directory that don't need it. Stops the working thread upon model change.
2025-02-08Viewproperties: prevent loosing view settingsMéven Car
When they match the hardcoded internal settings, when they should be kept as long as they don't match the currently set default viewproperties. Is saved in metadata the diff with the hardcoded internal defaults still. A stable default reference allows to change defaults without changing existing saved viewproperties. CCBUG: 495878
2025-02-03implement shortcut action for file creationChristian Schwarz
BUG: 462899
2025-01-30Change three view buttons into one with menu arrowAkseli Lahtinen
Instead of showing three buttons, which is quite visually noisy, show only one button that is split: First button, when clicked, loops through the view modes. Second smaller button with the down arrow shows menu of the available view modes. See also https://invent.kde.org/system/dolphin/-/issues/68#toolbar-button-changes Alternative for https://invent.kde.org/system/dolphin/-/merge_requests/893 ![Screencast_20250121_123718](/uploads/e8625c485c58a9c47e8168106b3e7419/Screencast_20250121_123718.mp4)
2025-01-17Refactor Overlay HandlingMéven Car
Now all overlays icons in kitemviews are added in KStandardItemListWidget::updatePixmapCache. data[iconOverlays] now contains icon names. DolphinFileItemListWidget::refreshCache is the sole responsible of setting the overlays either coming from KFileItemModelRolesUpdater or KVersionControlPlugin. This garantees consistency in rendering. BUG: 497372
2025-01-14ToolTipManager: double the size of the preview and use dprMéven Car
2024-12-29Mirror details view mode for right-to-left languagesFelix Ernst
This commit implements mirroring of the details view mode for right-to- left languages. This is the last of the Dolphin view modes which did not adapt to right-to-left languages correctly. Implementation-wise this is mostly about adapting the math so all the information is placed correctly no matter the view mode or layout direction. While most of the view actually changes the painting code for right-to-left languages, for the column header I decided to keep the logic left-to-right and instead reverse the order of the role columns. To implement this mirroring I needed to rework quite a bit of logic, so I used the opportunity to fix some bugs/behaviur quirks: - Left and right padding is now saved and restored separately instead of only saving the left padding - Changing the right padding no longer disables "automatic column resizing". - The grip handles for column resizing can now be grabbed when near the grip handle instead of only allowing grabbing when slightly to the left of the grip. - Role column headers now only show a hover highlight effect when the mouse cursor is actually above that role and not above the grip handle or the padding. - There is now a soft-boarder when shrinking the right padding so shrinking the padding "below zero width" will no longer immediately clear automatic resize behaviour. So now it is possible to simply remove the right padding by resizing it to zero width. BUG: 449211 BUG: 495942 # Acknowledgement This work is part of a my project funded through the NGI0 Entrust Fund, a fund established by NLnet with financial support from the European Commission's Next Generation Internet programme, under the aegis of DG Communications Networks, Content and Technology.
2024-12-29Have special keyboard controls in selection modeFelix Ernst
Prior to this commit keyboard controls and behaviour of Dolphin's main view were identical no matter if selection mode was enabled or not. While selection mode makes it impossible to accidentally clear the selection by singular mouse clicks, any press of an arrow key on the keyboard would still clear the full selection which goes against selection mode's objective. Furthermore, keyboard-only users had no reason to ever enable selection mode because it made no difference to them. This commit changes this by offering a changed control scheme for key presses while in selection mode. Arrow key presses without modifier now only move focus between items but do no longer clear or change the selection. Similarly, Page Up/Down, Home, and End key presses only move keyboard focus. Enter, Return, and Space key presses now only toggle the selection for the current item. The above controls are however mostly unchanged when combining them with Modifier keys like Shift or Control. The type-ahead feature is also changed in selection mode to only move keyboard focus without changing the selection. This way keyboard users are less likely to clear their selection by mistake. Regression tests are added for these selection mode controls. The code changes to change this keyboard behaviour are quite minimal. Most of the added code is for making selection mode accessible. That's because we need to make sure the changed control scheme is properly announced and communicated or a blind user will be left utterly confused why the normal keyboard controls "stopped working". Enabling or disabling selection mode is announced to accessibility software. Furthermore whenever focus goes to the main view, the selection mode state is also mentioned when active. BUG: 458091
2024-12-19dolphinview: Update thumbnail on filename changeAkseli Lahtinen
If filename of an item was updated previously, it would modify the model before the file was actually changed. This led to the model calling a signal that would try to run a previewjob, but since the filename is not actually changed yet on disk, it would fail. This patch moves the model updating after copyjob. Copyjob will take care of the file renaming if there is already existing file. We just need to update the model correctly after the job has succeeded. BUG:497555
2024-12-16ViewProperties: Return nullptr if viewPropertiesString is emptyAkseli Lahtinen
If viewPropertiesString is empty, return a nullptr. This will later used in the stack by the defaultProperties call. In defaultProperties, if we can't find the global directory, create new one with a tempfile. If tempfiles can't be created, use default instead. This will ensure that view settings are saved and loaded correctly if user has separate view properties per folder. This will also add an unit test, where we create a global directory, modify it and make sure the changes are reflected in the unmodified folder. BUG:495878
2024-12-05Adapt to Orca 47Felix Ernst
The screen reader Orca has seen some fundamental changes between Orca 46 and Orca 47. While they are improvements overall, they do require changes to Dolphin to preserve the intended user experience for Orca users. The biggest change is perhaps that Orca will now not only announce changes to the currently focused item, but also of its parent, which means we do not need to pass focus around between file items and the main view within Dolphin, but can keep focus on the file items most of the time. This commit implements this. The only exception of when we cannot have focus on the items within the main view is when the current location is empty or not loaded yet. Only then is the focus moved to the view itself and the placeholderMessage is announced. This commit worsens the UX for users of Orca 46 or older, so this should only be merged once most users are on Orca 47 or later.
2024-11-25Switch to C++20Méven Car
2024-11-25DolphinView: fix typos in signal connectionMéven Car
NO_CHANGELOG
2024-11-21DolphinView: beginAnchoredSelection after setSelected in selectNextItemAkseli Lahtinen
Currently when next item is set selected, it's not set as an anchor. This means that shift-click will not select items between the selection and the next item, and instead behaves like ctrl-click. This is rather inconsistent behavior. We should set the next selected item as an anchor so that shift-click will work: This change starts the `beginAnchoredSelection` process after `setSelection`. For example, if user trashes an item and the next item is selected, shift-click would stop working. BUG:495371
2024-10-28Overhaul main view accessibilityFelix Ernst
This commit brings the main view of Dolphin into a usable state accessibility-wise. Users of screen readers should have a way better experience while browsing files and folders and navigating along the file system hierarchy. This commit fixes most of the remaining already-identified accessibility issues listed in https://invent.kde.org/teams/accessibility/collaboration/-/issues/28, but not all. Namely, these should now be fixed: 1. Orca should read the element type in dolphin (file, folder, device, link to folder, link to file) 2. Orca should read complete label in icon and compact view mode, currently it only speaks the name, but there could be additional information like the number of elements or the file size. 3. Orca is not able to announce Selecting / Unselecting files in Dolphin. It also never announces how many items are selected in total. (Announcing the total selection can be done by reading out the view element or by pressing the Tab key to get to the status bar with the relevant information.) 4. Dolphin opens on the home directory, but Orca doesn't tell you so. Consider enclosing the area in a frame/panel which updates its accessible name each time you modify the current path by entering or leaving a directory. 5. I don't know what the folder presentation widget is, but it should be presented as a grid view. Currently, we have a terrible experience because the entire row of folders is read at once, with no indication that we can move left and right with the arrows to go between the elements of a row. When I found that out, however, I discovered that when you're on the last icon of the first row and press right arrow, you get to the first icon of the next row, but that's not announced, instead, the whole row is announced at once 6. Orca should announce the current elements instead of "layered pane" when the Folder / File view gets the focus in dolphin 7. Orca reads only name in Table View only of Dolphin 8. Items are sometimes confusingly announced as "collapsed" in contexts in which there is no concept of collapsing/expanding e.g. in icon view mode. A lot of code was moved around and renamed. The three accessibility classes, which all used to be in the same file, are moved into separate files. *Acknowledgement* Thanks to Christian Hempfling and bgt lover for testing as well as originally identifying a lot of the pain points being addressed here. This work is part of a my project funded through the NGI0 Entrust Fund, a fund established by NLnet with financial support from the European Commission's Next Generation Internet programme, under the aegis of DG Communications Networks, Content and Technology. https://kde.org/announcements/2024_ngi_openletter/
2024-10-27ViewProperties: Store view properties in extended file attributesMéven Car
Existing settings are converted. Works on most FS except FAT/exFAT which fallback to .directory files. If the extended file attributes (in ADS in Windows) can't be saved, they are saved to file as before. BUG: 322922 You can see file xattr using for instance for Unix filesystems: getfattr -d /home/meven
2024-10-12dolphinview: when rename dialog finishes, immediately update the model and ↵Jin Liu
the selection On sucessful return of the rename dialog, we update the model and the selection immediately to reflect the new name. This is to avoid the short duration after the rename during which the selection is lost. Currently, after the rename dialog finishes, the selection is briefly lost for about 1 second until the view automatically refreshes. This patch updates the model and selection immediately after the dialog finishes, so the renamed file is still selected. BUG: 481717