## Summary
* Adds a "Copy location" item, after the "Copy" Context item and Edit Menu, which will attempt to copy the path of the fist item into clipboard.
## Reasoning
Most File Managers have this option through one or another way.
Also using the default Copy option often results in different behaviour depending on the target software, Konsole will take the path. Other Programs will use the URI. Which ultimately could lead to non optimal User Experience.
## Notes
* Should the target file **not** be on a local hard drive, this fallback to using the remote URL, feedback is wanted on that matter.
Kai Uwe Broulik [Mon, 8 Jun 2020 20:45:27 +0000 (22:45 +0200)]
Generalize Player protocol support
In preparation for AFC support in KFilePlacesModel.
This needs to go into stable since otherwise once Solid announces
AFC devices Dolphin would see them but try to open them as MTP URL
Gastón Haro [Tue, 9 Jun 2020 17:03:30 +0000 (11:03 -0600)]
Provide ability to configure size cut-off for local file previews
Summary:
FileWidgets read from kdeglobals the property "MaximumSize" under "PreviewSettings" to decide if a preview will be generated for that file.
There is no current GUI to change that file size limit. On the other hand Dolphin ignores it.
This patch aims to fix that by adding new configuration options to Dolphin. That is a new spinbox in Dolphin settings under General -> Previews tab.
Test Plan:
1 - Set up a local folder with 2 jpg images of less and more than 1 MB respectively.
2 - Go to Dolphin Preferences. General -> Previews and check "JPEG Images" from
the list. And set "Skip previews for files above:" to 1MB.
3 - Navigate to the afore mentioned folder. Only the image of size less than 1 MB should
show a preview.
Nate Graham [Mon, 1 Jun 2020 15:58:25 +0000 (09:58 -0600)]
Show progress when duplicating items
For unknown reasons, when I implemented this feature, I turned off
progress notifications. I don't think this makes any sense, and we just
got a bug report about it.
Accordingly, this patches turns on progress notifications.
Elvis Angelaccio [Sun, 31 May 2020 21:43:46 +0000 (23:43 +0200)]
Fix FIFO usage
`m_propriorityQueue` and `m_queue` are used as FIFO queues, so we need
to use `takeFirst()` instead of `takeLast()` when removing elements
from the queue.
While at it, add a comment so that we will remember these are FIFO
queues.
Ahmad Samir [Sun, 31 May 2020 07:04:07 +0000 (09:04 +0200)]
[DolphinStatusBar] Fix free space info height with bigger fonts
When the font height is more than the zoom slider height, use the former
to set the fixed height of the free space widget on the status bar.
Otherwise the text is cut-off.
Elvis Angelaccio [Thu, 28 May 2020 20:40:57 +0000 (22:40 +0200)]
Port away from deprecated QFontMetrics::width()
While the documention says to port to QFontMetrics::horizontalAdvance(),
what we actually need is not the horizontal advance, but the width of
the text. So we need to port to QFontMetrics::boundingRect().width().
Quoting from https://kdepepo.wordpress.com/2019/08/05/about-deprecation-of-qfontmetricswidth/:
"Since it was not clear from the confusingly named function QFontMetrics::width()
that it actually returned the horizontal advance, instead of the bounding width,
this method is now obsolete.
You must port to either QFontMetrics::horizontalAdvance() or QFontMetrics::boundingRect().width().
Please make sure you are aware of the difference, and do not port
blindly. I am pretty sure that in most cases
QFontMetrics::boundingRect() is what you want, unless you are writing
custom text shaping/layouting code. Using the wrong function can cause
clipped text or text that suddenly wraps to the next line despite
calculating the width that it needs."
Adriaan de Groot [Thu, 28 May 2020 21:39:52 +0000 (23:39 +0200)]
Make ruby, and Gem:test-unit, optional
While this reduces test-coverage in cases where the user doesn't have
Ruby or the testing gem installed, it at least allows us to get
through configure and build without disabling **all** testing.
use KSycoca for updating OpenPreferredSearchTool action
Summary:
Remove all random updates of OpenPreferredSearchTool action, and
use KSycoca for updating it as discussed in https://phabricator.kde.org/D22594#663847
Enhancement for D29441 for bug #420911 caused by D22594.
The bug was fixed by D29442.
CCBUG: 420911
Test Plan:
```
$ cd ${KDE_INSTALL_DIR}/usr/share/applications
Elvis Angelaccio [Mon, 18 May 2020 22:22:26 +0000 (00:22 +0200)]
DolphinView: rename new methods to copy/move urls
DolphinView doesn't know anything about split views and it shouldn't.
Rename these new methods to what they actually do (just copy or move to a
given QUrl).
Nate Graham [Tue, 12 May 2020 20:17:51 +0000 (14:17 -0600)]
Move search and filter bar close buttons to the right
Summary:
Close buttons for windows, tabs, and pretty much everything else in KDE are on the right,
not the left. This patch makes Dolphin's search and filter bars follow that.
Added VCS plugins signals connections for outOfVersionControl() actions.
Summary:
Plugins can now do out of version control actions (D29041), so we need them to inform of their state.
This change connects every plugin signal to Dolphin on plugin instantiation.
Test Plan:
1. Try SVN Update of inaccessible repository: see SVN error message shows up.
2. Try pull inaccessible git repository: see GIT error message shows up.
3. Try SVN Commit: see SVN message.
Ahmad Samir [Tue, 24 Dec 2019 15:15:44 +0000 (17:15 +0200)]
Port QRegExp to QRegularExpression
Summary:
Port QRegExp::exactMatch() with QRegularExpression::anchoredPattern().
Port QRegExp::Wildcard with QRegularExpression::wildcardToRegularExpression().
Note that QRegularExpression::wildcardToRegularExpression() returns an anchored
pattern.
Test Plan:
Using the filter bar in dolphin works as before.
All unit tests pass, except:
- kfileitemmodeltest (which is unrelated AFAICS); it fails on master too
- placesitemmodeltest, which fails on master too
Kai Uwe Broulik [Wed, 6 May 2020 08:52:09 +0000 (10:52 +0200)]
Don't update preferred search action on window activation
I don't see why this is necessary and causes a blocking(!) StatJob every single time the window is focussed,
worse, ends up in an infinite loop when the window loses focus on an auth prompt.
Summary:
Previously, when a single item was selected and dragged, the
name would become unreadable when the text colour matched the
background colour it was dragged onto.
This is now fixed by not deselecting the item (and hence keeping
the highlighting around the text) before creating the pixmap for
dragging.
Kai Uwe Broulik [Tue, 5 May 2020 10:05:18 +0000 (12:05 +0200)]
Don't use local URL for KMoreTool
This method is called a billion times and spawns a blocking(!) StatJob.
KFind can search local URLs, too, so I don't see why this is necessary.
Either way, I'd rather have a non-KDE search tool broken than the app.
Ideally, I'd like this entire thing redone to use an async StatJob, if any.
Fwiw the KMoreTools in the free space bar doesn't use a local URL either.
Fixes Dolphin crash on "Defocus Terminal Panel" menu click if no Konsole is installed.
Summary:
Dolphin crashes if no Konsole is installed and user clicks menu action "Defocus Terminal Panel".
This fix is pretty straight forward.
Steps to reproduce:
1. Run Dolphin without Konsole available.
2. Press F4 to open console window.
3. Click in service menu "Focus Terminal Panel".
4. Click in service menu "Defocus Terminal Panel". Observe the crash.
Test Plan:
1. Run Dolphin without Konsole available.
2. Press F4 to open console window.
3. Click in service menu "Focus Teminal Panel".
4. Click in service menu "Defocus Terminal Panel".
5. Click in service menu "Focus Terminal Panel".
6. Press F4 to close console window.
Fixes Dolphin crash on "Defocus Terminal Panel" menu click if no Konsole is installed.
Summary:
Dolphin crashes if no Konsole is installed and user clicks menu action "Defocus Terminal Panel".
This fix is pretty straight forward.
Steps to reproduce:
1. Run Dolphin without Konsole available.
2. Press F4 to open console window.
3. Click in service menu "Focus Terminal Panel".
4. Click in service menu "Defocus Terminal Panel". Observe the crash.
Test Plan:
1. Run Dolphin without Konsole available.
2. Press F4 to open console window.
3. Click in service menu "Focus Teminal Panel".
4. Click in service menu "Defocus Terminal Panel".
5. Click in service menu "Focus Terminal Panel".
6. Press F4 to close console window.
Méven Car [Mon, 4 May 2020 05:26:26 +0000 (07:26 +0200)]
[Details mode] Allow to fill the column size of directories with actual size
Summary:
Allow to compute the recursive size of directories to fill the details view size column.
A setting allow to set a limit to the recursive level, allowing the user to have some power over the setting.
When sorting by size and the feature is on, we get progressive ordering as the directory size are gathered.
KDirectoryContentsCounter uses a cache internally to keep results so that it can display directory size faster, but counts the dir size of directories each time it is asked to count the size a directory nevertheless and when the size has changed, it is updated.
KDirectoryContentsCounter uses one worker per instance only, meaning one process per view makes the disk spin.
FIXED-IN: 20.08
BUG: 190580
BUG: 158090
Test Plan:
With some recursion allowed:
{F8267580}
Without any recursion allowed (default):
{F8267581}
Dolphin Service Menu Installer: Launch certain scripts in Konsole
Summary:
In general the issue with installers/uninstallers for the dolphin plugin is
that a lot of the scripts are intended to be run manually in a terminal.
For instance if a script uses `sudo make install` the user can't type in the password.
With this patch scripts that are executed without arg variants are
executed in konsole (if available).
Test Plan:
Tests still pass. Try to install the "Jetbrains Dolphin Plugin" tar.gz file from the kde store.
If you have the required dependencies etc. the konsole window should close.
If the install script fails (type in wrong admin password a couple of times) you
should have a shell opened.
Summary:
You can now filter the list of installed services.
This is especially useful if you install additional service menus
from the kde store, because one instalaton can add a lot of services.
For instance the ReImage plugin.
Test Plan:
Compiles, search for a service menu.
Only services matching the query will show up.
For VCS-plugin interface added pure virtual function outOfVersionControlActions()
Summary: This commit changes VCS-plugin interface in order to provide actions for unversioned items (for example clone or checkout repository), updates to dolphin-plugins comes in the separate commit D29042.
René Bertin [Mon, 27 Apr 2020 08:32:34 +0000 (10:32 +0200)]
prevent a QFileInfo warning
DolphinSearchBox::init() can generate a terminal warning depending on
the user's search history:
QFileInfo::absolutePath: Constructed with empty filename
The warning can seem to appear randomly if you don't use the search
feature often, because of its dependency on previous search activity.
Prevent this warning by adding a simple check if the current
m_searchPath is valid or not. This check has no effect on the value
returned by DolphinSearchBox::isIndexingEnabled() and is in line with
the fact that m_searchPath == QUrl() indicates that no search path has
been set.
Nate Graham [Fri, 19 Jul 2019 17:52:12 +0000 (11:52 -0600)]
Add an option to show tabs from last time when Dolphin starts
Summary:
All modern web browsers offer a function to show tabs from last time when a browser starts, and many apps today
restore their prior state when they're launched. This patch implements thatfunctionality as an option and turns it on by default.
The settings window is accordingly adjusted to be clear about what applies when:
Test Plan:
With the new setting turned off:
- No behavioral changes at all
With the new setting turned on:
- When launched from the GUI or CLI without any URLs, dolphin restores session
- When rebooting with Dolphin open, it restores session normally after the system comes back (i.e. no behavioral change here)
- When launched with URLs, Dolphin window is opened showing those URLs instead of restoring session
- When Dolphin is already running and a new window is opened, that new window shows a single tab with the same URL as was visible in the previously-open Dolphin instance (i.e. no behavioral change here)
- "Open Containing folder" functionality in other apps works regardless of whether or not Dolphin is running
Alexander Lohnau [Tue, 21 Apr 2020 16:44:48 +0000 (18:44 +0200)]
Dolphin Service Installer: Run uninstall scripts, rename methods
Summary:
Now scripts starting with `uninstall` are being executed.
Addtionally the `runInstallerScriptOnce` method has been renamed, because it is used to run the install/uninstall scripts.
Same for `runInstallerScript`.
Depends on D28801
Test Plan: Compile, run tests. Try to uninstall a dolphin service which has a uninstall.sh script.
Méven Car [Tue, 21 Apr 2020 07:20:27 +0000 (09:20 +0200)]
Information Panel: Make icons as big as previews
Summary:
Make icons match the preview size.
It prevents a user that had a wide information panel,
seeing a size difference between a preview and an icon despite they can look similar (i.e folder preview).
Nate Graham [Mon, 13 Apr 2020 18:27:40 +0000 (12:27 -0600)]
Use new "Show/Hide Hidden Files" standard shortcut
Summary:
Note that we lose the F8 shortcut since the KStandardShortcut added in XXXX can only
accommodate toew default shortcuts, and I thought Ctrl+H and Alt+. were the more important
ones. Hopefully that's not too high a price to pay.
Depends on D28802
Test Plan:
- Apply D28802 to kconfig
- Apply this patch to Dolphin, compile, and launch Dolphin
- Hit Ctrl+H or Alt+. and see that hidden files are shown or hidden as approproiate