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 }