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" << "m4a";
setWindowFlags(windowFlags() | Qt::Window);
setAttribute(Qt::WA_Maemo5StackedWindow);
_model = new QStandardItemModel(0, 2, this);
ui->addButton->setEnabled(false);
ui->addButton->setIcon(QIcon());
+ ui->useButton->setEnabled(false);
+ ui->useButton->setIcon(QIcon());
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)));
connect(ui->homeButton, SIGNAL(clicked()), this, SLOT(_home()));
connect(ui->selectToggleButton, SIGNAL(clicked()), this, SLOT(_toggle_selection()));
connect(ui->addButton, SIGNAL(clicked()), this, SLOT(_add()));
+ connect(ui->useButton, SIGNAL(clicked()), this, SLOT(_use()));
connect(_tagresolver, SIGNAL(decoded(Track)), this, SLOT(_add_track(Track)));
connect(_tagresolver, SIGNAL(done()), this, SLOT(_done()));
+ connect(ui->playerButton, SIGNAL(clicked()), this, SLOT(hide()));
_top_gradient = ui->topWidget->styleSheet();
_bottom_gradient = ui->bottomWidget->styleSheet();
}
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());
+ ui->useButton->setEnabled(false);
+ ui->useButton->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);
if (ui->dirView->selectionModel()->selectedRows().count() > 0) {
ui->addButton->setEnabled(true);
ui->addButton->setIcon(QIcon(":/icons/"+_icons_theme+"/add.png"));
+ ui->useButton->setEnabled(true);
+ ui->useButton->setIcon(QIcon(":/icons/"+_icons_theme+"/use.png"));
} else {
ui->addButton->setEnabled(false);
ui->addButton->setIcon(QIcon());
+ ui->useButton->setEnabled(false);
+ ui->useButton->setIcon(QIcon());
}
}
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());
_icons_theme = config.getValue("ui/iconstheme").toString();
if (!ui->addButton->icon().isNull())
ui->addButton->setIcon(QIcon(":/icons/"+_icons_theme+"/add.png"));
+ if (!ui->useButton->icon().isNull())
+ ui->useButton->setIcon(QIcon(":/icons/"+_icons_theme+"/add.png"));
ui->homeButton->setIcon(QIcon(":/icons/"+_icons_theme+"/home.png"));
ui->backButton->setIcon(QIcon(":/icons/"+_icons_theme+"/back.png"));
if (ui->dirView->selectionModel()->selectedRows().count() == _model->rowCount()) {
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);
ui->lverticalLayout->addWidget(ui->homeButton);
ui->lverticalLayout->addItem(ui->lverticalSpacer_1);
ui->lverticalLayout->addWidget(ui->playerButton);
- ui->rverticalLayout->removeItem(ui->rverticalSpacer);
+ ui->rverticalLayout->removeItem(ui->rverticalSpacer_0);
+ ui->rverticalLayout->removeItem(ui->rverticalSpacer_1);
ui->rverticalLayout->addWidget(ui->addButton);
- ui->rverticalLayout->addItem(ui->rverticalSpacer);
+ ui->rverticalLayout->addItem(ui->rverticalSpacer_0);
+ ui->rverticalLayout->addWidget(ui->useButton);
+ ui->rverticalLayout->addItem(ui->rverticalSpacer_1);
ui->rverticalLayout->addWidget(ui->selectToggleButton);
+ ui->lverticalWidget->show();
+ ui->rverticalWidget->show();
}
void DirectoryView::portraitMode() {
+ ui->lverticalWidget->hide();
+ ui->rverticalWidget->hide();
ui->lverticalLayout->removeItem(ui->lverticalSpacer_0);
ui->lverticalLayout->removeItem(ui->lverticalSpacer_1);
- ui->rverticalLayout->removeItem(ui->rverticalSpacer);
+ ui->rverticalLayout->removeItem(ui->rverticalSpacer_0);
ui->topWidget->layout()->removeItem(ui->thorizontalSpacer_0);
ui->topWidget->layout()->removeItem(ui->thorizontalSpacer_1);
ui->topWidget->layout()->addWidget(ui->backButton);
ui->topWidget->layout()->addWidget(ui->homeButton);
ui->topWidget->layout()->addItem(ui->thorizontalSpacer_1);
ui->topWidget->layout()->addWidget(ui->addButton);
- ui->bottomWidget->layout()->removeItem(ui->bhorizontalSpacer);
+ ui->bottomWidget->layout()->removeItem(ui->bhorizontalSpacer_0);
+ ui->bottomWidget->layout()->removeItem(ui->bhorizontalSpacer_1);
ui->bottomWidget->layout()->addWidget(ui->playerButton);
- ui->bottomWidget->layout()->addItem(ui->bhorizontalSpacer);
+ ui->bottomWidget->layout()->addItem(ui->bhorizontalSpacer_0);
+ ui->bottomWidget->layout()->addWidget(ui->useButton);
+ ui->bottomWidget->layout()->addItem(ui->bhorizontalSpacer_1);
ui->bottomWidget->layout()->addWidget(ui->selectToggleButton);
ui->topWidget->show();
ui->bottomWidget->show();
}
+
+void DirectoryView::updateTranslations() {
+ ui->retranslateUi(this);
+ homeScreen();
+}
+
+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("Internal 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());
+ ui->useButton->setEnabled(false);
+ ui->useButton->setIcon(QIcon());
+}
+
+void DirectoryView::_use() {
+ emit clearCurrent();
+ _add();
+}