OSDN Git Service

fix: cannot preview with QT
[handbrake-jp/handbrake-jp.git] / qt4 / qhandbrakewizard.cpp
1 #include <QtGui>
2 #include <QtDBus>
3
4 #include "qhandbrakewizard.h"
5 #include "qhandbrake.h"
6 #include "faderwidget.h"
7 #include "scanwidget.h"
8 #include "encodewidget.h"
9
10
11 #define HAL_SERVICE "org.freedesktop.Hal"
12 #define HAL_PATH_MANAGER "/org/freedesktop/Hal/Manager"
13 #define HAL_PATH_DEVICE "/org/freedesktop/Hal/Device"
14 #define HAL_OBJECT_MANAGER "org.freedesktop.Hal.Manager"
15 #define HAL_OBJECT_DEVICE "org.freedesktop.Hal.Device"
16
17
18 Magic::Magic(QWidget *w, QHandBrakeWizard *q, QObject *p)
19     : QObject(p)
20 {
21     m = w;
22     qm = q;
23 }
24
25 bool Magic::eventFilter(QObject *o, QEvent *e)
26 {
27     if( e->type() == QEvent::Show ) {
28         qm->fadeInWidget( m );
29         return false;
30     }
31     return QObject::eventFilter(o, e);
32 }
33
34 void QHandBrakeWizard::fadeInWidget(QWidget *w)
35 {
36     if( faderWidget ) { faderWidget->close(); }
37     faderWidget = new FaderWidget( w );
38     faderWidget->start();
39 }
40
41 QHandBrakeWizard::QHandBrakeWizard(QStackedWidget *parent)
42     : QStackedWidget(parent)
43 {
44     qhb = new QHandBrake(this);
45
46     scanWidget = new ScanWidget;
47     encodeWidget = new EncodeWidget;
48
49     scanWidget->setObjectName("scanWidget");
50     encodeWidget->setObjectName("encodeWidget");
51
52     scanWidget->installEventFilter(new Magic(scanWidget, this, this));
53     encodeWidget->installEventFilter(new Magic(encodeWidget, this, this));
54
55     addWidget(scanWidget);
56
57     connect(scanWidget, SIGNAL(scanDVD(const QString)), qhb, SLOT(startScan(const QString)));
58     connect(scanWidget, SIGNAL(scanningDone()), SLOT(activateEncodePage()));
59     connect(qhb, SIGNAL(scanProgress(int, int)), scanWidget, SLOT(setProgress(int, int)));
60     connect(encodeWidget, SIGNAL(convert()), qhb, SLOT(encode()));
61
62     if( QDBusConnection::systemBus().isConnected() )
63     {
64         QDBusConnection::systemBus().connect( HAL_SERVICE, HAL_PATH_MANAGER, HAL_OBJECT_MANAGER, "DeviceAdded", scanWidget, SLOT( updateVolumeList( QString ) ) );
65         QDBusConnection::systemBus().connect( HAL_SERVICE, HAL_PATH_MANAGER, HAL_OBJECT_MANAGER, "DeviceRemoved", scanWidget, SLOT( updateVolumeList( QString ) ) );
66     }
67 }
68
69 void QHandBrakeWizard::activateScanPage()
70 {
71     setCurrentWidget(scanWidget);
72 }
73
74 void QHandBrakeWizard::activateEncodePage()
75 {
76     addWidget(encodeWidget);
77
78     encodeWidget->setModel( qhb->titleListModel() );
79
80     setCurrentWidget(encodeWidget);
81 }