Play-/Source/ui_unix/vfsmodel.cpp
2018-01-09 13:00:54 -05:00

108 lines
2.1 KiB
C++

#include "vfsmodel.h"
#include "vfsmanagerdialog.h"
#include "PS2VM_Preferences.h"
VFSModel::VFSModel(QObject* parent)
: QAbstractTableModel(parent)
{
SetupDevices();
}
VFSModel::~VFSModel()
{
for(int i = 0; i < m_devices.size(); i++)
{
delete m_devices.at(i);
}
}
int VFSModel::rowCount(const QModelIndex& /*parent*/) const
{
return m_devices.size();
}
int VFSModel::columnCount(const QModelIndex& /*parent*/) const
{
if(m_devices.size() > 0)
{
return 3;
}
else
{
return 0;
}
}
QVariant VFSModel::data(const QModelIndex& index, int role) const
{
if(role == Qt::DisplayRole)
{
CDevice* m_device = m_devices.at(index.row());
const char* val = "";
switch(index.column())
{
case 0:
val = m_device->GetDeviceName();
break;
case 1:
val = m_device->GetBindingType();
break;
case 2:
val = m_device->GetBinding();
break;
}
return QVariant(val);
}
return QVariant();
}
void VFSModel::SetupDevices()
{
m_devices[0] = new CDirectoryDevice("mc0", PREF_PS2_MC0_DIRECTORY);
m_devices[1] = new CDirectoryDevice("mc1", PREF_PS2_MC1_DIRECTORY);
m_devices[2] = new CDirectoryDevice("host", PREF_PS2_HOST_DIRECTORY);
m_devices[3] = new CCdrom0Device();
}
bool VFSModel::setHeaderData(int section, Qt::Orientation orientation, const QVariant& value, int role)
{
if(orientation == Qt::Horizontal)
{
if(role == Qt::DisplayRole)
{
m_h_header.insert(section, value);
return true;
}
}
return QAbstractTableModel::setHeaderData(section, orientation, value, role);
}
QVariant VFSModel::headerData(int section, Qt::Orientation orientation, int role) const
{
if(orientation == Qt::Horizontal)
{
if(role == Qt::DisplayRole)
{
if(section < m_h_header.size())
{
return m_h_header.at(section);
}
}
}
return QAbstractTableModel::headerData(section, orientation, role);
}
void VFSModel::DoubleClicked(const QModelIndex& index, QWidget* parent)
{
CDevice* m_device = m_devices.at(index.row());
m_device->RequestModification(parent);
}
void VFSModel::Save()
{
for(int i = 0; i < m_devices.size(); i++)
{
m_devices.at(i)->Save();
}
}