diff options
author | Orochimarufan <orochimarufan.x3@gmail.com> | 2013-03-22 14:01:54 +0100 |
---|---|---|
committer | Orochimarufan <orochimarufan.x3@gmail.com> | 2013-03-22 14:01:54 +0100 |
commit | cd1fdbbbc2953c5e34d8c0ae6861bec4a7f6532e (patch) | |
tree | a4148d6bb1704e635807c37b36013e9a33820a80 /gui/instancemodel.cpp | |
parent | f4c9cb8c1d395422b7e4f1c27ac92b6df08a39bb (diff) | |
parent | e4806ab08d0293d395c1718ab16d28ba2ae9d0ed (diff) | |
download | MultiMC-cd1fdbbbc2953c5e34d8c0ae6861bec4a7f6532e.tar MultiMC-cd1fdbbbc2953c5e34d8c0ae6861bec4a7f6532e.tar.gz MultiMC-cd1fdbbbc2953c5e34d8c0ae6861bec4a7f6532e.tar.lz MultiMC-cd1fdbbbc2953c5e34d8c0ae6861bec4a7f6532e.tar.xz MultiMC-cd1fdbbbc2953c5e34d8c0ae6861bec4a7f6532e.zip |
Merge branch 'master' of http://github.com/peterix/MultiMC5
Conflicts:
CMakeLists.txt
main.cpp
Diffstat (limited to 'gui/instancemodel.cpp')
-rw-r--r-- | gui/instancemodel.cpp | 43 |
1 files changed, 38 insertions, 5 deletions
diff --git a/gui/instancemodel.cpp b/gui/instancemodel.cpp index 73d0dbc1..8db985e8 100644 --- a/gui/instancemodel.cpp +++ b/gui/instancemodel.cpp @@ -1,13 +1,38 @@ #include "instancemodel.h" #include <instance.h> #include <QIcon> +#include "iconcache.h" InstanceModel::InstanceModel ( const InstanceList& instances, QObject *parent ) : QAbstractListModel ( parent ), m_instances ( &instances ) { - cachedIcon = QIcon(":/icons/multimc/scalable/apps/multimc.svg"); + currentInstancesNumber = m_instances->count(); + connect(m_instances,SIGNAL(instanceAdded(int)),this,SLOT(onInstanceAdded(int))); + connect(m_instances,SIGNAL(instanceChanged(int)),this,SLOT(onInstanceChanged(int))); + connect(m_instances,SIGNAL(invalidated()),this,SLOT(onInvalidated())); } +void InstanceModel::onInstanceAdded ( int index ) +{ + beginInsertRows(QModelIndex(), index, index); + currentInstancesNumber ++; + endInsertRows(); +} + +void InstanceModel::onInstanceChanged ( int index ) +{ + QModelIndex mx = InstanceModel::index(index); + dataChanged(mx,mx); +} + +void InstanceModel::onInvalidated() +{ + beginResetModel(); + currentInstancesNumber = m_instances->count(); + endResetModel(); +} + + int InstanceModel::rowCount ( const QModelIndex& parent ) const { Q_UNUSED ( parent ); @@ -17,7 +42,7 @@ int InstanceModel::rowCount ( const QModelIndex& parent ) const QModelIndex InstanceModel::index ( int row, int column, const QModelIndex& parent ) const { Q_UNUSED ( parent ); - if ( row < 0 || row >= m_instances->count() ) + if ( row < 0 || row >= currentInstancesNumber ) return QModelIndex(); return createIndex ( row, column, ( void* ) m_instances->at ( row ).data() ); } @@ -46,14 +71,22 @@ QVariant InstanceModel::data ( const QModelIndex& index, int role ) const } case Qt::DecorationRole: { - // FIXME: replace with an icon cache - return cachedIcon; + IconCache * ic = IconCache::instance(); + // FIXME: replace with an icon cache/renderer + /* + QString path = ":/icons/instances/"; + path += pdata->iconKey(); + QIcon icon(path); + */ + QString key = pdata->iconKey(); + return ic->getIcon(key); + //else return QIcon(":/icons/multimc/scalable/apps/multimc.svg"); } // for now. case KCategorizedSortFilterProxyModel::CategorySortRole: case KCategorizedSortFilterProxyModel::CategoryDisplayRole: { - return "IT'S A GROUP"; + return pdata->group(); } default: break; |