┌   ┐
54
└   ┘

summaryrefslogtreecommitdiff
path: root/src/kitemviews/kfileitemmodel.cpp
AgeCommit message (Collapse)Author
2013-02-19Merge remote-tracking branch 'origin/KDE/4.10'Frank Reininghaus
Conflicts: dolphin/src/tests/kfileitemmodeltest.cpp lib/konq/konq_operations.cpp
2013-02-18Remove items from m_filteredItems if their parent is deletedFrank Reininghaus
Fixes the problem that filtered children of expanded deleted folders reappear if the filter is cleared. BUG: 315210 FIXED-IN: 4.10.1 REVIEW: 108976
2013-02-10Re-organize the code that compares expanded itemsFrank Reininghaus
The previous approach, which was based on comparing the URLs as strings, was not only very complex, but also could lead to inconsistencies in the model, namely, that not all children were removed from the model when the dir lister reported the parent as deleted. Later on, this could even lead to a crash. BUG: 311947 FIXED-IN: 4.11 REVIEW: 108766
2013-02-10Include parent-child relationships in KFileItemModel's consistency checkFrank Reininghaus
2013-02-06KFileItemModel::insertItems(): reserve sufficient space for m_itemsFrank Reininghaus
This prevents expensive and unnecessary repeated rehashing when many items are inserted into the model.
2013-02-03Two small optimizations in KFileItemModel::removeItems()Frank Reininghaus
1. It seems that it really can happen that KFileItems that we get from the dir lister's itemsDeleted signal are not in the model any more, e.g., if a folder where hidden files are shown is left and a folder where hidden files are not shown is entered. There is no need to output warnings then. 2. Remove the emptiness-check for the KFileItemList at the beginning. Even in the unlikely event that we do get an empty list, we return just a few lines later in the code.
2013-02-03const QList<int> -> const QList<int>&Frank Reininghaus
2013-01-29Fix crashes in KFileItemModel::removeItems()Frank Reininghaus
These crashes were caused by the recent commit ff3267c6dcd0f6d0621b3a96b5462a9581a03883. It introduced two problems: a) A logic error in the code that removes the ItemData pointers from m_itemData that could cause crashes if multiple item ranges are removed, and there were un-removed items behind the last one. b) The implicit assumption that any call of removeItems() will actually result in items being removed in the model. This is incorrect if the model is first cleared and then the hidden-files setting is modified, which happens if "Save view properties for each folder" is enabled, and a folder where hidden files are shown is left. In that case, the dir lister emits itemsDeleted for the hidden items after they have been removed from the model due to the folder change. I'll add a unit test covering these issues soon. Many thanks to Romário Rios and Hrvoje Senjan for testing! BUG: 314046
2013-01-27Move the consistency check for KFileItemModel from the test to the classFrank Reininghaus
This makes it possible to check the model's consistency also in other places, e.g., in KFileItemModel's benchmark.
2013-01-27Performance improvements in KFileItemModel::removeItems()Frank Reininghaus
The performance of this method is improved by: a) Not removing items one by one, but doing it in a way that minimizes the number of moves to prevent O(N^2) worst-case complexity. b) Not sorting the removed items using the potentially extremely slow KFileItemModel::lessThan. We can get the indexes of the removed items very easily from the hash m_items, and sorting ints is a lot faster. c) Preventing repeated rehashing of m_items when removing the deleted URLs by replacing remove() by erase(). REVIEW: 108540
2013-01-15Re-organise the sorting codeFrank Reininghaus
The KFileItemModel-specific parts are now separated from the generic ones, like the parallel sorting implementation. REVIEW: 108386
2013-01-04autoupdate is on by default, remove unnecessary callsDavid Faure
2013-01-03Fix crash when browsing bluetooth device.Michael Jansen
When trying to browse a N900 it crashed here because pathA was empty. Which lead to index = maxIndex beeing -1 and pathA.at(index) crashing. Reorder the while condition to prevent that courtesy of tsdgeos. (cherry picked from commit f0c90a47de3f59e4a98932ae6f0499921d9aa899)
2012-12-30Fix crash when browsing bluetooth device.Michael Jansen
When trying to browse a N900 it crashed here because pathA was empty. Which lead to index = maxIndex beeing -1 and pathA.at(index) crashing. Reorder the while condition to prevent that courtesy of tsdgeos.
2012-10-29Fix Bug 153984 - Clicking cancel on the authentication dialog for ↵Emmanuel Pescosta
fish/sftp/ftp kioslave gets dolphin stuck on "Loading folder" BUG: 153984 REVIEW: 107116
2012-09-29Find out the main window by calling the parent widget's window() memberFrank Reininghaus
KFileItemModel calls the dir lister's setMainWindow() method to make sure that the dir lister caches authentication data. However, the method used to determine the main window (qApp->activeWindow()) is not guaranteed to yield the DolphinMainWindow or the KonqMainWindow. In particular, if "Split View" is enabled in Dolphin's settings dialog, the active window is the dialog, and when it is closed, any later access to the stored pointer leads to a crash. A better method is to verify that the model's parent is a QWidget and then use this widget's window(). I had to make a small modification in DolphinMainWindow to make sure that it also works correctly when the view is split (the new view container had been created with a 0 parent previously). I tested it in Dolphin and Konqueror and verified that the "main window" passed to the dir lister is really the application's main window. BUG: 306459 FIXED-IN: 4.9.3
2012-09-05Implemented the new KParts' listing filter extension, ↵Dawit Alemayehu
KParts::ListingFilterExtension. REVIEW: 106289
2012-08-24Fix regression that caused "(I18N_EMPTY_MESSAGE)" sub menus in menusFrank Reininghaus
For top-level roles like "Name" and "Size", the group translation is 0. In that case, the "group" member of the corresponding RoleInfo struct must be an empty string. This is expected by the code which generates Dolphin's menus, which group the top-level roles into a sub menu with the name "(I18N_EMPTY_MESSAGE)" otherwise. This is a recent regression caused by 199fabbaa8d8a12fb49e4c9922c38ec8b033923c. Thanks to Christoph Feck for investigating this issue! CCBUG: 305228
2012-08-16Fix translations not showing in the Sort by and Additional Information submenusAlbert Astals Cid
Acked by Frank REVIEW: 106049 BUGS: 305228 FIXED-IN: 4.9.1
2012-06-13Fix regression: Open file if entering it in the URL-navigatorPeter Penz
The regression has been introduced when hiding the DolphinDirLister inside KFileItemModel. Now the signal urlIsFileError() gets forwarded to the container again where the file will be opened. BUG: 301757 FIXED-IN: 4.9.0
2012-06-08Krazy fixesPeter Penz
2012-06-08Inline renaming fixesPeter Penz
- Don't use an outdated KFileItem when renaming an item more than once - Use the same font as the view - Don't lose the focus when an editor-popup is shown BUG: 299327 BUG: 298883 BUG: 301253 FIXED-IN: 4.9.0
2012-05-26Show all items in the directory when the name filter is clearedFrank Reininghaus
The problem was the following: While a QMutableSetIterator iterates the items in the QSet m_filteredItems, all items that match the new filter are removed from the set. However, to ensure that the iterator still reaches all items in the set, one must not use QSet::remove(), but rather the iterator's remove() method (see QMutableSetIterator docs). CCBUG: 300504 (cherry picked from commit 288473a96cdd8888f7fc91d0a551d6cbde5fd5dc)
2012-05-26Use an italic font for symbolic linksFrank Reininghaus
BUG: 298218 FIXED-IN: 4.9.0
2012-05-26Minor coding style fixesPeter Penz
2012-05-16Shorten the "path" content if possiblePeter Penz
Replace the home-path by '~' for having a shorter content.
2012-05-06Fix sorting issues for Nepomuk-rolesPeter Penz
Just use a string-comparison as default-compare.
2012-05-06Additional information: Use "Audio" instead of "Music"Peter Penz
This is consistent to the term used in the places panel.
2012-04-21Prepare view-engine for non-KFileItem usecasePeter Penz
Up to now the view-engine only provided a model-implementation that supports file-items. The view-engine always had been designed to be able to work with any kind of model, so now a KStandardItemModel is available. The plan is to convert the places panel to the new view-engine. It should be no problem to fix this until the feature freeze - in the worst case the places-panel code could be reverted while still keeping the KStandardItemModel changes.
2012-04-17Ensure authentication data is cached properlyPeter Penz
The attached patch sets the main window on the main directory lister in DolphinView and KIO jobs in DolphinMainWindow to ensure that login data for remote protocols such as sftp, ftp are cached properly for the duration of the application. Otherwise, the end user is going to end up being unnecessarily re-prompted to enter password login information. Thanks to Dawit Alemayehu for the patch! REVIEW: 104614 FIXED-IN: 4.9.0
2012-04-11KFileItemModel: interface cleanupsPeter Penz
Fix some naming inconsistencies regarding the usage of 'dir' vs. 'directory' vs. 'folder'.
2012-04-11KItemViews: Internal directory restructurationPeter Penz
- Move all private headers from the kitemviews-directory into the 'private' subdirectory. - Get rid of DolphinDirLister and just use a directory-lister internally in KFileItemModel. - Minor interface-cleanups for signals
2012-04-10Improvements for slow sorting rolesPeter Penz
If the sorting is done for data which is resolved asynchronously (e.g. rating), it is important to give a visual feedback about the state of the sorting. This is done now by a progress indication in the statusbar. Also optimizations for "Sort by type" have been done: Although resolving a type can be expensive in the most often case it is a very cheap operation. So it the sorting is done by type, try to resolve the type synchronously for at least 200 ms to prevent a asynchronous resorting. This is usually sufficient to have resolved types even for directories with several thousands of items. BUG: 292733 FIXED-IN: 4.9.0
2012-04-07Just use "-" instead of "No destination" for the destination-rolePeter Penz
2012-04-04Extract sorting-algorithm from KFileItemModel into custom classPeter Penz
2012-04-01Allow showing Nepomuk metadata inside viewsPeter Penz
Metadata like image-size, rating, comments, tags, ... can be shown now in the view (e.g. as column in the Details mode). Still open: The rating-information needs to be shown as stars. In the context of this feature also the following bugs have been fixed: - Fix visual glitches in the header of the Details mode - Improve the minimum column width calculation to respect also the headling and not only the content BUG: 296782 FIXED-IN: 4.9.0
2012-03-21KFileItemModel: Fix triggering of wrong assertionPeter Penz
When switching from the details-mode of a search-view into any other mode, the m_expandedParentsCountRoot is set to ForceExpandedParentsCountRoot.
2012-03-21Prevent flickering when updating itemsPeter Penz
When downloading images from e.g. the camera-IO-slave the files will be downloaded as *.part files and renamed afterwards. The renaming results in an undetermined mimetype and hence the probably already available preview or icon gets replaced by a dummy icon. The patch fixes this by keeping the old values as long until they have been resolved by KFileItemModelRolesUpdater.
2012-03-20Fix sorting-issue when "Sort folders first" is disabledPeter Penz
The comparison of expanded trees may not assume that directories are always sorted first and must respect the "Sort folders first" setting. The sorting-unittest has been extended by a sub-tree and the usecase of bug 296437. The already deactivated test for KFileItemModel::expandedParentsCountCompare() has been completely removed as it has been replaced by testSorting(). BUG: 296437 FIXED-IN: 4.8.2
2012-03-20KFileItemModel: Remove minimum-update timerPeter Penz
The timer became unnecessary after introducing the behavior to collect all new items until KDirLister emits a completed()-signal.
2012-03-14Use sub-menus for the "Sort By"- and "Additional Information"-menuPeter Penz
This allows doing some grouping for the visible roles by e.g. Image, Document, Music or whatever.
2012-03-13Remove RolesInfoAccessorPeter Penz
Now KFileItemModel provides a way to access the available roles including their translations. Note that the 3 roles "comments", "rating" and "tags" have not been implemented yet in KFileItemModel and turning them on does not work currently.
2012-02-23Whitespace cleanups and documentation fixesPeter Penz
2012-02-21Don't trigger assert when switching to details-viewPeter Penz
If the visible roles of the details-view are equal to the visible roles of other views, then switching to the details-view will trigger an assert because the invisible roles don't get updated. Thanks to Frank Reininghaus for the detailed analyses! In the context of this fix optimizations have been done when switching view-modes: The "don't-animate-workaround" could be removed. BUG: 294531 FIXED-IN: 4.8.1
2012-02-14Details view: Fix filter issue with sibblingsPeter Penz
When the filter has been enabled, the sibblings got not updated. Explicitely update the sibblings when inserting, removing or moving items. For layouting implicitely update the sibblings only for recycled widgets.
2012-02-14Details view: Fix indicator-branchesPeter Penz
Up to now no indicator-branches have been drawn when showing a tree. The patch fixes this so that that the style-dependent branches are drawn. The main part of the patch is the implementation of KItemListView::updateSiblingsInformation(). Most of the other changes are related due to an internal renaming of the expansionsLevel-role to expandedParentsCount and some related cleanups. BUG: 290276 FIXED-IN: 4.8.1
2012-02-08Drag and drop: Adjust destination if the item is no directory or desktop-filePeter Penz
The URL of the view should be used as destination target if a dropping is not done above a directory or desktop-file. BUG: 293511 FIXED-IN: 4.8.1
2012-02-05Replace setExpanded(const QSet<KUrl>&) by expandParentItems(const KUrl&)Frank Reininghaus
The use case of this function (Folders Panel) requires the expansion of the parent items of a single URL, so it's not needed to handle a full set of URLs in this function. Moreover, the issue that not only the parents, but also the URLs themselves were expanded is fixed by this commit. (cherry picked from commit 89082ca391807abdc26d8985efe6b4c27183a9b1)
2012-02-03Show the value "Unknown" for the item-count only after it has been verifiedPeter Penz
During determining the item-count for directories just show an empty string until either the item-count has been calculated or if the item-count is unknown. Thanks to Nikita Skovoroda for the initial proof-of-concept patch. BUG: 291823 FIXED-IN: 4.8.1
2012-02-02Fix sorting issue when sorting by "size"Peter Penz
Root cause of the issue was an overflow in: result = a - b; where result is 'int' and a and b are 'KIO::filesize_t'. BUG: 293086 FIXED-IN: 4.8.1