mirror of
https://github.com/tomahawk-player/tomahawk.git
synced 2025-08-04 13:17:34 +02:00
* Removed obsolete CheckDirTree.
This commit is contained in:
@@ -124,7 +124,6 @@ set( libGuiSources
|
|||||||
widgets/Breadcrumb.cpp
|
widgets/Breadcrumb.cpp
|
||||||
widgets/BreadcrumbButton.cpp
|
widgets/BreadcrumbButton.cpp
|
||||||
widgets/ChartDataLoader.cpp
|
widgets/ChartDataLoader.cpp
|
||||||
widgets/CheckDirTree.cpp
|
|
||||||
widgets/ClickableLabel.cpp
|
widgets/ClickableLabel.cpp
|
||||||
widgets/ComboBox.cpp
|
widgets/ComboBox.cpp
|
||||||
widgets/ElidedLabel.cpp
|
widgets/ElidedLabel.cpp
|
||||||
|
@@ -1,434 +0,0 @@
|
|||||||
/* === This file is part of Tomahawk Player - <http://tomahawk-player.org> ===
|
|
||||||
*
|
|
||||||
* Copyright 2010-2011, Christian Muehlhaeuser <muesli@tomahawk-player.org>
|
|
||||||
* Copyright 2011, Leo Franchi <lfranchi@kde.org>
|
|
||||||
*
|
|
||||||
* Tomahawk is free software: you can redistribute it and/or modify
|
|
||||||
* it under the terms of the GNU General Public License as published by
|
|
||||||
* the Free Software Foundation, either version 3 of the License, or
|
|
||||||
* (at your option) any later version.
|
|
||||||
*
|
|
||||||
* Tomahawk is distributed in the hope that it will be useful,
|
|
||||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
||||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
||||||
* GNU General Public License for more details.
|
|
||||||
*
|
|
||||||
* You should have received a copy of the GNU General Public License
|
|
||||||
* along with Tomahawk. If not, see <http://www.gnu.org/licenses/>.
|
|
||||||
*/
|
|
||||||
|
|
||||||
#include "CheckDirTree.h"
|
|
||||||
|
|
||||||
#include "utils/Logger.h"
|
|
||||||
#include "TomahawkSettings.h"
|
|
||||||
#include "Source.h"
|
|
||||||
|
|
||||||
#include <QCoreApplication>
|
|
||||||
#include <QProcess>
|
|
||||||
#ifdef Q_OS_MAC
|
|
||||||
#include <QTimer>
|
|
||||||
#endif
|
|
||||||
|
|
||||||
static QString s_macVolumePath = "/Volumes";
|
|
||||||
|
|
||||||
CheckDirModel::CheckDirModel( QWidget* parent )
|
|
||||||
: QFileSystemModel( parent )
|
|
||||||
, m_shownVolumes( false )
|
|
||||||
{
|
|
||||||
#ifdef Q_OS_MAC
|
|
||||||
m_setFilePath = QString( "%1/SetFile" ) .arg( QCoreApplication::applicationDirPath() );
|
|
||||||
m_getFileInfoPath = QString( "%1/GetFileInfo" ).arg( QCoreApplication::applicationDirPath() );
|
|
||||||
|
|
||||||
QProcess* checkVolumeVisible = new QProcess( this );
|
|
||||||
connect( checkVolumeVisible, SIGNAL( readyReadStandardOutput() ), this, SLOT( getFileInfoResult() ) );
|
|
||||||
qDebug() << "Running GetFileInfo:" << m_getFileInfoPath << "-aV" << s_macVolumePath;
|
|
||||||
checkVolumeVisible->start( m_getFileInfoPath, QStringList() << "-aV" << s_macVolumePath );
|
|
||||||
#endif
|
|
||||||
}
|
|
||||||
|
|
||||||
CheckDirModel::~CheckDirModel()
|
|
||||||
{
|
|
||||||
cleanup();
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
void
|
|
||||||
CheckDirModel::cleanup()
|
|
||||||
{
|
|
||||||
#ifdef Q_OS_MAC
|
|
||||||
// reset to previous state
|
|
||||||
if ( m_shownVolumes )
|
|
||||||
QProcess::startDetached( QString( "%1 -a V %2" ).arg( m_setFilePath ).arg( s_macVolumePath ) );
|
|
||||||
#endif
|
|
||||||
}
|
|
||||||
|
|
||||||
void
|
|
||||||
CheckDirModel::getFileInfoResult()
|
|
||||||
{
|
|
||||||
#ifdef Q_OS_MAC
|
|
||||||
QProcess* p = qobject_cast< QProcess* >( sender() );
|
|
||||||
Q_ASSERT( p );
|
|
||||||
|
|
||||||
QByteArray res = p->readAll().trimmed();
|
|
||||||
qDebug() << "Got output from GetFileInfo:" << res;
|
|
||||||
// 1 means /Volumes is hidden, so we show it while the dialog is visible
|
|
||||||
if ( res == "1" )
|
|
||||||
{
|
|
||||||
// Remove the hidden flag for the /Volumnes folder so all mount points are visible in the default (Q)FileSystemModel
|
|
||||||
QProcess* showProcess = new QProcess( this );
|
|
||||||
qDebug() << "Running SetFile:" << QString( "%1 -a v %2" ).arg( m_setFilePath ).arg( s_macVolumePath );
|
|
||||||
showProcess->start( QString( "%1 -a v %2" ).arg( m_setFilePath ).arg( s_macVolumePath ) );
|
|
||||||
connect( showProcess, SIGNAL( readyReadStandardError() ), this, SLOT( processErrorOutput() ) );
|
|
||||||
m_shownVolumes = true;
|
|
||||||
|
|
||||||
QTimer::singleShot( 500, this, SLOT( volumeShowFinished() ) );
|
|
||||||
}
|
|
||||||
|
|
||||||
p->terminate();
|
|
||||||
p->deleteLater();
|
|
||||||
#endif
|
|
||||||
}
|
|
||||||
|
|
||||||
void
|
|
||||||
CheckDirModel::volumeShowFinished()
|
|
||||||
{
|
|
||||||
#if ! QT_VERSION >= QT_VERSION_CHECK( 5, 0, 0 )
|
|
||||||
//FIXME: this has no equivalent in Qt5, does it just work there?
|
|
||||||
reset();
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#ifdef Q_OS_MAC
|
|
||||||
// Make sure /Volumes is there, if not wait and try again
|
|
||||||
const QModelIndex parent = index("/");
|
|
||||||
const int count = rowCount(parent);
|
|
||||||
bool found = false;
|
|
||||||
for ( int i = 0; i < count; i++ )
|
|
||||||
{
|
|
||||||
if ( data( index( i, 0, parent ) ).toString() == "Volumes" )
|
|
||||||
{
|
|
||||||
found = true;
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
if ( !found )
|
|
||||||
QTimer::singleShot( 500, this, SLOT( volumeShowFinished() ) );
|
|
||||||
#endif
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
void
|
|
||||||
CheckDirModel::processErrorOutput()
|
|
||||||
{
|
|
||||||
QProcess* p = qobject_cast< QProcess* >( sender() );
|
|
||||||
Q_ASSERT( p );
|
|
||||||
qDebug() << "Got ERROR OUTPUT from subprocess in CheckDirModel:" << p->readAll();
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
Qt::ItemFlags
|
|
||||||
CheckDirModel::flags( const QModelIndex& index ) const
|
|
||||||
{
|
|
||||||
return QFileSystemModel::flags( index ) | Qt::ItemIsUserCheckable;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
QVariant
|
|
||||||
CheckDirModel::data( const QModelIndex& index, int role ) const
|
|
||||||
{
|
|
||||||
#ifdef Q_WS_MAC
|
|
||||||
// return the 'My Computer' icon for the /Volumes folder
|
|
||||||
if ( index.column() == 0 && filePath( index ) == s_macVolumePath )
|
|
||||||
{
|
|
||||||
switch ( role )
|
|
||||||
{
|
|
||||||
case Qt::DecorationRole:
|
|
||||||
return myComputer( role );
|
|
||||||
default:
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
#endif
|
|
||||||
|
|
||||||
if ( role == Qt::CheckStateRole )
|
|
||||||
{
|
|
||||||
return m_checkTable.contains( index ) ? m_checkTable.value( index ) : Qt::Unchecked;
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
return QFileSystemModel::data( index, role );
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
bool
|
|
||||||
CheckDirModel::setData( const QModelIndex& index, const QVariant& value, int role )
|
|
||||||
{
|
|
||||||
bool b = QFileSystemModel::setData( index, value, role );
|
|
||||||
|
|
||||||
if ( role == Qt::CheckStateRole )
|
|
||||||
{
|
|
||||||
m_checkTable.insert( index, (Qt::CheckState)value.toInt() );
|
|
||||||
emit dataChanged( index, index );
|
|
||||||
emit dataChangedByUser( index );
|
|
||||||
}
|
|
||||||
|
|
||||||
return b;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
void
|
|
||||||
CheckDirModel::setCheck( const QModelIndex& index, const QVariant& value )
|
|
||||||
{
|
|
||||||
QFileSystemModel::setData( index, value, Qt::CheckStateRole );
|
|
||||||
m_checkTable.insert( index, (Qt::CheckState)value.toInt() );
|
|
||||||
emit dataChanged( index, index );
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
Qt::CheckState
|
|
||||||
CheckDirModel::getCheck( const QModelIndex& index )
|
|
||||||
{
|
|
||||||
return (Qt::CheckState)data( index, Qt::CheckStateRole ).toInt();
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
CheckDirTree::CheckDirTree( QWidget* parent )
|
|
||||||
: QTreeView( parent )
|
|
||||||
{
|
|
||||||
m_dirModel.setFilter( QDir::Dirs | QDir::NoDotAndDotDot );
|
|
||||||
m_dirModel.setRootPath( "/" );
|
|
||||||
|
|
||||||
m_dirModel.setNameFilters( QStringList() << "[^\\.]*" );
|
|
||||||
|
|
||||||
setModel( &m_dirModel );
|
|
||||||
setColumnHidden( 1, true );
|
|
||||||
setColumnHidden( 2, true );
|
|
||||||
setColumnHidden( 3, true );
|
|
||||||
//header()->hide();
|
|
||||||
|
|
||||||
connect( &m_dirModel, SIGNAL( dataChangedByUser( QModelIndex ) ),
|
|
||||||
SLOT( updateNode( QModelIndex ) ) );
|
|
||||||
connect( &m_dirModel, SIGNAL( dataChangedByUser( const QModelIndex& ) ),
|
|
||||||
SIGNAL( changed() ) );
|
|
||||||
connect( &m_dirModel, SIGNAL( modelReset() ),
|
|
||||||
SLOT( modelReset() ) );
|
|
||||||
|
|
||||||
connect( this, SIGNAL( collapsed( QModelIndex ) ),
|
|
||||||
SLOT( onCollapse( QModelIndex ) ) );
|
|
||||||
connect( this, SIGNAL( expanded( QModelIndex ) ),
|
|
||||||
SLOT( onExpand( QModelIndex ) ) );
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
void
|
|
||||||
CheckDirTree::cleanup()
|
|
||||||
{
|
|
||||||
m_dirModel.cleanup();
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
void
|
|
||||||
CheckDirTree::checkPath( const QString& path, Qt::CheckState state )
|
|
||||||
{
|
|
||||||
QModelIndex index = m_dirModel.index( path );
|
|
||||||
m_dirModel.setCheck( index, state );
|
|
||||||
updateNode( index );
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
void
|
|
||||||
CheckDirTree::setExclusions( const QStringList& list )
|
|
||||||
{
|
|
||||||
foreach ( const QString& path, list )
|
|
||||||
{
|
|
||||||
checkPath( path, Qt::Unchecked );
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
QStringList
|
|
||||||
CheckDirTree::getCheckedPaths()
|
|
||||||
{
|
|
||||||
QStringList checks;
|
|
||||||
QModelIndex root = rootIndex();
|
|
||||||
|
|
||||||
getChecksForNode( root, checks );
|
|
||||||
return checks;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
void
|
|
||||||
CheckDirTree::getChecksForNode( const QModelIndex& index, QStringList& checks )
|
|
||||||
{
|
|
||||||
// Look at first node
|
|
||||||
// Is it checked?
|
|
||||||
// - move on to next node
|
|
||||||
// Is it unchecked?
|
|
||||||
// - add to list
|
|
||||||
// - move to next node
|
|
||||||
// Is it partially checked?
|
|
||||||
// - recurse
|
|
||||||
|
|
||||||
int numChildren = m_dirModel.rowCount( index );
|
|
||||||
for ( int i = 0; i < numChildren; ++i )
|
|
||||||
{
|
|
||||||
QModelIndex kid = m_dirModel.index( i, 0, index );
|
|
||||||
Qt::CheckState check = m_dirModel.getCheck( kid );
|
|
||||||
if ( check == Qt::Checked )
|
|
||||||
{
|
|
||||||
checks.append( m_dirModel.filePath( kid ) );
|
|
||||||
}
|
|
||||||
else if ( check == Qt::Unchecked )
|
|
||||||
{
|
|
||||||
continue;
|
|
||||||
}
|
|
||||||
else if ( check == Qt::PartiallyChecked )
|
|
||||||
{
|
|
||||||
getChecksForNode( kid, checks );
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
Q_ASSERT( false );
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
QStringList
|
|
||||||
CheckDirTree::getExclusions()
|
|
||||||
{
|
|
||||||
QStringList exclusions;
|
|
||||||
QModelIndex root = rootIndex();
|
|
||||||
|
|
||||||
getExclusionsForNode( root, exclusions );
|
|
||||||
return exclusions;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
void
|
|
||||||
CheckDirTree::getExclusionsForNode( const QModelIndex& index, QStringList& exclusions )
|
|
||||||
{
|
|
||||||
// Look at first node
|
|
||||||
// Is it checked?
|
|
||||||
// - move on to next node
|
|
||||||
// Is it unchecked?
|
|
||||||
// - add to list
|
|
||||||
// - move to next node
|
|
||||||
// Is it partially checked?
|
|
||||||
// - recurse
|
|
||||||
|
|
||||||
int numChildren = m_dirModel.rowCount( index );
|
|
||||||
for ( int i = 0; i < numChildren; ++i )
|
|
||||||
{
|
|
||||||
QModelIndex kid = m_dirModel.index( i, 0, index );
|
|
||||||
Qt::CheckState check = m_dirModel.getCheck( kid );
|
|
||||||
if ( check == Qt::Checked )
|
|
||||||
{
|
|
||||||
continue;
|
|
||||||
}
|
|
||||||
else if ( check == Qt::Unchecked )
|
|
||||||
{
|
|
||||||
exclusions.append( m_dirModel.filePath( kid ) );
|
|
||||||
}
|
|
||||||
else if ( check == Qt::PartiallyChecked )
|
|
||||||
{
|
|
||||||
getExclusionsForNode( kid, exclusions );
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
Q_ASSERT( false );
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
void
|
|
||||||
CheckDirTree::onCollapse( const QModelIndex& /*idx*/ )
|
|
||||||
{
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
void
|
|
||||||
CheckDirTree::onExpand( const QModelIndex& idx )
|
|
||||||
{
|
|
||||||
// If the node is partially checked, that means we have been below it
|
|
||||||
// setting some stuff, so only fill down if we are unchecked.
|
|
||||||
if ( m_dirModel.getCheck( idx ) != Qt::PartiallyChecked )
|
|
||||||
{
|
|
||||||
fillDown( idx );
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
void
|
|
||||||
CheckDirTree::updateNode( const QModelIndex& idx )
|
|
||||||
{
|
|
||||||
// Start by recursing down to the bottom and then work upwards
|
|
||||||
fillDown( idx );
|
|
||||||
updateParent( idx );
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
void
|
|
||||||
CheckDirTree::modelReset()
|
|
||||||
{
|
|
||||||
foreach ( const QString& dir, TomahawkSettings::instance()->scannerPaths() )
|
|
||||||
{
|
|
||||||
checkPath( dir, Qt::Checked );
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
void
|
|
||||||
CheckDirTree::fillDown( const QModelIndex& parent )
|
|
||||||
{
|
|
||||||
// Recursion stops when we reach a directory which has never been expanded
|
|
||||||
// or one that has no children.
|
|
||||||
if ( !isExpanded( parent ) || !m_dirModel.hasChildren( parent ) )
|
|
||||||
{
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
Qt::CheckState state = m_dirModel.getCheck( parent );
|
|
||||||
int numChildren = m_dirModel.rowCount( parent );
|
|
||||||
for ( int i = 0; i < numChildren; ++i )
|
|
||||||
{
|
|
||||||
QModelIndex kid = m_dirModel.index( i, 0, parent );
|
|
||||||
m_dirModel.setCheck( kid, state );
|
|
||||||
fillDown( kid );
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
void
|
|
||||||
CheckDirTree::updateParent( const QModelIndex& index )
|
|
||||||
{
|
|
||||||
QModelIndex parent = index.parent();
|
|
||||||
if ( !parent.isValid() )
|
|
||||||
{
|
|
||||||
// We have reached the root
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
// Initialise overall state to state of first child
|
|
||||||
QModelIndex kid = m_dirModel.index( 0, 0, parent );
|
|
||||||
Qt::CheckState overall = m_dirModel.getCheck( kid );
|
|
||||||
|
|
||||||
int numChildren = m_dirModel.rowCount( parent );
|
|
||||||
for ( int i = 1; i <= numChildren; ++i )
|
|
||||||
{
|
|
||||||
kid = m_dirModel.index( i, 0, parent );
|
|
||||||
Qt::CheckState state = m_dirModel.getCheck( kid );
|
|
||||||
if ( state != overall )
|
|
||||||
{
|
|
||||||
// If we ever come across a state different than the first child,
|
|
||||||
// we are partially checked
|
|
||||||
overall = Qt::PartiallyChecked;
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
m_dirModel.setCheck( parent, overall );
|
|
||||||
updateParent( parent );
|
|
||||||
}
|
|
@@ -1,93 +0,0 @@
|
|||||||
/* === This file is part of Tomahawk Player - <http://tomahawk-player.org> ===
|
|
||||||
*
|
|
||||||
* Copyright 2010-2011, Christian Muehlhaeuser <muesli@tomahawk-player.org>
|
|
||||||
* Copyright 2011, Leo Franchi <lfranchi@kde.org>
|
|
||||||
*
|
|
||||||
* Tomahawk is free software: you can redistribute it and/or modify
|
|
||||||
* it under the terms of the GNU General Public License as published by
|
|
||||||
* the Free Software Foundation, either version 3 of the License, or
|
|
||||||
* (at your option) any later version.
|
|
||||||
*
|
|
||||||
* Tomahawk is distributed in the hope that it will be useful,
|
|
||||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
||||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
||||||
* GNU General Public License for more details.
|
|
||||||
*
|
|
||||||
* You should have received a copy of the GNU General Public License
|
|
||||||
* along with Tomahawk. If not, see <http://www.gnu.org/licenses/>.
|
|
||||||
*/
|
|
||||||
|
|
||||||
#ifndef CHECKDIRTREE_H
|
|
||||||
#define CHECKDIRTREE_H
|
|
||||||
|
|
||||||
#include "DllMacro.h"
|
|
||||||
|
|
||||||
#include <QFileSystemModel>
|
|
||||||
#include <QTreeView>
|
|
||||||
|
|
||||||
class DLLEXPORT CheckDirModel : public QFileSystemModel
|
|
||||||
{
|
|
||||||
Q_OBJECT
|
|
||||||
|
|
||||||
public:
|
|
||||||
CheckDirModel( QWidget* parent = 0 );
|
|
||||||
virtual ~CheckDirModel();
|
|
||||||
|
|
||||||
virtual Qt::ItemFlags flags( const QModelIndex& index ) const;
|
|
||||||
virtual QVariant data( const QModelIndex& index, int role = Qt::DisplayRole ) const;
|
|
||||||
virtual bool setData( const QModelIndex& index, const QVariant& value, int role = Qt::EditRole );
|
|
||||||
|
|
||||||
void setCheck( const QModelIndex& index, const QVariant& value );
|
|
||||||
Qt::CheckState getCheck( const QModelIndex& index );
|
|
||||||
|
|
||||||
void cleanup();
|
|
||||||
signals:
|
|
||||||
void dataChangedByUser( const QModelIndex & index );
|
|
||||||
|
|
||||||
private slots:
|
|
||||||
void getFileInfoResult();
|
|
||||||
void volumeShowFinished();
|
|
||||||
void processErrorOutput();
|
|
||||||
private:
|
|
||||||
QHash<QPersistentModelIndex, Qt::CheckState> m_checkTable;
|
|
||||||
|
|
||||||
bool m_shownVolumes;
|
|
||||||
QString m_setFilePath;
|
|
||||||
QString m_getFileInfoPath;
|
|
||||||
};
|
|
||||||
|
|
||||||
|
|
||||||
class DLLEXPORT CheckDirTree : public QTreeView
|
|
||||||
{
|
|
||||||
Q_OBJECT
|
|
||||||
|
|
||||||
public:
|
|
||||||
CheckDirTree( QWidget* parent );
|
|
||||||
|
|
||||||
void checkPath( const QString& path, Qt::CheckState state );
|
|
||||||
|
|
||||||
void setExclusions( const QStringList& list );
|
|
||||||
QStringList getExclusions();
|
|
||||||
QStringList getCheckedPaths();
|
|
||||||
|
|
||||||
void cleanup();
|
|
||||||
signals:
|
|
||||||
void changed();
|
|
||||||
|
|
||||||
private slots:
|
|
||||||
void onCollapse( const QModelIndex& idx );
|
|
||||||
void onExpand( const QModelIndex& idx );
|
|
||||||
void updateNode( const QModelIndex& idx );
|
|
||||||
|
|
||||||
void modelReset();
|
|
||||||
private:
|
|
||||||
CheckDirModel m_dirModel;
|
|
||||||
QSet<qint64> m_expandedSet;
|
|
||||||
|
|
||||||
void fillDown( const QModelIndex& index );
|
|
||||||
void updateParent( const QModelIndex& index );
|
|
||||||
void getExclusionsForNode( const QModelIndex& index, QStringList& exclusions );
|
|
||||||
void getChecksForNode( const QModelIndex& index, QStringList& checks );
|
|
||||||
};
|
|
||||||
|
|
||||||
#endif // CHECKDIRTREE_H
|
|
Reference in New Issue
Block a user