Peter Penz [Sun, 13 Sep 2009 14:49:26 +0000 (14:49 +0000)]
Originally it was intended to move the SVN plugin from Dolphin to kdevplatform, but kdevplatform most probably won't get released with KDE 4.4. So for KDE 4.4 Dolphin will temporary contain the plugin in it's own codebase. As soon as kdevplatform will get released the SVN plugin will get moved to kdevplatform.
Still open: KServiceTypeTrader::query does not find the "FileViewVersionControlPlugin", I could not find the root cause for this yet (old cache?)
Peter Penz [Fri, 11 Sep 2009 19:50:40 +0000 (19:50 +0000)]
Fixed minor regression introduced with the column view refactoring: When switching the view mode in a folder showing previews, the previews get lost after switching.
The KFilePreviewGenerator initialized in the ViewExtensionsFactory wants a valid icon size to accept previews. Fixed + Q_ASSERT added to prevent such a mistake in future.
Peter Penz [Sun, 30 Aug 2009 19:17:08 +0000 (19:17 +0000)]
Move the selection listener from DolphinView to ViewExtensionsFactory. The statusbar and information panel are now informed correctly about selection changes also when using the column view.
Peter Penz [Sun, 30 Aug 2009 18:39:03 +0000 (18:39 +0000)]
Move the VersionControlObserver from the DolphinView to the ViewExtensionsFactory. This automatically enables also the column view to be able handling version controlled files.
Peter Penz [Sat, 29 Aug 2009 09:42:21 +0000 (09:42 +0000)]
Move code for initializing and handling view extensions to the new class ViewExtensionsFactory. Beside making DolphinView less complex this will allow the column view to share the view extension code instead of (partly) duplicating it as it has been done before.
Currently only the tooltips- and filepreview-handling have been moved into ViewExtensionsFactory, a further cleanup will be done later.
Peter Penz [Fri, 28 Aug 2009 21:53:18 +0000 (21:53 +0000)]
Restore filtering of items. The DolphinView just tells the controller about the filter, the views (1:1 iconView + detailView, 1:n columnView) connect to the filter-changed signal and apply it to their proxy model.
Peter Penz [Fri, 28 Aug 2009 21:15:58 +0000 (21:15 +0000)]
Remove the class DolphinColumnWidget. Due to the refactoring the column view classes are now represented by DolphinColumnViewContainer and DolphinColumnView.
Peter Penz [Fri, 28 Aug 2009 21:04:15 +0000 (21:04 +0000)]
I wanted to this for KDE 4.1 already, but well...
Columview refactoring: Get rid of "isColumnView()" special cases in DolphinView and the interface code duplications due to delegating non-QAbstractItemView interfaces to the column view. This reduces the code size + complexity a lot and will make future maintainance of the columnview and DolphinView a lot easier.
Currently there are some regressions in the column view, but this will be fixed during the next 14 days.
Do not warn the user about closing Dolphin windows with multiple tabs
if Dolphin is closed by the session manager, i.e., if the user logs
out. The fix is inspired by the way this issue is handled in
Konqueror.
Peter Penz [Sat, 1 Aug 2009 21:11:29 +0000 (21:11 +0000)]
Assure that no empty error message is shown in the statusbar. This should not happen and the fix in this case should be done in the corresponding IO-slave, but let's be prepared for the "worst case".
Peter Penz [Sat, 1 Aug 2009 18:33:12 +0000 (18:33 +0000)]
Use QTemporaryFile instead of QFile. This assures an automatic deleting of the file and works reliable on multiuser system. Thanks to André Wöbbeking for the hint!
Peter Penz [Thu, 30 Jul 2009 06:21:35 +0000 (06:21 +0000)]
If the revision states have been changed because of executing a SVN context menu action, the resulting update should be done silently without information messages.
Peter Penz [Wed, 29 Jul 2009 07:38:57 +0000 (07:38 +0000)]
- indicate whether the server provides an updated version of a file
- QProcess::waitForReadyRead() must be invoked until it returns false. BTW: this method is invoked inside a non-GUI-thread and hence does not block Dolphin
Peter Penz [Mon, 27 Jul 2009 05:31:48 +0000 (05:31 +0000)]
Improved Subversion test plugin to allow committing, updating, diffing, adding and removing of files. As soon as the test plugin gets moved to kdesdk, the code should be improved to use the libsvn interface.
Peter Penz [Thu, 23 Jul 2009 06:28:28 +0000 (06:28 +0000)]
The revision control plugin must be aware on which directory the context-menu-actions should get applied. Relying on the directory that has been used in beginRetrieval() does not work when having a treeview.
Peter Penz [Wed, 22 Jul 2009 07:07:43 +0000 (07:07 +0000)]
- Documentation updates.
- Allow the revision plugin to emit a signal which indicates a changed revision state.
- Update the revision state if the state of file items has been changed.
- Check also the content of a file if the size of a local and revisioned file is equal.
Peter Penz [Fri, 17 Jul 2009 19:26:46 +0000 (19:26 +0000)]
The performance of updating the revision state of items depends on the used plugin. To prevent that Dolphin gets blocked by a slow plugin, the updating is delegated to a thread.
Still open issue: Applying the revision control property to the model is a bottleneck in QListView (a detailed description of the reason is in kdelibs/kfile/kfilepreviewgenerator.cpp, class LayoutBlocker). But the approach used in KFilePreviewGenerator destroys the textlayout in this case and is temporary disabled until I could track down the reason.
Improve selection behaviour concerning the new "jump to next/previous
row using right/left arrow" and "jump to next/previous column using
down/up arrow" when using the Icon View's "Rows" and "Columns"
arrangement, respectively, in the following cases:
1. In "Columns" arrangement, if the first item is selected and
Ctrl-Down is pressed repeatedly, don't deselect the first item when
jumping to the next column.
2. In "Rows" arrangement, if the first item in the second row is
active and then Left and finally Shift-Left is pressed, don't
re-select the first item in the second row unexpectedly.
3. If an item in the middle of the second row is selected, make sure
that selection with Shift-Left/Shift-Right is reversible even if the
previous/next row is reached.
Peter Penz [Mon, 13 Jul 2009 20:39:44 +0000 (20:39 +0000)]
The Oxygen team will provide revision control emblems for KDE 4.4. Adjust the code to use icons instead of coloring the text... The icon position at the moment is terrible, an interface extension in KFileItemDelegate is required to get the icon boundaries.
Peter Penz [Sun, 12 Jul 2009 15:15:10 +0000 (15:15 +0000)]
Just change the text color for revisioned files instead of using a completely filled background. I'm unsure whether we should use emblems or not... The problem with emblems is that most people that work with revisioned files use the details view with very small icons. So having an emblem above an icon and additionally the selection indicator does not work. Any ideas?
Peter Penz [Sun, 12 Jul 2009 14:00:45 +0000 (14:00 +0000)]
Enable Dolphin to show the revision states of files that are under revision control systems like SVN, Git, CVS, ... The current code is an early draft and it is planned that all plugins (SVN, Git, CVS, ...) are maintained outside Dolphin. If the API is stable enough, a discussion will be done at kfm-devel@kde.org regarding the location of the plugins (the current implementation of SubversionPlugin is only temporary located in Dolphin for testing purposes).
RevisionControlObserver is implemented in a way that no recognizable slowdown is given for directories that are not under revision control.
David Faure [Sun, 12 Jul 2009 01:00:14 +0000 (01:00 +0000)]
Same change as in r995015, but for usage in konq: Don't connect to KDirLister::itemDeleted(const KFileItem&), but KDirLister::itemsDeleted(const KFileItemList&).
Peter Penz [Sat, 11 Jul 2009 18:56:03 +0000 (18:56 +0000)]
Don't open folders on a single-click in the column view when the mouse settings specify double-click. Originally this was meant as a kind of feature (open files on double-click, but folders still on single-click), but it has been received as bug.
Peter Penz [Sat, 11 Jul 2009 18:10:35 +0000 (18:10 +0000)]
Update the statusbar synchronously when the directory lister has been completed. As no selection is given at this moment, there is no risk that updateStatusBar() is expensive.
Peter Penz [Sat, 11 Jul 2009 17:48:05 +0000 (17:48 +0000)]
Fixed performance issues related to selections and deleting of files:
- Don't connect to KDirLister::itemDeleted(const KFileItem&), but KDirLister::itemsDeleted(const KFileItemList&). Otherwise Dolphin is informed about each single file deletion instead of getting the deleted items as a list. Thanks to David Faure for the hint!
- DolphinViewContainer::updateStatusBar() can be expensive when a lot of files are selected, as the file size must get retrieved. Assure that fast calls for updateStatusBar() don't trigger a synchronous update, do the update after 300 ms where no further update has been triggered.
- Dolphin provides a list of file items when emitting the selectionChanged() signal. Collecting the file items is a quite expensive operation, so use the same approach as when updating the statusbar: only emit the selection changed signal when no change has been done within 300 ms. This improves the performance when doing huge selections a lot.
- Make updateStatusBar() a private method, the main window should not need to take care about updating the statusbar (this is done internally now by DolphinViewContainer).
David Faure [Fri, 10 Jul 2009 11:46:48 +0000 (11:46 +0000)]
Fix regression introduced by an obviously untested "krazy fix" (r973284). Setting a
QVariant to QString() is not the same as calling clear on the QVariant (which makes the variant invalid).
(BUG 194502)
Fixed the annoying bug (for me) that dealt with having a very long folder name. In this case, the name of the tab could be many more times bigger than the tabBar itself.
Now they are ellided, so e.g. "really really long folder name...is" or something.
Few more cases left for me to fix(shortly), but those are not quite close to this section.