[prev in list] [next in list] [prev in thread] [next in thread] 

List:       kde-panel-devel
Subject:    Re: Review Request: Add keyboard navigation to plasma applet Folder
From:       "Shantanu Tushar Jha" <jhahoneyk () gmail ! com>
Date:       2009-04-01 17:25:11
Message-ID: 20090401172511.29793.98520 () localhost
[Download RAW message or body]



> On 2009-03-20 14:07:32, Fredrik Höglund wrote:
> > /trunk/KDE/kdebase/apps/plasma/applets/folderview/iconview.cpp, line 1208
> > <http://reviewboard.kde.org/r/368/diff/2/?file=3392#file3392line1208>
> > 
> > A problem with the way this function is implemented is that it assumes that the \
> > view is always sorted and that the icons always flow from left to right. 
> > When the user has rearranged the icons (m_layoutBroken is true), you have to \
> > assume that the icons are no longer arranged in a grid and that the visual order \
> > no longer matches the order in the model. 
> > When this is the case, and the user has pressed the up key for example, you have \
> > to iterate over all the icons and find the one that is closest to the current \
> > icon while still being above it. 
> 
> wrote:
> "you have to iterate over all the icons". I'm working on this by iterating all \
> icons and finding the nearest one to the current selection according to the key \
> pressed, but the code is getting really complex in terms of calculations. I was \
> wondering if there is any other way of doing this? If anyone has an idea, please \
> let me know. Till then I'm working on it. 
> 
> wrote:
> I would do something like this (the example is for the up key only):
> 
> QModelIndex nextIndex = QModelIndex();
> QPoint currentPos = visualRect(currentIndex).center();
> int lastDistance = 0;
> 
> for (int i = 0; i < m_validRows; i++) {
> const QModelIndex index = m_model->index(i, 0);
> const QPoint pos = visualRect(index).center();
> if (pos.y() < currentPos.y()) {
> int distance = (pos - currentPos).manhattanLength();
> if (distance < lastDistance || !currentIndex.isValid()) {
> nextIndex = index;
> lastDistance = distance;
> }
> }
> }
> 
> If nextIndex is valid when you get here, it's the index you should move to.
> If it isn't valid there are no icons above the current icon.
> 
> Thanks for working on this feature :)
> 

Ok, thanks for the help, that was less complex then mine ;) Its almost done, just a \
few minor issues remaining. But, I'm unable to understand why you're using \
`!currentIndex.isValid()` in if (distance < lastDistance || !currentIndex.isValid()) \
? Why do we need to validate the currentIndex ?


- Shantanu


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


On 2009-03-20 22:14:51, Shantanu Tushar Jha wrote:
> 
> -----------------------------------------------------------
> This is an automatically generated e-mail. To reply, visit:
> http://reviewboard.kde.org/r/368/
> -----------------------------------------------------------
> 
> (Updated 2009-03-20 22:14:51)
> 
> 
> Review request for Plasma.
> 
> 
> Summary
> -------
> 
> This partly addresses the above bug, adding keyboard navigation and launch using \
> Enter key. Please report if the code is too complex, I've tried my best to keep it \
> to the point. 
> 
> This addresses bug 187241.
> https://bugs.kde.org/show_bug.cgi?id=187241
> 
> 
> Diffs
> -----
> 
> /trunk/KDE/kdebase/apps/plasma/applets/folderview/iconview.h 942106 
> /trunk/KDE/kdebase/apps/plasma/applets/folderview/iconview.cpp 942106 
> 
> Diff: http://reviewboard.kde.org/r/368/diff
> 
> 
> Testing
> -------
> 
> Tested on latest SVN build. Navigation and launch work fine. The problem is with \
> movement of the scrollbar with the keyboard focus, the scrollbar refuses to go to \
> minimum value when m_scrollBar->setValue( m_scrollBar->minimum() ); is used. What \
> am I doing wrong? 
> 
> Thanks,
> 
> Shantanu
> 
> 

_______________________________________________
Plasma-devel mailing list
Plasma-devel@kde.org
https://mail.kde.org/mailman/listinfo/plasma-devel


[prev in list] [next in list] [prev in thread] [next in thread] 

Configure | About | News | Add a list | Sponsored by KoreLogic