summaryrefslogtreecommitdiffstats
path: root/filewidget.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'filewidget.cpp')
-rw-r--r--filewidget.cpp45
1 files changed, 38 insertions, 7 deletions
diff --git a/filewidget.cpp b/filewidget.cpp
index ac75d48..f1972cf 100644
--- a/filewidget.cpp
+++ b/filewidget.cpp
@@ -74,7 +74,7 @@ void FileWidget::setupGui(){
mFileView->setSortingEnabled(true);
mFileView->setSelectionBehavior(QAbstractItemView::SelectRows);
mFileView->setSelectionMode(QAbstractItemView::ExtendedSelection);
- connect(mFileView, SIGNAL(doubleClicked(QModelIndex)), this, SLOT(itemSelected(QModelIndex)));
+ connect(mFileView, SIGNAL(doubleClicked(QModelIndex)), this, SLOT(properties(QModelIndex)));
QGroupBox *filesGB = new QGroupBox(tr("Files"));
QHBoxLayout *filesGBL = new QHBoxLayout;
filesGBL->addWidget(mFileView);
@@ -96,8 +96,10 @@ void FileWidget::setupGui(){
mQFiles.prepare("SELECT COUNT(*) FROM files WHERE cmd5sum = :md5");
mFileDisplay = new FileDisplay(this);
+ mMenuBar = new QMenuBar;
QVBoxLayout *mainLayout = new QVBoxLayout;
+ mainLayout->addWidget(mMenuBar);
mainLayout->addWidget(dirGB);
mainLayout->addWidget(filterGB);
mainLayout->addWidget(filesGB);
@@ -270,7 +272,19 @@ void FileWidget::fileSelectionChanged(const QItemSelection &selected, const QIte
emit durationChanged(dur.toString());
}
-void FileWidget::itemSelected(const QModelIndex &idx){
+void FileWidget::properties(){
+ QModelIndexList idxs = mFileView->selectionModel()->selectedRows();
+ if(!idxs.isEmpty()){
+ QModelIndex cur = idxs.first();
+ int attr = cur.data(AttrsRole).toInt();
+ if(attr != ParentDir && attr != Directory){
+ mFileView->selectionModel()->select(cur, QItemSelectionModel::Rows);
+ properties(cur);
+ }
+ }
+}
+
+void FileWidget::properties(const QModelIndex &idx){
QModelIndex name = idx;
QString mime = idx.sibling(idx.row(), MimeColumn).data().toString();
if(name.column() != NameColumn){
@@ -287,15 +301,32 @@ void FileWidget::itemSelected(const QModelIndex &idx){
}
void FileWidget::cd(const QString &to){
+ QString ld = mDir->text();
QDir cur(mDir->text());
- cur.cd(to);
- QString newDir = cur.absolutePath();
- mDir->setText(QDir::toNativeSeparators(newDir));
- gatherData();
+ if(cur.cd(to)){
+ QString newDir = cur.absolutePath();
+ mDir->setText(QDir::toNativeSeparators(newDir));
+ mLastDir = ld;
+ gatherData();
+ }else{
+ QString msg = QString(tr("Could not cd to %1")).arg(to);
+ emit statusMessage(msg);
+ }
+}
+
+void FileWidget::cdUp(){
+ cd("..");
+}
+
+void FileWidget::cdLast(){
+ cd(mLastDir);
}
void FileWidget::deleteFiles(){
QModelIndexList selFiles = mFileView->selectionModel()->selectedRows(NameColumn);
+ if(selFiles.isEmpty()){
+ return;
+ }
const QString msg = QString(tr("Really delete %1 file(s)?")).arg(QString::number(selFiles.count()));
int retval = QMessageBox::question(this, tr("Delete files..."), msg);
if(retval == QMessageBox::Yes){
@@ -325,7 +356,7 @@ void FileWidget::keyPressEvent(QKeyEvent *e){
if(mFileView->hasFocus()){
if(e->key() == Qt::Key_Return){
QModelIndex idx = mFileView->selectionModel()->selectedRows(NameColumn).at(0);
- itemSelected(idx);
+ properties(idx);
goto exit;
}
if(e->key() == Qt::Key_Delete){