6#ifndef ATLASGAMEMANAGER_SIMODEL_HPP
7#define ATLASGAMEMANAGER_SIMODEL_HPP
9#include <QAbstractItemModel>
46 Q_DISABLE_COPY_MOVE(
Node )
57 Node(
const QString str,
Node*
parent =
nullptr,
const bool scan_immediate =
false );
61 const auto split_pos {
m_path.lastIndexOf( QDir::separator() ) };
62 return m_path.mid( split_pos + 1 );
69 if ( info.isFile() )
return;
72 for (
const auto& entry : dir.entryInfoList( QDir::Dirs | QDir::Files | QDir::NoDotAndDotDot ) )
73 m_children.push_back(
new Node( entry.absoluteFilePath(),
this ) );
86 const auto& parent_children {
m_parent->m_children };
87 return static_cast< int >( std::distance(
88 parent_children.begin(), std::find( parent_children.begin(), parent_children.end(),
this ) ) );
97 if (
m_children.size() <
static_cast< std::size_t
>( idx ) || idx < 0 )
100 return m_children[
static_cast< std::size_t
>( idx ) ];
105 if (
m_children.size() <
static_cast< std::size_t
>( idx ) || idx < 0 )
108 return m_children[
static_cast< std::size_t
>( idx ) ];
122class SIModel final :
public QAbstractItemModel
134 void setRoot(
const QString path );
136 QModelIndex
index(
int row,
int column,
const QModelIndex&
parent )
const override;
137 QModelIndex
parent(
const QModelIndex& child )
const override;
140 QVariant
data(
const QModelIndex&
index,
int role = Qt::DisplayRole )
const override;
@ TITLE
Definition QueryBuilder.cpp:31
@ ENGINE
Definition QueryBuilder.cpp:30
@ CREATOR
Definition QueryBuilder.cpp:29
SupportingType
Definition SIModel.hpp:16
@ VERSION
Definition SIModel.hpp:20
@ NoSupportingType
Definition SIModel.hpp:17
SIModel(QObject *parent=nullptr)
Definition SIModel.cpp:19
void setRoot(const QString path)
Definition SIModel.cpp:22
int columnCount(const QModelIndex &parent) const override
Definition SIModel.cpp:81
QModelIndex index(int row, int column, const QModelIndex &parent) const override
Definition SIModel.cpp:31
~SIModel() override
Definition SIModel.cpp:103
int rowCount(const QModelIndex &parent) const override
Definition SIModel.cpp:67
QModelIndex parent(const QModelIndex &child) const override
Definition SIModel.cpp:55
Node * m_root
Definition SIModel.hpp:127
QVariant data(const QModelIndex &index, int role=Qt::DisplayRole) const override
Definition SIModel.cpp:86
BannerType
Definition config.hpp:245
@ Normal
Definition config.hpp:247
Definition SIModel.hpp:25
QString engine
Definition SIModel.hpp:30
QString title
Definition SIModel.hpp:27
QString version
Definition SIModel.hpp:29
QString creator
Definition SIModel.hpp:28
bool is_supporting_name
Definition SIModel.hpp:32
SupportingType supporting_type
Definition SIModel.hpp:33
bool is_game_dir
Definition SIModel.hpp:26
Definition SIModel.hpp:37
BannerType banner_type
Definition SIModel.hpp:39
bool is_preview
Definition SIModel.hpp:41
bool is_banner
Definition SIModel.hpp:38
Definition SIModel.hpp:45
int childCount() const
Definition SIModel.hpp:80
QString m_path
Definition SIModel.hpp:49
void scan()
Definition SIModel.hpp:65
std::vector< Node * > m_children
Definition SIModel.hpp:118
~Node()
Definition SIModel.hpp:111
Node * child(const int idx)
Definition SIModel.hpp:103
const Node * child(const int idx) const
Definition SIModel.hpp:95
bool scanned() const
Definition SIModel.hpp:78
bool m_scanned
Definition SIModel.hpp:53
int row() const
Definition SIModel.hpp:82
QString name() const
Definition SIModel.hpp:59
Node(const QString str, Node *parent=nullptr, const bool scan_immediate=false)
Definition SIModel.cpp:108
std::variant< DirInfo, FileInfo > m_info
Definition SIModel.hpp:48
const Node * parent() const
Definition SIModel.hpp:93
Node * m_parent
Definition SIModel.hpp:119