void MainWindow::buildFileBrowser() { QString rootPath = qgetenv("HOME"); this->drivesModel->setFilter(QDir::NoDotAndDotDot | QDir::Dirs); QTreeView *treeView = this->treeView = new QTreeView(this->ui->dockDir); treeView->setModel(this->drivesModel); treeView->setRootIndex(this->drivesModel->setRootPath(rootPath + "/../")); treeView->hideColumn(1); treeView->hideColumn(2); treeView->hideColumn(3); treeView->setEditTriggers(QAbstractItemView::NoEditTriggers); treeView->setDragEnabled(true); treeView->setDragDropMode(QAbstractItemView::DragOnly); this->ui->dockDir->setWidget(treeView); this->filesModel->setFilter(QDir::NoDotAndDotDot | QDir::Files); QListView *listView = this->listView = new QListView(this->ui->dockFile); listView->setModel(this->filesModel); listView->setRootIndex(this->filesModel->setRootPath(rootPath)); listView->setEditTriggers(QAbstractItemView::NoEditTriggers); listView->setDragEnabled(true); listView->setSelectionMode(QAbstractItemView::ExtendedSelection); this->ui->dockFile->setWidget(listView); listView->show(); treeView->show(); }
QObject* FileSystemTab::component(Jerboa::Plugin::ComponentType type, QObject* parent) { switch(type) { case Jerboa::Plugin::WidgetUsedWithPlaylist: { QFileSystemModel* model = new FileSystemModelWithToolTip(parent); model->setRootPath("/"); model->setFilter(QDir::AllEntries | QDir::NoDotAndDotDot | QDir::AllDirs); model->setNameFilterDisables(false); QStringList musicGlobs; musicGlobs << "*.aac" << "*.aiff" << "*.ape" << "*.au" << "*.cdda" << "*.flac" << "*.m4a" << "*.mp3" << "*.oga" << "*.ogg" << "*.ogm" << "*.wav" << "*.wma" ; model->setNameFilters(musicGlobs); QTreeView* view = new QTreeView(qobject_cast<QWidget*>(parent)); view->setWindowTitle("Files"); view->setModel(model); view->setHeaderHidden(true); for(int i = 1; i < model->columnCount(); ++i) { view->setColumnHidden(i, true); } QString path = QDesktopServices::storageLocation(QDesktopServices::MusicLocation); if(path.isEmpty() || !QDir(path).exists()) { path = QDesktopServices::storageLocation(QDesktopServices::HomeLocation); } const QModelIndex index(model->index(QSettings().value("collection/directory", path).toString())); for(QModelIndex iterator(index); iterator.isValid(); iterator = iterator.parent()) { view->setExpanded(iterator, true); } view->setDragDropMode(QAbstractItemView::DragOnly); view->selectionModel()->select(index, QItemSelectionModel::ClearAndSelect); view->setSelectionMode(QAbstractItemView::ExtendedSelection); connect( view, SIGNAL(doubleClicked(QModelIndex)), this, SLOT(addPathToPlaylist(QModelIndex)) ); QTimer* timer = new QTimer(this); connect( timer, SIGNAL(timeout()), this, SLOT(scrollToSelection()) ); timer->setSingleShot(true); timer->start(1000); m_view = view; return view; } default: return Jerboa::Plugin::component(type, parent); } }