Enforce lazy loading for FileBrowser (#6996)
This commit is contained in:
@@ -70,7 +70,7 @@ public:
|
||||
*/
|
||||
FileBrowser( const QString & directories, const QString & filter,
|
||||
const QString & title, const QPixmap & pm,
|
||||
QWidget * parent, bool dirs_as_items = false, bool recurse = false,
|
||||
QWidget * parent, bool dirs_as_items = false,
|
||||
const QString& userDir = "",
|
||||
const QString& factoryDir = "");
|
||||
|
||||
@@ -94,7 +94,7 @@ public:
|
||||
|
||||
private slots:
|
||||
void reloadTree();
|
||||
void expandItems( QTreeWidgetItem * item=nullptr, QList<QString> expandedDirs = QList<QString>() );
|
||||
void expandItems(const QList<QString>& expandedDirs, QTreeWidgetItem* item = nullptr);
|
||||
void giveFocusToFilter();
|
||||
|
||||
private:
|
||||
@@ -121,7 +121,6 @@ private:
|
||||
QString m_filter; //!< Filter as used in QDir::match()
|
||||
|
||||
bool m_dirsAsItems;
|
||||
bool m_recurse;
|
||||
|
||||
void addContentCheckBox();
|
||||
QCheckBox* m_showUserContent = nullptr;
|
||||
|
||||
@@ -102,14 +102,13 @@ void FileBrowser::addContentCheckBox()
|
||||
|
||||
FileBrowser::FileBrowser(const QString & directories, const QString & filter,
|
||||
const QString & title, const QPixmap & pm,
|
||||
QWidget * parent, bool dirs_as_items, bool recurse,
|
||||
QWidget * parent, bool dirs_as_items,
|
||||
const QString& userDir,
|
||||
const QString& factoryDir):
|
||||
SideBarWidget( title, pm, parent ),
|
||||
m_directories( directories ),
|
||||
m_filter( filter ),
|
||||
m_dirsAsItems( dirs_as_items ),
|
||||
m_recurse( recurse ),
|
||||
m_userDir(userDir),
|
||||
m_factoryDir(factoryDir)
|
||||
{
|
||||
@@ -177,7 +176,7 @@ void FileBrowser::saveDirectoriesStates()
|
||||
|
||||
void FileBrowser::restoreDirectoriesStates()
|
||||
{
|
||||
expandItems(nullptr, m_savedExpandedDirs);
|
||||
expandItems(m_savedExpandedDirs);
|
||||
}
|
||||
|
||||
void FileBrowser::buildSearchTree()
|
||||
@@ -337,8 +336,10 @@ void FileBrowser::reloadTree()
|
||||
|
||||
|
||||
|
||||
void FileBrowser::expandItems(QTreeWidgetItem* item, QList<QString> expandedDirs)
|
||||
void FileBrowser::expandItems(const QList<QString>& expandedDirs, QTreeWidgetItem* item)
|
||||
{
|
||||
if (expandedDirs.isEmpty()) { return; }
|
||||
|
||||
int numChildren = item ? item->childCount() : m_fileBrowserTreeWidget->topLevelItemCount();
|
||||
for (int i = 0; i < numChildren; ++i)
|
||||
{
|
||||
@@ -346,14 +347,10 @@ void FileBrowser::expandItems(QTreeWidgetItem* item, QList<QString> expandedDirs
|
||||
auto d = dynamic_cast<Directory*>(it);
|
||||
if (d)
|
||||
{
|
||||
// Expanding is required when recursive to load in its contents, even if it's collapsed right afterward
|
||||
if (m_recurse) { d->setExpanded(true); }
|
||||
|
||||
d->setExpanded(expandedDirs.contains(d->fullName()));
|
||||
|
||||
if (m_recurse && it->childCount())
|
||||
if (it->childCount() > 0)
|
||||
{
|
||||
expandItems(it, expandedDirs);
|
||||
expandItems(expandedDirs, it);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -115,24 +115,24 @@ MainWindow::MainWindow() :
|
||||
"*.mmp *.mmpz *.xml *.mid *.mpt",
|
||||
tr( "My Projects" ),
|
||||
embed::getIconPixmap( "project_file" ).transformed( QTransform().rotate( 90 ) ),
|
||||
splitter, false, true,
|
||||
splitter, false,
|
||||
confMgr->userProjectsDir(),
|
||||
confMgr->factoryProjectsDir()));
|
||||
sideBar->appendTab(
|
||||
new FileBrowser(confMgr->userSamplesDir() + "*" + confMgr->factorySamplesDir(), FileItem::defaultFilters(),
|
||||
tr("My Samples"), embed::getIconPixmap("sample_file").transformed(QTransform().rotate(90)), splitter, false,
|
||||
true, confMgr->userSamplesDir(), confMgr->factorySamplesDir()));
|
||||
confMgr->userSamplesDir(), confMgr->factorySamplesDir()));
|
||||
sideBar->appendTab( new FileBrowser(
|
||||
confMgr->userPresetsDir() + "*" +
|
||||
confMgr->factoryPresetsDir(),
|
||||
"*.xpf *.cs.xml *.xiz *.lv2",
|
||||
tr( "My Presets" ),
|
||||
embed::getIconPixmap( "preset_file" ).transformed( QTransform().rotate( 90 ) ),
|
||||
splitter , false, true,
|
||||
splitter , false,
|
||||
confMgr->userPresetsDir(),
|
||||
confMgr->factoryPresetsDir()));
|
||||
sideBar->appendTab(new FileBrowser(QDir::homePath(), FileItem::defaultFilters(), tr("My Home"),
|
||||
embed::getIconPixmap("home").transformed(QTransform().rotate(90)), splitter, false, false));
|
||||
embed::getIconPixmap("home").transformed(QTransform().rotate(90)), splitter, false));
|
||||
|
||||
QStringList root_paths;
|
||||
QString title = tr( "Root directory" );
|
||||
|
||||
Reference in New Issue
Block a user