bool VideoPreview::showConfigDialog(QWidget *parent) { VideoPreviewConfigDialog d(parent); d.setVideoFile(videoFile()); d.setDVDDevice(DVDDevice()); d.setCols(cols()); d.setRows(rows()); d.setInitialStep(initialStep()); d.setMaxWidth(maxWidth()); d.setDisplayOSD(displayOSD()); d.setAspectRatio(aspectRatio()); d.setFormat(extractFormat()); d.setSaveLastDirectory(save_last_directory); if (d.exec() == QDialog::Accepted) { setVideoFile(d.videoFile()); setDVDDevice(d.DVDDevice()); setCols(d.cols()); setRows(d.rows()); setInitialStep(d.initialStep()); setMaxWidth(d.maxWidth()); setDisplayOSD(d.displayOSD()); setAspectRatio(d.aspectRatio()); setExtractFormat(d.format()); save_last_directory = d.saveLastDirectory(); return true; } return false; }
void VideoPreview::saveSettings() { qDebug("VideoPreview::saveSettings"); set->beginGroup("videopreview"); set->setValue("columns", cols()); set->setValue("rows", rows()); set->setValue("initial_step", initialStep()); set->setValue("max_width", maxWidth()); set->setValue("osd", displayOSD()); set->setValue("format", extractFormat()); set->setValue("save_last_directory", save_last_directory); if (save_last_directory) { set->setValue("last_directory", last_directory); } set->setValue("filename", videoFile()); set->setValue("dvd_device", DVDDevice()); set->setValue("show_info", toggleInfoAct->isChecked()); set->endGroup(); }
void VideoPreview::saveImage() { qDebug("VideoPreview::saveImage"); // Proposed name QString proposed_name = ""; if (save_last_directory) proposed_name = last_directory; QFileInfo fi(prop.input_video); if (fi.exists()) { if (!save_last_directory) proposed_name = fi.absolutePath(); QString extension = (extractFormat() == PNG) ? "png" : "jpg"; proposed_name += "/" + fi.completeBaseName() + "_preview." + extension; } // Formats QList<QByteArray> w_formats = QImageWriter::supportedImageFormats(); QString write_formats; for (int n = 0; n < w_formats.count(); n++) { write_formats.append("*." + w_formats[n] + " "); } if (write_formats.isEmpty()) { // Shouldn't happen! write_formats = "*.png *.jpg"; } QString filename = QFileDialog::getSaveFileName(this, tr("Save file"), proposed_name, tr("Images") + " (" + write_formats + ")"); if (!filename.isEmpty()) { QPixmap image = QPixmap::grabWidget(w_contents); if (!image.save(filename)) { // Failed!!! qDebug("VideoPreview::saveImage: error saving '%s'", filename.toUtf8().constData()); QMessageBox::warning(this, tr("Error saving file"), tr("The file couldn't be saved")); } else { last_directory = QFileInfo(filename).absolutePath(); } } }
void VideoPreview::loadSettings() { qDebug("VideoPreview::loadSettings"); set->beginGroup("videopreview"); setCols(set->value("columns", cols()).toInt()); setRows(set->value("rows", rows()).toInt()); setInitialStep(set->value("initial_step", initialStep()).toInt()); setMaxWidth(set->value("max_width", maxWidth()).toInt()); setDisplayOSD(set->value("osd", displayOSD()).toBool()); setExtractFormat((ExtractFormat) set->value("format", extractFormat()).toInt()); save_last_directory = set->value("save_last_directory", save_last_directory).toBool(); last_directory = set->value("last_directory", last_directory).toString(); setVideoFile(set->value("filename", videoFile()).toString()); setDVDDevice(set->value("dvd_device", DVDDevice()).toString()); toggleInfoAct->setChecked(set->value("show_info", true).toBool()); set->endGroup(); }
bool VideoPreview::extractImages() { VideoInfo i = getInfo(mplayer_bin, prop.input_video); int length = i.length; if (length == 0) { if (error_message.isEmpty()) error_message = tr("The length of the video is 0"); return false; } // Create a temporary directory QDir d(QDir::tempPath()); if (!d.exists(output_dir)) { if (!d.mkpath(output_dir)) { qDebug("VideoPreview::extractImages: error: can't create '%s'", full_output_dir.toUtf8().constData()); error_message = tr("The temporary directory (%1) can't be created").arg(full_output_dir); return false; } } displayVideoInfo(i); // Let's begin run.thumbnail_width = 0; int num_pictures = prop.n_cols * prop.n_rows; length -= prop.initial_step; int s_step = length / num_pictures; int current_time = prop.initial_step; canceled = false; progress->setLabelText(tr("Creating thumbnails...")); progress->setRange(0, num_pictures-1); progress->show(); double aspect_ratio = i.aspect; if (prop.aspect_ratio != 0) aspect_ratio = prop.aspect_ratio; for (int n = 0; n < num_pictures; n++) { qDebug("VideoPreview::extractImages: getting frame %d of %d...", n+1, num_pictures); progress->setValue(n); qApp->processEvents(); if (canceled) return false; if (!runPlayer(current_time, aspect_ratio)) return false; QString frame_picture = full_output_dir + "/" + framePicture(); if (!QFile::exists(frame_picture)) { error_message = tr("The file %1 doesn't exist").arg(frame_picture); return false; } #if RENAME_PICTURES QString extension = (extractFormat()==PNG) ? "png" : "jpg"; QString output_file = output_dir + QString("/picture_%1.%2").arg(current_time, 8, 10, QLatin1Char('0')).arg(extension); d.rename(output_dir + "/" + framePicture(), output_file); #else QString output_file = output_dir + "/" + framePicture(); #endif if (!addPicture(QDir::tempPath() +"/"+ output_file, n, current_time)) { return false; } current_time += s_step; } return true; }