mirror of
https://github.com/tomahawk-player/tomahawk.git
synced 2025-08-06 14:16:32 +02:00
Update the tree on mac after /Volumes is shown to avoid a race condition
This commit is contained in:
@@ -20,6 +20,7 @@
|
|||||||
#include "checkdirtree.h"
|
#include "checkdirtree.h"
|
||||||
|
|
||||||
#include "utils/logger.h"
|
#include "utils/logger.h"
|
||||||
|
#include "tomahawksettings.h"
|
||||||
|
|
||||||
#include <QProcess>
|
#include <QProcess>
|
||||||
|
|
||||||
@@ -57,7 +58,9 @@ CheckDirModel::getFileInfoResult()
|
|||||||
if ( res == "1" )
|
if ( res == "1" )
|
||||||
{
|
{
|
||||||
// Remove the hidden flag for the /Volumnes folder so all mount points are visible in the default (Q)FileSystemModel
|
// Remove the hidden flag for the /Volumnes folder so all mount points are visible in the default (Q)FileSystemModel
|
||||||
QProcess::startDetached( QString( "SetFile -a v %1" ).arg( s_macVolumePath ) );
|
QProcess* p = new QProcess( this );
|
||||||
|
connect( p, SIGNAL( finished( int, QProcess::ExitStatus ) ), this, SLOT( volumeShowFinished() ) );
|
||||||
|
p->start( QString( "SetFile -a v %1" ).arg( s_macVolumePath ) );
|
||||||
m_shownVolumes = true;
|
m_shownVolumes = true;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -65,6 +68,12 @@ CheckDirModel::getFileInfoResult()
|
|||||||
#endif
|
#endif
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void
|
||||||
|
CheckDirModel::volumeShowFinished()
|
||||||
|
{
|
||||||
|
reset();
|
||||||
|
}
|
||||||
|
|
||||||
Qt::ItemFlags
|
Qt::ItemFlags
|
||||||
CheckDirModel::flags( const QModelIndex& index ) const
|
CheckDirModel::flags( const QModelIndex& index ) const
|
||||||
{
|
{
|
||||||
@@ -150,6 +159,8 @@ CheckDirTree::CheckDirTree( QWidget* parent )
|
|||||||
SLOT( updateNode( QModelIndex ) ) );
|
SLOT( updateNode( QModelIndex ) ) );
|
||||||
connect( &m_dirModel, SIGNAL( dataChangedByUser( const QModelIndex& ) ),
|
connect( &m_dirModel, SIGNAL( dataChangedByUser( const QModelIndex& ) ),
|
||||||
SIGNAL( changed() ) );
|
SIGNAL( changed() ) );
|
||||||
|
connect( &m_dirModel, SIGNAL( modelReset() ),
|
||||||
|
SLOT( modelReset() ) );
|
||||||
|
|
||||||
connect( this, SIGNAL( collapsed( QModelIndex ) ),
|
connect( this, SIGNAL( collapsed( QModelIndex ) ),
|
||||||
SLOT( onCollapse( QModelIndex ) ) );
|
SLOT( onCollapse( QModelIndex ) ) );
|
||||||
@@ -301,6 +312,16 @@ CheckDirTree::updateNode( const QModelIndex& idx )
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
void
|
||||||
|
CheckDirTree::modelReset()
|
||||||
|
{
|
||||||
|
foreach ( const QString& dir, TomahawkSettings::instance()->scannerPaths() )
|
||||||
|
{
|
||||||
|
checkPath( dir, Qt::Checked );
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
void
|
void
|
||||||
CheckDirTree::fillDown( const QModelIndex& parent )
|
CheckDirTree::fillDown( const QModelIndex& parent )
|
||||||
{
|
{
|
||||||
|
@@ -1,6 +1,7 @@
|
|||||||
/* === This file is part of Tomahawk Player - <http://tomahawk-player.org> ===
|
/* === This file is part of Tomahawk Player - <http://tomahawk-player.org> ===
|
||||||
*
|
*
|
||||||
* Copyright 2010-2011, Christian Muehlhaeuser <muesli@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
|
* Tomahawk is free software: you can redistribute it and/or modify
|
||||||
* it under the terms of the GNU General Public License as published by
|
* it under the terms of the GNU General Public License as published by
|
||||||
@@ -44,6 +45,7 @@ signals:
|
|||||||
|
|
||||||
private slots:
|
private slots:
|
||||||
void getFileInfoResult();
|
void getFileInfoResult();
|
||||||
|
void volumeShowFinished();
|
||||||
|
|
||||||
private:
|
private:
|
||||||
QHash<QPersistentModelIndex, Qt::CheckState> m_checkTable;
|
QHash<QPersistentModelIndex, Qt::CheckState> m_checkTable;
|
||||||
@@ -73,6 +75,7 @@ private slots:
|
|||||||
void onExpand( const QModelIndex& idx );
|
void onExpand( const QModelIndex& idx );
|
||||||
void updateNode( const QModelIndex& idx );
|
void updateNode( const QModelIndex& idx );
|
||||||
|
|
||||||
|
void modelReset();
|
||||||
private:
|
private:
|
||||||
CheckDirModel m_dirModel;
|
CheckDirModel m_dirModel;
|
||||||
QSet<qint64> m_expandedSet;
|
QSet<qint64> m_expandedSet;
|
||||||
|
Reference in New Issue
Block a user