summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJason A. Donenfeld <Jason@zx2c4.com>2009-09-28 02:13:44 -0400
committerJason A. Donenfeld <Jason@zx2c4.com>2009-09-28 02:13:44 -0400
commitaa6a66c3b380005f53a13e1ef732d9ca1d656dab (patch)
tree61102ad901871c2236a596534eacf38f7762a8ce
parentTermination, slotted dvd title loading, framework fixes. (diff)
downloadAnyRip-aa6a66c3b380005f53a13e1ef732d9ca1d656dab.tar.xz
AnyRip-aa6a66c3b380005f53a13e1ef732d9ca1d656dab.zip
Better dvdimage gui and main gui
-rw-r--r--mainwindow.cpp24
-rw-r--r--mainwindow.h4
-rw-r--r--newdvdgui.h2
-rw-r--r--newimagegui.cpp56
-rw-r--r--newimagegui.h14
-rw-r--r--titleloader.cpp9
-rw-r--r--titleloader.h2
7 files changed, 72 insertions, 39 deletions
diff --git a/mainwindow.cpp b/mainwindow.cpp
index e89df5a..d7d7efb 100644
--- a/mainwindow.cpp
+++ b/mainwindow.cpp
@@ -6,11 +6,12 @@
#include "job.h"
#include "newdvdgui.h"
#include "newimagegui.h"
-#include <QGridLayout>
+#include <QVBoxLayout>
#include <QHBoxLayout>
#include <QSettings>
#include <QLabel>
#include <QPushButton>
+#include <QGroupBox>
#include <QDebug>
MainWindow::MainWindow()
@@ -31,16 +32,20 @@ MainWindow::MainWindow()
connect(m_queue, SIGNAL(runningJob(Job*)), this, SLOT(runningJob(Job*)));
m_videoGuis = new QVBoxLayout;
m_jobGuis = new QVBoxLayout;
- QGridLayout *layout = new QGridLayout;
- layout->addWidget(new QLabel(tr("<b>Video Queue</b>")), 0, 0, Qt::AlignTop | Qt::AlignHCenter);
- layout->addWidget(new QLabel(tr("<b>Job Queue</b>")), 0, 1, Qt::AlignTop | Qt::AlignHCenter);
- layout->addLayout(m_videoGuis, 1, 0, Qt::AlignTop);
- layout->addLayout(m_jobGuis, 1, 1, Qt::AlignTop);
+ QGroupBox *videoGuiBox = new QGroupBox;
+ videoGuiBox->setTitle(tr("Video Queue"));
+ videoGuiBox->setLayout(m_videoGuis);
+ QGroupBox *jobsGuiBox = new QGroupBox;
+ jobsGuiBox->setTitle(tr("Job Queue"));
+ jobsGuiBox->setLayout(m_jobGuis);
+ QHBoxLayout *layout = new QHBoxLayout;
+ layout->addWidget(videoGuiBox);
+ layout->addWidget(jobsGuiBox);
NewDVDGui *newDvdGui = new NewDVDGui;
connect(newDvdGui, SIGNAL(newDVD(QString,QMap<int,QString>)), this, SLOT(newVideoFromDVD(QString,QMap<int,QString>)));
m_jobGuis->addWidget(newDvdGui, 0, Qt::AlignTop);
NewImageGui *newImageGui = new NewImageGui;
- connect(newImageGui, SIGNAL(newImage(QString,QString)), this, SLOT(newVideoFromImage(QString,QString)));
+ connect(newImageGui, SIGNAL(newImage(QString,QString,QMap<int,QString>)), this, SLOT(newVideoFromImage(QString,QString,QMap<int,QString>)));
m_jobGuis->addWidget(newImageGui, 0, Qt::AlignTop);
foreach (Video *video, toAdd)
addVideo(video);
@@ -51,16 +56,17 @@ void MainWindow::addVideo(Video *video)
m_videoGuis->addWidget(video->widget(), 0, Qt::AlignTop);
m_queue->newVideo(video);
}
-void MainWindow::newVideoFromDVD(QString name, QMap<int, QString> titles) //TODO: use const QString &name
+void MainWindow::newVideoFromDVD(const QString &name, QMap<int, QString> titles) //TODO: use const QString &name
{
Video *video = new Video(name, this);
video->setDvdTitles(titles);
addVideo(video);
}
-void MainWindow::newVideoFromImage(const QString &path, const QString &name)
+void MainWindow::newVideoFromImage(const QString &path, const QString &name, QMap<int, QString> titles)
{
Video *video = new Video(name, this);
video->setDvdImage(path);
+ video->setDvdTitles(titles);
addVideo(video);
}
void MainWindow::runningJob(Job *job)
diff --git a/mainwindow.h b/mainwindow.h
index f2f0af7..a24dc5b 100644
--- a/mainwindow.h
+++ b/mainwindow.h
@@ -21,8 +21,8 @@ private:
VideoQueue *m_queue;
void addVideo(Video *video);
private slots:
- void newVideoFromDVD(QString name, QMap<int, QString> titles);
- void newVideoFromImage(const QString &path, const QString &name);
+ void newVideoFromDVD(const QString &name, QMap<int, QString> titles);
+ void newVideoFromImage(const QString &path, const QString &name, QMap<int, QString> titles);
void runningJob(Job *job);
void completedJob(bool success);
};
diff --git a/newdvdgui.h b/newdvdgui.h
index d7f7505..b7b3285 100644
--- a/newdvdgui.h
+++ b/newdvdgui.h
@@ -30,7 +30,7 @@ private slots:
void rip();
void loadedTitles(QMap<int, QString> titles);
signals:
- void newDVD(QString name, QMap<int, QString> titles);
+ void newDVD(const QString &name, QMap<int, QString> titles);
};
#endif // NEWDVDGUI_H
diff --git a/newimagegui.cpp b/newimagegui.cpp
index 69298ad..898ed79 100644
--- a/newimagegui.cpp
+++ b/newimagegui.cpp
@@ -1,4 +1,5 @@
#include "newimagegui.h"
+#include "titleloader.h"
#include <QLabel>
#include <QLineEdit>
#include <QPushButton>
@@ -11,38 +12,32 @@
NewImageGui::NewImageGui()
{
+ m_titleLoader = new TitleLoader(this);
+ connect(m_titleLoader, SIGNAL(loadedTitles(QMap<int,QString>)), this, SLOT(loadedTitles(QMap<int,QString>)));
m_dvdName = new QLineEdit;
- m_dvdName->setVisible(false);
connect(m_dvdName, SIGNAL(textChanged(QString)), this, SLOT(validateName(QString)));
- m_imagePath = new QLineEdit(tr("Select a DVD image"));
- m_imagePath->setEnabled(false);
- connect(m_imagePath, SIGNAL(textChanged(QString)), this, SLOT(validatePath(QString)));
- QPushButton *browseButton = new QPushButton(tr("&Browse"));
- connect(browseButton, SIGNAL(clicked()), this, SLOT(browse()));
+ m_status = new QLabel;
+ m_status->setText(tr("Scanning titles..."));
+ m_browseButton = new QPushButton(tr("&Select File"));
+ connect(m_browseButton, SIGNAL(clicked()), this, SLOT(browse()));
m_importImageButton = new QPushButton(tr("&Import Image"));
- m_importImageButton->setEnabled(false);
connect(m_importImageButton, SIGNAL(clicked()), this, SLOT(importImage()));
- QHBoxLayout *pathArea = new QHBoxLayout;
- pathArea->addWidget(m_imagePath);
- pathArea->addWidget(browseButton);
QVBoxLayout *layout = new QVBoxLayout;
- layout->addLayout(pathArea);
+ layout->addWidget(m_status);
layout->addWidget(m_dvdName);
+ layout->addWidget(m_browseButton);
layout->addWidget(m_importImageButton);
+ initialState();
setLayout(layout);
setTitle(tr("New Video from DVD Image"));
setSizePolicy(QSizePolicy::Preferred, QSizePolicy::Fixed);
}
-void NewImageGui::validatePath(const QString &path)
+void NewImageGui::initialState()
{
- if (path.toLower().endsWith(".iso") && QFile::exists(path)) {
- m_dvdName->setText(QFileInfo(path).baseName());
- m_dvdName->setVisible(true);
- } else {
- m_dvdName->setText(QString());
- m_dvdName->setVisible(false);
- m_importImageButton->setEnabled(false);
- }
+ m_status->setVisible(false);
+ m_dvdName->setVisible(false);
+ m_importImageButton->setVisible(false);
+ m_browseButton->setVisible(true);
}
void NewImageGui::validateName(const QString &name)
{
@@ -53,11 +48,24 @@ void NewImageGui::validateName(const QString &name)
void NewImageGui::browse()
{
QString path = QFileDialog::getOpenFileName(this, tr("Select DVD Image"), QString(), tr("DVD Images (*.iso)"));
- if (!path.isNull())
- m_imagePath->setText(path);
+ if (!path.isNull()) {
+ m_path = path;
+ m_browseButton->setVisible(false);
+ m_titleLoader->setLocation(path);
+ m_status->setVisible(true);
+ m_titleLoader->loadTitles();
+ }
+}
+void NewImageGui::loadedTitles(QMap<int, QString> titles)
+{
+ m_dvdName->setVisible(true);
+ m_dvdName->setText(QFileInfo(m_path).baseName());
+ m_status->setVisible(false);
+ m_importImageButton->setVisible(true);
+ m_titles = titles;
}
void NewImageGui::importImage()
{
- m_importImageButton->setEnabled(false);
- emit newImage(m_imagePath->text(), m_dvdName->text());
+ initialState();
+ emit newImage(m_path, m_dvdName->text(), m_titles);
}
diff --git a/newimagegui.h b/newimagegui.h
index bc43668..f6d2b8e 100644
--- a/newimagegui.h
+++ b/newimagegui.h
@@ -2,8 +2,11 @@
#define NEWIMAGEGUI_H
#include <QGroupBox>
+#include <QMap>
class QLineEdit;
class QPushButton;
+class QLabel;
+class TitleLoader;
class NewImageGui : public QGroupBox
{
@@ -12,15 +15,20 @@ public:
NewImageGui();
private:
QLineEdit *m_dvdName;
- QLineEdit *m_imagePath;
+ QLabel *m_status;
QPushButton *m_importImageButton;
+ QPushButton *m_browseButton;
+ TitleLoader *m_titleLoader;
+ QString m_path;
+ QMap<int, QString> m_titles;
+ void initialState();
private slots:
- void validatePath(const QString &path);
void validateName(const QString &name);
void browse();
void importImage();
+ void loadedTitles(QMap<int, QString> titles);
signals:
- void newImage(const QString &path, const QString &name);
+ void newImage(const QString &path, const QString &name, QMap<int, QString> titles);
};
#endif // NEWIMAGEGUI_H
diff --git a/titleloader.cpp b/titleloader.cpp
index c67517d..3c15fd1 100644
--- a/titleloader.cpp
+++ b/titleloader.cpp
@@ -5,6 +5,15 @@ TitleLoader::TitleLoader(const QString &location, QObject *parent) :
m_location(location)
{
}
+TitleLoader::TitleLoader(QObject *parent) :
+ QObject(parent),
+ m_location(QString())
+{
+}
+void TitleLoader::setLocation(const QString &location)
+{
+ m_location = location;
+}
void TitleLoader::loadTitles()
{
m_process = new QProcess(this);
diff --git a/titleloader.h b/titleloader.h
index 52e9b37..599c0d4 100644
--- a/titleloader.h
+++ b/titleloader.h
@@ -10,7 +10,9 @@ class TitleLoader : public QObject
Q_OBJECT
public:
TitleLoader(const QString &location, QObject *parent = 0);
+ TitleLoader(QObject *parent = 0);
void loadTitles();
+ void setLocation(const QString &location);
private:
QString m_location;
QProcess *m_process;