Review Request: Document switcher plugin improvement

Andreas Pakulat apaku at gmx.de
Tue Dec 11 10:01:02 UTC 2012



> On Dec. 9, 2012, 3:30 p.m., Andreas Pakulat wrote:
> > plugins/documentswitcher/documentswitcherplugin.cpp, line 65
> > <http://git.reviewboard.kde.org/r/107628/diff/2/?file=97530#file97530line65>
> >
> >     This should be three dots to indicate an elide. Extra points if you could re-use Qt functionality for eliding instead of doing it manually. I'm not sure what the best way to do that would be at the moment though (maybe itemviews can do this automatically, otherwise may check what QLabel uses or so).
> >     
> >     Also this algorithm has the downside that it elides all path parts and does not give you a guarantee that the resulting string really is smaller than 80 characts. It also may elide more than necessary, which means loss of information.
> 
> Jarosław Sierant wrote:
>     I try to some how make paths shorter, but may be it is not necessary here (only homePath replacement would be enough). What do you think?
>     I want to show the user as much as it is possible.
>     
>     Until width of view does not reach screen width there is no problem.
>     
>     Problem is when item is longer than screen width.
>     There is simple solution.
>     When max list view size will be the same as the screen size scrallingArea take care of situation when items are longer then screen width.
>     Is it OK for you?

I think you somewhat misunderstood what I said. I understand your intention perfectly well, shortening a long text and indicating it was shortened is usually done by 'eliding'. That means the part of the text that is removed is replaced with an ellipsis (i.e. three dots).

What I don't like about the algorithm you chose for eliding is that it considers each part of the path individually without checking wether the result is already short enough to fit. And I'm relatively sure that the KDE or Qt API already has a way of getting some text elided, at least they have an algorithm hidden somewhere since labels can already have elided text on them.

Hmm, after checking the Qt API docs, it seems like QListView should be eliding the cells text already automatically, see http://qt-project.org/doc/qt-4.8/qabstractitemview.html#textElideMode-prop. It could be of course that this depends on the style you're using.


> On Dec. 9, 2012, 3:30 p.m., Andreas Pakulat wrote:
> > plugins/documentswitcher/documentswitcherplugin.cpp, line 117
> > <http://git.reviewboard.kde.org/r/107628/diff/2/?file=97530#file97530line117>
> >
> >     Isn't there an itemview method to resize contents to the needed size?
> 
> Jarosław Sierant wrote:
>     I'm not sure if I understand you correctly. I want to automatically resize window to content not opposite.
>     I have no big experience in QT programming but I couldn't find an easy solution.
>     
>     There is a problem to get correct size of the list view item.
>     In current implementation sizeHint is incorrect (Qt do not calculate size on its own).
>     So I have to calculate it manually based on the content.
>     I use it to resize the window.
>     
>     I can reimplement sizeHint method in DocumentSwitcherTreeView class (it would be the pretty solution).
>     But there will be additional loop to calculate proper width.
>     What do you think about it?

I actually think having some maximum size significantly smaller than the screen would be better. In fact I'd say the popup shouldn't be larger than the document view to better indicate that this popup is related to the documents and not all of the IDE.

In addition I think its important to have both, the window adjust to the content and vice-versa, but that might be quite a bit more involved.

Anyway, as the code currently uses QListView there is indeed no easy way to let the view resize its column to match the contents and then resize the view to the column width. An easy way to fix that would be replacing the QListView base class with QTreeView which has a header and at least one column and thus can be told to resize the column to the contents of the column. Then you can get the column width and ensure the its not too wide. After that is done resize the column back to the width of the view in case its still wider to get the elided text from the view automatically.


- Andreas


-----------------------------------------------------------
This is an automatically generated e-mail. To reply, visit:
http://git.reviewboard.kde.org/r/107628/#review23204
-----------------------------------------------------------


On Dec. 7, 2012, 5:25 p.m., Jarosław Sierant wrote:
> 
> -----------------------------------------------------------
> This is an automatically generated e-mail. To reply, visit:
> http://git.reviewboard.kde.org/r/107628/
> -----------------------------------------------------------
> 
> (Updated Dec. 7, 2012, 5:25 p.m.)
> 
> 
> Review request for KDevelop.
> 
> 
> Description
> -------
> 
> Document switcher window width is automatically calculated base on content (auto adjust to longest item). Current screen width is upper bound of the window width.
> 
> Code duplication has been removed (methods walkForward/walkBackward).
> 
> A path to the file on items list can be truncated if it is too long (threshold=80).
> 
> 
> Diffs
> -----
> 
>   plugins/documentswitcher/documentswitcherplugin.h 0924e81 
>   plugins/documentswitcher/documentswitcherplugin.cpp d457a5a 
> 
> Diff: http://git.reviewboard.kde.org/r/107628/diff/
> 
> 
> Testing
> -------
> 
> Only manual tests are done.
> 
> 
> Thanks,
> 
> Jarosław Sierant
> 
>

-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mail.kde.org/pipermail/kdevelop-devel/attachments/20121211/639e0993/attachment-0001.html>


More information about the KDevelop-devel mailing list