Warning, file /rolisteam/rolisteam/src/libraries/rwidgets/gmtoolbox/DiceBookMark/dicebookmarkmodel.cpp was not indexed or was modified since last indexation (in which case cross-reference links may be missing, inaccurate or erroneous).
0001 #include "dicebookmarkmodel.h" 0002 #include "data/rolisteammimedata.h" 0003 0004 DiceBookMarkModel::DiceBookMarkModel(std::vector<DiceShortCut>& data, QObject* parent) 0005 : QAbstractTableModel(parent), m_data(data) 0006 { 0007 } 0008 0009 QVariant DiceBookMarkModel::headerData(int section, Qt::Orientation orientation, int role) const 0010 { 0011 if(role == Qt::DisplayRole) 0012 { 0013 if(orientation == Qt::Horizontal) 0014 { 0015 if(section == 0) 0016 return tr("Name"); 0017 else if(section == 1) 0018 return tr("Command"); 0019 else if(section == 2) 0020 return tr("Alias"); 0021 } 0022 } 0023 return QVariant(); 0024 } 0025 0026 int DiceBookMarkModel::rowCount(const QModelIndex& parent) const 0027 { 0028 if(parent.isValid()) 0029 return 0; 0030 0031 return m_data.size(); 0032 } 0033 0034 int DiceBookMarkModel::columnCount(const QModelIndex& parent) const 0035 { 0036 if(parent.isValid()) 0037 return 0; 0038 0039 return 3; 0040 } 0041 0042 QVariant DiceBookMarkModel::data(const QModelIndex& index, int role) const 0043 { 0044 if(!index.isValid()) 0045 return QVariant(); 0046 0047 if((Qt::DisplayRole == role) || (Qt::EditRole == role)) 0048 { 0049 const auto pair= m_data[index.row()]; 0050 if(index.column() == 0) 0051 { 0052 return pair.text(); 0053 } 0054 else if(index.column() == 1) 0055 { 0056 return pair.command(); 0057 } 0058 else 0059 { 0060 return pair.alias(); 0061 } 0062 } 0063 return QVariant(); 0064 } 0065 0066 bool DiceBookMarkModel::setData(const QModelIndex& index, const QVariant& value, int role) 0067 { 0068 if(data(index, role) != value) 0069 { 0070 auto& pair= m_data[index.row()]; 0071 if(index.column() == 0) 0072 { 0073 pair.setText(value.toString()); 0074 } 0075 else if(index.column() == 1) 0076 { 0077 pair.setCommand(value.toString()); 0078 } 0079 else 0080 { 0081 pair.setAlias(value.toBool()); 0082 } 0083 emit dataChanged(index, index, QVector<int>() << role); 0084 return true; 0085 } 0086 return false; 0087 } 0088 0089 QStringList DiceBookMarkModel::mimeTypes() const 0090 { 0091 QStringList types; 0092 types << "rolisteam/dice-command"; 0093 return types; 0094 } 0095 0096 Qt::ItemFlags DiceBookMarkModel::flags(const QModelIndex& index) const 0097 { 0098 if(!index.isValid()) 0099 return Qt::NoItemFlags; 0100 0101 return Qt::ItemIsEditable | Qt::ItemIsEnabled | Qt::ItemIsSelectable | Qt::ItemIsDragEnabled; 0102 } 0103 0104 QMimeData* DiceBookMarkModel::mimeData(const QModelIndexList& indexes) const 0105 { 0106 RolisteamMimeData* mimeData= new RolisteamMimeData(); 0107 0108 for(const QModelIndex& index : indexes) 0109 { 0110 if((index.isValid()) && (index.column() == 0)) 0111 { 0112 DiceShortCut pair= m_data[index.row()]; 0113 mimeData->setAlias(pair.text(), pair.command(), pair.alias()); 0114 } 0115 } 0116 return mimeData; 0117 } 0118 0119 bool DiceBookMarkModel::appendRows() 0120 { 0121 beginInsertRows(QModelIndex(), m_data.size(), m_data.size()); 0122 m_data.push_back(DiceShortCut()); 0123 endInsertRows(); 0124 return true; 0125 } 0126 0127 bool DiceBookMarkModel::removeRows(int row, int count, const QModelIndex& parent) 0128 { 0129 beginRemoveRows(parent, row, row + count - 1); 0130 m_data.erase(m_data.begin() + row); 0131 endRemoveRows(); 0132 return true; 0133 } 0134 void DiceBookMarkModel::writeSettings(QSettings& settings) 0135 { 0136 settings.beginWriteArray(QStringLiteral("dicebookmarks")); 0137 int i= 0; 0138 for(auto& pair : m_data) 0139 { 0140 settings.setArrayIndex(i); 0141 settings.setValue(QStringLiteral("title"), pair.text()); 0142 settings.setValue(QStringLiteral("command"), pair.command()); 0143 settings.setValue(QStringLiteral("alias"), pair.alias()); 0144 ++i; 0145 } 0146 settings.endArray(); 0147 } 0148 void DiceBookMarkModel::readSettings(QSettings& settings) 0149 { 0150 int size= settings.beginReadArray(QStringLiteral("dicebookmarks")); 0151 beginResetModel(); 0152 m_data.clear(); 0153 for(int i= 0; i < size; ++i) 0154 { 0155 settings.setArrayIndex(i); 0156 DiceShortCut cut; 0157 cut.setText(settings.value(QStringLiteral("title")).toString()); 0158 cut.setCommand(settings.value(QStringLiteral("command")).toString()); 0159 cut.setAlias(settings.value(QStringLiteral("alias"), true).toBool()); 0160 m_data.push_back(cut); 0161 } 0162 settings.endArray(); 0163 endResetModel(); 0164 }