| Age | Commit message (Collapse) | Author |
|
When navigating back or forward in history, DolphinView tells the
KFileItemModel about the expanded URLs which should be restored before
the folder is entered. In this case, the algorithm in the new function
KFileItemModel::setExpanded(const QSet<KUrl>&) does not work. To fix
this, the old function
KFileItemModel::restoreExpandedUrls(const QSet<KUrl>&) is restored.
Unit test included.
|
|
Fixes a crash in Dolphin when pressing a key so quickly after a url
change that there are no items in the file item model yet.
BUG:287147
|
|
The folders panel has been adjusted to use the new view-engine.
A lot of things don't work yet, but are mostly minor issues that
should be fixable during the next 10 days.
|
|
|
|
When dragging multiple files, those files should be shown as part
of the dragging pixmap like in Dolphin 1.7.
BUG: 285031
FIXED-IN: 4.8.0
|
|
This assures that (with the default colors) the indication
of the current item is done in white instead of black.
|
|
When switching between view-modes the selection-toggle sometimes
had a wrong position.
|
|
Thanks to Hugo Pereira Da Costa for pointing this out and
the initial patch!
CCMAIL: [email protected]
|
|
Don't use a custom drawing code for showing the hover-indication
or selection of the text.
- The default style for items is used.
- Merge icon-rectangle and text-rectangle if possible.
- Fix background and minor focus-issues
|
|
Still some finetuning is necessary, but lets first bring
back the missing features from Dolphin 1.x to 2.0 before starting
with this.
|
|
When the details-view has been used on / a wrong expansion-level
has been calculated and hence no expansion-toggles have been
visible.
|
|
When sorting is enabled for a role that gets changed e.g. because
a value like the MIME-type is determined asynchronously, then the
layout might get messed up.
slotItemsMoved() has been adjusted to invalidate the sizehint-cache
and to update the group-headers.
BUG: 285542
FIXED-IN: 4.8.0
|
|
This makes it tricky to compare the filesizes without adjusting
the sort-order, so now all sizes in the size-column are shown
in KiB or KB (dependent on the KLocale setting).
BUG: 219932
FIXED-IN: 4.8.0
Related fixes:
- Stay consistent with the rounding when using the KiB/KB unit
in the statusbar.
- Fix sorting-by-size issue for folders
- Show "Unknown" in the size-column when the number of items
cannot be determined.
|
|
- Use merge-sort instead of quick-sort. This assures a sane
worst-case scenario where quick-sort has a runtime complexity of
O(n*n) (e.g. when changing the sort-order from ascending to
descending).
- lessThan()-improvements: Change internal data-structures to
allow a comparison of any role, not only roles available
in KFileItem
- Don't synchronously move an item if the value has been changed
of a role defined as sort-role: This is too expensive in case if
e.g. the sorting is done by "type" and the type is determined
step by step.
|
|
If the value of a sort-role has been changed, emitting the signal
itemsChanged() is not sufficient as from the KItemModelBase point
of view an item has been moved or deleted/reinserted.
Corresponding to the unit-test KFileItemModel::setData() respects
this case correctly now, however there are some minor visual
animation issues left that (hopefully) should not be tricky to
solve.
|
|
When enabling a group where the sort-role is retrieved
asynchronously (e.g. group by "type") the group-headers have
stayed invisible.
|
|
It must be assured that the data for a sorting role always is
determined even it is not shown as "additional info" in the view.
|
|
|
|
- Increasing the window-size should not result in increasing the
size from previously invisible items
- Rename group 'Numerics' to '0 - 9'
- Fix "damaged" icons when changing the view-sizes or changing the
view-mode
|
|
- Simplify header for the horizontal scroll direction
- Fix issue that orientation change was not forwarded to the header
|
|
When expanding/collapsing folders in the tree-view the visibility
of group-headers got unpredictable.
|
|
|
|
|
|
- Apply a dynamic width
- Use a height that depends on the style
- Cleanup some interfaces and replace xxxBoundingRect() by
xxxRect()
|
|
Use only 1/4 of the scrollbar-page-size when the mousewheel
is used.
BUG: 284646
FIXED-IN: 4.8.0
|
|
Because of a wrong usage of parent() vs. parentItem() a crash
could occur because the parent might be assigned to an already
deleted instance.
|
|
- Use a custom header for KFileItems
- Cache the groups
- Allow enabling/disabling grouping dynamically
Currently there is a random crash in combination with the
groupheader-recycler, this will be fixed during the next
days.
|
|
The most tricky part for groups - the layouting - basically works
now for all views (grouping was available only in the icons views
for Dolphin 1.x) and is nearly equally fast as without groups.
Still open:
- Group headers are ugly screen rectangles
- Return valid groups in KFileItemModel instead of the currently
hardcoded testing values
- Dynamically turning on/off groups does not work currently, the
directory must be reentered
|
|
- Rename setCategorizedSorting() to setGroupedSorting()
- Change the model interface to allow enabling/disabling grouping
without the need to declare a role (the sort role will be taken).
- Add dummy group role implementation in KFileItemModel
The grouping code itself requires some cleanups and might crash
at the moment or lead to weird layouts.
|
|
In Oxygen the focus-indicator has only been drawn for widget
instances derived from QAbstractItemView and Q3ListView, so it
was not possible in Dolphin to use the style for drawing.
This has been fixed now in Oxygen, so using the style works now.
The custom code for drawing the text background will be removed
and replaced by a style-code later.
CCMAIL: [email protected]
|
|
The header should be turned on or off by the user of the
KItemListView classes.
|
|
The column-width must respect the minimum width of the
header-roles.
|
|
- Open the context menu on the mouse-press event, not on the
mouse-release event.
- Provide an explicit position-information and don't use
QCursor::pos(). This fixes the issue that opening a context-menu
by the keyboard opens below the cursor.
- Provide different signals in the KItemListController for
the different context-menu types (item vs. view vs. header).
- Implement turning on/off roles by the header-context-menu.
|
|
|
|
|
|
QFontMetrics::averageCharWidth() is quite slow and does not work
well on fonts with broken characters. In the
usecases required by Dolphin QFontMetrics::height() is a better
and faster alternative to get a font-dependent minimum width.
Thanks go to Christoph Feck for this hint!
|
|
This fixes strange layout-issues when turning on/off previews in the
details-view.
CCBUG: 278899
|
|
This function is used in KItemListView::updateWidgetProperties()
to find out if an item is selected in a more efficient way.
The new function is tested in KItemListSelectionManagerTest.
I've factored out some code from
KItemListSelectionManagerTest::testChangeSelection() to a new
member to simplify the test.
|
|
|
|
This commit adds the missing pieces to KItemListView and makes
KFileItemModel::resortAllItems() only emit the itemsMoved() signal.
|
|
|
|
|
|
|
|
Currently only a smoothscrolling was provided into the
scroll-direction, but not in case of the details-view where a
horizontal scrollbar might be shown too.
Some minor adjustments of the private KItemListSmoothScroller interface
will be done later...
|
|
KFileItemModel now emits the itemsMoved signal when the model
is resorted, and KItemListSelectionManager has a new function
itemsMoved() which will be called indirectly when this signal
is emitted. Unit tests for the new functionality are included.
The following things are still needed to make the feature
work:
1. KFileItemMdel::resortAllItems() should not emit
itemsAdded/itemsRemoved any more.
2. KItemListView::itemsMoved() must update the view according
to the changes in the model, and it must call
KItemListSelectionManager::itemsMoved().
|
|
Prevent unnecessary calls to visibleRolesSizes() when
expanding items. Also the performance has been improved when
resizing the window.
|
|
When inserting items or when updating the item-roles there is no
need to recalculate the column-widths for all items to get an
optimized column-width.
|
|
If an item does not fit into the available width/height a scrollbar
should be provided (e.g. typically this represents the horizontal
scrollbar in the details-view where the width can be larger than
the than the visible width).
Currently the interaction with the scrollbar is not implemented but
this will be a quite minor task in comparison to this patch.
|
|
This results in less overhead if item-changes are done rather fast
(e.g. when applying the number of sub directories for the "size"
role).
|
|
The current approach works fine but should be replaced in the longterm
by a helper class shared by KFileItemListWidget and
KFileItemListView to share information that is required to
calculate the size hints in KFileItemListView and to represent
the actual data in KFileItemListWidget.
|