PDA

View Full Version : Failing to Parse System Directories using QFileSystemModel for different Audio/Video



owais_blore
19th November 2012, 08:11
I have come across a situation where I need to parse/traverse my System Directories and search for files like .mp3, .mpg etc.

Well in my .ui I have 2 Tree Views, one towards right and other towards left. The left one displays System Directories and on selecting the drive, the right treeview displays the .mp3, .mpg etc files.

Here is my Cpp class:


//Gets called on App startup
void PanasonicViewer::onCamStartup()
{
m_SystemModel = new QFileSystemModel(this);
m_SystemListViewModel = new QFileSystemModel(this);
m_SystemModel->setRootPath(QDir::homePath());
ui->DriveView->setModel(m_SystemModel); //Left side TreeView
ui->DriveListView->setModel(m_SystemListViewModel); //Right Side TreeView

// regard less how many columns you can do this using for:
for(int nCount = 1; nCount < m_SystemModel->columnCount(); nCount++)
ui->DriveView->hideColumn(nCount);
}

void PanasonicViewer::on_DriveView_clicked(const QModelIndex &index)
{
QStringList sDriveFilters;

QString sPath = m_SystemModel->fileInfo(index).absoluteFilePath();
ui->DriveListView->setRootIndex(m_SystemListViewModel->setRootPath(sPath));

m_SystemModel->setRootPath(QDir::homePath());
m_SystemModel->setFilter(QDir::NoDotAndDotDot | QDir::AllDirs );
m_SystemListViewModel->setFilter( QDir::Files | QDir::NoDotAndDotDot );

sDriveFilters << "*.aac" << "*.wmv" << "*.avi" << "*.mpeg" << "*.mov" << "*.3gp" << "*.flv" << "*.mp3" ;

m_SystemListViewModel->setNameFilters(sDriveFilters);
m_SystemListViewModel->setNameFilterDisables(false);
}

Here is my .h file:


QFileSystemModel *m_SystemModel;
QFileSystemModel *m_SystemListViewModel;

When I run my app, it displays only those audio/video files which are present in the Drive. I mean it doesn’t parse the folders present inside the drive where audio/video files are present. It just displays the files which are in the drive and not subdirectories. How can i achieve it? :)