Felix Ernst [Sun, 23 Jun 2019 19:19:49 +0000 (21:19 +0200)]
Add "What's This?" to nearly everything in the main window
Summary:
This commit adds "What's This?" help to nearly everything in the
Dolphin main window (panels, views, buttons, ...). It adds the "?"
to the title bar so this help can easily be called.
For links in those help texts to work the WhatsThisClickedEvents are
handled in the main window class. This doesn't work for menus because
events from them aren't forwarded to the main window for some
reason so EventFilters are installed for the Control button menus.
Modifying the "Help" menu of KXmlGui is deprecated so no EventFilter
can be installed in the menubar. Therefore help texts without links
are provided for the menubar.
Test Plan:
Check if the event handling might make any problems.
Check for any big mistakes in the help messages.
This would mach the same feature in the open/save dialog (although not equivalent)
{F6696456}
FEATURE: 378613
FIXED-IN: 19.08.0
GUI: New information panel context menu option
Test Plan:
Without auto play
- in dolphin with the information panel opened, and the auto media play feature is disabled (right on the information panel)
- hover over media files
- the behavior is the same as before the patch
With auto play
- in dolphin with the information panel opened, and the auto media play feature is enabled
- hover over media files
- media is played automatically
- hover over another media file, the new media is previewed
Adding option to open externally called folder in a new tab
Summary:
Adds an option to open externally called folder in a new tab.
By default this option is enabled
Test Plan:
If option selected:
1. All valid arguments passed to Dolphin should be opened in tabs of an instance(s) (if it exists). Duplicate tabs just change activation to current tab.
If option not selected:
1. All calls to Dolphin result in a new instance being opened
This option does not require Dolphin to be restarted to take effect.
Nate Graham [Sun, 23 Jun 2019 10:27:06 +0000 (12:27 +0200)]
Improve README documentation
Summary:
Previously, README contained nothing but a link to userbase. A separate HACKING.md
file had non-technical developer documentation, but nothing technical to guide
people in the right direction.
This patch consolidates all information in the README file and adds technical
information about how to develop Dolphin.
Currently Dolphin only opens a new instance of itself in the following two scenarios:
1. No other Dolphin instances ( D21666 deals with not matching daemonized instances) are currently running.
2. A new instance is explicitly asked for via: `dolphin --new-window`
A third scenario is needed to fix this bug:
3. If no URLs are passed in as arguments then open a new instance.
This patch adds this third scenario.
Test Plan:
STEPS TO REPRODUCE
1. Open Dolphin
2. Right-click on Dolphin's Task Manager Entry and click "Start New Instance"
3. A new instance is created.
As my system stuff is not built on master I am unable to replicate the bug (and can't confirm whether this fixes it), hence I'll rely on @ngraham to confirm whether this patch fixes the issue.
Tranter Madi [Tue, 4 Jun 2019 08:49:39 +0000 (15:49 +0700)]
Scroll when pressing PageUp/PageDown
Summary:
Add `PageUp/PageDown` to the `navigationPressed` variable.
Remove the `m_view->firstVisibleIndex()` and `m_view->lastVisibleIndex()` tests because sometimes it does not work correctly.
BUG: 407118
Test Plan:
Press PageUp/PageDOwn: it scrolls
Press Up/DOwn: it always scrolls
Thomas Posch [Mon, 3 Jun 2019 19:52:10 +0000 (21:52 +0200)]
Tighter match own service when trying to find suitable window to open path in.
Summary:
Current implementation matches org.kde.dolphin-.*PID while trying to exclude itself from the list of running instances.
With this fix applied only org.kde.dolphin-PID is matched.
Test Plan: Open dolphin twice. Observe only one window.
Open externally called files/directories in new tabs
Summary:
FEATURE: 183429
FIXED-IN: 19.08.0
GUI: new cli argument --new-window
Externally called files/directories are opened in a a new tab of an instance of Dolphin that already exists. If any of the given URIs are already open in a tab, then those tabs are activated instead of a new tab being opened. If there is no instance then the files/directories are opened in a new window. The newly opened file/directory has its tab activated, and consequently, the window is also activated.
When the user clicks "Open In New Window" or "Detach Tab", the files/directories are opened in a new window.
Test Plan:
[Manual]
Before testing, set the default file manager in system settings as the newly built Dolphin executable.
One must also include the new dolphin executable in the $PATH, otherwise some functions will attempt to open the system dolphin instead of the new one.
Furthermore, running two different versions of Dolphin (in particular, where one does not have this patch included) can result in bugs appearing, in particular, new tabs not opening as old instances will not recognise the DBus commands sent to it. However, I see no reason why a user will have two different versions of Dolphin (apart from people like us :D).
Open directories with the help of auxillary programs (i.e. a browser). The files/directories should appear in a new window if an instance does not exist. If an existence already exists, then a new tab should be opened and activated in that instance and the window activated.
Use QDBusViewer to open folders/items by calling the ShowFolders/ShowItems methods in org.freedesktop.FileManager1 of the Dolphin instance.
When a user chooses to "Open In New Window"/"Detach Tab" then the files/directories should be opened in a new window.
Nate Graham [Sun, 26 May 2019 03:32:13 +0000 (21:32 -0600)]
When filter bar is focused, switch to view when tab key is pressed
Summary:
Various people have requested that the tab key move keyboard focus from the filter bar's
text edit field to the main view. It already does this when the Enter and return keys
are pressed, but apparently this is not very intuitive and people expect Tab to work too.
This patch makes that behavior possible by moving the Lock button to the left of the
text edit field, and re-arranging the code so that the filter bar is initialized first.
This works because Qt assigns tab ordering by default according to the order of widget
construction. So if we simply construct the main view right after the filter bar, then
the tab ordering is set up this way automatically.
BUG: 403379
BUG: 403356
FIXED-IN: 19.08.0
Test Plan:
1. Activate Filter bar
2. Hit Tab key
3. View has become focused
4. Play around in Dolphin for a while and notice no regressions or crashes
Summary:
This adds support for Documents detection when included as a default
as implemented in D16852. This is a work-in-progress and currently
does not succeed.
Assistance is welcome.
Test Plan: Run ctest within the dolphin build directory.
Nate Graham [Fri, 19 Apr 2019 16:24:52 +0000 (10:24 -0600)]
Elide tab titles left so key information at the end of the string doesn't get cut off
Summary:
Tab Titles currently elide right. Generally the more useful information is at the right
side of the string--even more so when full paths are being used.
BUG: 406569
FIXED-IN: 19.04.2
Test Plan:
- No change when tab titles don't get elided
- When tabs show the full path and titles are elided, they're now useful: {F6782447}
- When tabs don't show the full path and are elided, they're elided on the other side which seems maybe a tiny bit better, but at least no worse: {F6782448}
David Hallas [Mon, 22 Apr 2019 17:40:16 +0000 (19:40 +0200)]
Summary: Fixes crash when hiding devices
Summary:
Fixes crash when hiding devices. The crash is caused by
KStandardItem::setDataValue which calls the
KStandardItemModel::onItemChanged function, and that function will
delete the KStandardItem if the data value being set is the hidden
attribute being set to true. To fix this KStandardItem now derives
QObject so that we can use deleteLater.
Test Plan:
Right click a device in the places panel and select hide
Right click the places panel and select show hidden
Right click the hidden device and select show
Right click the same device and select hide
David Hallas [Wed, 20 Mar 2019 19:29:20 +0000 (20:29 +0100)]
Add Bookmark Handling
Summary:
Add Bookmark Handling. Adds complete bookmark support as provided by
other KDE applications like Konsole and Konqueror. This allows you to
bookmark individual folders, create bookmark folders and open them.
Test Plan:
Go -> Bookmark -> Add Bookmark
Go -> Bookmark -> [Open the bookmark you selected]
[Inline Rename] Move cursor to correct position on pressing Home and End
Summary:
When pressing home or end key on a wrapped file name the cursor should move to beginning or end of the whole file name
instead of the last line (which is the default behaviour of any textedit widget).
Try again to fix PlacesItemModelTest::testDefaultViewProperties()
Commit bff373d598c031cb1 was not enough because the model takes into
account the global view properties setting (in PlacesItemModel::initializeDefaultViewProperties()).
This means we need to disable the setting before init() runs.
The StartupWMClass entry is needed because gnome-shell gets confused by
the mismatch between the desktop file basename ('org.kde.dolphin') and
the WM_CLASS window property ('dolphin').
Stefan Brüns [Sun, 14 Apr 2019 00:44:01 +0000 (02:44 +0200)]
[InformationPanel] Use the new inline configuration mode
Summary:
The current external configuration dialog has some issues:
- its layout is suboptimal, as its initial size is typically to small
- it is quite disassociated with the actual widget it configures, properties
have a different order, and the property names can be quite abstract
without the corresponding value.
Doing the visibility selection inline typically avoids the sizing problem,
as the containing application (dolphin) is often vertically maximized.
The selection becomes more obvious, as the item order is kept,
and the values are shown.
Stefan Brüns [Thu, 18 Apr 2019 12:37:09 +0000 (14:37 +0200)]
Fix missing update of file name label in information panel without preview
Summary:
The file name label was only updated when the preview was shown, after
the function was moved into a conditional section. This is a regression
caused by commit 405aa4878f75 ("[InformationPanel] Hide the video when the
preview is disabled, avoid computing the preview when it is disabled").
Test Plan:
Hide the preview in dolphin's information panel
Hover different files, the name label reflects the hovered file again
Nate Graham [Thu, 18 Apr 2019 13:43:09 +0000 (07:43 -0600)]
Fix adding "Create New..." menu to toolbar
Summary:
Access the object by its existing name rather than renaming it.
BUG: 405780
FIXED-IN: 19.04.1
Test Plan:
- Add {nav Create New} item to toolbar; it now works
- Verify that {nav Create New} menu and toolbar items are disabled when in the trash
- All tests still pass
Stefan Brüns [Thu, 18 Apr 2019 12:37:09 +0000 (14:37 +0200)]
Fix missing update of file name label in information panel without preview
Summary:
The file name label was only updated when the preview was shown, after
the function was moved into a conditional section. This is a regression
caused by commit 405aa4878f75 ("[InformationPanel] Hide the video when the
preview is disabled, avoid computing the preview when it is disabled").
Test Plan:
Hide the preview in dolphin's information panel
Hover different files, the name label reflects the hovered file again
Stefan Brüns [Sun, 14 Apr 2019 12:46:51 +0000 (14:46 +0200)]
Remove last traces of KFileMetaDataWidget from information panel
Summary:
The whole information panel is not included when Baloo is not found,
so there is no need for the HAVE_BALOO guards.
KFileMetaDataWidget and KFileMetaDataConfigurationWidget were never part
of KF5, see https://git.reviewboard.kde.org/r/113153/
Nate Graham [Mon, 8 Apr 2019 22:03:48 +0000 (16:03 -0600)]
Don't show "Open With" menu items for empty directories
Summary:
Any app that registers itself as able to open directories generally can't do anything
useful with an empty directory. So, don't show the {nav Open With} menu items for them.
Stefan Brüns [Sun, 7 Apr 2019 15:21:17 +0000 (17:21 +0200)]
Make buttons in seach bar nicer (icon, tooltip, autoselect)
Summary:
The "Everywhere" button actually selects the home directory, so use
an appropriate label ("Your files") and add a "user-home" icon.
Pre-select the right button when entering search, depending on the
location where the "Find ..." action was triggered.
Add tooltips for both buttons, stating where to look for files. Most
importantly, this includes the full path for "From here".
Canonicalize the path correctly (always strip trailing slash), otherwise
QUrl::fileName() will be an empty string, resulting in "From Here (/)"
Do not hide the buttons in case the url is non-local, as it is confusing:
1. The state depends on the previous search. When the user hits "Find"
when browsing e.g an SMB share, the search was probably in the home dir.
2. The current search location was hidden
3. The user may want to do a local search, give the option to do so.
Add HACKING file with 'Philosophy' paragraph from the Userbase page
https://userbase.kde.org/Dolphin has a 'Philosophy' paragraph (which
used to be a page on dolphin.kde.org) explaining when a new feature
should be added to dolphin. Userbase is a wiki aimed to actual user of
our applications, while this information is aimed to dolphin developers
who want to add a new feature to dolphin. Thus it is more appropriate to
have this paragraph in the git repo.
Méven Car [Sun, 24 Mar 2019 17:37:10 +0000 (18:37 +0100)]
When hovering over a file on the not-focus view panel, the information panel gets updated
Test Plan:
- In Dolphin with two views (split view) and with the information panels
- Hover over a file on the not selected view
- > the information panel show information about this file
Plasma considers khotkeys deprecated, so we shouldn't add new users
making the migration even harder.
Dolphin should use the `X-KDE-Shortcuts` desktop entry instead.
More details in David's comment: https://phabricator.kde.org/D19831#437096
Harald Sitter [Mon, 18 Mar 2019 14:37:52 +0000 (15:37 +0100)]
find ruby gems & make coverage conditional on BUILD_COVERAGE
Summary:
new finding tech:
- find_gem function configures gem-specific FindFoo files and wraps around
find_package
- FindFoo files look for ruby and then attempt to require the gem name
i.e. it checks if the gem can be successfully loaded by the interpreter
- since this is based on find_package it may be influenced in all the
regular ways (e.g. forced found or disabled from finding altogether
via CMAKE_DISABLE_FIND_PACKAGE_$PKGNAME)
various notes for the future:
- technically this isn't 100% correct because the require name of a gem and
the gem name may not be the same. e.g. the gem `docker-api` has the
require name `docker`. for all currently used gems the names are however
the same and so simply requiring the gem name is expected to work
- the implementation doesn't care about versions, again because we don't
need it to
- test-unit is a bundled gem, some distributions (e.g. Arch) do split it
out without making suitable dependency arrangements on a package level
though
the tech is heavily inspired by Aleix Pol's tech for finding QML modules
as seen in extra-cmake-modules
Test Plan:
- ruby not found: none of the modules found
- test-unit not present: error
- simplecov not prseent: never errors
- having a module installed or not is reported in the cmake output
Harald Sitter [Mon, 18 Mar 2019 14:23:20 +0000 (15:23 +0100)]
fix coverage generation when run through ctest
path construction is a bit disappointing and doesn't actually work all that
well for out-of-tree PWDs. in lieu of an upstream fix let's try our best
to get the correct coverage directory set. without this hack no results
get recorded unfortunately.
Harald Sitter [Tue, 26 Feb 2019 12:48:08 +0000 (13:48 +0100)]
redo service menu ruby helpers from ground up more or less
Summary:
- apply ruby community style guidelines
- full rewrite fixing, among other things:
- inefficient/unreadable String#end_with reimplementation
- inefficient use of Kernel.system (forked shell to fork a shell)
- inefficient/unreadable Dir.glob reimplementation
- inefficient File initialization for single chmod
- invocation conditions are now actually readable
- invocation conditions now also force +x on argless scripts, not just
scripts that need arguments
- repetitive conditions are now expressed as loops on argument arrays
- mime detection now uses xdg-mime instead of file (xdg-mime internally
may fall back to mime but will prefer higher level tools such as
kmimetypefinder5; giving better results overall)
- return values of "backtick forks" are now checked and will produce
suitable errors on stderr
- fail now takes a log_msg argument which is printed to stderr. this
is in addition to the error raised as notification for the user, as
that is unfortunately not so useful for diagnostics
- overall error handling and logging of problem causes is much improved
- add license headers. the original code was actually fairly exhaustive, so
this really should have had a header to begin with. the code was
originally introduced in svn r1045663 on Nov 6 14:56:35 2009 UTC
- add blackbox tests. in the interest of keeping the scripts actually
simple scripts (as opposed to a bunch of classes used by even simpler
scirpts) they are now also covered by test rigging which runs them as
scripts (again, as opposed to individual unit testing of distinct units)
- the tests optionally can use simplecov to gather coverage metrics
- also wired up to ctest so it actually gets run
structurally there is actually a fair amount of overlap between the two
scripts, but again, in the interest of keeping things simple I think it's
better to live with that instead of refactoring a shared library out of
it and then use heavy-duty meta-programming
Méven Car [Sun, 17 Mar 2019 20:21:33 +0000 (21:21 +0100)]
When the previewed video stops playing (because of the user or because the media playback has ended), show the regular preview only if the preview setting is on.
Test Plan:
In dolphin with the information panel
Select a video
Play the video
Disable the preview through the context menu (the video stays playing and visible and this will get fixed in a subsequent review)
Stop the video -> the video preview reappears when it should not