summaryrefslogtreecommitdiffstats
path: root/archiveeditdialog.cpp
diff options
context:
space:
mode:
authorArno <am@disconnect.de>2010-07-23 21:25:34 +0200
committerArno <am@disconnect.de>2010-07-23 21:25:34 +0200
commitd617e0679b42680d5068513a951b6f6db10b0565 (patch)
treece368fd13628e75406191b1c8118664136a4207e /archiveeditdialog.cpp
parenta59ac6eb3cebdd4e3f41552c21f14165203c1ab2 (diff)
downloadSheMov-d617e0679b42680d5068513a951b6f6db10b0565.tar.gz
SheMov-d617e0679b42680d5068513a951b6f6db10b0565.tar.bz2
SheMov-d617e0679b42680d5068513a951b6f6db10b0565.zip
Big code cleanup
hopefully removed all code connected to ArchiveViewWidget in this tree. Files removed ({h,cpp}): *archiveeditdialog *listeditor *covereditor *archivefilewidget *addmoviewizard *archivefileview *archiveproxy *sizedelegate *archivedidelegate *archiveitemeditdialog *coveritem *movieitem *moviemodel *moviemodelsingleton *listmodel *listmodelsingleton *archiveviewwidget *archiveiteminfoedit *archiveitemcoveredit *fileinfoitem *fileinfomodel See added file TODOS for stuff that needs fixes.
Diffstat (limited to 'archiveeditdialog.cpp')
-rw-r--r--archiveeditdialog.cpp245
1 files changed, 0 insertions, 245 deletions
diff --git a/archiveeditdialog.cpp b/archiveeditdialog.cpp
deleted file mode 100644
index 41f303f..0000000
--- a/archiveeditdialog.cpp
+++ /dev/null
@@ -1,245 +0,0 @@
-/*
- This program is free software; you can redistribute it and/or
- modify it under the terms of the GNU General Public License
- as published by the Free Software Foundation; either version
- 2 of the License, or (at your option) any later version.
-*/
-
-#include <QSplitter>
-#include <QHBoxLayout>
-#include <QVBoxLayout>
-#include <QLabel>
-#include <QApplication>
-#include <QPushButton>
-#include <QMessageBox>
-#include <QFileInfo>
-#include <QSettings>
-#include <QDir>
-#include <QList>
-#include <QVariant>
-#include <QFile>
-#include <QHash>
-
-#include "archiveeditdialog.h"
-#include "archivefilewidget.h"
-#include "listeditor.h"
-#include "covereditor.h"
-#include "listmodel.h"
-#include "moviemodel.h"
-#include "helper.h"
-#include "coveritem.h"
-#include "listmodelsingleton.h"
-#include "moviemodelsingleton.h"
-
-ArchiveEditDialog::ArchiveEditDialog(QWidget *parent, Qt::WindowFlags f) : QDialog(parent, f) {
- //setup
- mGenreModel = ListModelSingleton::instance()->model("genre");
- mActorsModel = ListModelSingleton::instance()->model("actor");
- mMovieModel = MovieModelSingleton::instance();
-
- QSplitter *hSplitter = new QSplitter(Qt::Horizontal);
- QWidget *editorWidget = new QWidget;
- QVBoxLayout *editorLayout = new QVBoxLayout;
-
- //genre editor
- mGenreEditor = new ListEditor(mGenreModel);
- editorLayout->addWidget(mGenreEditor);
-
- //actor editor
- mActorsEditor = new ListEditor(mActorsModel);
- editorLayout->addWidget(mActorsEditor);
-
- //cover editor
- QLabel *l3 = new QLabel(tr("Configure cover pictures"));
- mCoverEditor = new CoverEditor;
- editorLayout->addWidget(l3);
- editorLayout->addWidget(mCoverEditor);
-
- editorLayout->addStretch();
- editorWidget->setLayout(editorLayout);
- editorWidget->setMinimumWidth(300);
-
- //archive editor
- mFileWidget = new ArchiveFileWidget;
- connect(mActorsEditor, SIGNAL(itemAdded(const QString &)), mFileWidget, SLOT(setActor(const QString &)));
-
- //join splitters
- hSplitter->addWidget(mFileWidget);
- hSplitter->addWidget(editorWidget);
- hSplitter->setStretchFactor(0, 2);
- hSplitter->setStretchFactor(1, 1);
-
- //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);
- mClose = new QPushButton(tr("Close"));
- connect(mClose, SIGNAL(clicked()), this, SLOT(reject()));
- buttonLayout->addWidget(mClose);
-
- QVBoxLayout *mainLayout = new QVBoxLayout;
- mainLayout->addWidget(hSplitter);
- mainLayout->addLayout(buttonLayout);
-
- setLayout(mainLayout);
- QString winTitle = QString("%1 - Archive files").arg(qApp->applicationName());
- setWindowTitle(winTitle);
-}
-
-void ArchiveEditDialog::setFiles(const QStringList &files){
- mFileWidget->setFiles(files);
- mCoverEditor->setCovers(files);
-}
-
-void ArchiveEditDialog::archive(){
- const QList<int> actors = mFileWidget->actorIds();
- int genre = mFileWidget->genreId();
- QString front = mCoverEditor->frontCover();
- QString back = mCoverEditor->backCover();
- QString general = mCoverEditor->covers();
- QString file = mCoverEditor->movie();
- QString title = mFileWidget->movieTitle().toLower();
- int quality = mFileWidget->quality();
- int seriesno = mFileWidget->seriesNo();
- int partno = mFileWidget->partNo();
- QStringList files;
- files << front << back << general;
- files.removeAll(QString());
- files << file;
- QHash<QString, QString> md5Sums;
- foreach(QString f, files){
- md5Sums[f] = Helper::md5Sum(f);
- }
- if(checkInput(genre, actors, files, title, file, quality)){
- QSettings s;
- QString archivePath = s.value("paths/archivedir").toString();
- if(archivePath.isEmpty()){
- QMessageBox::critical(this, tr("Error"), tr("No archive path found. Please set it via Edit->Configure!"));
- return;
- }
- QFileInfo archiveInfo(archivePath);
- if(!archiveInfo.exists()){
- QDir root = QDir::root();
- root.mkpath(archivePath);
- }
- archiveInfo = QFileInfo(archivePath);
- if(!archiveInfo.isDir()){
- QString msg = QString(tr("Archive path %1 is not a directory. Aborting!")).arg(archivePath);
- QMessageBox::critical(this, tr("Error"), msg);
- return;
- }
- QList<QVariant> data;
- QFileInfo movie(file);
- data << title << movie.fileName() << md5Sums.value(file) << movie.size() << genre << quality << -1 << seriesno << partno;
- QList<CoverItem> covers;
- if(!front.isEmpty()){
- covers << coverItem(front, "front", md5Sums.value(front));
- }
- if(!back.isEmpty()){
- covers << coverItem(back, "back", md5Sums.value(back));
- }
- if(!general.isEmpty()){
- covers << coverItem(general, "general", md5Sums.value(general));
- }
- QList<QVariant> vAList;
- foreach(int a, actors){
- vAList << a;
- }
- mMovieModel->addMovie(data, vAList, covers);
- foreach(QString f, files){
- QFileInfo file(f);
- QString hash = md5Sums.value(f);
- QString destDirS = QString("%1/%2/%3").arg(archivePath).arg(hash[0]).arg(hash[1]);
- QString destFileS = QString("%1/%2/%3/%4").arg(archivePath).arg(hash[0]).arg(hash[1]).arg(file.fileName());
- QFileInfo dir(destDirS);
- if(!dir.exists()){
- QDir root = QDir::root();
- root.mkpath(destDirS);
- }
- QFileInfo destFile(destFileS);
- if(destFile.exists()){
- destFileS = QString("%1/%2/%3/%4_%5.%6").arg(archivePath).arg(hash[0]).arg(hash[1]).arg(destFile.completeBaseName()).arg(hash).arg(destFile.suffix());
- }
- QFile::rename(f, destFileS);
- }
- }
-}
-
-void ArchiveEditDialog::guess(){
- QString fileName = mCoverEditor->movie();
- if(fileName.isEmpty()){
- return;
- }
- QFileInfo fi(fileName);
- QString rfn = fi.completeBaseName();
- rfn.chop(1);
- QModelIndexList idx = mMovieModel->columnContains(rfn, MovieItem::Filename);
- 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"));
- return false;
- }
- if(actors.isEmpty()){
- int answer = QMessageBox::question(this, tr("Question"), tr("No actors selected. Continue anyway?"), QMessageBox::Yes | QMessageBox::No);
- return (answer == QMessageBox::Yes);
- }
- foreach(QString f, files){
- QFileInfo info(f);
- if(!info.isFile()){
- QString msg = QString(tr("%1 does not seem to be a file. Aborting")).arg(info.absoluteFilePath());
- QMessageBox::critical(this, tr("Error"), msg);
- return false;
- }
- }
- QString mt = Helper::mimeType(movie);
- if(!mt.toLower().startsWith("video")){
- QString msg = QString(tr("Movie %1 is not of MIME type video (%2). Continue anyway?")).arg(movie).arg(mt);
- int answer = QMessageBox::question(this, tr("Question"), msg, QMessageBox::Yes | QMessageBox::No);
- return (answer == QMessageBox::Yes);
- }
- if(title.isEmpty()){
- QMessageBox::critical(this, tr("Error"), tr("No movie title given!"));
- return false;
- }
- if(quality == 0){
- int answer = QMessageBox::question(this, tr("Question"), tr("Quality is set to 0. Continue anyway?"), QMessageBox::Yes | QMessageBox::No);
- return (answer == QMessageBox::Yes);
- }
- return true;
-}
-
-bool ArchiveEditDialog::checkMd5(const QHash<QString, QString> &md5sums, const QStringList &files){
- foreach(QString f, files){
- if(!md5sums.contains(f)){
- QString msg = QString(tr("I don't have an MD5 hash for %1. Aborting!")).arg(f);
- QMessageBox::critical(this, tr("Error"), msg);
- return false;
- }
- }
- return true;
-}
-
-const CoverItem ArchiveEditDialog::coverItem(const QString &filePath, const QString type, const QString &md5) const{
- QFileInfo info(filePath);
- return CoverItem(info.fileName(), type, md5);
-}
-