Added: Sortproxymodel in order to sort DirTreeView (folders on top)
This commit is contained in:
parent
39acce2d8d
commit
b3730e18ce
5 changed files with 18 additions and 9 deletions
|
@ -14,6 +14,7 @@ SET(OVQT_PLUG_BNP_MANAGER_HDR bnp_manager_plugin.h
|
|||
bnp_filesystem_model.h
|
||||
bnp_file.h
|
||||
bnp_filelist_dialog.h
|
||||
bnp_proxy_model.h
|
||||
)
|
||||
SET(OVQT_PLUG_BNP_MANAGER_UIS bnp_dirtree_form.ui
|
||||
bnp_filelist_dialog.ui
|
||||
|
|
|
@ -17,6 +17,7 @@
|
|||
// Project includes
|
||||
#include "bnp_dirtree_dialog.h"
|
||||
#include "bnp_filesystem_model.h"
|
||||
#include "bnp_proxy_model.h"
|
||||
|
||||
// Qt includes
|
||||
#include <QtGui/QWidget>
|
||||
|
@ -39,18 +40,22 @@ CBnpDirTreeDialog::CBnpDirTreeDialog(QString bnpPath, QWidget *parent)
|
|||
// Bnp file: opened and displayed
|
||||
// all other files: added to the currently opened bnp file
|
||||
QStringList filter;
|
||||
filter << tr("*.bnp");
|
||||
//filter << tr("*.bnp");
|
||||
|
||||
// Setup the directory tree model
|
||||
m_dirModel= new BNPFileSystemModel;
|
||||
m_dirModel= new BNPFileSystemModel();
|
||||
m_proxyModel = new BNPSortProxyModel();
|
||||
m_dirModel->setRootPath(m_DataPath);
|
||||
m_dirModel->setFilter(QDir::AllDirs | QDir::NoDotAndDotDot | QDir::AllEntries);
|
||||
m_dirModel->setNameFilters(filter);
|
||||
m_dirModel->setNameFilterDisables(0);
|
||||
|
||||
m_ui.dirTree->setModel(m_dirModel);
|
||||
m_proxyModel->setSourceModel(m_dirModel);
|
||||
|
||||
m_ui.dirTree->setRootIndex(m_dirModel->index(m_DataPath));
|
||||
m_ui.dirTree->setModel(m_proxyModel);
|
||||
|
||||
m_ui.dirTree->setRootIndex( m_proxyModel->mapFromSource (m_dirModel->index(m_DataPath) ) );
|
||||
m_ui.dirTree->setSortingEnabled(true);
|
||||
|
||||
// Trigger if one filename is activated
|
||||
// In future drag&drop should be also possible
|
||||
|
@ -65,10 +70,11 @@ CBnpDirTreeDialog::~CBnpDirTreeDialog()
|
|||
// ***************************************************************************
|
||||
void CBnpDirTreeDialog::fileSelected(QModelIndex index)
|
||||
{
|
||||
if (index.isValid() && !m_dirModel->isDir(index))
|
||||
QModelIndex source = m_proxyModel->mapToSource(index);
|
||||
if (source.isValid() && !m_dirModel->isDir(source))
|
||||
{
|
||||
// emit the according signal to BNPManagerWindow class
|
||||
Q_EMIT selectedForm(m_dirModel->fileInfo(index).filePath());
|
||||
Q_EMIT selectedFile(m_dirModel->fileInfo(source).filePath());
|
||||
}
|
||||
}
|
||||
// ***************************************************************************
|
||||
|
|
|
@ -31,6 +31,7 @@ namespace BNPManager
|
|||
{
|
||||
|
||||
class BNPFileSystemModel;
|
||||
class BNPSortProxyModel;
|
||||
|
||||
class CBnpDirTreeDialog : public QDockWidget
|
||||
{
|
||||
|
@ -63,8 +64,10 @@ private:
|
|||
|
||||
BNPFileSystemModel *m_dirModel;
|
||||
|
||||
BNPSortProxyModel *m_proxyModel;
|
||||
|
||||
Q_SIGNALS:
|
||||
void selectedForm(const QString);
|
||||
void selectedFile(const QString);
|
||||
|
||||
private Q_SLOTS:
|
||||
/**
|
||||
|
|
|
@ -25,7 +25,6 @@ namespace BNPManager
|
|||
BNPFileSystemModel::BNPFileSystemModel(QObject *parent)
|
||||
: QFileSystemModel(parent)
|
||||
{
|
||||
|
||||
}
|
||||
// ***************************************************************************
|
||||
BNPFileSystemModel::~BNPFileSystemModel()
|
||||
|
|
|
@ -67,7 +67,7 @@ BNPManagerWindow::BNPManagerWindow(QWidget *parent)
|
|||
|
||||
// this SLOT is triggered if the user activates a bnp files in the
|
||||
// dirtree view
|
||||
connect(m_BnpDirTreeDialog, SIGNAL(selectedForm(const QString)),
|
||||
connect(m_BnpDirTreeDialog, SIGNAL(selectedFile(const QString)),
|
||||
this, SLOT(loadFile(const QString)));
|
||||
|
||||
// not used
|
||||
|
|
Loading…
Reference in a new issue