Peter Penz [Wed, 20 Apr 2011 18:03:51 +0000 (20:03 +0200)]
Improve usability of Search Panel
If the Search Panel is shown outside the context of the "Find" mode it
will be always enabled and does a global search. Only if the user is in
the "Find" mode and the searching is restricted to the current directory
the Search Panel might get disabled if the current directory is not
indexed. This solves the major usability issue that it was not clear
for the users whether a global or restricted search is done.
Peter Penz [Fri, 15 Apr 2011 18:35:25 +0000 (20:35 +0200)]
Details view: Fix jumping column-widths
If the view has a width where a horizontal scrollbar is required to
show all columns, an endless loop might get triggered that results in a
periodic jumping of the column-widths.
Improve stability of unit tests when running them with Valgrind
I noticed unexpected unit test failures when running the tests with
Valgrind. The reason was that test execution was slowed down a lot,
such that that TestBase::waitForFinishedPathLoading() did not receive
the view's signal within the default timeout of 2 seconds, and that
this failure was not detected in every test -> the tests failed later
on because not all expected items had been loaded yet.
To fix this, I changed two things:
1. Added an assert in TestBase::waitForFinishedPathLoading() that checks
if the signal has been received. Continuing does not make much sense if
that is not the case.
2. Increased the default timeout to 20 seconds. The reason why there is
a finite timeout at all is that I didn't want to waste too much time on
machines where the file kioslave seems to have problems loading a
directory (I've seen corresponding test logs at cdash.org). However, with
the first change I mentioned above, the waiting time is lost only once
(due to the assert) rather than every time a directory is loaded
-> I think that the timeout increase does not lead to an increased waste
of time on such machines.
Peter Penz [Tue, 12 Apr 2011 18:01:31 +0000 (20:01 +0200)]
Let each DolphinMainWindow run in a custom process
A possible crash in one Dolphin window should not result in crashing
other Dolphin windows. Beside this it also prevents issues with
modal dialogs or notifications.
When navigating in Dolphin it attempts to keep any open Terminal (F4)
in sync by changing the directory in the shell. It does this by
sending a "^C; cd $DIRECTORY" however shells under FreeBSD treat "^C"
as a literal string and not SIGINT. Fix this by sending SIGINT to the
shell instead of "^C".
It appears Linux does not exhibit this behaviour.
Patch originally written by David Naylor, from the KDE-FreeBSD team.
Verify that the current item and the scroll position of the view do not
change if previews are turned off. Actually, the bug was in
KFilePreviewGenerator, but it's easier to test this here.
Peter Penz [Sun, 10 Apr 2011 16:32:53 +0000 (18:32 +0200)]
Readd KFind shortcut for the Dolphin KPart
When the searching has been integrated into Dolphin the "Find File..."
entry had been removed from the Tools menu. Readd it into the Dolphin
KPart so that it is still available for Konqueror.
Do not reload the DolphinView in the tests' initView() members
Rather than reloading the view after it is initilised, we just wait
until the view emits its finishedPathLoading() signal. This saves some
time when running the tests (at least on my system).
Add function TestBase::waitForFinishedPathLoading()
Many tests have to wait until this signal is received from the
DolphinView, so it is convenient to have a function that wraps
the QTest::kWaitForSignal() call.
This commit changes mainly two things:
1. The functionality related to the handling of temporary files and
folders is moved to a new class TestDir.
2. The setup of a temporary folder and of DolphinView instances is
now done in each unit test function. A benefit of this change is that
there are no unwanted interactions between different unit test functions
any more. Moreover, different test functions could now share a test
folder more easily.
Additionally, the reference arguments of all functions are changed to
pointers for consistency.
Peter Penz [Tue, 29 Mar 2011 16:35:50 +0000 (18:35 +0200)]
Readd the "go home" action
It got accidently lost during the menu-button changes. Also the
clearStatusBar() calls have been removed as this is handled in the
DolphinViewContainer internally since a long time already.
Peter Penz [Sun, 27 Mar 2011 17:27:27 +0000 (19:27 +0200)]
DolphinContextMenu: Show "Show menubar" entry if necessary
If the user has hidden the menubar and the toolbar there is no way to
get back the menu (at least not without knowing the Ctrl+M shortcut).
Show an entry in the context-menu to bring back the menubar.
Peter Penz [Sat, 26 Mar 2011 22:22:21 +0000 (23:22 +0100)]
Provide toolbar-menu when the menubar is hidden
Use a similar default UI like in Rekonq and other browsers: Hide the
menubar and add access to all actions by a button in the toolbar.
Of course it is still possible to show the menubar so that the same UI
is given like before.
Sebastian Dörner [Wed, 23 Mar 2011 23:45:14 +0000 (00:45 +0100)]
Make cursor keys always trigger a statusbar update
When the selection is changed using the cursor keys, the statusbar
should be updated. Until now, this didn't actually happen directly after
an operation ending in a OperationCompletedMessage, because the
OperationCompletedMessage was protected.
This patch changes the behaviour to only protect ErrorMessages in the
ViewContainer. When an OperationCompletedMessage was issued very
recently, it keeps being protected by DolphinStatusbar itself.
Statusbar updates in the ViewContainer are only triggered by
a) user actions (move keyboard focus, enter something in the filter bar)
b) finished filed jobs
In case a), the update is desired, also overriding
OperationCompletedMessages.
In case b), the OperationCompletedMessage issued by the file command is
issues so shortly before the call to updateStatusBar, that the
DolphinStatusBar skips the message anyway (see
DolphinStatusBar::setMessage).
Peter Penz [Tue, 22 Mar 2011 17:43:12 +0000 (18:43 +0100)]
Tooltip improvements
- Use the default style for drawing the tooltip background
- Get rid of the workaround to keep only one KFileMetaDataWidget instance. This is not required anymore as internally in KFileMetaDataWidget a process is used to get the metadata instead of a thread.
Peter Penz [Sat, 12 Mar 2011 17:45:59 +0000 (18:45 +0100)]
Details view optimization
Constructing a KColorScheme object is very expensive because of a number
of tint computations. When scrolling a big list more than 30 % of the
time was spent here. Instead, we can precompute and store the inactive
text color. (see https://git.reviewboard.kde.org/r/100826/)
Peter Penz [Thu, 10 Mar 2011 22:26:16 +0000 (23:26 +0100)]
Hide search-mode buttons in the read-only mode
When a searching has been triggered externally (e.g. by clicking on a tag) the search-mode settings like "From here"... are ignored and should not be shown at all. The current patch is only a quick workaround until a clean layout will be provided for this case.
Peter Penz [Thu, 10 Mar 2011 22:17:55 +0000 (23:17 +0100)]
Add search modes for the Search Panel
The search panel must get a hint whether clicking on the facets should result in searching everywhere or from the current folder. It is not sufficient to check the search-settings of the "Find:"-box, as when the "Find:"-box is invisible there is no hint for the user what kind of searching is done and the setting must be ignored.
Peter Penz [Thu, 10 Mar 2011 18:55:00 +0000 (19:55 +0100)]
Fix some search issues
- Always merge the query from the "Find:"-field with the current facet-query. This assures that the facet-query never gets overwritten if the user changes the "Find:"-field.
- Always trigger a searching if the text of the "Find:"-field has been cleared.
Still a lot of usability issues are left, but this is at least a first step...
Peter Penz [Tue, 8 Mar 2011 21:25:53 +0000 (22:25 +0100)]
Prevent unnecessary reloading of KDirLister on startup
When Dolphin is started with a directory as argument unnecessary reload operations of KDirListers are done. The patch improves this by just letting the DolphinView internally do a loading as soon as it gets visible (and without reloading). Also in case if only one directory is passed as argument the current tab gets reused instead of creating new tabs and removing the current tab.
Thanks a lot to David Faure for pointing out this unefficient handling.
Adjust text color to new emblem for unstaged files
The new emblem is green, not red, which should be reflected by the text
color. Now, all files that will be part of the next commit
(LocallyModifiedVersion and AddedVersion) are green and unstaged files
darkGreen.
Peter Penz [Mon, 28 Feb 2011 21:04:00 +0000 (22:04 +0100)]
Fix issue that wrong directory is shown
Commit 680009b522b2c9eda03201ac02dc18994b5a8bd0 resulted in a regression when switching from a view in the column-mode to a view in the icon- or details-mode: The wrong content has been shown. This patch reverts commit 680009b522b2c9eda03201ac02dc18994b5a8bd0 and solves the performance-issue in combination with previews by triggering the preview-generation in a queued way.
Peter Penz [Fri, 25 Feb 2011 19:39:18 +0000 (20:39 +0100)]
Allow to configure thumbnail-plugins
Adjust the preview-settings to allow users to configure thumbnail-plugins. For consistency also the service-settings have been adjusted to use the ServiceModel and ServiceItemDelegate.
Peter Penz [Sun, 13 Feb 2011 12:19:12 +0000 (13:19 +0100)]
Improve performance when turning on the preview mode
If a change from a directory with disabled previews is done to a directory with enabled previews, also previews are generated for the previous directory as the preview-generator still contains the not updated directory lister. Because of this it is important to apply the view-properties after the directory-lister has been updated.
Peter Penz [Wed, 9 Feb 2011 21:05:38 +0000 (22:05 +0100)]
Assure that RETURN emits itemTriggered() for one file
If only one file is selected, pressing RETURN should behave similar like triggering the item with the mouse. For this the signal itemTriggered() must be emitted.
Peter Penz [Sat, 5 Feb 2011 22:33:08 +0000 (23:33 +0100)]
Provide a hook for externally triggered search queries
In this case the "From Here"/"Everywhere" buttons and the "Filename"/"Content" buttons are useless. Currently they just get disabled but the plan is to provide a better visual indication of the current query and to remove them completely.
Peter Penz [Wed, 2 Feb 2011 18:36:08 +0000 (19:36 +0100)]
Fix visibility- and enabled-issues for the filter-panel
The filter-panel should be disabled if the current folder is not indexed at all. Also when triggering a "Find" the filter-panel should stay invisible per default when the current folder is not indexed.
Up to now, some Columns View tests that need a folder to be displayed
in the view only passed if they were run first: The first test always
passed, and if a test name was passed on the command line, such that
only this test would be run, this test would work as well. In other
cases, the view was empty, not showing the items in the folder.
The problem is worked around by creating a new DolphinView before each
test in the case of the Columns View. Added a TODO comment to make me
remember to look into this again at some point.
The test assumes that the view does not have the keyboard focus
initially. However, this may not be the case if this is the only test
to be executed (i.e., if testKeyboardFocus is passed to the test
executable on the command line). This commit transfers the keyboard
focus explicitly to another widget.
Peter Penz [Tue, 18 Jan 2011 19:56:18 +0000 (19:56 +0000)]
Assure that the enabled plugins for previews are set for the Information Panel and the tooltips. This fixes the issue that a disabled thumbnail-plugin might be chosen. For 4.7 it should be considered to move this code into KIO::filePreview() as default already (will provide a patch on the reviewboard).
When running the test in the background while using the computer for
other things, it may happen that the test's widgets are not focused,
which led to an infinite loop before this commit. I've removed the
checks that caused this loop because the only thing that is important
for the test is that the view loses the keyboard focus at some point
(see bug 220898).