/* Copyright (C) 2014-2016 Dan Chapman <dpniel@ubuntu.com>

   This file is part of the dekko

   This program is free software; you can redistribute it and/or
   modify it under the terms of the GNU General Public License as
   published by the Free Software Foundation; either version 2 of
   the License or (at your option) version 3 or any later version
   accepted by the membership of KDE e.V. (or its successor approved
   by the membership of KDE e.V.), which shall act as a proxy
   defined in Section 14 of version 3 of the license.

   This program is distributed in the hope that it will be useful,
   but WITHOUT ANY WARRANTY; without even the implied warranty of
   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
   GNU General Public License for more details.

   You should have received a copy of the GNU General Public License
   along with this program.  If not, see <http://www.gnu.org/licenses/>.
*/
import QtQuick 2.4
import Ubuntu.Components 1.3
import DekkoCore 0.2
import "../Components"

Page {
    id: p

    property bool showBack: false
    MessageHeader {
        id: envelopeHeader
        z: 10
        showBack: dekko.viewState.isSmallFF
    }

    anchors.fill: parent
    // Our singleThreadModel by default is in descending order as it is
    // actually just a a flattened subtree model of the msglistmodel
    // So to display it properly we have to switch it here to display
    // newest at the bottom
    SortFilterModel {
        id: sortedThread
        model: dekko.currentAccount.singleThreadModel
        sort.property: "date"
        sort.order: Qt.AscendingOrder
        sortCaseSensitivity: Qt.CaseInsensitive
    }

    UbuntuListView {
        id: list
        clip: true
        objectName: "ThreadListView"
        // FIXME: adding this small delay results in the touch event
        // no being stolen by the parent flickable and
        // our OxideOverlay can forward it into oxide.
        // This makes links *actually* clickable.
        pressDelay: 250
        flickableDirection: Flickable.VerticalFlick
        cacheBuffer: 10000
        anchors {top: envelopeHeader.bottom; bottom: parent.bottom}
        width: parent.width
        model: sortedThread
        delegate: ThreadDelegate{}
    }

    Rectangle {
        id: btmshadow
        anchors {
            left: parent.left
            right: parent.right
            top: list.top
        }
        opacity: list.contentY > 10 ? 0.8 : 0.0
        Behavior on opacity {
            UbuntuNumberAnimation{}
        }

        height: units.gu(0.8)
        gradient: Gradient {
            GradientStop { position: 0.0; color: UbuntuColors.warmGrey }
            GradientStop { position: 1.0; color: "transparent" }
        }
    }
}
