[SailfishDevel] ListView with SectionDelegate (Strange Behaviour)
christopher.lamb at thurweb.ch
christopher.lamb at thurweb.ch
Thu Jan 30 08:06:14 UTC 2014
Hi Gabriel
Thank you for taking the time to reproduce this issue. It is
reassuring to know that based on the admittedly slim evidence of this
issue alone I am not going completely mad!
I agree that the 2 issues sound related (I will have a poke around
with your code later today).
Based on the assumption that this is probably a Qt issue rather than a
Sailfish issue I was about to open an issue on the Qt Bug tracker.
Then standing on the platform waiting for my train to arrive I
thought: How difficult could it be to fire up my Qt5.2 installation
and create a Desktop version of this project to reproduce this issue?
By the time the train pulled in I had my first ever Qt Desktop project
running! I had expected to see the same sections bug, but unexpectedly
I got the expected behaviour! i.e on Qt 5.2.0 desktop I cannot
reproduce this bug.
My next thought was: "Maybe this is still a Qt problem, but has been
fixed in Qt 5.2.0?
Luckily I have an old Qt 5.0.0 installation lurking on my laptop. So I
added a Qt version and kit for that, and launched the project as
Qt5.0.0.
Again no Section header bug.
Then I turned to Android with Qt 5.2.0, and once again got expected
behaviour (no bug).
So to cut a long story short, this behaviour appears to be limited to
Sailfish (or the particular Qt version used by Sailfish)
I can reproduce it on the Emulator and real Jolla Device.
I cannot reproduce it on Harmattan Qt 4.7.4 (from which I am porting the code)
I cannot reproduce it on Qt Desktop (5.0.0 and 5.2.0)
I cannot reproduce it on Android Qt 5.2.0 (Emulator and Galaxy Note 3
with KitKat).
Grüsse
Chris
Zitat von "Gabriel Böhme" <m.gabrielboehme at googlemail.com>:
> Hi Chris,
>
> I can reproduce this behavior with the code you posted and it seems to
> be a bug.
> I have encountered some days ago also a problem with section handling.
> If you are appending a new Item to the list, while you use FullString
> section headers, it's creating a new section, even if it is already
> there. The expected behavior should be, that the new item is sorted
> under the right section. Especially in my intended use case, it's a
> problem because I want to fetch some data from an online source and sort
> it in different sections. But how to do that, without appending? Insert
> is also not possible at all, because it's varying always. Even if the
> model is set after, appending (again) - it's not working. Also a code
> example added at the bottom (just modified your code). The new
> person/item with name "Tom" should be displayed in Boss section, but the
> ListView creates another "Boss" section at the end of the list.
>
> Maybe both are relating to each other?
>
> Thank you very much.
>
> Gabriel.
>
> import QtQuick 2.0
> import Sailfish.Silica 1.0
>
> Page {
> id: page
>
> SilicaListView {
> id: contactList
>
> anchors.fill: parent
> model: contactModel
> delegate: Label {
> text: model.name
> width: page.width
> }
> section.property: "section"
> section.criteria: ViewSection.FullString
> section.delegate: Rectangle {
> height: 50
> width: page.width
> color: Theme.secondaryHighlightColor
> opacity: 0.5
>
> Label {
> anchors.horizontalCenter: parent.horizontalCenter
> text: section
> }
> }
>
> PullDownMenu {
> MenuItem {
> text: "Add a person"
> onClicked: {
> // comment out to set the model again, but thats not working at
> all. :-/
> // contactList.model = emptyList
> contactModel.insert({"name": "Tom", "section":
> "Boss"})
> // contactList.model = contactModel
> }
> }
> }
> }
>
> ListModel {id: emptyList}
>
> ListModel {
> id: contactModel
> ListElement {
> name: "Achim"
> section: "Boss"
> }
> ListElement {
> name: "Ana"
> section: "Friends"
> }
> ListElement {
> name: "Bezelbub"
> section: "Friends"
> }
> ListElement {
> name: "Billy"
> section: "Friends"
> }
> ListElement {
> name: "Boris"
> section: "Friends"
> }
> ListElement {
> name: "Carrie"
> section: "Friends"
> }
> ListElement {
> name: "Cassie"
> section: "Friends"
> }
> ListElement {
> name: "Eziekiel"
> section: "Family"
> }
> ListElement {
> name: "Gargantua"
> section: "Family"
> }
> ListElement {
> name: "Gilbert"
> section: "Family"
> }
> ListElement {
> name: "Giles"
> section: "Family"
> }
> ListElement {
> name: "Gog"
> section: "Workgroup"
> }
> ListElement {
> name: "Mabel"
> section: "Workgroup"
> }
> ListElement {
> name: "Magog"
> section: "Workgroup"
> }
> }
> }
>
>
>
> Am Mittwoch, den 29.01.2014, 19:56 +0100 schrieb
> christopher.lamb at thurweb.ch:
>> Hi all
>>
>> I have come across some more strange behaviour.
>>
>> This time it is a ListView / SilicaListVew with a SectionDelegate
>> based on FirstCharacter.
>>
>> For the items initially displayed this works well, with the section
>> headers exactly where I would expect them (e.g between Anne and Babs
>> in the code below)
>>
>> But as I flick up, I then a section header between each item (e.g
>> between Gargantua and Gilbert).
>>
>> The code below demonstrates this on the emulator.
>>
>> Grüsse
>>
>> Chris
>>
>>
>> import QtQuick 2.0
>> import Sailfish.Silica 1.0
>>
>> Page {
>> id: page
>>
>> SilicaListView {
>> id: contactList
>> anchors.fill: parent
>> model: contactModel
>> delegate: Label {
>> text: model.displayLabel
>> width: page.width
>> }
>> section.property: "displayLabel"
>> section.criteria: ViewSection.FirstCharacter
>> section.delegate: Rectangle {
>> height: 10
>> width: page.width
>> color: "lightblue"
>> }
>> }
>>
>> ListModel {
>> id: contactModel
>> ListElement {
>> displayLabel: "Achim"
>> }
>> ListElement {
>> displayLabel: "Ana"
>> }
>> ListElement {
>> displayLabel: "Anne"
>> }
>> ListElement {
>> displayLabel: "Babs"
>> }
>> ListElement {
>> displayLabel: "Barnie"
>> }
>> ListElement {
>> displayLabel: "Barry"
>> }
>> ListElement {
>> displayLabel: "Bezelbub"
>> }
>> ListElement {
>> displayLabel: "Billy"
>> }
>> ListElement {
>> displayLabel: "Boris"
>> }
>> ListElement {
>> displayLabel: "Carrie"
>> }
>> ListElement {
>> displayLabel: "Cassie"
>> }
>> ListElement {
>> displayLabel: "Charlie"
>> }
>> ListElement {
>> displayLabel: "Chris"
>> }
>> ListElement {
>> displayLabel: "Diana"
>> }
>> ListElement {
>> displayLabel: "Donald"
>> }
>> ListElement {
>> displayLabel: "Doris"
>> }
>> ListElement {
>> displayLabel: "Egbert"
>> }
>> ListElement {
>> displayLabel: "Ethel"
>> }
>> ListElement {
>> displayLabel: "Eziekiel"
>> }
>> ListElement {
>> displayLabel: "Franzi"
>> }
>> ListElement {
>> displayLabel: "Freddy"
>> }
>> ListElement {
>> displayLabel: "Gargantua"
>> }
>> ListElement {
>> displayLabel: "Gilbert"
>> }
>> ListElement {
>> displayLabel: "Giles"
>> }
>> ListElement {
>> displayLabel: "Gog"
>> }
>> ListElement {
>> displayLabel: "Mabel"
>> }
>> ListElement {
>> displayLabel: "Magog"
>> }
>> }
>> }
>>
>>
>>
>>
>> _______________________________________________
>> SailfishOS.org Devel mailing list
>
>
More information about the Devel
mailing list