summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--archiveeditdialog.cpp28
-rw-r--r--archiveeditdialog.h2
-rw-r--r--archivefilewidget.cpp16
-rw-r--r--archivefilewidget.h4
-rw-r--r--archiveviewwidget.cpp22
-rw-r--r--archiveviewwidget.h5
-rw-r--r--filesystemwidget.h1
-rw-r--r--moviemodel.cpp24
-rw-r--r--moviemodel.h2
-rw-r--r--shemov.cpp34
-rw-r--r--shemov.h1
11 files changed, 121 insertions, 18 deletions
diff --git a/archiveeditdialog.cpp b/archiveeditdialog.cpp
index 925afe4..7b1604c 100644
--- a/archiveeditdialog.cpp
+++ b/archiveeditdialog.cpp
@@ -73,6 +73,9 @@ ArchiveEditDialog::ArchiveEditDialog(ListModel *genre, ListModel *actors, QWidge
//button layout
QHBoxLayout *buttonLayout = new QHBoxLayout;
buttonLayout->addStretch();
+ mGuess = new QPushButton(tr("Guess values"));
+ connect(mGuess, SIGNAL(clicked()), this, SLOT(guess()));
+ buttonLayout->addWidget(mGuess);
mArchive = new QPushButton(tr("Archive"));
connect(mArchive, SIGNAL(clicked()), this, SLOT(archive()));
buttonLayout->addWidget(mArchive);
@@ -174,6 +177,31 @@ void ArchiveEditDialog::archive(){
}
}
+void ArchiveEditDialog::guess(){
+ QString fileName = mCoverEditor->movie();
+ if(fileName.isEmpty()){
+ return;
+ }
+ qDebug() << fileName;
+ QFileInfo fi(fileName);
+ QString rfn = fi.completeBaseName();
+ rfn.chop(1);
+ QModelIndexList idx = mMovieModel->columnContains(rfn, MovieItem::Filename);
+ qDebug() << rfn;
+ if(idx.size() > 0){
+ QModelIndex cur = idx.at(0);
+ QList<QVariant> actors = cur.data(MovieModel::ActorsRole).toList();
+ foreach(QVariant v, actors){
+ mFileWidget->setActor(v.toString());
+ }
+ mFileWidget->setMovieTitle(cur.data(MovieModel::TitleBaseRole).toString());
+ mFileWidget->setQuality(cur.data(MovieModel::QualityRole).toInt());
+ mFileWidget->setSeriesNo(cur.data(MovieModel::SeriesNoRole).toInt());
+ int partno = cur.data(MovieModel::PartNoRole).toInt() + 1;
+ mFileWidget->setPartNo(partno);
+ }
+}
+
bool ArchiveEditDialog::checkInput(int genre, const QList<int> &actors, const QStringList &files, const QString &title, const QString &movie, int quality) {
if(genre < 0){
QMessageBox::critical(this, tr("Error"), tr("Genre is invalid"));
diff --git a/archiveeditdialog.h b/archiveeditdialog.h
index 6e9355d..ce0fd43 100644
--- a/archiveeditdialog.h
+++ b/archiveeditdialog.h
@@ -31,6 +31,7 @@ class ArchiveEditDialog : public QDialog {
private slots:
void archive();
+ void guess();
private:
bool checkInput(int genre, const QList<int> &actors, const QStringList &files, const QString &title, const QString &movie, int quality);
@@ -44,6 +45,7 @@ class ArchiveEditDialog : public QDialog {
ListModel *mActorsModel;
MovieModel *mMovieModel;
QDirModel *mDirModel;
+ QPushButton *mGuess;
QPushButton *mArchive;
QPushButton *mClose;
diff --git a/archivefilewidget.cpp b/archivefilewidget.cpp
index 59447e1..4f4ba0c 100644
--- a/archivefilewidget.cpp
+++ b/archivefilewidget.cpp
@@ -175,6 +175,22 @@ void ArchiveFileWidget::setActor(const QString &actor){
}
}
+void ArchiveFileWidget::setQuality(int quality){
+ mQuality->setValue(quality);
+}
+
+void ArchiveFileWidget::setMovieTitle(const QString &title){
+ mTitle->setText(title.toLower().trimmed());
+}
+
+void ArchiveFileWidget::setSeriesNo(int seriesno){
+ mSeriesNo->setValue(seriesno);
+}
+
+void ArchiveFileWidget::setPartNo(int partno){
+ mPartNo->setValue(partno);
+}
+
void ArchiveFileWidget::addActor(){
QString selectedActor = mActors->currentText();
if(!selectedActor.isEmpty() && !mActorIdMap.contains(selectedActor)){
diff --git a/archivefilewidget.h b/archivefilewidget.h
index 5d01556..339c66d 100644
--- a/archivefilewidget.h
+++ b/archivefilewidget.h
@@ -44,6 +44,10 @@ class ArchiveFileWidget : public QWidget {
public slots:
void setActor(const QString &actor);
+ void setQuality(int quality);
+ void setMovieTitle(const QString &title);
+ void setSeriesNo(int seriesno);
+ void setPartNo(int partno);
private slots:
void addActor();
diff --git a/archiveviewwidget.cpp b/archiveviewwidget.cpp
index 0e6686e..e6ffb4b 100644
--- a/archiveviewwidget.cpp
+++ b/archiveviewwidget.cpp
@@ -32,7 +32,7 @@
#include "helper.h"
#include "moviepropertiesdialog.h"
-ArchiveViewWidget::ArchiveViewWidget(MovieModel *model, ListModel *genre, ListModel *actors, QWidget *parent) : QWidget(parent), mMovieModel(model), mGenreModel(genre), mActorsModel(actors){
+ArchiveViewWidget::ArchiveViewWidget(MovieModel *model, ListModel *genre, ListModel *actors, QWidget *parent) : QWidget(parent), mMovieModel(model), mGenreModel(genre), mActorsModel(actors), mSize(0){
//filter bar
QHBoxLayout *filterLayout = new QHBoxLayout;
QLabel *l1 = new QLabel(tr("Filter by &genre"));
@@ -85,7 +85,9 @@ ArchiveViewWidget::ArchiveViewWidget(MovieModel *model, ListModel *genre, ListMo
connect(mFileView->selectionModel(), SIGNAL(currentChanged(const QModelIndex &, const QModelIndex)), this, SLOT(rowChanged(const QModelIndex &, const QModelIndex &)));
connect(mFileView, SIGNAL(doubleClicked(const QModelIndex &)), this, SLOT(showMovie(const QModelIndex &)));
+ connect(mFileView->selectionModel(), SIGNAL(selectionChanged(const QItemSelection &, const QItemSelection &)), this, SLOT(calcSize()));
+ mWindowTitle = QString("%1 - nothing selected").arg(qApp->applicationName());
setLayout(mainLayout);
}
@@ -110,12 +112,6 @@ void ArchiveViewWidget::addMovie(){
dlg.exec();
if(dlg.result() == QDialog::Accepted){
QString title = dlg.text().toLower().trimmed();
- QModelIndex idx = mMovieModel->index(title);
- if(idx != QModelIndex()){
- QString msg = QString(tr("Already have an entry with title %1")).arg(title);
- QMessageBox::critical(this, tr("Error"), msg);
- return;
- }
QList<QVariant> movieData;
movieData << title;
for(int i = 1; i < MovieItem::NumRows; ++i){
@@ -175,8 +171,16 @@ void ArchiveViewWidget::setActorFilter(const QString &filter){
void ArchiveViewWidget::rowChanged(const QModelIndex &/*current*/, const QModelIndex & /*prev*/){
QModelIndex idx = getSourceColumnZero();
- QString title = QString(tr("%1 - %2")).arg(qApp->applicationName()).arg(idx.data().toString());
- emit windowTitle(title);
+ mWindowTitle = QString(tr("%1 - %2")).arg(qApp->applicationName()).arg(idx.data().toString());
+ emit windowTitle(mWindowTitle);
+}
+
+void ArchiveViewWidget::calcSize(){
+ QModelIndexList sel = mFileView->selectionModel()->selectedRows(MovieItem::Size);
+ mSize = 0;
+ foreach(QModelIndex idx, sel){
+ mSize += idx.data().toLongLong();
+ }
}
const QModelIndex ArchiveViewWidget::getSourceColumnZero(){
diff --git a/archiveviewwidget.h b/archiveviewwidget.h
index fd2cf55..f07d9af 100644
--- a/archiveviewwidget.h
+++ b/archiveviewwidget.h
@@ -31,6 +31,8 @@ class ArchiveViewWidget : public QWidget {
ArchiveFileView* fileView() { return mFileView; };
void setEditDialog(EditArchiveItemDialog *dlg) { mEditDialog = dlg; };
void setCoverEditDialog(CoverArchiveEditor *dlg) { mCoverEditDialog = dlg; };
+ const QString &windowTitle() const { return mWindowTitle; };
+ qint64 currentSize() const { return mSize; };
public slots:
void editFile();
@@ -48,6 +50,7 @@ class ArchiveViewWidget : public QWidget {
private slots:
void rowChanged(const QModelIndex &current, const QModelIndex &prev);
+ void calcSize();
private:
const QModelIndex getSourceColumnZero();
@@ -63,6 +66,8 @@ class ArchiveViewWidget : public QWidget {
ArchiveProxy *mProxy;
EditArchiveItemDialog *mEditDialog;
CoverArchiveEditor *mCoverEditDialog;
+ QString mWindowTitle;
+ qint64 mSize;
};
#endif
diff --git a/filesystemwidget.h b/filesystemwidget.h
index 3fee9be..c15d77b 100644
--- a/filesystemwidget.h
+++ b/filesystemwidget.h
@@ -70,6 +70,7 @@ class FilesystemWidget : public QWidget {
MessageDialog *mRenameDialog;
QString mTemplate;
ArchiveEditDialog *mAEDialog;
+ qint64 mSize;
};
#endif
diff --git a/moviemodel.cpp b/moviemodel.cpp
index 191b987..da921b4 100644
--- a/moviemodel.cpp
+++ b/moviemodel.cpp
@@ -87,13 +87,23 @@ QModelIndex MovieModel::index(int movieId, int column) const{
return retval;
}
-QModelIndex MovieModel::index(const QString &movieTitle) const {
- QModelIndex retval = QModelIndex();
- for(int i = 0; i < rowCount(QModelIndex()); ++i){
- MovieItem *item = mItems.at(i);
- if(item->dataAt(MovieItem::Title).toString() == movieTitle){
- retval = createIndex(i, 0, item);
- break;
+QModelIndexList MovieModel::columnContains(const QVariant &content, int column) const{
+ QModelIndexList retval;
+ if((column == MovieItem::Title) || (column == MovieItem::Filename) || (column == MovieItem::Md5Sum)){
+ QString part = content.toString();
+ for(int i = 0; i < mItems.size(); ++i){
+ QString current = mItems.at(i)->dataAt(column).toString();
+ if(current.contains(part)){
+ retval << createIndex(i, column, mItems.at(i));
+ }
+ }
+ }else{
+ qint64 value = content.toLongLong();
+ for(int i = 0; i < mItems.size(); ++i){
+ qint64 current = mItems.at(i)->dataAt(column).toLongLong();
+ if(value == current){
+ retval << createIndex(i, column, mItems.at(i));
+ }
}
}
return retval;
diff --git a/moviemodel.h b/moviemodel.h
index 648a8f9..798a809 100644
--- a/moviemodel.h
+++ b/moviemodel.h
@@ -25,7 +25,7 @@ class MovieModel : public QAbstractItemModel {
~MovieModel();
QModelIndex index(int row, int column, const QModelIndex &parent) const;
QModelIndex index(int movieId, int column = 0) const;
- QModelIndex index(const QString &movieTitle) const;
+ QModelIndexList columnContains(const QVariant &content, int column) const;
QModelIndex parent(const QModelIndex &) const { return QModelIndex(); };
int columnCount(const QModelIndex &) const { return MovieItem::NumRows; };
int rowCount(const QModelIndex &) const { return mItems.size(); };
diff --git a/shemov.cpp b/shemov.cpp
index 4dc03b7..4e18806 100644
--- a/shemov.cpp
+++ b/shemov.cpp
@@ -81,6 +81,7 @@ SheMov::SheMov(QWidget *parent, Qt::WindowFlags flags) : QMainWindow(parent, fla
mFSWidget->fileView()->findActions();
connect(mFSWidget->fileView()->selectionModel(), SIGNAL(selectionChanged(const QItemSelection &, const QItemSelection &)), this, SLOT(updateSelectionCount(const QItemSelection &, const QItemSelection &)));
+ connect(mAVWidget->fileView()->selectionModel(), SIGNAL(selectionChanged(const QItemSelection &, const QItemSelection &)), this, SLOT(updateSelectionCount(const QItemSelection &, const QItemSelection &)));
connect(mFSWidget, SIGNAL(windowTitle(const QString &)), this, SLOT(newWindowTitle(const QString &)));
connect(mFSWidget->fileView(), SIGNAL(statusbarMessage(const QString &)), this, SLOT(statusbarMessage(const QString &)));
connect(mFSWidget, SIGNAL(statusbarMessage(const QString &)), this, SLOT(statusbarMessage(const QString &)));
@@ -96,7 +97,24 @@ SheMov::SheMov(QWidget *parent, Qt::WindowFlags flags) : QMainWindow(parent, fla
}
void SheMov::updateSelectionCount(const QItemSelection & /* sel */, const QItemSelection & /* prev */){
- mSelectedItems->setText(QString::number(mFSWidget->fileView()->selectionModel()->selectedRows().count()));
+ QLocale l;
+ switch (mTab->currentIndex()) {
+ case 0:
+ mSelectedItems->setText(QString::number(mFSWidget->fileView()->selectionModel()->selectedRows().count()));
+ mSelectedSize->setText("<span style=\"color:#000000\">n/a</span>");
+ break;
+ case 1:
+ mSelectedItems->setText(QString::number(mAVWidget->fileView()->selectionModel()->selectedRows().count()));
+ qint64 s = mAVWidget->currentSize();
+ QString val;
+ if(s < Q_INT64_C(4707319808)){
+ val = QString("<span style=\"color:#008000\">%1</span>").arg(l.toString(s));
+ }else{
+ val = QString("<span style=\"color:#ff0000\">%1</span>").arg(l.toString(s));
+ }
+ mSelectedSize->setText(val);
+ break;
+ }
}
void SheMov::newWindowTitle(const QString &title){
@@ -120,9 +138,23 @@ void SheMov::configure(){
void SheMov::tabChanged(int newTab){
mEditFSMenuA->setVisible(newTab == 0);
mEditArchiveMenuA->setVisible(newTab == 1);
+ if(newTab == 0){
+ setWindowTitle(mFSWidget->windowTitle());
+ //mSelectedItems->setText(QString::number(mFSWidget->fileView()->selectionModel()->selectedRows().count()));
+ }
+ if(newTab == 1){
+ setWindowTitle(mAVWidget->windowTitle());
+ //mSelectedItems->setText(QString::number(mAVWidget->fileView()->selectionModel()->selectedRows().count()));
+ }
+ updateSelectionCount(QItemSelection(), QItemSelection());
}
void SheMov::createStatusbar(){
+ QLabel *selSizeL = new QLabel(tr("Sel. Size"));
+ mSelectedSize = new QLabel(tr("nothing selected yet"));
+ mSelectedSize->setFrameStyle(QFrame::Panel | QFrame::Sunken);
+ statusBar()->addPermanentWidget(selSizeL);
+ statusBar()->addPermanentWidget(mSelectedSize);
QLabel *selCountL = new QLabel(tr("Sel. Items"));
mSelectedItems = new QLabel("0");
mSelectedItems->setFrameStyle(QFrame::Panel | QFrame::Sunken);
diff --git a/shemov.h b/shemov.h
index 67d8da6..92a93b6 100644
--- a/shemov.h
+++ b/shemov.h
@@ -49,6 +49,7 @@ class SheMov : public QMainWindow {
//Statusbar Items
QLabel *mSelectedItems;
QLabel *mTemplate;
+ QLabel *mSelectedSize;
//Actions
QAction *mQuitA;