ui->setupUi(this);
Config config;
_icons_theme = config.getValue("ui/iconstheme").toString();
- REGISTERED_FILE_EXTENSIONS << "mp3" << "flac" << "wma" << "aac" << "ogg";
+ REGISTERED_FILE_EXTENSIONS << "mp3" << "flac" << "wma" << "aac" << "ogg" << "asf" << "ape" << "wav";
setWindowFlags(windowFlags() | Qt::Window);
setAttribute(Qt::WA_Maemo5StackedWindow);
_model = new QStandardItemModel(0, 2, this);
ui->progressBar->hide();
- readDir(_current_dir);
+ _home();
connect(ui->backButton, SIGNAL(clicked()), this, SLOT(_back()));
connect(ui->dirView, SIGNAL(clicked(QModelIndex)), this, SLOT(_process_click(QModelIndex)));
connect(ui->dirView, SIGNAL(doubleClicked(QModelIndex)), this, SLOT(_process_dblclick(QModelIndex)));
delete ui;
}
-void DirectoryView::readDir(QString path) {
+void DirectoryView::readDir(QString path, QString pathToScroll) {
QDir dir(path);
_current_dir = dir.absoluteFilePath(path);
_directories.clear();
_files.clear();
QList<QString> dirnames;
QList<QString> filenames;
- QFileInfoList items = dir.entryInfoList(QDir::Files | QDir::Dirs | QDir::NoDotAndDotDot);
+ QFileInfoList items = dir.entryInfoList(QDir::Files | QDir::Dirs | QDir::NoDotAndDotDot | QDir::Hidden);
foreach (QFileInfo info, items) {
if (info.isDir()) {
- _directories << info.absoluteFilePath();
- dirnames << info.fileName();
+ if (info.fileName().startsWith(".")) {
+ if (info.fileName() == ".sounds") {
+ _directories << info.absoluteFilePath();
+ dirnames << tr("Audioclips");
+ }
+ } else {
+ _directories << info.absoluteFilePath();
+ dirnames << info.fileName();
+ }
} else {
if (REGISTERED_FILE_EXTENSIONS.contains(info.suffix().toLower())) {
_files << info.absoluteFilePath();
int i = 0;
foreach (QString str, dirnames) {
_model->setItem(i, 0, new QStandardItem(QIcon(":/icons/"+_icons_theme+"/deselect_all.png"), ""));
- _model->setItem(i, 1, new QStandardItem(QIcon(":/icons/"+_icons_theme+"/folder.png"), str+"/"));
+ _model->setItem(i, 1, new QStandardItem(QIcon(":/icons/"+_icons_theme+"/folder.png"), str));
i++;
}
foreach (QString str, filenames) {
ui->dirView->setColumnWidth(0, 70);
ui->addButton->setEnabled(false);
ui->addButton->setIcon(QIcon());
+ if (pathToScroll.isEmpty()) {
+ ui->dirView->scrollToTop();
+ return;
+ }
+ int row = _directories.indexOf(pathToScroll);
+ if (row >= 0 && row < _model->rowCount()) {
+ QModelIndex id = _model->index(row, 1);
+ ui->dirView->scrollTo(id, QAbstractItemView::PositionAtCenter);
+ }
}
void DirectoryView::_back() {
- readDir(_current_dir+"/..");
+ QDir current(_current_dir);
+ current.cdUp();
+ QString dir_to_center = "";
+ if (_nav_history.size() > 0) {
+ dir_to_center = _nav_history.pop();
+ }
+ readDir(current.path(), dir_to_center);
}
void DirectoryView::_process_click(QModelIndex index) {
if (index.column() == 0) {
} else {
- QString data = index.data().toString();
- if (data.endsWith("/")) {
+ if (index.row() < _directories.count()) {
_current_dir = _directories.at(index.row());
readDir(_current_dir);
+ _nav_history.push(_current_dir);
return;
}
}
void DirectoryView::_process_dblclick(QModelIndex index) {
if (index.column() == 0) {
} else {
- QString data = index.data().toString();
- if (!data.endsWith("/")) {
+ if (index.row() >= _directories.count()) {
QString filename = _files.at(index.row() - _directories.count());
Track track = _tagresolver->decodeOne(filename);
emit addAndPlay(track);
void DirectoryView::_home() {
_current_dir = QDir::homePath();
- readDir(_current_dir);
+ homeScreen();
+ _nav_history.clear();
}
void DirectoryView::_toggle_selection() {
QStringList files;
QStringList directories;
foreach (QModelIndex index, selected) {
- if (!index.data().toString().endsWith("/")) {
+ if (index.row() >= _directories.count()) {
files << _files.at(index.row() - _directories.count());
} else {
directories << _directories.at(index.row());
ui->selectToggleButton->setIcon(QIcon(":/icons/"+_icons_theme+"/select_all.png"));
}
ui->playerButton->setIcon(QIcon(":/icons/"+_icons_theme+"/player.png"));
- readDir(_current_dir);
+ _home();
}
-void DirectoryView::updateGradient() {
+void DirectoryView::checkGradient() {
Config config;
if (config.getValue("ui/gradient").toString() == "yes") {
ui->bottomWidget->setStyleSheet(_bottom_gradient);
void DirectoryView::updateTranslations() {
ui->retranslateUi(this);
}
+
+void DirectoryView::homeScreen() {
+ _directories.clear();
+ _files.clear();
+ _model->clear();
+ _model->setRowCount(2);
+ _model->setColumnCount(2);
+ _model->setItem(0, 0, new QStandardItem(QIcon(":/icons/"+_icons_theme+"/deselect_all.png"), ""));
+ _model->setItem(0, 1, new QStandardItem(tr("Inner memory")));
+ _model->setItem(1, 0, new QStandardItem(QIcon(":/icons/"+_icons_theme+"/deselect_all.png"), ""));
+ _model->setItem(1, 1, new QStandardItem(tr("Memory card")));
+ _directories << QDir::homePath()+"/MyDocs/";
+ _directories << "/media/mmc1/";
+ ui->dirView->setColumnWidth(0, 70);
+ ui->addButton->setEnabled(false);
+ ui->addButton->setIcon(QIcon());
+}