Ilia Kats [Tue, 12 Jan 2021 18:24:31 +0000 (19:24 +0100)]
fix folder size calculation on FUSE and network file systems
KFileItem::isSlow uses hardcoded logic that returns true if the
filesystem is Smb or Nfs. However,
KFileSystemType::determineFileSystemTypeImpl on Linux returns Nfs also
if the file system in question is a FUSE file system, which includes
NTFS, sshfs, and others.
Antonio Rojas [Fri, 15 Jan 2021 17:02:03 +0000 (18:02 +0100)]
Don't show "Add network folder" button if knetattach is not available
knetattach is part of plasma-desktop, so it doesn't necessarily have to be installed.
In that case, instead of showing a button that doesn't do anything, don't show it at all.
Stefan Brüns [Mon, 28 Dec 2020 02:23:23 +0000 (03:23 +0100)]
[BalooRolesProvider] Use Property IDs instead of string matching
Instantiating KFileMetaDataInfo for each file and property, even when
the role is not used, is somewhat expensive and unnecessary. Use the
numeric Property ID to map it to a role, and only instantiate the used
PropertyInfo's.
Remove the properties provided by KFM::UserMetaData from the map, as
these will newer match.
Stefan Brüns [Mon, 28 Dec 2020 00:07:52 +0000 (01:07 +0100)]
[BalooRolesProvider] Reduce number of XAttr reads
Typically most of the extended attributes are not set for a file. Instead
of trying to fetch each attribute individually check which attributes
exist first.
Kai Uwe Broulik [Wed, 6 Jan 2021 19:16:31 +0000 (20:16 +0100)]
Emit "itemMiddleClicked" when Ctrl-clicking a view in single selection mode
When Ctrl can't cause a change in selection, so instead emit `itemMiddleClicked`.
This way one can Ctrl-click a Place or folder in Folders panel to open it in
a new tab, similar to what web browsers.
Nate Graham [Wed, 16 Dec 2020 06:03:00 +0000 (23:03 -0700)]
Show button to open knetattach inline with URL nav on Remote:// view
In conjunction with
https://invent.kde.org/frameworks/kio/-/merge_requests/260,
the net result is to hide the knetattach launcher in the view, and show
it inline with Dolphin's URL navigator toolbar when viewing the
remote:// view, just like how we add an "Empty Trash" button when
viewing trash://.
Felix Ernst [Wed, 6 Jan 2021 01:38:45 +0000 (01:38 +0000)]
Fix location bar being wrongly aligned on first startup
When starting Dolphin the very first time, the spacing in front of the
location bar is wrong. This commit fixes this by completely updating
all cached geometry every time adjustSpacing() is called. Because this
happens once on a timer 100 ms after every url change, it will happen
once shortly after the window is shown. At that point all geometry is
where it should be and spacing calculation works as expected.
The ViewContainer geometry retrieval is refactored into a small nested
helper class in DolphinNavigatorsWidgetAction by the name
ViewGeometriesHelper.
Previously the logic of that class was divided between DolphinTabPage
and DolphinNavigatorsWidgetAction.
Set the parent widget for any dialogs being shown.
This should normally be your mainwindow, not a popup menu, so that it still exists even after the popup is closed
(e.g. error message from KRun) and so that QAction::setStatusTip can find a statusbar, too.
Felix Ernst [Sat, 2 Jan 2021 17:48:52 +0000 (17:48 +0000)]
Animate split view mode toggling
Have the secondary ViewContainer slide into/out of view when split view mode is switched on or off by the user.
This should help users understand what split view mode is about. Without the animation it might seem like the only thing the button does is creating a weird vertical line in the middle of the view or something. With the animation it should be clear that the second view is a separate entity that was added. The closing animation will help users understand which of the ViewContainers was just closed.
This commit add options to hide the following context menu entries:
- Add to Places
- Copy Location
- Duplicate Here
- Open in New Tab and Open in New Tabs
- Open in New Window
- Sort By
- View Mode
The Services settings page is renamed to Context Menu
ShowCopyMoveMenu option is moved from GeneralSettings to ContextMenuSettings
Eike Hein [Mon, 28 Dec 2020 16:57:44 +0000 (17:57 +0100)]
Use a faster way to determine kio-stash isn't installed
Summary:
Dolphin needs to figure out whether or not kio-stash is installed
to set the enabled state of a UI action.
When KProtocolInfo::isKnownProtocol can't find a protocol it gets
worried its protocol cache might be out of date, so it rebuilds it
(doing plenty of disk I/O) and looks again. kio-stash is currently
not yet installed on many systems, so this means most Dolphin
startups out there.
This patch switches to using QDBusConnectionInterface::isServiceRegistered
instead to determine whether the stash notifier daemon is running,
which should be faster than doing disk I/O.
Nate Graham [Thu, 10 Dec 2020 22:16:12 +0000 (15:16 -0700)]
Make it more obvious that you can connect to servers on remote:/ page
Right now it is not super obvious how you connect to a remote server
in Dolphin when you already know the URL. Users will go to the
"Network" item in the Places panel, but from there it is not totally
clear. The "Add Network Folder" icon in the view opens a complicated
wizard and it's also a bit of an odd UX to have it living in the view as
opposed to being a toolbar button.
Old hands and developers know that the URL navigator is, well, a URL
navigator, and as such, it accepts arbitrary URLs from any view.
However this may not be obvious to other more casual users, for
two reasons:
1. The URL navigator is in breadcrumbs view nearly all of the time and
by default, so may users may not know that it can accept text at all
2. Even when it's displaying URLs, they are almost always local paths,
so users may not make the connection that it can accept remote URLs
rather that just local paths
To improve the discoverability of this feature, this commit makes the
following change:
When the view is displaying the remote:/ ioslave (i.e. the "Networks"
place), the URL navigator is put into URL entry mode and given some
placeholder text that hints at what it can do. It reverts to breadcrumbs
mode when you leave.
Derek Christ [Mon, 21 Dec 2020 12:08:12 +0000 (13:08 +0100)]
Allow non-local startup location
Only local directories were supported to be set as the starting location
of Dolphin. This commit fixes this by using an KIO::StatJob to determine
if the path is actually pointing to a directory or a file regardless if
it is a local or a remote path.
Additionaly a hard-coded exception for urls with the scheme "timeline"
was removed because with the new fix it is now obsolete.
Ahmad Samir [Mon, 14 Dec 2020 22:40:12 +0000 (00:40 +0200)]
Use setShowOpenOrExecuteDialog(true) with OpenUrlJob
It makes more sense for a file manager to always ask the user:
- whether to execute binaries
- whether to open an executable script as text or execute it
The openOrExecute dialog from KIOWidgets has a "don't ask again" checkbox,
and that setting is also accessible from Dolphin's settings dialog.
See the discussion at https://bugs.kde.org/show_bug.cgi?id=429839#c10
Méven Car [Fri, 4 Dec 2020 15:53:24 +0000 (16:53 +0100)]
ContextMenu: Allow plugins submenus to react to Shift modifiers
In 9e4642d435085f27134ed6c8431734dcacf65834 support was added for the
NewFileMenu.
This adds support for the Plugins submenu provided they relay their
parentWidget to their own menus.
The KDE CI does not have KDE_FULL_SESSION set, which means that KIO
doesn't add the recentlyused:// urls to the model, but defaults to the
old timeline:// urls instead.
In both cases KIO adds 2 places, so it is safe to always assume that the
expected model count is 14.
Nate Graham [Tue, 17 Nov 2020 23:15:57 +0000 (16:15 -0700)]
Add placeholder text for empty views
Throughout our QML-based software, we now display placeholder text for
empty views so that the user knows that the view is actually empty, and
it's not that the software is just broken.
This commit introduces the same thing for Dolphin's main view.
Derek Christ [Thu, 15 Oct 2020 21:11:17 +0000 (23:11 +0200)]
Fix delete action switching via 'Shift' when sub-context-menu is open
Switching the 'Move to Trash' action to 'Delete' using the shift key
does not work when the mouse hovers a submenu. This fix resolves the
issue by using an event filter instead of the key event functions.
Alexander Lohnau [Sun, 22 Nov 2020 21:19:21 +0000 (22:19 +0100)]
Move repetitive contextmenu related logic in one place
This makes a bit easier to handle the stuff.
Also we don't need the `addVersionControlPluginActions` utility method
and we can put it in the new utility method instead.