/* 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 Dekko.Theme 0.2
import "../../Components"


ListView {
    id: recipientHintList

    signal addRecipient(string address)

    property string text: ""

    onTextChanged: combinedFlattenContactFilterModel.setFilterFixedString(text)
    visible: text
    height: visible ? Math.min(3, count) * units.gu(8) : 0 // 24 gives enough space for 4 delegates
    model: dekko.combinedFlattenContactFilterModel
    interactive: false
    clip: true
    delegate: ListItemWithActions {
        id: delegate
        width: parent ? parent.width : undefined
        showDivider: true
        height: layout.implicitHeight
        property bool hasName: model.name.length > 3
        ListItemLayout {
            id: layout
            title.text: delegate.hasName ? model.name : model.email
            title.font.weight: Style.common.fontWeight
            subtitle.text: delegate.hasName ? model.email : ""
            subtitle.font.weight: Style.common.fontWeight
            Avatar {
                id: avatar
                height: units.gu(4)
                name: delegate.hasName ? model.name : model.email
                initials: delegate.hasName ? Style.avatar.getInitialsForName(model.name) : Style.avatar.getInitialsForName(model.email)
                email: model.email
                validContact: true
                fontSize: "medium"
                fontWeight: Style.common.fontWeight
                SlotsLayout.position: SlotsLayout.Leading
            }

        }
        onItemClicked: {
            var prettyAddress;
            if (hasName) {
                prettyAddress = model.name + " <" + model.email + ">";
            } else {
                prettyAddress = model.email;
            }
            recipientHintList.addRecipient(prettyAddress)
        }
    }
    Behavior on height {UbuntuNumberAnimation{}}
}

