81 lines
2.4 KiB
C++
81 lines
2.4 KiB
C++
#include "ElaBreadcrumbBarModel.h"
|
|
|
|
ElaBreadcrumbBarModel::ElaBreadcrumbBarModel(QObject *parent) : QAbstractListModel{parent} {}
|
|
|
|
ElaBreadcrumbBarModel::~ElaBreadcrumbBarModel() {}
|
|
|
|
int ElaBreadcrumbBarModel::rowCount(const QModelIndex &parent) const {
|
|
if (!_breadcrumbList.isEmpty()) {
|
|
return _breadcrumbList.count() * 2 - 1;
|
|
}
|
|
return 0;
|
|
}
|
|
|
|
QVariant ElaBreadcrumbBarModel::data(const QModelIndex &index, int role) const {
|
|
if (role == Qt::DisplayRole) {
|
|
if (index.row() % 2 == 0) {
|
|
return _breadcrumbList[index.row() / 2];
|
|
} else {
|
|
return ">";
|
|
}
|
|
} else if (role == Qt::UserRole) {
|
|
if (index.row() == _breadcrumbList.count() * 2 - 2 || index.row() == _breadcrumbList.count() * 2 - 3) {
|
|
return QString("LastBreadcrumb");
|
|
}
|
|
}
|
|
return QVariant();
|
|
}
|
|
|
|
void ElaBreadcrumbBarModel::appendBreadcrumb(QString breadcrumb) {
|
|
if (!breadcrumb.isEmpty()) {
|
|
if (_breadcrumbList.count() && _breadcrumbList.last() == breadcrumb) {
|
|
return;
|
|
}
|
|
if (_breadcrumbList.count() >= 2 && _breadcrumbList[_breadcrumbList.count() - 2] == breadcrumb) {
|
|
beginResetModel();
|
|
_breadcrumbList.removeLast();
|
|
endResetModel();
|
|
return;
|
|
}
|
|
beginResetModel();
|
|
_breadcrumbList.append(breadcrumb);
|
|
endResetModel();
|
|
}
|
|
}
|
|
|
|
void ElaBreadcrumbBarModel::removeBreadcrumb(QString breadcrumb) {
|
|
if (_breadcrumbList.contains(breadcrumb)) {
|
|
beginResetModel();
|
|
_breadcrumbList.removeAt(_breadcrumbList.lastIndexOf(breadcrumb));
|
|
endResetModel();
|
|
}
|
|
}
|
|
|
|
void ElaBreadcrumbBarModel::removeBreadcrumb(int index) {
|
|
if (index >= _breadcrumbList.count()) {
|
|
return;
|
|
}
|
|
beginResetModel();
|
|
#if QT_VERSION >= QT_VERSION_CHECK(6, 0, 0)
|
|
_breadcrumbList.remove(index, _breadcrumbList.count() - index);
|
|
#else
|
|
for (int i = _breadcrumbList.count() - 1; i >= 0; i--) {
|
|
if (i < index) {
|
|
break;
|
|
}
|
|
_breadcrumbList.removeAt(i);
|
|
}
|
|
#endif
|
|
endResetModel();
|
|
}
|
|
|
|
void ElaBreadcrumbBarModel::setBreadcrumbList(QStringList breadcrumbList) {
|
|
beginResetModel();
|
|
this->_breadcrumbList = breadcrumbList;
|
|
endResetModel();
|
|
}
|
|
|
|
int ElaBreadcrumbBarModel::getBreadcrumbListCount() { return _breadcrumbList.count(); }
|
|
|
|
QStringList ElaBreadcrumbBarModel::getBreadcrumbList() { return _breadcrumbList; }
|