┌   ┐
54
└   ┘

summaryrefslogtreecommitdiff
path: root/src/kitemviews/kfileitemmodelrolesupdater.cpp
AgeCommit message (Collapse)Author
2013-08-14Fix slow scrolling when hidden files or symbolic links are shownFrank Reininghaus
The problem was that we drawed the overlays using KIconLoader, which can be very slow, every time an item appeared on the screen. This commit makes sure that not only the icon, but the icon including overlays is cached in QPixmapCache. Therefore, the overlay drawing is done just once for each icon+overlays combination. For previews, the overlay drawing is done in KFileItemModelRolesUpdater just after the preview is received. BUG: 310662 BUG: 314339 FIXED-IN: 4.11.1 REVIEW: 111956
2013-07-18Overwrite the changed role value with an empty QVariant,Emmanuel Pescosta
because the nepomuk roles provider doesn't overwrite it when the property value list is empty. BUG: 322348 REVIEW: 111505 FIXED-IN: 4.11.0
2013-07-12Load unknown icons for items just before showing items in the viewFrank Reininghaus
Rather than loading many icons (without full mime type determination) in advance, we make sure that an item has an icon just before it is shown in the view. This makes sure that no "unknown" icons are shown unnecessarily, and saves some resources. REVIEW: 111396
2013-06-22Dolphin: Do not try to connect to Nepomuk if it is not runningVishesh Handa
Each time one uses any of the Nepomuk classes, an attempt is made to connect to the database. This slows down the application since connecting to Nepomuk is not so cheap. BUG: 321299
2013-06-20Some simplifications in KFileItemModelRolesUpdaterFrank Reininghaus
This removes some things that are obsolete after the recent commits: (a) resolveNextPendingRoles() is not called any more when the preview job is running. (b) In applyResolvedRoles(), we always load the icon if it isn't known yet. This ensures that every item has an icon. REVIEW: 111012
2013-06-20Try to do at least a "fast" icon loading for all itemsFrank Reininghaus
If all icons for the visible items could be loaded in 200 ms, we continue loading icons without mime type determination for all items until the 200 ms are over. This reduces the risk that the user ever sees "unknown" icons. REVIEW: 111011
2013-06-20Make sure that all visible items have an iconFrank Reininghaus
We try to determine "final" icons, i.e., icons with known mime type, for 200 ms. If this does not succeed, we at least load "fast" icons, i.e., load the icons without determining the mime type. REVIEW: 111009
2013-06-20Simplify handling of preview jobsFrank Reininghaus
This patch changes two things about the way we handle the preview jobs: (a) Rather than passing a KFileItemList to startPreviewJob(), remembering the leftovers in the member variable m_pendingPreviewItems and then starting a new preview job for these, we append items that need a preview to this member, and let startPreviewJob() take its input from there. This simplifies the code greatly. (b) To prevent that we start preview jobs with just one item and also that the GUI is frozen too long by startPreviewJob(), we take the following approach: * If the mime type of the first pending item is known, the function has probably been called by startUpdating(), which has determined mime types for the visible items already. startUpdating() has also blocked the GUI, so we just take all items at the beginning of the list with known mime type, and do not do any expensive mime type determination in startPreviewJob(). * If the mime type of the first pending item is unknown, the function has probably been called by slotPreviewJobFinished(). In that case, we can afford to block the GUI for a short while, so we determine mime types for 200 ms. REVIEW: 111008
2013-06-07Remove unused argumentFrank Reininghaus
I saw a runtime warning from QMetaObject::invokeMethod() that KJob* is not a registered type. Since we don't use that argument in slotPreviewJobFinished(KJob*) anyway, it's best to remove it.
2013-06-06Ignore a changed item if it cannot be found in the modelFrank Reininghaus
This prevents repeated attempts to reload the data for the non-existing item. This was the root cause of bug 320791. Thanks to Hrvoje Senjan and Jekyll Wu for testing the new code and finding this bug! BUG: 320791
2013-06-06Make calls to resolveNextPendingRoles and resolveNextSortRole delayedFrank Reininghaus
This prevents that functions that call these indirectly call themselves recursively and cause trouble. BUG: 320791
2013-06-06startPreviewJob: if items is empty, delay call to slotPreviewJobFinshedFrank Reininghaus
This should prevent that other functions, which start preview jobs, eventually call themselves and thus cause trouble. CCBUG: 320791
2013-06-05KFileItemModelRolesUpdater: waste less ressources and fix some bugsFrank Reininghaus
The main change in this commit is that we do not determine expensive roles (like previews, mime types, etc) for all items, but only for the visible ones and those close to the visible area or on the first and the last page of the view. This prevents that the CPU and hard drive are kept busy for quite some time after entering a folder while all items are handled asynchronously. There is one known problem at the moment: when sorting by "Type" or another role that can be resolved by KFileItemModelRolesUpdater, the icons of the visible items are sometimes not loaded while the sorting is still in progress. I will try to fix this issue during the next few days. REVIEW: 110839
2013-05-22KFileItemModelRolesUpdater: only update the size for changed foldersFrank Reininghaus
When using inotify, we also receive signals for modified files, even if we only ask KDirWatch to watch the directory containing them. In that case, we must not set the size to -1 (which means "unknown number of items" for folders) temporarily, or we end up with an apparent file size of 2^64 - 1 bytes. BUG: 309740 FIXED-IN: 4.10.4 REVIEW: 110428
2013-04-22Always determine icons for the visible items firstFrank Reininghaus
When entering a folder, KFileItemModelRolesUpdater has not yet been informed about the visible index range by the view when it tries to determine icons synchronously. This resulted in the problem that it tried to determine icons for all items in random order, and some visible icons were somtimes still unknown after the "synchronous icon loading" timeout of 200 ms. This commit tries to improve the situation by loading icons starting with the first item in increasing order. This should make it less likely that some visible items still have unknown icons after 200 ms. BUG: 316129 FIXED-IN: 4.10.3 REVIEW: 109843
2013-03-27Update icon if it couldn't be determined upfront (.desktop file on slow mount)David Faure
This requires an up-to-date kdelibs >= 4.10. CCBUG: 290666
2013-01-24KFileItemModelRolesUpdater: Avoid multiple updates for Nepomuk dataVishesh Handa
The Nepomuk ResourceWatcher emits 3 signals - propertyChanged, propertyAdded and propertyRemoved. We should only listen to either the propertyChanged signal or the propertyAdded + Removed signals. There is no point in listening to all 3 signals. That will just result in unnecessary updates. Additionally, we do not need to listen to the resourceCreated signal. That is only emitted when we are watching for a specific types, which we are not. REVIEW: 108543
2012-10-30Remove workaround for bug 304986 which is not needed in masterFrank Reininghaus
Commit ea6a7c09a0067aaf62ef2de69b5a2c4967676768 added a workaround for bug 304986 (high CPU usage because KFileItemModelRolesUpdater requests previews for the same files over and over again after, e.g., a rename operation). The KDE/4.10 branch of kdelibs contains the real fix for this issue (b8f64ca3f4b6311519c21046031d66d9d0a570c6), so the workaround can be removed.
2012-10-30Merge remote-tracking branch 'origin/KDE/4.9'Frank Reininghaus
2012-10-27Workaround for failed comparison of items in KFileItemModelRolesUpdaterFrank Reininghaus
The real fix is in the KDE/4.10 branch of kdelibs (commit b8f64ca3f4b6311519c21046031d66d9d0a570c6). We work around the problem that the KFileItem that a preview has been requested for is different from the KFileItems in the sets m_pendingVisibleItems and m_pendingInvisibleItems by refreshing those sets when we detect that the bug has been triggered. BUG: 304986 FIXED-IN: 4.9.3
2012-10-15Port Dolphin from Nepomuk to Nepomuk2 according to the Nepomuk2Port mini ↵Emmanuel Pescosta
guide on techbase - http://techbase.kde.org/Projects/Nepomuk/Nepomuk2Port REVIEW: 106825
2012-09-27Merge branch '4.9'Dawit Alemayehu
2012-09-27Some speed improvements in KFileItemModelRolesUpdater:Emmanuel Pescosta
- Use QSet.erase() instead of QSet.remove() => no expensive Rehashing - Get rid of += in sortAndResolvePendingRoles() - Some other small changes REVIEW: 106577
2012-09-26Fix a Bug in KFileItemModelRolesUpdate::setEnabledPlugins.Emmanuel Pescosta
Changes were never overtaken because of a wrong comparison. FIXED-IN: 4.9.2
2012-09-24Fix crash when receiving Nepomuk info for a recently deleted file.Frank Reininghaus
BUG: 306036 FIXED-IN: 4.9.2
2012-08-06Stop preview jobs when closing DolphinFrank Reininghaus
Patch by Benni Hill. Thanks for the patch! CCBUG: 304467 (cherry picked from commit 4d39dbc9620cd30826bfab4a42cf31702aeac6d8)
2012-08-06Stop preview jobs when closing DolphinFrank Reininghaus
Patch by Benni Hill. Thanks for the patch! BUG: 304467 FIXED-IN: 4.9.1
2012-07-29msvc needs to have the class definition for reference parameters in methodsPatrick Spendrin
2012-07-29msvc needs to have the class definition for reference parameters in methodsPatrick Spendrin
2012-06-11Update "isExpandable" and "size"-rolesPeter Penz
If the "isExpandable"- or "size"-role is shown for a folder, the number of sub-items must be watched to be able to update the state of those 2 roles. This fixes the issue that e.g. no expanding-toggle is shown if an sub-directory has been created inside an empty directory. BUG: 293972 FIXED-IN: 4.9.0
2012-06-09Folders Panel: Also count directory linksPeter Penz
... otherwise no expansion toggle will be shown. The implementation is a compromise between performance and correctness: If the directory contains links that are not directories, an unnecessary expansion toggle will be shown. But this is better than showing no expansion toggle in case if the directory contains links that point to other directories. BUG: 299997 FIXED-IN: 4.9.0
2012-06-08Krazy fixesPeter Penz
2012-05-06Remove workaround to start/stop the resource watcherPeter Penz
Using the latest resource-watcher from kde-runtime does not make this workaround necessary anymore.
2012-05-06Remove kde-runtime dependency "nepomukdatamanagement"Peter Penz
Follow the suggestion from Vishesh Handa and copy the ResourceWatcher code from kde-runtime instead of creating a dependency. This will of course get removed again as soon as Nepomuk's resource watcher will get a public API.
2012-05-06Fix issue that no Nepomuk-data is shown when searchingPeter Penz
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-08Ignore maximum size for local files when creating previewsPeter Penz
It is up to the plugins to decide what sensible size is required for creating a preview, this cannot be decided by the user for all plugins. A maximum size only makes sense for remote files, where the user implicitely decides how much of the bandwith may be used for having previews. BUG: 273226 FIXED-IN: 4.9.0
2012-04-08Remove unneeded/wrong signal-slot-connectionPeter Penz
2012-04-06Allow to specify whether an upscaling of images should be donePeter Penz
The option is currently hidden as up to now only Nuno requested it, but it seems to be urgent: "my icon making productivity has drop subtantialy" ((c) 2012 Nuno) As I don't want to get blamed for an outdated Oxygen-icon-set I have no other choice ;-) CCMAIL: [email protected]
2012-04-06Update items if a Nepomuk property has been changedPeter Penz
If a Nepomuk property has been changed (e.g. by changing the rating in the Information Panel) the corresponding item in the view must be updated.
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-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-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-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-03Folders Panel: Show expansion toggles for directories on ISO-imagesPeter Penz
When counting the number of sub-directories consider unknown file types as potential directories. In the "worst case" an expansion toggle will be shown although the directory contains only files, however from a performance point of view this seems to be an acceptable compromise. BUG: 292642 FIXED-IN: 4.8.1
2012-02-01KFileItemModelRolesUpdater: Optimize updatesPeter Penz
The asynchronous resolving to bypass performance bottlenecks is not necessary anymore as multiple ranges can be inserted in one step now. This solves the issue that e.g. opening a tree resulted in temporary unknown icons for a short period of time.