Skip to content

Commit e8de590

Browse files
committed
add default transcoder and language QActionGroup support
1 parent 0402fbf commit e8de590

File tree

2 files changed

+98
-70
lines changed

2 files changed

+98
-70
lines changed

src/builder/include/open_converter.h

Lines changed: 25 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -18,35 +18,36 @@
1818
#ifndef OPEN_CONVERTER_H
1919
#define OPEN_CONVERTER_H
2020

21-
#include <QMainWindow>
22-
#include <QTranslator>
23-
#include <QMessageBox>
2421
#include <QAction>
25-
#include <QEvent>
22+
#include <QActionGroup>
23+
#include <QApplication>
24+
#include <QByteArray>
2625
#include <QDragEnterEvent>
2726
#include <QDropEvent>
28-
#include <QIcon>
29-
#include <QString>
30-
#include <QUrl>
31-
#include <QFileInfo>
32-
#include <QByteArray>
27+
#include <QEvent>
3328
#include <QFileDialog>
34-
#include <QToolButton>
35-
#include <QPushButton>
36-
#include <QMenu>
37-
#include <QStatusBar>
38-
#include <QProgressBar>
29+
#include <QFileInfo>
30+
#include <QIcon>
3931
#include <QLabel>
4032
#include <QLineEdit>
41-
#include <QThread>
33+
#include <QMainWindow>
34+
#include <QMenu>
35+
#include <QMessageBox>
4236
#include <QMetaObject>
43-
#include <QApplication>
4437
#include <QMimeData>
38+
#include <QProgressBar>
39+
#include <QPushButton>
40+
#include <QStatusBar>
41+
#include <QString>
42+
#include <QThread>
43+
#include <QToolButton>
44+
#include <QTranslator>
45+
#include <QUrl>
4546

46-
#include "../../common/include/info.h"
4747
#include "../../common/include/encode_parameter.h"
48-
#include "../../common/include/process_parameter.h"
48+
#include "../../common/include/info.h"
4949
#include "../../common/include/process_observer.h"
50+
#include "../../common/include/process_parameter.h"
5051

5152
QT_BEGIN_NAMESPACE
5253
namespace Ui {
@@ -60,27 +61,27 @@ class Converter;
6061
class OpenConverter : public QMainWindow, public ProcessObserver {
6162
Q_OBJECT
6263

63-
public:
64+
public:
6465
explicit OpenConverter(QWidget *parent = nullptr);
6566
~OpenConverter();
6667

6768
// ProcessObserver interface implementation
6869
void onProcessUpdate(double progress) override;
6970
void onTimeUpdate(double timeRequired) override;
7071

71-
protected:
72+
protected:
7273
void dragEnterEvent(QDragEnterEvent *event) override;
7374
void dropEvent(QDropEvent *event) override;
7475
void changeEvent(QEvent *event) override;
7576

76-
private slots:
77+
private slots:
7778
void slotLanguageChanged(QAction *action);
7879
void slotTranscoderChanged(QAction *action);
7980
void apply_Pushed();
8081
void convert_Pushed();
8182
void encode_Setting_Pushed();
8283

83-
private:
84+
private:
8485
Ui::OpenConverter *ui;
8586
QTranslator m_translator;
8687
QString m_currLang;
@@ -94,6 +95,8 @@ private slots:
9495
ProcessParameter *processParameter;
9596
Converter *converter;
9697
QMessageBox *displayResult;
98+
QActionGroup *transcoderGroup;
99+
QActionGroup *languageGroup;
97100

98101
void loadLanguage(const QString &rLanguage);
99102
void handle_Converter_Result(bool flag);

src/builder/src/open_converter.cpp

Lines changed: 73 additions & 48 deletions
Original file line numberDiff line numberDiff line change
@@ -1,36 +1,37 @@
1-
#include <QMainWindow>
2-
#include <QTranslator>
3-
#include <QMessageBox>
41
#include <QAction>
5-
#include <QEvent>
2+
#include <QApplication>
3+
#include <QByteArray>
64
#include <QDragEnterEvent>
75
#include <QDropEvent>
8-
#include <QIcon>
9-
#include <QString>
10-
#include <QUrl>
11-
#include <QFileInfo>
12-
#include <QByteArray>
6+
#include <QEvent>
137
#include <QFileDialog>
14-
#include <QToolButton>
15-
#include <QPushButton>
16-
#include <QMenu>
17-
#include <QStatusBar>
18-
#include <QProgressBar>
8+
#include <QFileInfo>
9+
#include <QIcon>
1910
#include <QLabel>
2011
#include <QLineEdit>
21-
#include <QThread>
12+
#include <QMainWindow>
13+
#include <QMenu>
14+
#include <QMessageBox>
2215
#include <QMetaObject>
23-
#include <QApplication>
2416
#include <QMimeData>
17+
#include <QProgressBar>
18+
#include <QPushButton>
19+
#include <QStatusBar>
20+
#include <QString>
21+
#include <QThread>
22+
#include <QToolButton>
23+
#include <QTranslator>
24+
#include <QUrl>
2525

26-
#include "../include/open_converter.h"
27-
#include "ui_open_converter.h"
28-
#include "../include/encode_setting.h"
29-
#include "../../engine/include/converter.h"
30-
#include "../../common/include/info.h"
3126
#include "../../common/include/encode_parameter.h"
32-
#include "../../common/include/process_parameter.h"
27+
#include "../../common/include/info.h"
3328
#include "../../common/include/process_observer.h"
29+
#include "../../common/include/process_parameter.h"
30+
#include "../../engine/include/converter.h"
31+
#include "../include/encode_setting.h"
32+
#include "../include/open_converter.h"
33+
34+
#include "ui_open_converter.h"
3435

3536
#include <iostream>
3637

@@ -44,17 +45,49 @@ OpenConverter::OpenConverter(QWidget *parent)
4445
processParameter = new ProcessParameter;
4546
converter = new Converter(processParameter, encodeParameter);
4647
displayResult = new QMessageBox;
48+
transcoderGroup = new QActionGroup(this);
49+
languageGroup = new QActionGroup(this);
4750

4851
ui->setupUi(this);
4952
setAcceptDrops(true);
5053
setWindowTitle("OpenConverter");
5154
setWindowIcon(QIcon(":/icon/icon.png"));
5255

5356
ui->progressBar->setValue(0);
54-
57+
5558
// Register this class as an observer for process updates
5659
processParameter->addObserver(std::shared_ptr<ProcessObserver>(this));
5760

61+
transcoderGroup->setExclusive(true);
62+
63+
QList<QAction *> transcoderActions = ui->menuTranscoder->actions();
64+
for (QAction *action : transcoderActions) {
65+
action->setCheckable(true);
66+
transcoderGroup->addAction(action);
67+
}
68+
69+
if (!transcoderActions.isEmpty()) {
70+
transcoderActions.first()->setChecked(true);
71+
converter->set_Transcoder(
72+
transcoderActions.first()->objectName().toStdString());
73+
}
74+
75+
languageGroup->setExclusive(true);
76+
QList<QAction *> languageActions = ui->menuLanguage->actions();
77+
for (QAction *action : languageActions) {
78+
action->setCheckable(true);
79+
languageGroup->addAction(action);
80+
}
81+
82+
m_currLang = "english";
83+
m_langPath = ":/";
84+
for (QAction *action : languageActions) {
85+
if (action->objectName() == m_currLang) {
86+
action->setChecked(true);
87+
break;
88+
}
89+
}
90+
5891
connect(ui->toolButton, &QToolButton::clicked, [&]() {
5992
QString filename = QFileDialog::getOpenFileName();
6093
ui->lineEdit_inputFile->setText(filename);
@@ -74,9 +107,6 @@ OpenConverter::OpenConverter(QWidget *parent)
74107

75108
connect(ui->menuTranscoder, SIGNAL(triggered(QAction *)), this,
76109
SLOT(slotTranscoderChanged(QAction *)));
77-
78-
m_currLang = "english";
79-
m_langPath = ":/";
80110
}
81111

82112
void OpenConverter::dragEnterEvent(QDragEnterEvent *event) {
@@ -178,7 +208,7 @@ void OpenConverter::changeEvent(QEvent *event) {
178208
ui->lineEdit_outputFile->setText(currentOutputPath);
179209

180210
if (info && info->get_Quick_Info()) {
181-
info_Display(info->get_Quick_Info()); // Convert QuickInfo to string
211+
info_Display(info->get_Quick_Info()); // Convert QuickInfo to string
182212
}
183213
}
184214
QMainWindow::changeEvent(event);
@@ -251,23 +281,21 @@ void OpenConverter::convert_Pushed() {
251281
// Start conversion in worker thread
252282

253283
// capture everything you need by value
254-
auto* thread = QThread::create([=]() {
255-
bool ok = converter->convert_Format(
256-
inputFilePath.toStdString(),
257-
outputFilePath.toStdString()
258-
);
284+
auto *thread = QThread::create([=]() {
285+
bool ok = converter->convert_Format(inputFilePath.toStdString(),
286+
outputFilePath.toStdString());
259287
// When done, marshal back to the GUI thread:
260-
QMetaObject::invokeMethod(this, [this, ok]() {
261-
handle_Converter_Result(ok);
262-
}, Qt::QueuedConnection);
288+
QMetaObject::invokeMethod(
289+
this, [this, ok]() { handle_Converter_Result(ok); },
290+
Qt::QueuedConnection);
263291
});
264292

265293
// clean up the QThread object once it finishes
266294
connect(thread, &QThread::finished, thread, &QObject::deleteLater);
267295

268296
// fire off
269-
thread->start();;
270-
297+
thread->start();
298+
;
271299
}
272300

273301
// automatically select kbps/Mbps
@@ -291,36 +319,33 @@ QString OpenConverter::formatFrequency(int64_t hertz) {
291319
}
292320

293321
void OpenConverter::info_Display(QuickInfo *quickInfo) {
294-
if (!quickInfo) return;
295-
322+
if (!quickInfo)
323+
return;
324+
296325
// video
297326
ui->label_videoStreamResult->setText(
298327
QString("%1").arg(quickInfo->videoIdx));
299-
ui->label_widthResult->setText(
300-
QString("%1 px").arg(quickInfo->width));
301-
ui->label_heightResult->setText(
302-
QString("%1 px").arg(quickInfo->height));
328+
ui->label_widthResult->setText(QString("%1 px").arg(quickInfo->width));
329+
ui->label_heightResult->setText(QString("%1 px").arg(quickInfo->height));
303330
ui->label_colorSpaceResult->setText(
304331
QString("%1").arg(QString::fromStdString(quickInfo->colorSpace)));
305332
ui->label_videoCodecResult->setText(
306333
QString("%1").arg(QString::fromStdString(quickInfo->videoCodec)));
307334
ui->label_videoBitRateResult->setText(
308335
formatBitrate(quickInfo->videoBitRate));
309336
ui->label_frameRateResult->setText(
310-
QString("%1 fps").arg(quickInfo->frameRate,0,'f',2));
337+
QString("%1 fps").arg(quickInfo->frameRate, 0, 'f', 2));
311338
// audio
312339
ui->label_audioStreamResult->setText(
313340
QString("%1").arg(quickInfo->audioIdx));
314341
ui->label_audioCodecResult->setText(
315342
QString("%1").arg(QString::fromStdString(quickInfo->audioCodec)));
316343
ui->label_audioBitRateResult->setText(
317344
formatBitrate(quickInfo->audioBitRate));
318-
ui->label_channelsResult->setText(
319-
QString("%1").arg(quickInfo->channels));
345+
ui->label_channelsResult->setText(QString("%1").arg(quickInfo->channels));
320346
ui->label_sampleFmtResult->setText(
321347
QString("%1").arg(QString::fromStdString(quickInfo->sampleFmt)));
322-
ui->label_sampleRateResult->setText(
323-
formatFrequency(quickInfo->sampleRate));
348+
ui->label_sampleRateResult->setText(formatFrequency(quickInfo->sampleRate));
324349
}
325350

326351
OpenConverter::~OpenConverter() {

0 commit comments

Comments
 (0)