Commit graph

723 commits

Author SHA1 Message Date
Peter Penz
188d1a9c7d Move drawing of textbackground to KItemListWidget
As the textbounding-rectangle is now a property of KItemListWidget
also the default visual appearance is moved now from
KFileItemListWidget to KItemListWidget.
2011-08-14 16:11:57 +02:00
Peter Penz
5472115751 Rename KItemListWidget::hoverBoundingRect()
It has been split now to iconBoundingRect() and textBoundingRect().
This is required to implement the rubberband in an efficient way
and makes it more explicit what rectangle is returned.
2011-08-14 15:47:31 +02:00
Frank Reininghaus
7b911df33e Two small selection improvements in DolphinView
1. Implement DolphinView::clearSelection().
2. Simplify DolphinView::invertSelection().
   I found, fixed, and unit-tested a bug in the selection
   manager which was uncovered by this change.
2011-08-14 11:05:19 +02:00
Frank Reininghaus
98e859b0c3 Implement basic keyboard navigation in Icons and Compact View
Things that are still missing:
1. Moving to the previous/next row with Up/Down in Icons View,
   moving to the previous/next columns in Compact View.
2. Navigation in Details View.
Note that scrolling to the current item doesn't work yet, and
that the view does not have keyboard focus initially, so one has
to click the view before keyboard navigation and seleciton works.
2011-08-13 18:24:02 +02:00
Frank Reininghaus
fabf5681f5 KItemListContainer: show only the scroll bar that is needed
Up to now, KItemListContainer would show both a vertical and
horizontal scroll bar after a view mode change. This commit
fixes that by setting the maximum and the value of the scroll
bar that is not needed to 0 in
KItemListContainer::updateScrollBars().
2011-08-13 14:35:18 +02:00
Peter Penz
c79949ed7f Fixes for "krazy" 2011-08-13 13:00:32 +02:00
Frank Reininghaus
58ab93541c Implement selection of items using mouse clicks. 2011-08-13 11:51:38 +02:00
Frank Reininghaus
9b83d15be4 Test signal emission on selection changes
This commit adds a unit test that changes the selection in various
ways, verifies the result and checks that the selection manager's
selectionChanged signal has been emitted correctly. The test is
data-driven, so I hope that most further testing needs can be
fulfilled by adding new test data.

Moreover, I changed selectedItems() such that the anchored
selection is only taken into account if anchor and current item
are different. The reason is that in some situation the anchor
should not be selected initially (i.e., if an already selected
item is Control-clicked). If the anchor should be selected from
the beginning, it must be selected manually.
2011-08-11 14:23:53 +02:00
Frank Reininghaus
01ff60edee Emit KitemListSelectionManager's selectionChanged signal correctly
This commit makes sure that the signal is emitted with the correct
current and previous selection after a selection change, and
that the signal is emitted exactly once in
KItemListSelectionManager::itemsInserted and
KItemListSelectionManager::itemsRemoved.
2011-08-11 12:23:21 +02:00
Frank Reininghaus
a03f7dcd22 Implement beginAnchoredSelection() and endAnchoredSelection().
Unit test included.
2011-08-10 15:21:26 +02:00
Frank Reininghaus
6d6fe76dcf Make sure that key presses are handled in KItemListController
Key press events are forwarded from KItemListContainer to
KItemListController. Right now, only the 'Home' and 'End' keys
are handled (arrow keys require some more work because their action
depends on the view mode).
Note:
1. Before key presses are handled, the view has to be clicked with
   the mouse. It seems that the view does not have the keyboard
   focus initially.
2. The view does not scroll to the new current item yet.
2011-08-10 14:30:32 +02:00
Frank Reininghaus
2e3b7e6dd3 Always use the 'Select' mode for anchored selections
In Dolphin, we don't actually use the 'Deselect' and 'Toggle'
modes for anchored selections, so we can just remove these
modes and always use 'Select' to reduce code complexity.
2011-08-10 13:53:41 +02:00
Frank Reininghaus
258a29f61f Initial support for anchored selections in the selection manager 2011-08-10 11:43:05 +02:00
Frank Reininghaus
bb80d1877a Update the anchor item when items are added or removed
If items are added or removed in the model, not only the
current item, but also the anchor item, which is the
starting point for any selections via Shift+Click or
Shift+Key, needs to be updated.
BUG: 262638
FIXED-IN: 4.8.0
2011-08-10 10:38:24 +02:00
Peter Penz
3957884bf2 Improvements for selections, smooth scrolling, tooltips and info-panel 2011-08-09 16:22:36 +02:00
Frank Reininghaus
225fd7073e Underline the current item in KFileItemListView
It still looks a bit ugly, but at least we can see the current
item now :-) It is only updated by mouse clicks at the moment.
2011-08-04 09:52:45 +02:00
Frank Reininghaus
e326199727 Shift-clicks and Control-clicks should not open the item 2011-08-03 00:44:36 +02:00
Frank Reininghaus
3547357862 Update current item and anchor item on mouse clicks 2011-08-03 00:44:29 +02:00
Frank Reininghaus
71ccc7e361 Inform the selection manager about model changes. 2011-08-02 23:56:46 +02:00
Peter Penz
8ea76d0a0e Improve performance for creating previews
The overall time for creating previews is faster the more items
are passed to KIO::previewJob() in parallel instead of passing
e.g. only 100 items once and start several KIO::previewJobs
sequentially.

However in the worst case KIO::previewJob() might
block the application for several seconds if the
MIME-type of the passed KFileItems are unknown and e.g. 10000 items
are forwarded.

So KFileItemModelRolesUpdater will now take care to resolve as many
MIME-types as possible until a timeout is reached and will only pass
those items to KIO::previewJob().

For huge image folders, where the MIME-type can be determined very
fast, this means that the overall time for creating previews will
decrease without blocking the application. For "worst case" directories
where resolving the MIME-type can get very expensive this approach
assures no blocking of the user-interface although the overall time
until all previews are generated might slightly increase.
2011-08-02 19:54:39 +02:00
Frank Reininghaus
94f3320444 Fix unwanted triggering of items
An item should only be triggered after a mouse release
event if the mouse press has been done at the same position.
2011-08-02 09:25:41 +02:00
Montel Laurent
08d655c2bc normalize signals/slots 2011-07-31 13:33:56 +02:00
Peter Penz
f23e9496f3 Merged very early alpha-version of Dolphin 2.0
Dolphin 2.0 will get a new view-engine with the
following improvements:
- Better performance
- Animated transitions
- No clipped filenames due to dynamic item-sizes
- Grouping support for all view-modes
- Non-rectangular selection areas
- Simplified code for better maintenance

More details will be provided in a blog-entry during
the next days.

Please note that the code is in a very
early alpha-stage and although the most tricky parts
have been implemented already very basic things like
drag and drop or selections have not been pushed yet.
Those things are rather trivial to implement but this
still will take some time.
2011-07-30 20:13:41 +02:00