Add FFplay support to the application
Integrated FFplay functionality across the application. This includes support for setting up the FFplay path and invoking FFplay for media playback.
This commit is contained in:
@@ -66,6 +66,7 @@ type QueueLayoutObject struct {
|
||||
items map[int]QueueLayoutItem
|
||||
localizerService LocalizerContract
|
||||
queueStatisticsFormat *queueStatisticsFormat
|
||||
ffplayService FFplayContract
|
||||
}
|
||||
|
||||
type QueueLayoutItem struct {
|
||||
@@ -73,11 +74,12 @@ type QueueLayoutItem struct {
|
||||
ProgressBar *widget.ProgressBar
|
||||
StatusMessage *canvas.Text
|
||||
MessageError *canvas.Text
|
||||
buttonPlay *widget.Button
|
||||
|
||||
status *StatusContract
|
||||
}
|
||||
|
||||
func NewQueueLayoutObject(queue QueueListContract, localizerService LocalizerContract) *QueueLayoutObject {
|
||||
func NewQueueLayoutObject(queue QueueListContract, localizerService LocalizerContract, ffplayService FFplayContract) *QueueLayoutObject {
|
||||
title := widget.NewLabel(localizerService.GetMessage(&i18n.LocalizeConfig{MessageID: "queue"}))
|
||||
title.TextStyle.Bold = true
|
||||
|
||||
@@ -98,6 +100,7 @@ func NewQueueLayoutObject(queue QueueListContract, localizerService LocalizerCon
|
||||
items: items,
|
||||
localizerService: localizerService,
|
||||
queueStatisticsFormat: queueStatisticsFormat,
|
||||
ffplayService: ffplayService,
|
||||
}
|
||||
|
||||
queue.AddListener(queueLayoutObject)
|
||||
@@ -121,11 +124,18 @@ func (o QueueLayoutObject) Add(id int, queue *Queue) {
|
||||
|
||||
statusMessage := canvas.NewText(o.getStatusTitle(queue.Status), theme.Color(theme.ColorNamePrimary))
|
||||
messageError := canvas.NewText("", theme.Color(theme.ColorNameError))
|
||||
buttonPlay := widget.NewButtonWithIcon("", theme.Icon(theme.IconNameMediaPlay), func() {
|
||||
|
||||
})
|
||||
buttonPlay.Hide()
|
||||
|
||||
content := container.NewVBox(
|
||||
container.NewHScroll(widget.NewLabel(queue.Setting.VideoFileInput.Name)),
|
||||
progressBar,
|
||||
container.NewHScroll(statusMessage),
|
||||
container.NewHScroll(container.NewHBox(
|
||||
buttonPlay,
|
||||
statusMessage,
|
||||
)),
|
||||
container.NewHScroll(messageError),
|
||||
canvas.NewLine(theme.Color(theme.ColorNameFocus)),
|
||||
container.NewPadded(),
|
||||
@@ -141,6 +151,7 @@ func (o QueueLayoutObject) Add(id int, queue *Queue) {
|
||||
ProgressBar: progressBar,
|
||||
StatusMessage: statusMessage,
|
||||
MessageError: messageError,
|
||||
buttonPlay: buttonPlay,
|
||||
status: &queue.Status,
|
||||
}
|
||||
o.container.Add(content)
|
||||
@@ -169,6 +180,20 @@ func (o QueueLayoutObject) ChangeQueueStatus(queueId int, queue *Queue) {
|
||||
item.MessageError.Refresh()
|
||||
})
|
||||
}
|
||||
if queue.Status == StatusType(Completed) {
|
||||
item.buttonPlay.Show()
|
||||
item.buttonPlay.OnTapped = func() {
|
||||
item.buttonPlay.Disable()
|
||||
go func() {
|
||||
_ = o.ffplayService.Run(FFplaySetting{
|
||||
PathToFile: queue.Setting.VideoFileOut.Path,
|
||||
})
|
||||
fyne.Do(func() {
|
||||
item.buttonPlay.Enable()
|
||||
})
|
||||
}()
|
||||
}
|
||||
}
|
||||
if o.queueStatisticsFormat.isChecked(queue.Status) == false && item.CanvasObject.Visible() == true {
|
||||
item.CanvasObject.Hide()
|
||||
} else if item.CanvasObject.Visible() == false {
|
||||
|
||||
Reference in New Issue
Block a user