diff options
author | am <am@f440f766-f032-0410-8965-dc7d17de2ca0> | 2009-07-20 17:37:08 +0000 |
---|---|---|
committer | am <am@f440f766-f032-0410-8965-dc7d17de2ca0> | 2009-07-20 17:37:08 +0000 |
commit | ec3418479b28ca8e162f84d76c2eed78c27a114c (patch) | |
tree | a947550fc9821999baf728dbf33adef71fa67576 | |
parent | d2b854121266e32164290ee4e683c0c8388d7d41 (diff) | |
download | SheMov-ec3418479b28ca8e162f84d76c2eed78c27a114c.tar.gz SheMov-ec3418479b28ca8e162f84d76c2eed78c27a114c.tar.bz2 SheMov-ec3418479b28ca8e162f84d76c2eed78c27a114c.zip |
-started on editing the archive
-big probs with the covers, I'll stop for now, can't think straight any more
-changes to MovieModel
-changes to MovieItem
-modified CoverEditor to allow adding files (untested)
git-svn-id: file:///var/svn/repos2/shemov/trunk@392 f440f766-f032-0410-8965-dc7d17de2ca0
-rw-r--r-- | archiveeditdialog.h | 4 | ||||
-rw-r--r-- | covereditor.cpp | 32 | ||||
-rw-r--r-- | covereditor.h | 10 | ||||
-rw-r--r-- | coveritem.cpp | 40 | ||||
-rw-r--r-- | coveritem.h | 10 | ||||
-rw-r--r-- | editarchiveitemdialog.cpp | 235 | ||||
-rw-r--r-- | editarchiveitemdialog.h | 61 | ||||
-rw-r--r-- | movieitem.cpp | 26 | ||||
-rw-r--r-- | movieitem.h | 10 | ||||
-rw-r--r-- | moviemodel.cpp | 19 | ||||
-rw-r--r-- | moviemodel.h | 2 | ||||
-rw-r--r-- | shemov.pro | 6 |
12 files changed, 444 insertions, 11 deletions
diff --git a/archiveeditdialog.h b/archiveeditdialog.h index 23f8614..6e9355d 100644 --- a/archiveeditdialog.h +++ b/archiveeditdialog.h @@ -5,8 +5,8 @@ 2 of the License, or (at your option) any later version. */ -#ifndef ARCHIVEEDITWIDGET_H -#define ARCHIVEEDITWIDGET_H +#ifndef ARCHIVEEDITDIALOG_H +#define ARCHIVEEDITDIALOG_H #include <QDialog> #include <QDirModel> diff --git a/covereditor.cpp b/covereditor.cpp index 618c0a9..5472f23 100644 --- a/covereditor.cpp +++ b/covereditor.cpp @@ -9,10 +9,13 @@ #include <QStringList> #include <QLabel> #include <QGridLayout> +#include <QFileDialog> +#include <QPushButton> +#include <QSettings> #include "covereditor.h" -CoverEditor::CoverEditor(QWidget *parent, Qt::WindowFlags f) : QWidget(parent, f){ +CoverEditor::CoverEditor(Mode mode, QWidget *parent, Qt::WindowFlags f) : QWidget(parent, f), mMode(mode){ QGridLayout *mainLayout = new QGridLayout; QLabel *l1 = new QLabel(tr("Front cover")); mFrontCover = new QComboBox; @@ -30,6 +33,15 @@ CoverEditor::CoverEditor(QWidget *parent, Qt::WindowFlags f) : QWidget(parent, f mMovie = new QComboBox; mainLayout->addWidget(l4, 3, 0); mainLayout->addWidget(mMovie, 3, 1); + mAddFile = new QPushButton(tr("Add cover")); + if(mode == Archive){ + mAddFile->setVisible(false); + }else{ + l4->setVisible(false); + mMovie->setVisible(false); + } + connect(mAddFile, SIGNAL(clicked()), this, SLOT(addFile())); + mainLayout->addWidget(mAddFile, 4, 1); setLayout(mainLayout); } @@ -115,6 +127,24 @@ const QString CoverEditor::movie() const{ } +void CoverEditor::addFile(){ + QSettings s; + QString startDir = s.value("ui/selectstartup").toString(); + QStringList files = QFileDialog::getOpenFileNames(this, "Select covers to add to list", startDir); + foreach(QString f, files){ + if(!mCoverPaths.contains(f)){ + files << f; + int idx(-1); + if((idx = f.lastIndexOf('/')) != -1){ + f.remove(0, idx + 1); + mFrontCover->addItem(f); + mBackCover->addItem(f); + mCovers->addItem(f); + } + } + } +} + const QString CoverEditor::findPath(const QString &name) const{ QString retval; foreach(QString s, mCoverPaths){ diff --git a/covereditor.h b/covereditor.h index c702ef8..1c0fb93 100644 --- a/covereditor.h +++ b/covereditor.h @@ -12,11 +12,14 @@ class QComboBox; class QStringList; +class QPushButton; class CoverEditor : public QWidget { Q_OBJECT + Q_ENUMS(Mode); public: - CoverEditor(QWidget *parent = 0, Qt::WindowFlags f = 0); + enum Mode { Archive, Update }; + CoverEditor(Mode mode = Archive, QWidget *parent = 0, Qt::WindowFlags f = 0); ~CoverEditor() {}; void setCovers(const QStringList &covers); const QString frontCover() const; @@ -24,12 +27,17 @@ class CoverEditor : public QWidget { const QString covers() const; const QString movie() const; + private slots: + void addFile(); + private: const QString findPath(const QString &name) const; QComboBox *mFrontCover; QComboBox *mBackCover; QComboBox *mCovers; QComboBox *mMovie; + QPushButton *mAddFile; + Mode mMode; QStringList mCoverPaths; }; diff --git a/coveritem.cpp b/coveritem.cpp index f29e81c..f42afc5 100644 --- a/coveritem.cpp +++ b/coveritem.cpp @@ -6,7 +6,45 @@ */ #include <QString> +#include <QSettings> #include "coveritem.h" -CoverItem::CoverItem(const QString &filename, const QString &type, const QString &md5) : mFilename(filename), mType(type), mMd5(md5) {}; +CoverItem::CoverItem(const QString &filename, const QString &type, const QString &md5) : mFilename(filename), mType(type), mMd5(md5){ + setPath(); +} + +CoverItem::CoverItem() {}; + +void CoverItem::setFileName(const QString &filename){ + mFilename = filename; + setPath(); +} + +void CoverItem::setMd5(const QString &md5){ + mMd5 = md5; + setPath(); +} + +void CoverItem::setFullPath(const QString &fullPath){ + if(fullPath.contains('/')){ + mFullPath = fullPath; + QString wc = fullPath; + int idx = fullPath.lastIndexOf('/') + 1; + mFilename = wc.remove(0, idx); + } +} + +void CoverItem::setPath(){ + if(mFilename.isEmpty() || mMd5.isEmpty()){ + return; + } + // assume it's the full path + if(mFilename.contains('/')){ + return; + } + QSettings s; + QString archive = s.value("paths/archivedir").toString(); + mFullPath = QString("%1/%2/%3/%4").arg(archive).arg(mMd5[0]).arg(mMd5[1]).arg(mFilename); +} + diff --git a/coveritem.h b/coveritem.h index a435f90..0abccfa 100644 --- a/coveritem.h +++ b/coveritem.h @@ -12,17 +12,27 @@ class QString; class CoverItem { public: + CoverItem(); CoverItem(const QString &filename, const QString &type, const QString &md5); ~CoverItem() {}; const QString fileName() const { return mFilename; }; + const QString fullPath() const { return mFullPath; }; const QString type() const { return mType; }; const QString md5() const { return mMd5; }; + void setFileName(const QString &filename); + void setType(const QString &type) { mType = type; }; + void setMd5(const QString &md5); + void setFullPath(const QString &fullPath); private: + void setPath(); QString mFilename; QString mType; QString mMd5; + QString mFullPath; }; +Q_DECLARE_METATYPE(CoverItem) + #endif diff --git a/editarchiveitemdialog.cpp b/editarchiveitemdialog.cpp new file mode 100644 index 0000000..333c410 --- /dev/null +++ b/editarchiveitemdialog.cpp @@ -0,0 +1,235 @@ +/* + 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 <QLineEdit> +#include <QLabel> +#include <QSplitter> +#include <QHBoxLayout> +#include <QVBoxLayout> +#include <QSpinBox> +#include <QTextEdit> +#include <QPushButton> +#include <QFont> +#include <QComboBox> +#include <QSplitter> +#include <QApplication> +#include <QModelIndex> +#include <QLocale> + +#include "editarchiveitemdialog.h" +#include "listmodel.h" +#include "moviemodel.h" +#include "listeditor.h" +#include "covereditor.h" +#include "coveritem.h" + +EditArchiveItemDialog::EditArchiveItemDialog(ListModel *genre, ListModel *actors, MovieModel *movies, QWidget *parent, Qt::WindowFlags f) : QDialog(parent, f), mGenreModel(genre), mActorsModel(actors), mMovieModel(movies){ + QWidget *w1 = new QWidget; + QVBoxLayout *w1Layout = new QVBoxLayout; + + //movie information + QLabel *l1 = new QLabel(tr("Movie information")); + w1Layout->addWidget(l1); + mMovieInfo = new QTextEdit; + mMovieInfo->setReadOnly(true); + mMovieInfo->setFont(QFont("Courier new")); + w1Layout->addWidget(mMovieInfo); + + //actors + QLabel *l2 = new QLabel(tr("Select actors")); + mActors = new QComboBox; + mActors->setModel(mActorsModel); + QHBoxLayout *actorsLayout = new QHBoxLayout; + actorsLayout->addWidget(l2); + actorsLayout->addWidget(mActors); + w1Layout->addLayout(actorsLayout); + mActorsDisplay = new QTextEdit; + mActorsDisplay->setReadOnly(true); + mActorsDisplay->setFont(QFont("Courier new")); + w1Layout->addWidget(mActorsDisplay); + QHBoxLayout *actorButtons = new QHBoxLayout; + mAddActor = new QPushButton(tr("&Add Actor")); + connect(mAddActor, SIGNAL(clicked()), this, SLOT(addActor())); + mRemoveActor = new QPushButton(tr("&Remove Actor")); + connect(mRemoveActor, SIGNAL(clicked()), this, SLOT(removeActor())); + actorButtons->addStretch(); + actorButtons->addWidget(mAddActor); + actorButtons->addWidget(mRemoveActor); + w1Layout->addLayout(actorButtons); + + //genre + QLabel *l3 = new QLabel(tr("Select genre")); + mGenre = new QComboBox; + mGenre->setModel(mGenreModel); + QHBoxLayout *genreLayout = new QHBoxLayout; + genreLayout->addWidget(l3); + genreLayout->addWidget(mGenre); + w1Layout->addLayout(genreLayout); + + //quality + dvd + QLabel *l4 = new QLabel(tr("Select quality")); + mQuality = new QSpinBox; + mQuality->setMinimum(0); + mQuality->setMaximum(10); + QHBoxLayout *qualityDvdLayout = new QHBoxLayout; + qualityDvdLayout->addWidget(l4); + qualityDvdLayout->addWidget(mQuality); + qualityDvdLayout->addStretch(); + QLabel*l5 = new QLabel(tr("Select DVD No.")); + mDvd = new QSpinBox; + mDvd->setMinimum(-1); + mDvd->setMaximum(1000); + qualityDvdLayout->addWidget(l5); + qualityDvdLayout->addWidget(mDvd); + w1Layout->addLayout(qualityDvdLayout); + + //movie title + QLabel *l6 = new QLabel(tr("Set movie title")); + mTitle = new QLineEdit; + QHBoxLayout *titleLayout = new QHBoxLayout; + titleLayout->addWidget(l6); + titleLayout->addWidget(mTitle); + w1Layout->addLayout(titleLayout); + + //list editors + QWidget *w2 = new QWidget; + QVBoxLayout *w2Layout = new QVBoxLayout; + ListEditor *genreEditor = new ListEditor(mGenreModel); + w2Layout->addWidget(genreEditor); + ListEditor *actorsEditor = new ListEditor(mActorsModel); + w2Layout->addWidget(actorsEditor); + mCoverEditor = new CoverEditor(CoverEditor::Update); + w2Layout->addWidget(mCoverEditor); + + //splitter + QSplitter *splitter = new QSplitter; + splitter->addWidget(w1); + splitter->addWidget(w2); + + //dialog buttons + QHBoxLayout *buttonLayout = new QHBoxLayout; + buttonLayout->addStretch(); + mUpdate = new QPushButton(tr("Update")); + connect(mUpdate, SIGNAL(clicked()), this, SLOT(updateMovie())); + mClose = new QPushButton(tr("Close")); + connect(mClose, SIGNAL(triggered()), this, SLOT(reject())); + buttonLayout->addWidget(mUpdate); + buttonLayout->addWidget(mClose); + + //now put it all together + QVBoxLayout *mainLayout = new QVBoxLayout; + mainLayout->addWidget(splitter); + mainLayout->addLayout(buttonLayout); + + setLayout(mainLayout); + QString title = QString(tr("%1 - Edit archive")).arg(qApp->applicationName()); + setWindowTitle(title); +} + +void EditArchiveItemDialog::setMovie(const QModelIndex &movie){ + if(!movie.isValid()){ + return; + } + mMovieId = movie.data(MovieModel::IdRole).toInt(); + mActorMap = movie.data(MovieModel::ActorsMap).value<QHash<QString, QVariant> >(); + mCovers = movie.data(MovieModel::CoverRole).toList(); + setActors(); + setMovieInfo(movie); + setCovers(movie); +} + +void EditArchiveItemDialog::setActors(){ + QString html("<html><body style=\"color:#CD0003\"><ul>"); + QHash<QString, QVariant>::const_iterator it = mActorMap.constBegin(); + while(it != mActorMap.constEnd()){ + html.append(QString("<li>%1</li>").arg(it.key())); + ++it; + } + html.append("</ul></body></html>"); + mActorsDisplay->setHtml(html); +} + +void EditArchiveItemDialog::setMovieInfo(const QModelIndex &movie){ + QString html("<html><body style=\"color:#CD0003\"><ul>"); + QModelIndex idx = mMovieModel->index(movie.row(), MovieItem::Title, QModelIndex()); + html.append(tr("<li>Title: %1</li>")).arg(idx.data().toString()); + mTitle->setText(idx.data().toString()); + idx = mMovieModel->index(movie.row(), MovieItem::Filename, QModelIndex()); + html.append(tr("<li>Filename: %1</li>")).arg(idx.data().toString()); + idx = mMovieModel->index(movie.row(), MovieItem::Md5Sum, QModelIndex()); + html.append(tr("<li>Md5-Sum: %1</li>")).arg(idx.data().toString()); + idx = mMovieModel->index(movie.row(), MovieItem::Size, QModelIndex()); + QLocale l; + html.append(tr("<li>Size: %1</li>")).arg(l.toString(idx.data().toLongLong())); + idx = mMovieModel->index(movie.row(), MovieItem::Genre, QModelIndex()); + html.append(tr("<li>Genre: %1</li>")).arg(idx.data().toString()); + int genreIndex = mGenre->findText(idx.data().toString()); + if(genreIndex != -1){ + mGenre->setCurrentIndex(genreIndex); + } + idx = mMovieModel->index(movie.row(), MovieItem::Quality, QModelIndex()); + html.append(tr("<li>Quality: %1</li>")).arg(l.toString(idx.data().toInt())); + mQuality->setValue(idx.data().toInt()); + idx = mMovieModel->index(movie.row(), MovieItem::Dvd, QModelIndex()); + int dvd = idx.data().toInt(); + if(dvd != -1){ + html.append(tr("<li>On DVD %1</li>")).arg(l.toString(dvd)); + }else{ + html.append(tr("<li>Not on DVD</li>)")); + } + mDvd->setValue(dvd); +} + +void EditArchiveItemDialog::setCovers(const QModelIndex &movie){ + mCovers.clear(); + QList<QVariant> covers = movie.data(MovieModel::CoverRole).toList(); + QStringList coverNames; + foreach(QVariant v, covers){ + CoverItem i = v.value<CoverItem>(); + coverNames << i.fileName(); + //mModelCovers << i.fileName(); + } + mCoverEditor->setCovers(coverNames); +} + +void EditArchiveItemDialog::addActor(){ + QString currentText = mActors->currentText(); + QModelIndex idx = mActorsModel->index(currentText); + if(idx.isValid()){ + int id = idx.data(ListModel::IdRole).toInt(); + mActorMap.insert(currentText, id); + setActors(); + } +} + +void EditArchiveItemDialog::removeActor(){ + QString currentText = mActors->currentText(); + if(mActorMap.contains(currentText)){ + mActorMap.remove(currentText); + setActors(); + } +} + +void EditArchiveItemDialog::updateMovie(){ + QHash<QString, QVariant>::const_iterator it = mActorMap.constBegin(); + QList<QVariant> actors; + while(it != mActorMap.constEnd()){ + actors << it.value(); + ++it; + } + mMovieModel->setActors(mMovieId, actors); + +} + +void EditArchiveItemDialog::updateCovers(){ + QString front = mCoverEditor->frontCover(); + QString back = mCoverEditor->backCover(); + QString covers = mCoverEditor->covers(); + QList<CoverItem> coverList; + ///if(front + +} diff --git a/editarchiveitemdialog.h b/editarchiveitemdialog.h new file mode 100644 index 0000000..529b446 --- /dev/null +++ b/editarchiveitemdialog.h @@ -0,0 +1,61 @@ +/* + 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. +*/ + +#ifndef EDITARCHIVEITEMDIALOG_H +#define EDITARCHIVEITEMDIALOG_H + +#include <QDialog> +#include <QHash> +#include <QVariant> + +class ListModel; +class MovieModel; +class QLineEdit; +class QComboBox; +class QSpinBox; +class QTextEdit; +class QPushButton; +class QModelIndex; +class CoverEditor; + +class EditArchiveItemDialog : public QDialog { + Q_OBJECT + public: + EditArchiveItemDialog(ListModel *genre, ListModel *actors, MovieModel *movies, QWidget *parent = 0, Qt::WindowFlags f = 0); + ~EditArchiveItemDialog() {}; + void setMovie(const QModelIndex &movie); + + private: + void setActors(); + void setMovieInfo(const QModelIndex &movie); + void setCovers(const QModelIndex &movie); + void addActor(); + void removeActor(); + void updateMovie(); + void updateCovers(); + ListModel *mGenreModel; + ListModel *mActorsModel; + MovieModel *mMovieModel; + QComboBox *mGenre; + QComboBox *mActors; + QTextEdit *mMovieInfo; + QTextEdit *mActorsDisplay; + QSpinBox *mQuality; + QSpinBox *mDvd; + QPushButton *mUpdate; + QPushButton *mClose; + QPushButton *mAddActor; + QPushButton *mRemoveActor; + QLineEdit *mTitle; + QHash<QString, QVariant> mActorMap; + QList<QVariant> mCovers; + CoverEditor *mCoverEditor; + int mMovieId; +}; + +#endif + diff --git a/movieitem.cpp b/movieitem.cpp index de2382c..7e8d379 100644 --- a/movieitem.cpp +++ b/movieitem.cpp @@ -8,6 +8,7 @@ #include <QSqlQuery> #include "movieitem.h" +#include "coveritem.h" MovieItem::MovieItem(int id, QObject *parent) : QObject(parent), mNumRows(7), mId(id), mGenreId(-1) { for(int i = 0; i < mNumRows; ++i){ @@ -18,6 +19,7 @@ MovieItem::MovieItem(int id, QObject *parent) : QObject(parent), mNumRows(7), m setGenreName(); setActors(); setSize(); + setCovers(); } } @@ -27,6 +29,7 @@ void MovieItem::setId(int id){ setGenreName(); setActors(); setSize(); + setCovers(); } bool MovieItem::setData(const QList<QVariant> &data){ @@ -76,12 +79,31 @@ void MovieItem::setGenreName(){ } void MovieItem::setActors(){ + mActors.clear(); + mActorIdMap.clear(); QSqlQuery actorQuery; - actorQuery.prepare("SELECT actor.tactorname FROM actor, movieactormap WHERE movieactormap.iactorid = actor.iactorid AND movieactormap.imovid = :id"); + actorQuery.prepare("SELECT actor.iactorid, actor.tactorname FROM actor, movieactormap WHERE movieactormap.iactorid = actor.iactorid AND movieactormap.imovid = :id"); actorQuery.bindValue(":id", mId); actorQuery.exec(); while(actorQuery.next()){ - mActors << actorQuery.value(0); + QVariant actorId = actorQuery.value(0); + QString actorName = actorQuery.value(1).toString(); + mActors << actorName; + mActorIdMap.insert(actorName, actorId); + } +} + +void MovieItem::setCovers(){ + mCovers.clear(); + QSqlQuery coverQuery; + coverQuery.prepare("SELECT tfilename, tcovertype, cmd5sum FROM covers WHERE imovid = :id"); + coverQuery.bindValue(":id", mId); + coverQuery.exec(); + while(coverQuery.next()){ + CoverItem item(coverQuery.value(0).toString(), coverQuery.value(1).toString(), coverQuery.value(2).toString()); + QVariant i; + i.setValue(item); + mCovers << i; } } diff --git a/movieitem.h b/movieitem.h index edd46b4..70bfc88 100644 --- a/movieitem.h +++ b/movieitem.h @@ -11,6 +11,9 @@ #include <QObject> #include <QList> #include <QVariant> +#include <QHash> + +#include "coveritem.h" class QSqlQuery; @@ -30,17 +33,22 @@ class MovieItem : public QObject { const QList<QVariant> data() const; const QVariant dataAt(int column) const; const QList<QVariant> actors() const { return mActors; }; + const QHash<QString, QVariant> actorMap() const { return mActorIdMap; }; + const QList<QVariant> covers() const { return mCovers; }; void populate(); + void setActors(); + void setCovers(); private: void setGenreName(); - void setActors(); void setSize(); const int mNumRows; int mId; int mGenreId; QList<QVariant> mRows; QList<QVariant> mActors; + QHash<QString, QVariant> mActorIdMap; + QList<QVariant> mCovers; }; #endif diff --git a/moviemodel.cpp b/moviemodel.cpp index 389f456..d34113a 100644 --- a/moviemodel.cpp +++ b/moviemodel.cpp @@ -86,6 +86,15 @@ QVariant MovieModel::data(const QModelIndex &index, int role) const{ if(role == ActorsRole){ return item->actors(); } + if(role == ActorsMap){ + return QVariant(item->actorMap()); + } + if(role == CoverRole){ + return item->covers(); + } + if(role == IdRole){ + return item->id(); + } if((role == Qt::DecorationRole) && (index.column() == 0)){ return QIcon(":/dildo.png"); } @@ -196,6 +205,11 @@ void MovieModel::setActors(int id, const QList<QVariant> &actors){ mInsertActorsForMovie->bindValue(":actorid", a); mInsertActorsForMovie->exec(); } + foreach(MovieItem *m, mItems){ + if(m->id() == id){ + m->setActors(); + } + } } void MovieModel::setCovers(int id, const QList<CoverItem> &covers){ @@ -208,6 +222,11 @@ void MovieModel::setCovers(int id, const QList<CoverItem> &covers){ mInsertCovers->bindValue(":md5", c.md5()); mInsertCovers->exec(); } + foreach(MovieItem *m, mItems){ + if(m->id() == id){ + m->setCovers(); + } + } } void MovieModel::addMovie(const QList<QVariant> &data, const QList<QVariant> &actors, const QList<CoverItem> &covers){ diff --git a/moviemodel.h b/moviemodel.h index cf2e1f2..d2cbe50 100644 --- a/moviemodel.h +++ b/moviemodel.h @@ -20,7 +20,7 @@ class MovieModel : public QAbstractItemModel { Q_OBJECT Q_ENUMS(CustomRoles) public: - enum CustomRoles { Md5Role = Qt::UserRole + 1, ActorsRole = Qt::UserRole +2 }; + enum CustomRoles { Md5Role = Qt::UserRole + 1, ActorsRole = Qt::UserRole + 2, ActorsMap = Qt::UserRole + 3, CoverRole = Qt::UserRole + 4, IdRole = Qt::UserRole + 5 }; MovieModel(QObject *parent = 0); ~MovieModel(); QModelIndex index(int row, int column, const QModelIndex &parent) const; @@ -23,7 +23,8 @@ covereditor.cpp \ archivefilewidget.cpp \ archiveviewwidget.cpp \ archivefileview.cpp \ -archiveproxy.cpp +archiveproxy.cpp \ +editarchiveitemdialog.cpp HEADERS = listitem.h \ listmodel.h \ movieitem.h \ @@ -45,7 +46,8 @@ covereditor.h \ archivefilewidget.h \ archiveviewwidget.h \ archivefileview.h \ -archiveproxy.h +archiveproxy.h \ +editarchiveitemdialog.h LIBS += -lmagic LIBS += -lcryptopp INCLUDEPATH += /usr/include/cryptopp |