#include <KComboBox>
#include <KIO/NetAccess>
#include <KFileItem>
+#include <KMessageBox>
+#include <KApplication>
+
+#if KDE_IS_VERSION(4,2,0)
+#include <KDiskFreeSpaceInfo>
+#endif
#include <QMouseEvent>
#include <QMenu>
#include <QDir>
-RecMonitor::RecMonitor(QString name, QWidget *parent)
- : QWidget(parent), m_name(name), m_isActive(false), m_isCapturing(false), m_isPlaying(false), m_didCapture(false) {
- ui.setupUi(this);
+RecMonitor::RecMonitor(QString name, QWidget *parent) :
+ QWidget(parent),
+ m_name(name),
+ m_isActive(false),
+ m_isCapturing(false),
+ m_didCapture(false),
+ m_isPlaying(false)
+{
+ setupUi(this);
- ui.video_frame->setAttribute(Qt::WA_PaintOnScreen);
- ui.device_selector->setCurrentIndex(KdenliveSettings::defaultcapture());
- connect(ui.device_selector, SIGNAL(currentIndexChanged(int)), this, SLOT(slotVideoDeviceChanged(int)));
+ video_frame->setAttribute(Qt::WA_PaintOnScreen);
+ device_selector->setCurrentIndex(KdenliveSettings::defaultcapture());
+ connect(device_selector, SIGNAL(currentIndexChanged(int)), this, SLOT(slotVideoDeviceChanged(int)));
configAction->setCheckable(false);
layout->addWidget(toolbar);
- ui.control_frame_firewire->setLayout(layout);
- slotVideoDeviceChanged(ui.device_selector->currentIndex());
- displayProcess = new QProcess;
- captureProcess = new QProcess;
+ layout->addWidget(&m_dvinfo);
+
+#if KDE_IS_VERSION(4,2,0)
+ m_freeSpace = new KCapacityBar(KCapacityBar::DrawTextInline, this);
+ m_freeSpace->setMaximumWidth(150);
+ QFontMetricsF fontMetrics(font());
+ m_freeSpace->setMaximumHeight(fontMetrics.height() * 1.2);
+ slotUpdateFreeSpace();
+ layout->addWidget(m_freeSpace);
+ connect(&m_spaceTimer, SIGNAL(timeout()), this, SLOT(slotUpdateFreeSpace()));
+ m_spaceTimer.setInterval(30000);
+ m_spaceTimer.setSingleShot(false);
+#endif
+
+ control_frame_firewire->setLayout(layout);
- connect(captureProcess, SIGNAL(stateChanged(QProcess::ProcessState)), this, SLOT(slotProcessStatus(QProcess::ProcessState)));
+ slotVideoDeviceChanged(device_selector->currentIndex());
+ m_displayProcess = new QProcess;
+ m_captureProcess = new QProcess;
+
+ connect(m_captureProcess, SIGNAL(stateChanged(QProcess::ProcessState)), this, SLOT(slotProcessStatus(QProcess::ProcessState)));
+ connect(m_captureProcess, SIGNAL(readyReadStandardError()), this, SLOT(slotReadDvgrabInfo()));
QStringList env = QProcess::systemEnvironment();
- env << "SDL_WINDOWID=" + QString::number(ui.video_frame->winId());
+ env << "SDL_WINDOWID=" + QString::number(video_frame->winId());
QString videoDriver = KdenliveSettings::videodrivername();
if (!videoDriver.isEmpty()) {
}
setenv("SDL_VIDEO_ALLOW_SCREENSAVER", "1", 1);
- displayProcess->setEnvironment(env);
+ m_displayProcess->setEnvironment(env);
if (KdenliveSettings::video4capture().isEmpty()) {
QString captureCommand;
KdenliveSettings::setVideo4capture(captureCommand);
}
- kDebug() << "/////// BUILDING MONITOR, ID: " << ui.video_frame->winId();
+ kDebug() << "/////// BUILDING MONITOR, ID: " << video_frame->winId();
}
-RecMonitor::~RecMonitor() {
- delete captureProcess;
- delete displayProcess;
+RecMonitor::~RecMonitor()
+{
+#if KDE_IS_VERSION(4,2,0)
+ m_spaceTimer.stop();
+#endif
+ delete m_captureProcess;
+ delete m_displayProcess;
}
-QString RecMonitor::name() const {
+QString RecMonitor::name() const
+{
return m_name;
}
-void RecMonitor::slotConfigure() {
- emit showConfigDialog(4, ui.device_selector->currentIndex());
+void RecMonitor::slotConfigure()
+{
+ emit showConfigDialog(4, device_selector->currentIndex());
+}
+
+void RecMonitor::slotUpdateCaptureFolder()
+{
+ if (m_captureProcess) m_captureProcess->setWorkingDirectory(KdenliveSettings::capturefolder());
+ if (m_captureProcess->state() != QProcess::NotRunning) {
+ if (device_selector->currentIndex() == FIREWIRE)
+ KMessageBox::information(this, i18n("You need to disconnect and reconnect in the capture monitor to apply your changes"), i18n("Capturing"));
+ else KMessageBox::information(this, i18n("You need to stop capture before your changes can be applied"), i18n("Capturing"));
+ } else slotVideoDeviceChanged(device_selector->currentIndex());
+ kDebug() << "// UPDATE CAPT FOLD: " << KdenliveSettings::capturefolder();
+
+#if KDE_IS_VERSION(4,2,0)
+ // update free space info
+ slotUpdateFreeSpace();
+#endif
}
-void RecMonitor::slotVideoDeviceChanged(int ix) {
+void RecMonitor::slotVideoDeviceChanged(int ix)
+{
switch (ix) {
case SCREENGRAB:
m_discAction->setEnabled(false);
m_playAction->setEnabled(false);
if (KdenliveSettings::rmd_path().isEmpty()) {
QString rmdpath = KStandardDirs::findExe("recordmydesktop");
- if (rmdpath.isEmpty()) ui.video_frame->setPixmap(mergeSideBySide(KIcon("dialog-warning").pixmap(QSize(50, 50)), i18n("Recordmydesktop utility not found,\n please install it for screen grabs")));
+ if (rmdpath.isEmpty()) video_frame->setPixmap(mergeSideBySide(KIcon("dialog-warning").pixmap(QSize(50, 50)), i18n("Recordmydesktop utility not found,\n please install it for screen grabs")));
else KdenliveSettings::setRmd_path(rmdpath);
}
- if (!KdenliveSettings::rmd_path().isEmpty()) ui.video_frame->setPixmap(mergeSideBySide(KIcon("video-display").pixmap(QSize(50, 50)), i18n("Press record button\nto start screen capture\nFiles will be saved in:\n%1", KdenliveSettings::capturefolder())));
- //ui.video_frame->setText(i18n("Press record button\nto start screen capture"));
+ if (!KdenliveSettings::rmd_path().isEmpty()) video_frame->setPixmap(mergeSideBySide(KIcon("video-display").pixmap(QSize(50, 50)), i18n("Press record button\nto start screen capture\nFiles will be saved in:\n%1", KdenliveSettings::capturefolder())));
+ //video_frame->setText(i18n("Press record button\nto start screen capture"));
break;
case VIDEO4LINUX:
m_discAction->setEnabled(false);
m_playAction->setEnabled(false);
m_rewAction->setEnabled(false);
m_fwdAction->setEnabled(false);
- //ui.video_frame->setText(i18n("Plug your camcorder and\npress connect button\nto initialize connection"));
+
+ // Check that dvgab is available
if (KdenliveSettings::dvgrab_path().isEmpty()) {
QString dvgrabpath = KStandardDirs::findExe("dvgrab");
- if (dvgrabpath.isEmpty()) ui.video_frame->setPixmap(mergeSideBySide(KIcon("dialog-warning").pixmap(QSize(50, 50)), i18n("dvgrab utility not found,\n please install it for firewire capture")));
+ if (dvgrabpath.isEmpty()) video_frame->setPixmap(mergeSideBySide(KIcon("dialog-warning").pixmap(QSize(50, 50)), i18n("dvgrab utility not found,\n please install it for firewire capture")));
else KdenliveSettings::setDvgrab_path(dvgrabpath);
+ } else {
+ // Show capture info
+ QString capturefile = KdenliveSettings::capturefolder();
+ if (!capturefile.endsWith("/")) capturefile.append("/");
+ QString capturename = KdenliveSettings::dvgrabfilename();
+ if (capturename.isEmpty()) capturename = "capture";
+ QString extension;
+ switch (KdenliveSettings::firewireformat()) {
+ case 0:
+ extension = ".dv";
+ break;
+ case 1:
+ case 2:
+ extension = ".avi";
+ break;
+ case 3:
+ extension = ".m2t";
+ break;
+ }
+ capturename.append("xxx" + extension);
+ capturefile.append(capturename);
+ video_frame->setPixmap(mergeSideBySide(KIcon("network-connect").pixmap(QSize(50, 50)), i18n("Plug your camcorder and\npress connect button\nto initialize connection\nFiles will be saved in:\n%1", capturefile)));
}
-
- if (!KdenliveSettings::dvgrab_path().isEmpty()) ui.video_frame->setPixmap(mergeSideBySide(KIcon("network-connect").pixmap(QSize(50, 50)), i18n("Plug your camcorder and\npress connect button\nto initialize connection\nFiles will be saved in:\n%1", KdenliveSettings::capturefolder())));
break;
}
}
-QPixmap RecMonitor::mergeSideBySide(const QPixmap& pix, const QString txt) {
+QPixmap RecMonitor::mergeSideBySide(const QPixmap& pix, const QString txt)
+{
QPainter p;
- QRect r = p.fontMetrics().boundingRect(QRect(0, 0, ui.video_frame->width(), ui.video_frame->height()), Qt::AlignLeft, txt);
+ QRect r = QApplication::fontMetrics().boundingRect(QRect(0, 0, video_frame->width(), video_frame->height()), Qt::AlignLeft, txt);
int strWidth = r.width();
int strHeight = r.height();
int pixWidth = pix.width();
res.fill(Qt::transparent);
p.begin(&res);
p.drawPixmap(0, 0, pix);
+ p.setPen(kapp->palette().text().color());
p.drawText(QRect(pixWidth + 8, 0, strWidth, strHeight), 0, txt);
p.end();
return res;
}
-void RecMonitor::checkDeviceAvailability() {
+void RecMonitor::checkDeviceAvailability()
+{
if (!KIO::NetAccess::exists(KUrl(KdenliveSettings::video4vdevice()), KIO::NetAccess::SourceSide , this)) {
m_playAction->setEnabled(false);
m_recAction->setEnabled(false);
- ui.video_frame->setPixmap(mergeSideBySide(KIcon("camera-web").pixmap(QSize(50, 50)), i18n("Cannot read from device %1\nPlease check drivers and access rights.", KdenliveSettings::video4vdevice())));
- //ui.video_frame->setText(i18n("Cannot read from device %1\nPlease check drivers and access rights.", KdenliveSettings::video4vdevice()));
- } else //ui.video_frame->setText(i18n("Press play or record button\nto start video capture"));
- ui.video_frame->setPixmap(mergeSideBySide(KIcon("camera-web").pixmap(QSize(50, 50)), i18n("Press play or record button\nto start video capture\nFiles will be saved in:\n%1", KdenliveSettings::capturefolder())));
+ video_frame->setPixmap(mergeSideBySide(KIcon("camera-web").pixmap(QSize(50, 50)), i18n("Cannot read from device %1\nPlease check drivers and access rights.", KdenliveSettings::video4vdevice())));
+ //video_frame->setText(i18n("Cannot read from device %1\nPlease check drivers and access rights.", KdenliveSettings::video4vdevice()));
+ } else //video_frame->setText(i18n("Press play or record button\nto start video capture"));
+ video_frame->setPixmap(mergeSideBySide(KIcon("camera-web").pixmap(QSize(50, 50)), i18n("Press play or record button\nto start video capture\nFiles will be saved in:\n%1", KdenliveSettings::capturefolder())));
}
-void RecMonitor::slotDisconnect() {
- if (captureProcess->state() == QProcess::NotRunning) {
+void RecMonitor::slotDisconnect()
+{
+ if (m_captureProcess->state() == QProcess::NotRunning) {
m_captureTime = KDateTime::currentLocalDateTime();
kDebug() << "CURRENT TIME: " << m_captureTime.toString();
m_didCapture = false;
slotStartCapture(false);
m_discAction->setIcon(KIcon("network-disconnect"));
- m_discAction->setText(i18n("Disonnect"));
+ m_discAction->setText(i18n("Disconnect"));
m_recAction->setEnabled(true);
m_stopAction->setEnabled(true);
m_playAction->setEnabled(true);
m_rewAction->setEnabled(true);
m_fwdAction->setEnabled(true);
} else {
- captureProcess->write("q", 1);
- QTimer::singleShot(1000, captureProcess, SLOT(kill()));
+ m_captureProcess->write("q", 1);
+ QTimer::singleShot(1000, m_captureProcess, SLOT(kill()));
if (m_didCapture) manageCapturedFiles();
m_didCapture = false;
}
}
-void RecMonitor::slotRewind() {
- captureProcess->write("a", 1);
+void RecMonitor::slotRewind()
+{
+ m_captureProcess->write("a", 1);
}
-void RecMonitor::slotForward() {
- captureProcess->write("z", 1);
+void RecMonitor::slotForward()
+{
+ m_captureProcess->write("z", 1);
}
-void RecMonitor::slotStopCapture() {
+void RecMonitor::slotStopCapture()
+{
// stop capture
- switch (ui.device_selector->currentIndex()) {
+ switch (device_selector->currentIndex()) {
case FIREWIRE:
- captureProcess->write("\e", 2);
+ m_captureProcess->write("\e", 2);
m_playAction->setIcon(m_playIcon);
m_isPlaying = false;
break;
case VIDEO4LINUX:
- captureProcess->write("q\n", 3);
- QTimer::singleShot(1000, captureProcess, SLOT(kill()));
+ m_captureProcess->write("q\n", 3);
+ QTimer::singleShot(1000, m_captureProcess, SLOT(kill()));
break;
case SCREENGRAB:
- captureProcess->write("q\n", 3);
- QTimer::singleShot(1000, captureProcess, SLOT(kill()));
+ m_captureProcess->write("q\n", 3);
+ QTimer::singleShot(1000, m_captureProcess, SLOT(kill()));
break;
default:
break;
}
}
-void RecMonitor::slotStartCapture(bool play) {
-
- /*
- *captureProcess<<"dvgrab";
-
- bool isHdv = false;
-
- switch (m_recPanel->capture_format->currentItem()){
- case 0:
- *captureProcess<<"--format"<<"dv1";
- break;
- case 1:
- *captureProcess<<"--format"<<"dv2";
- break;
- case 3:
- *captureProcess<<"--format"<<"hdv";
- isHdv = true;
- break;
- default:
- *captureProcess<<"--format"<<"raw";
- break;
- }
-
- if (KdenliveSettings::autosplit()) *captureProcess<<"--autosplit";
- if (KdenliveSettings::timestamp()) *captureProcess<<"--timestamp";
- *captureProcess<<"-i"<<"capture"<<"-";*/
-
- /*
- QStringList captureArgs;
- captureArgs<<"--format"<<"hdv"<<"-i"<<"capture"<<"-";
- QStringList displayArgs;
-
- displayArgs<<"-f"<<"mpegts"<<"-x"<<QString::number(ui.video_frame->width())<<"-y"<<QString::number(ui.video_frame->height())<<"-";
-
- captureProcess->setStandardOutputProcess(displayProcess);
- ui.video_frame->setScaledContents(false);
- captureProcess->start("dvgrab",captureArgs);
- displayProcess->start("ffplay", displayArgs);*/
-
-
- if (captureProcess->state() != QProcess::NotRunning) {
- if (ui.device_selector->currentIndex() == FIREWIRE) {
+void RecMonitor::slotStartCapture(bool play)
+{
+ if (m_captureProcess->state() != QProcess::NotRunning) {
+ if (device_selector->currentIndex() == FIREWIRE) {
if (m_isPlaying) {
- captureProcess->write("k", 1);
+ m_captureProcess->write("k", 1);
//captureProcess->write("\e", 2);
m_playAction->setIcon(m_playIcon);
m_isPlaying = false;
} else {
- captureProcess->write("p", 1);
+ m_captureProcess->write("p", 1);
m_playAction->setIcon(m_pauseIcon);
m_isPlaying = true;
}
m_captureArgs.clear();
m_displayArgs.clear();
m_isPlaying = false;
+ QString capturename = KdenliveSettings::dvgrabfilename();
+ QStringList dvargs = KdenliveSettings::dvgrabextra().simplified().split(" ", QString::SkipEmptyParts);
- switch (ui.device_selector->currentIndex()) {
+ switch (device_selector->currentIndex()) {
case FIREWIRE:
switch (KdenliveSettings::firewireformat()) {
case 0:
}
if (KdenliveSettings::firewireautosplit()) m_captureArgs << "--autosplit";
if (KdenliveSettings::firewiretimestamp()) m_captureArgs << "--timestamp";
- m_captureArgs << "-i" << "capture" << "-";
- m_displayArgs << "-x" << QString::number(ui.video_frame->width()) << "-y" << QString::number(ui.video_frame->height()) << "-";
+ if (!dvargs.isEmpty()) {
+ m_captureArgs << dvargs;
+ }
+ m_captureArgs << "-i";
+ if (capturename.isEmpty()) capturename = "capture";
+ m_captureArgs << capturename << "-";
- captureProcess->setStandardOutputProcess(displayProcess);
- captureProcess->setWorkingDirectory(KdenliveSettings::capturefolder());
+ m_displayArgs << "-x" << QString::number(video_frame->width()) << "-y" << QString::number(video_frame->height()) << "-";
+
+ m_captureProcess->setStandardOutputProcess(m_displayProcess);
+ m_captureProcess->setWorkingDirectory(KdenliveSettings::capturefolder());
kDebug() << "Capture: Running dvgrab " << m_captureArgs.join(" ");
- captureProcess->start(KdenliveSettings::dvgrab_path(), m_captureArgs);
- if (play) captureProcess->write(" ", 1);
+
+ m_captureProcess->start(KdenliveSettings::dvgrab_path(), m_captureArgs);
+ if (play) m_captureProcess->write(" ", 1);
m_discAction->setEnabled(true);
break;
case VIDEO4LINUX:
m_captureArgs << KdenliveSettings::video4capture().simplified().split(' ') << KdenliveSettings::video4encoding().simplified().split(' ') << "-f" << "mpegts" << "-vcodec" << "mpeg4" << "-acodec" << "mp2" << "-";
- m_displayArgs << "-f" << "mpegts" << "-x" << QString::number(ui.video_frame->width()) << "-y" << QString::number(ui.video_frame->height()) << "-";
- captureProcess->setStandardOutputProcess(displayProcess);
+ m_displayArgs << "-f" << "mpegts" << "-x" << QString::number(video_frame->width()) << "-y" << QString::number(video_frame->height()) << "-";
+ m_captureProcess->setStandardOutputProcess(m_displayProcess);
kDebug() << "Capture: Running ffmpeg " << m_captureArgs.join(" ");
- captureProcess->start("ffmpeg", m_captureArgs);
+ m_captureProcess->start("ffmpeg", m_captureArgs);
break;
default:
break;
}
- if (ui.device_selector->currentIndex() != SCREENGRAB) {
+ if (device_selector->currentIndex() != SCREENGRAB) {
kDebug() << "Capture: Running ffplay " << m_displayArgs.join(" ");
- displayProcess->start("ffplay", m_displayArgs);
- ui.video_frame->setText(i18n("Initialising..."));
+ m_displayProcess->start("ffplay", m_displayArgs);
+ video_frame->setText(i18n("Initialising..."));
} else {
// do something when starting screen grab
}
}
-void RecMonitor::slotRecord() {
- if (captureProcess->state() == QProcess::NotRunning && ui.device_selector->currentIndex() == FIREWIRE) {
+void RecMonitor::slotRecord()
+{
+ if (m_captureProcess->state() == QProcess::NotRunning && device_selector->currentIndex() == FIREWIRE) {
slotStartCapture();
}
if (m_isCapturing) {
- switch (ui.device_selector->currentIndex()) {
+ switch (device_selector->currentIndex()) {
case FIREWIRE:
- captureProcess->write("\e", 2);
+ m_captureProcess->write("\e", 2);
m_playAction->setIcon(m_playIcon);
m_isCapturing = false;
m_isPlaying = false;
m_recAction->setChecked(false);
break;
case VIDEO4LINUX:
- captureProcess->terminate();
+ m_captureProcess->terminate();
slotStopCapture();
//m_isCapturing = false;
QTimer::singleShot(1000, this, SLOT(slotStartCapture()));
break;
case SCREENGRAB:
//captureProcess->write("q\n", 3);
- captureProcess->terminate();
- ui.video_frame->setText(i18n("Encoding captured video..."));
+ m_captureProcess->terminate();
+ video_frame->setText(i18n("Encoding captured video..."));
// in case ffmpeg doesn't exit with the 'q' command, kill it one second later
//QTimer::singleShot(1000, captureProcess, SLOT(kill()));
break;
}
return;
- } else if (ui.device_selector->currentIndex() == FIREWIRE) {
+ } else if (device_selector->currentIndex() == FIREWIRE) {
m_isCapturing = true;
m_didCapture = true;
- captureProcess->write("c\n", 3);
+ m_captureProcess->write("c\n", 3);
+#if KDE_IS_VERSION(4,2,0)
+ m_spaceTimer.start();
+#endif
return;
}
- if (captureProcess->state() == QProcess::NotRunning) {
+ if (m_captureProcess->state() == QProcess::NotRunning) {
m_recAction->setChecked(true);
QString extension = "mp4";
- if (ui.device_selector->currentIndex() == SCREENGRAB) extension = "ogv"; //KdenliveSettings::screengrabextension();
+ if (device_selector->currentIndex() == SCREENGRAB) extension = "ogv"; //KdenliveSettings::screengrabextension();
QString path = KdenliveSettings::capturefolder() + "/capture0000." + extension;
int i = 1;
while (QFile::exists(path)) {
path = KdenliveSettings::capturefolder() + "/capture" + num + '.' + extension;
i++;
}
-
m_captureFile = KUrl(path);
m_captureArgs.clear();
m_displayArgs.clear();
QString args;
+ QString capturename = KdenliveSettings::dvgrabfilename();
+ if (capturename.isEmpty()) capturename = "capture";
- switch (ui.device_selector->currentIndex()) {
- case FIREWIRE:
- m_captureArgs << "--format" << "hdv" << "-i" << "capture" << "-";
- m_displayArgs << "-f" << "mpegts" << "-x" << QString::number(ui.video_frame->width()) << "-y" << QString::number(ui.video_frame->height()) << "-";
- captureProcess->setStandardOutputProcess(displayProcess);
- kDebug() << "Capture: Running dvgrab " << m_captureArgs.join(" ");
- captureProcess->start(KdenliveSettings::dvgrab_path(), m_captureArgs);
- break;
+ switch (device_selector->currentIndex()) {
case VIDEO4LINUX:
m_captureArgs << KdenliveSettings::video4capture().simplified().split(' ') << KdenliveSettings::video4encoding().simplified().split(' ') << "-vcodec" << "mpeg4" << "-acodec" << "mp2" << "-y" << m_captureFile.path() << "-f" << "mpegts" << "-vcodec" << "mpeg4" << "-acodec" << "mp2" << "-";
- m_displayArgs << "-f" << "mpegts" << "-x" << QString::number(ui.video_frame->width()) << "-y" << QString::number(ui.video_frame->height()) << "-";
- captureProcess->setStandardOutputProcess(displayProcess);
+ m_displayArgs << "-f" << "mpegts" << "-x" << QString::number(video_frame->width()) << "-y" << QString::number(video_frame->height()) << "-";
+ m_captureProcess->setStandardOutputProcess(m_displayProcess);
kDebug() << "Capture: Running ffmpeg " << m_captureArgs.join(" ");
- captureProcess->start("ffmpeg", m_captureArgs);
+ m_captureProcess->start("ffmpeg", m_captureArgs);
break;
case SCREENGRAB:
switch (KdenliveSettings::rmd_capture_type()) {
if (KdenliveSettings::rmd_fullshots()) m_captureArgs << "--full-shots";
m_captureArgs << "-workdir" << KdenliveSettings::currenttmpfolder();
m_captureArgs << "-fps" << QString::number(KdenliveSettings::rmd_fps()) << "-o" << m_captureFile.path();
- captureProcess->start(KdenliveSettings::rmd_path(), m_captureArgs);
+ m_captureProcess->start(KdenliveSettings::rmd_path(), m_captureArgs);
kDebug() << "// RecordMyDesktop params: " << m_captureArgs;
break;
default:
}
- if (ui.device_selector->currentIndex() != SCREENGRAB) {
+ if (device_selector->currentIndex() != SCREENGRAB) {
m_isCapturing = true;
kDebug() << "Capture: Running ffplay " << m_displayArgs.join(" ");
- displayProcess->start("ffplay", m_displayArgs);
- ui.video_frame->setText(i18n("Initialising..."));
+ m_displayProcess->start("ffplay", m_displayArgs);
+ video_frame->setText(i18n("Initialising..."));
}
} else {
// stop capture
- displayProcess->kill();
+ m_displayProcess->kill();
//captureProcess->kill();
QTimer::singleShot(1000, this, SLOT(slotRecord()));
}
}
m_captureArgs << args.simplified().split(' ') << KdenliveSettings::screengrabencoding().simplified().split(' ') << m_captureFile.path();
m_isCapturing = true;
- ui.video_frame->setText(i18n("Capturing..."));
+ video_frame->setText(i18n("Capturing..."));
if (KdenliveSettings::screengrabenableaudio() && !KdenliveSettings::useosscapture()) {
QStringList alsaArgs = KdenliveSettings::screengrabalsacapture().simplified().split(' ');
alsaProcess->setStandardOutputProcess(captureProcess);
captureProcess->start("ffmpeg", m_captureArgs);
}*/
-void RecMonitor::slotProcessStatus(QProcess::ProcessState status) {
+void RecMonitor::slotProcessStatus(QProcess::ProcessState status)
+{
if (status == QProcess::NotRunning) {
- displayProcess->kill();
- if (m_isCapturing && ui.device_selector->currentIndex() != FIREWIRE)
- if (ui.autoaddbox->isChecked() && QFile::exists(m_captureFile.path())) emit addProjectClip(m_captureFile);
- if (ui.device_selector->currentIndex() == FIREWIRE) {
+ m_displayProcess->kill();
+ if (m_isCapturing && device_selector->currentIndex() != FIREWIRE)
+ if (autoaddbox->isChecked() && QFile::exists(m_captureFile.path())) emit addProjectClip(m_captureFile);
+ if (device_selector->currentIndex() == FIREWIRE) {
m_discAction->setIcon(KIcon("network-connect"));
m_discAction->setText(i18n("Connect"));
m_playAction->setEnabled(false);
m_playAction->setIcon(m_playIcon);
m_recAction->setChecked(false);
m_stopAction->setEnabled(false);
- ui.device_selector->setEnabled(true);
- if (captureProcess && captureProcess->exitStatus() == QProcess::CrashExit) {
- ui.video_frame->setText(i18n("Capture crashed, please check your parameters"));
+ device_selector->setEnabled(true);
+ if (m_captureProcess && m_captureProcess->exitStatus() == QProcess::CrashExit) {
+ video_frame->setText(i18n("Capture crashed, please check your parameters"));
} else {
- if (ui.device_selector->currentIndex() != SCREENGRAB) ui.video_frame->setText(i18n("Not connected"));
- else ui.video_frame->setPixmap(mergeSideBySide(KIcon("video-display").pixmap(QSize(50, 50)), i18n("Press record button\nto start screen capture\nFiles will be saved in:\n%1", KdenliveSettings::capturefolder())));
+ if (device_selector->currentIndex() != SCREENGRAB) video_frame->setText(i18n("Not connected"));
+ else video_frame->setPixmap(mergeSideBySide(KIcon("video-display").pixmap(QSize(50, 50)), i18n("Press record button\nto start screen capture\nFiles will be saved in:\n%1", KdenliveSettings::capturefolder())));
}
m_isCapturing = false;
+
+#if KDE_IS_VERSION(4,2,0)
+ m_spaceTimer.stop();
+ // update free space info
+ slotUpdateFreeSpace();
+#endif
+
} else {
- if (ui.device_selector->currentIndex() != SCREENGRAB) m_stopAction->setEnabled(true);
- ui.device_selector->setEnabled(false);
+ if (device_selector->currentIndex() != SCREENGRAB) m_stopAction->setEnabled(true);
+ device_selector->setEnabled(false);
}
}
-void RecMonitor::manageCapturedFiles() {
+void RecMonitor::manageCapturedFiles()
+{
QString extension;
switch (KdenliveSettings::firewireformat()) {
case 0:
}
QDir dir(KdenliveSettings::capturefolder());
QStringList filters;
- filters << "capture*" + extension;
+ QString capturename = KdenliveSettings::dvgrabfilename();
+ if (capturename.isEmpty()) capturename = "capture";
+ filters << capturename + "*" + extension;
const QStringList result = dir.entryList(filters, QDir::Files, QDir::Time);
KUrl::List capturedFiles;
foreach(const QString &name, result) {
}
// virtual
-void RecMonitor::mousePressEvent(QMouseEvent * event) {
- slotPlay();
+void RecMonitor::mousePressEvent(QMouseEvent * /*event*/)
+{
+#if KDE_IS_VERSION(4,2,0)
+ if (m_freeSpace->underMouse()) slotUpdateFreeSpace();
+#endif
}
-void RecMonitor::activateRecMonitor() {
+void RecMonitor::slotUpdateFreeSpace()
+{
+#if KDE_IS_VERSION(4,2,0)
+ KDiskFreeSpaceInfo info = KDiskFreeSpaceInfo::freeSpaceInfo(KdenliveSettings::capturefolder());
+ if (info.isValid()) {
+ m_freeSpace->setValue(100 * info.used() / info.size());
+ m_freeSpace->setText(i18n("Free space: %1", KIO::convertSize(info.available())));
+ m_freeSpace->update();
+ }
+#endif
+}
+
+void RecMonitor::activateRecMonitor()
+{
//if (!m_isActive) m_monitorManager->activateRecMonitor(m_name);
}
-void RecMonitor::stop() {
+void RecMonitor::stop()
+{
m_isActive = false;
}
-void RecMonitor::start() {
+void RecMonitor::start()
+{
m_isActive = true;
}
-void RecMonitor::refreshRecMonitor(bool visible) {
+void RecMonitor::refreshRecMonitor(bool visible)
+{
if (visible) {
//if (!m_isActive) m_monitorManager->activateRecMonitor(m_name);
}
}
-void RecMonitor::slotPlay() {
+void RecMonitor::slotPlay()
+{
//if (!m_isActive) m_monitorManager->activateRecMonitor(m_name);
}
+void RecMonitor::slotReadDvgrabInfo()
+{
+ QString data = m_captureProcess->readAllStandardError().simplified();
+ data = data.section('"', 2, 2).simplified();
+ m_dvinfo.setText(data.left(11));
+ m_dvinfo.updateGeometry();
+}
#include "recmonitor.moc"
+