summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorArno <arno@disconnect.de>2016-09-04 08:58:32 +0200
committerArno <arno@disconnect.de>2016-09-04 08:58:32 +0200
commit6faf839f511102c6daa69ffb9d8d7231656d7c09 (patch)
treeed40e87a811499025bbce5569b31889d7a2da7c3
parent15025b8b62697787f85fffc7349fb1f9847d39c4 (diff)
downloadShemovCleaner-6faf839f511102c6daa69ffb9d8d7231656d7c09.tar.gz
ShemovCleaner-6faf839f511102c6daa69ffb9d8d7231656d7c09.tar.bz2
ShemovCleaner-6faf839f511102c6daa69ffb9d8d7231656d7c09.zip
Add menuBar to FileWidget
-rw-r--r--back_dick.pngbin0 -> 822 bytes
-rw-r--r--filewidget.cpp45
-rw-r--r--filewidget.h13
-rw-r--r--shemovcleaner.cpp32
-rw-r--r--shemovcleaner.h6
-rw-r--r--shemovcleaner.qrc1
6 files changed, 87 insertions, 10 deletions
diff --git a/back_dick.png b/back_dick.png
new file mode 100644
index 0000000..ec7eded
--- /dev/null
+++ b/back_dick.png
Binary files differ
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){
diff --git a/filewidget.h b/filewidget.h
index d16f307..36e63d1 100644
--- a/filewidget.h
+++ b/filewidget.h
@@ -5,6 +5,7 @@
#include <QSqlDatabase>
#include <QSqlQuery>
#include <QItemSelection>
+#include <QMenuBar>
class QLineEdit;
class QStandardItemModel;
@@ -22,6 +23,7 @@ class FileWidget : public QWidget {
enum Columns { IconColumn = 0, NameColumn = 1, MimeColumn = 2, DurationColumn = 3, Md5Column = 4 };
explicit FileWidget(QWidget *parent = 0);
QTreeView *fileView() { return mFileView; }
+ QMenuBar *menuBar() { return mMenuBar; }
~FileWidget();
signals:
@@ -32,14 +34,17 @@ class FileWidget : public QWidget {
public slots:
void fileSelectionChanged(const QItemSelection &selected, const QItemSelection &deselected);
void cd(const QString &to);
+ void cdUp();
+ void cdLast();
void deleteFiles();
-
- private slots:
void gatherData();
void selectDir();
+
+ private slots:
void filter();
void clearFilter();
- void itemSelected(const QModelIndex &idx);
+ void properties();
+ void properties(const QModelIndex &idx);
protected:
virtual void keyPressEvent(QKeyEvent *e);
@@ -61,6 +66,8 @@ class FileWidget : public QWidget {
QSqlQuery mQOrigin;
QSqlQuery mQFiles;
FileDisplay *mFileDisplay;
+ QMenuBar *mMenuBar;
+ QString mLastDir;
};
#endif // FILEWIDGET_H
diff --git a/shemovcleaner.cpp b/shemovcleaner.cpp
index aaf0a5f..deb9bc4 100644
--- a/shemovcleaner.cpp
+++ b/shemovcleaner.cpp
@@ -182,9 +182,41 @@ void ShemovCleaner::createActions(){
mTorrentTab->addAction(createSeparator());
mTorrentTab->addAction(mTorDirA);
+ //TorrentDisplay
mTorCopyToClipA = new QAction(QIcon(":/edit-copy.png"), tr("Copy"), this);
connect(mTorCopyToClipA, SIGNAL(triggered()), mTorrentTab->torrentDisplay(), SLOT(copyToClipboard()));
mTorrentTab->torrentDisplay()->addAction(mTorCopyToClipA);
+
+ //FileWidget
+ mFileDirA = new QAction(QIcon(":/folder.png"), tr("Select folder..."), this);
+ connect(mFileDirA, SIGNAL(triggered()), mFileTab, SLOT(selectDir()));
+ mFileRefreshA = new QAction(QIcon(":/refresh.png"), tr("Refresh"), this);
+ connect(mFileRefreshA, SIGNAL(triggered()), mFileTab, SLOT(gatherData()));
+ mFileUpA = new QAction(QIcon(":/up_dick.png"), tr("Up directory"), this);
+ connect(mFileUpA, SIGNAL(triggered()), mFileTab, SLOT(cdUp()));
+ mFileBackDirA = new QAction(QIcon(":/back_dick"), tr("Back"), this);
+ connect(mFileBackDirA, SIGNAL(triggered()), mFileTab, SLOT(cdLast()));
+ mFilePropertiesA = new QAction(QIcon(":/diaper.png"), tr("Properties..."), this);
+ connect(mFilePropertiesA, SIGNAL(triggered()), mFileTab, SLOT(properties()));
+ mFileDeleteA = new QAction(QIcon(":/delete.png"), tr("Delete..."), this);
+ connect(mFileDeleteA, SIGNAL(triggered()), mFileTab, SLOT(deleteFiles()));
+
+ QMenu *fileFileM = new QMenu(tr("File"));
+ fileFileM->addAction(mFileDirA);
+ fileFileM->addAction(mFileRefreshA);
+ fileFileM->addSeparator();
+ fileFileM->addAction(quitA);
+ mFileTab->menuBar()->addMenu(fileFileM);
+ QMenu *fileEditM = new QMenu(tr("Edit"));
+ fileEditM->addAction(mFileUpA);
+ fileEditM->addAction(mFileBackDirA);
+ fileEditM->addSeparator();
+ fileEditM->addAction(mFileDeleteA);
+ fileEditM->addSeparator();
+ fileEditM->addAction(configA);
+ fileEditM->addSeparator();
+ fileEditM->addAction(mFilePropertiesA);
+ mFileTab->menuBar()->addMenu(fileEditM);
}
void ShemovCleaner::openDatabase(){
diff --git a/shemovcleaner.h b/shemovcleaner.h
index 0ace511..7ffdec5 100644
--- a/shemovcleaner.h
+++ b/shemovcleaner.h
@@ -44,6 +44,12 @@ class ShemovCleaner : public QMainWindow {
QAction *mTorDirA;
QAction *mTorCopyToClipA;
QAction *mFnThisCopyToClipA;
+ QAction *mFileRefreshA;
+ QAction *mFileDirA;
+ QAction *mFileUpA;
+ QAction *mFileBackDirA;
+ QAction *mFilePropertiesA;
+ QAction *mFileDeleteA;
};
#endif // SHEMOVCLEANER_H
diff --git a/shemovcleaner.qrc b/shemovcleaner.qrc
index 7083020..ff20233 100644
--- a/shemovcleaner.qrc
+++ b/shemovcleaner.qrc
@@ -11,5 +11,6 @@
<file>chastity_belt.png</file>
<file>edit-copy.png</file>
<file>up_dick.png</file>
+ <file>back_dick.png</file>
</qresource>
</RCC>