~carla-sella/ubuntu-rssreader-app/view-feeds-test

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
import QtQuick 2.0

import Ubuntu.Components 0.1
import Ubuntu.Components.ListItems 0.1 as ListItem
import Ubuntu.Components.Popups 0.1

import "./addDelegate.js" as AddD
import "./imgSeparator.js" as ImgS
//import "./article_items"

Column {
    id: rss_item_delegate
//    width: units.gu(50)
//    height: units.gu(75)

//    height: parent.height
    spacing: units.gu(2)

    property bool isFull: false
    property real childrenSumHeight: 0
    property real childrenMaxWidth: 0
    property int modelIndex

    function addItem(rss_item, rss_description, model, index)
    {
        var newD = AddD.addDelegate(rss_item, ImgS.separate(rss_description), model, index, rss_item_delegate);
        getChildrenRect() ;
        rss_item_delegate.width = childrenMaxWidth ;
//        console.log("childrenSumHeight, column.height: ", childrenSumHeight, rss_item_delegate.childrenRect.height)
        //console.log("children list: ", rss_item_delegate.children.length)
        if (childrenSumHeight > rss_item_delegate.height + units.gu(2))
        {
            isFull = true ;
            newD.destroy() ;
            getChildrenRect() ;
            rss_item_delegate.width = childrenMaxWidth ;
//            rss_item_delegate.children[rss_item_delegate.children.length-1].destroy() ;
//            rss_item_delegate.spacing = (childrenSumHeight - rss_item_delegate.height) / (rss_item_delegate.children.length + 2)
            return false ;
        }
        else
        {
            isFull = false ;
            return true ;
        }
    }

    function getChildrenRect()
    {
        childrenSumHeight = 0 ;
        childrenMaxWidth = 0 ;
        var length = rss_item_delegate.children.length ;
        for (var i=0; i<length; i++)
        {
            childrenSumHeight += (rss_item_delegate.children[i].height + units.gu(2) * length) ;
            if (rss_item_delegate.children[i].width > childrenMaxWidth)
            {
                childrenMaxWidth = rss_item_delegate.children[i].width
            }
        }
    }
}