| Commit message (Collapse) | Author | Age |
| |
|
|
|
|
|
|
|
|
|
|
| |
Removed the manual currentIndex handling again as we seem to be able to
use the regular stuff now.
Additionally the listview is now resized if we don't have enough mails,
so the first mail is shown on top.
We can also move from mail to mail using keyboard navigation.
The mail highlight also serves as focus indicator for the conversation
view in general, and as such is cleared when loosing focus.
|
| |
|
| |
|
| |
|
|
|
|
| |
order
|
|
|
|
|
|
|
| |
It's still not very usable, but we'll have to find a solution that is
applicable everywhere and perhaps it is just a hardware problem.
Increasing the deceleration just makes scrolling very slow, so that's no
solution either.
|
| |
|
| |
|
| |
|
| |
|
| |
|
| |
|
| |
|
| |
|
|
|
|
|
| |
...and indicate in the conversation view if a mail has been sent or is a
draft.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
To do this we:
* Expose from the model wether or not the model is threaded
* Set the relevant properties from the model on the controller (so we
can switch between aggregate and non-aggregate versions)
* Keep the controller in the view it belongs to.
While this works it highlights a couple of issues:
* Controllers are view specific and should be kept within the view.
* The actions we execute in the controller are closely related to the
model. The model is essentially what the user sees, and therefore what
he operatees on.
* Sink should perhaps expose aggregates better. We have to pass around
the values from the model because the model dispatches between
aggregate and non-aggregate property depending on the threaded state.
Similary the controller operates on the thread or not depending on the
threaded state. Perhaps it would be more useful if sink actually
returned the aggregate somehow, with the regular properties. That way
the controller could use the regular properties from the entity it
gets (which would simply either be the aggregate or non-aggregate
depending on the executed query). If the aggregate already contains
all matched ids, then we would also not have to execute an additional
query to get the thread again, the modification would simply be
applied to all ids originally returned.
|
| |
|
| |
|
| |
|
| |
|
|
|