Source code for PvMail.email_model

"""
Email list model for Qt's MVC QListView
"""

from PyQt5 import QtCore


[docs] class EmailListModel(QtCore.QAbstractListModel): def __init__(self, input_list, parent=None, *args): """ data model for GUI: supports list of email addresses :param [str] input_list: list of email addresses :param QWidget parent: view widget for this data model """ super(EmailListModel, self).__init__(parent, *args) self.listdata = input_list
[docs] def rowCount(self, parent=QtCore.QModelIndex()): return len(self.listdata)
[docs] def data(self, index, role): if index.isValid(): if role == QtCore.Qt.DisplayRole: return QtCore.QVariant(self.listdata[index.row()]) elif role == QtCore.Qt.EditRole: return QtCore.QVariant(self.listdata[index.row()]) else: return QtCore.QVariant()
[docs] def setData(self, index, value, role=QtCore.Qt.EditRole): if role == QtCore.Qt.EditRole: row = index.row() self.listdata[row] = str(value) if row + 1 == len(self.listdata): # always keep a blank item at end to grow the list self.listdata.append("") self.dataChanged.emit(index, index) return True return False
[docs] def flags(self, index): defaultFlags = QtCore.QAbstractItemModel.flags(self, index) if index.isValid(): return ( defaultFlags | QtCore.Qt.ItemIsEditable | QtCore.Qt.ItemIsDragEnabled | QtCore.Qt.ItemIsDropEnabled ) else: return defaultFlags | QtCore.Qt.ItemIsDropEnabled
[docs] def reset(self): self.listdata = []