FazBrowse GitHub Viewer | Trending |
URL:
| Home
Tools: [Download Repo ZIP]   [Original HTTPS Page]

GitHub Viewer

#include #include #include #include #include #include "Data.h" #include "RemoteDatabase.h" #include "RemoteLocalFilesModel.h" #include "RemoteNetwork.h" #include "Settings.h" using json = nlohmann::json; RemoteLocalFilesModel::RemoteLocalFilesModel(QObject* parent, RemoteDatabase& remote) : QAbstractItemModel(parent), remoteDatabase(remote) { QStringList header; header setText(ColumnName, user_name); user_node->setIcon(ColumnName, QIcon(user_name == current_user_name ? ":/icons/folder_user" : ":/icons/folder")); } // Get file information QFile file_info(Settings::getValue("remote", "clonedirectory").toString() + "/" + QString::fromStdString(file.file)); // Add file to user node QTreeWidgetItem* file_node = new QTreeWidgetItem(user_node); file_node->setText(ColumnName, QString::fromStdString(file.name)); file_node->setIcon(ColumnName, QIcon(":/icons/database")); file_node->setText(ColumnBranch, QString::fromStdString(file.branch)); file_node->setText(ColumnLastModified, QLocale::system().toString(QFileInfo(file_info).lastModified().toLocalTime(), QLocale::ShortFormat)); file_node->setText(ColumnSize, humanReadableSize(static_cast(file_info.size()))); file_node->setText(ColumnCommit, QString::fromStdString(file.commit_id)); file_node->setText(ColumnFile, QString::fromStdString(file.file)); } // Refresh the view endResetModel(); } QModelIndex RemoteLocalFilesModel::index(int row, int column, const QModelIndex& parent) const { if(!hasIndex(row, column, parent)) return QModelIndex(); QTreeWidgetItem *parentItem; if(!parent.isValid()) parentItem = rootItem; else parentItem = static_cast(parent.internalPointer()); QTreeWidgetItem* childItem = parentItem->child(row); if(childItem) return createIndex(row, column, childItem); else return QModelIndex(); } QModelIndex RemoteLocalFilesModel::parent(const QModelIndex& index) const { if(!index.isValid()) return QModelIndex(); QTreeWidgetItem* childItem = static_cast(index.internalPointer()); QTreeWidgetItem* parentItem = childItem->parent(); if(parentItem == rootItem) return QModelIndex(); else return createIndex(0, 0, parentItem); } QVariant RemoteLocalFilesModel::data(const QModelIndex& index, int role) const { if(!index.isValid()) return QVariant(); // Get the item the index points at QTreeWidgetItem* item = static_cast(index.internalPointer()); // Return data depending on the role switch(role) { case Qt::DisplayRole: case Qt::EditRole: return item->text(index.column()); case Qt::DecorationRole: return item->icon(index.column()); default: return QVariant(); } } QVariant RemoteLocalFilesModel::headerData(int section, Qt::Orientation orientation, int role) const { // Get the header string from the root item if(orientation == Qt::Horizontal && role == Qt::DisplayRole) return rootItem->data(section, role); return QVariant(); } int RemoteLocalFilesModel::rowCount(const QModelIndex& parent) const { if(parent.column() > 0) return 0; if(!parent.isValid()) return rootItem->childCount(); else return static_cast(parent.internalPointer())->childCount(); } int RemoteLocalFilesModel::columnCount(const QModelIndex& /*parent*/) const { return rootItem->columnCount(); } bool RemoteLocalFilesModel::removeRows(int row, int count, const QModelIndex& parent) { for(int i=0;i=0;i--) { auto item = static_cast(index(row + i, 0, parent).internalPointer()); item->parent()->removeChild(item); } endRemoveRows(); // If parent node is empty, remove that one too. Make sure to not remove the root node if(parent.isValid() && !index(0, 0, parent).isValid()) { beginRemoveRows(parent.parent(), 0, 0); auto item = static_cast(parent.internalPointer()); item->parent()->removeChild(item); endRemoveRows(); } return true; }

Back | FazBrowse Home | New Git URL