define(['jquery', 'backbone', 'underscore', 'app', 'utils/apitypes', 'views/abstract/itemView',
    'hbs!tpl/header/progress', 'hbs!tpl/header/progressStatus', 'helpers/pluginIcon'],
    function($, Backbone, _, App, Api, ItemView, template, templateStatus, pluginIcon) {
        'use strict';

        // Renders single file item
        return ItemView.extend({

            idAttribute: 'pid',
            tagName: 'li',
            template: template,
            events: {
            },

            // Last name
            name: null,

            initialize: function() {
                this.listenTo(this.model, 'change', this.update);
                this.listenTo(this.model, 'remove', this.unrender);
            },

            onDestroy: function() {
            },

            // Update html without re-rendering
            update: function() {
                if (this.name !== this.model.get('name')) {
                    this.name = this.model.get('name');
                    this.render();
                }

                this.$('.bar').width(this.model.getPercent() + '%');
                this.$('.progress-status').html(templateStatus(this.model.toJSON()));
            },

            render: function() {
                // TODO: icon
                // TODO: other states
                // TODO: non download progress
                this.$el.css('background-image', 'url(' + pluginIcon('todo') + ')');
                this.$el.html(this.template(this.model.toJSON()));
                return this;
            }
        });
    });