#include "comboboxdelegate.h"
#include <QFileDialog>

#pragma execution_character_set("utf-8")

ComboBoxDelegate::ComboBoxDelegate(QStringList labels,QObject *parent,bool edit)
    :QItemDelegate(parent),
      m_labels(labels),
      m_edit(edit)
{

}

QWidget *ComboBoxDelegate::createEditor(QWidget *parent, const QStyleOptionViewItem &option, const QModelIndex &index) const
{
    QComboBox *cbb = new QComboBox(parent);
    cbb->setEditable(m_edit);
    for(int i=0;i<m_labels.size();++i){
        cbb->addItem(m_labels.at(i));
    }
    return cbb;
}

void ComboBoxDelegate::setModelData(QWidget *editor, QAbstractItemModel *model, const QModelIndex &index) const
{


    if(m_edit){// 可编辑状态
        int idx = ((QComboBox*)editor)->currentIndex();
        if(idx == 1){ // 需要上传
            QString fileName = QFileDialog::getOpenFileName();
            model->setData(index,fileName);
        }else if(idx == 0){ // 录入
            ;
        }else{
            QString val = ((QComboBox*)editor)->currentText();
            model->setData(index,val);
        }
    }else{
        QString val = ((QComboBox*)editor)->currentText();
        model->setData(index,val);
    }
}