footageviewer: auto switch waveform mode when clicking video/audio buttons
This commit is contained in:
@@ -1,7 +1,7 @@
|
||||
/***
|
||||
|
||||
Olive - Non-Linear Video Editor
|
||||
Copyright (C) 2022 Olive Team
|
||||
Copyright (C) 2023 Olive Studios LLC
|
||||
|
||||
This program is free software: you can redistribute it and/or modify
|
||||
it under the terms of the GNU General Public License as published by
|
||||
@@ -20,18 +20,37 @@
|
||||
|
||||
#include "dragbutton.h"
|
||||
|
||||
#include <QMouseEvent>
|
||||
|
||||
namespace olive {
|
||||
|
||||
DragButton::DragButton(QWidget *parent) :
|
||||
QPushButton(parent)
|
||||
{
|
||||
setCursor(Qt::OpenHandCursor);
|
||||
dragging_ = false;
|
||||
}
|
||||
|
||||
void DragButton::mousePressEvent(QMouseEvent *event) {
|
||||
void DragButton::mousePressEvent(QMouseEvent *event)
|
||||
{
|
||||
QPushButton::mousePressEvent(event);
|
||||
}
|
||||
|
||||
emit MousePressed();
|
||||
void DragButton::mouseMoveEvent(QMouseEvent *event)
|
||||
{
|
||||
QPushButton::mouseMoveEvent(event);
|
||||
|
||||
if (event->buttons() && !dragging_) {
|
||||
emit DragStarted();
|
||||
dragging_ = true;
|
||||
}
|
||||
}
|
||||
|
||||
void DragButton::mouseReleaseEvent(QMouseEvent *event)
|
||||
{
|
||||
QPushButton::mouseReleaseEvent(event);
|
||||
|
||||
dragging_ = false;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
/***
|
||||
|
||||
Olive - Non-Linear Video Editor
|
||||
Copyright (C) 2022 Olive Team
|
||||
Copyright (C) 2023 Olive Studios LLC
|
||||
|
||||
This program is free software: you can redistribute it and/or modify
|
||||
it under the terms of the GNU General Public License as published by
|
||||
@@ -34,11 +34,18 @@ public:
|
||||
DragButton(QWidget* parent = nullptr);
|
||||
|
||||
signals:
|
||||
void MousePressed();
|
||||
void DragStarted();
|
||||
|
||||
protected:
|
||||
virtual void mousePressEvent(QMouseEvent* event) override;
|
||||
|
||||
virtual void mouseMoveEvent(QMouseEvent* event) override;
|
||||
|
||||
virtual void mouseReleaseEvent(QMouseEvent* event) override;
|
||||
|
||||
private:
|
||||
bool dragging_;
|
||||
|
||||
};
|
||||
|
||||
}
|
||||
|
||||
@@ -127,11 +127,11 @@ PlaybackControls::PlaybackControls(QWidget *parent) :
|
||||
av_btn_layout->setContentsMargins(0, 0, 0, 0);
|
||||
video_drag_btn_ = new DragButton();
|
||||
connect(video_drag_btn_, &QPushButton::clicked, this, &PlaybackControls::VideoClicked);
|
||||
connect(video_drag_btn_, &DragButton::MousePressed, this, &PlaybackControls::VideoPressed);
|
||||
connect(video_drag_btn_, &DragButton::DragStarted, this, &PlaybackControls::VideoDragged);
|
||||
av_btn_layout->addWidget(video_drag_btn_);
|
||||
audio_drag_btn_ = new DragButton();
|
||||
connect(audio_drag_btn_, &QPushButton::clicked, this, &PlaybackControls::AudioClicked);
|
||||
connect(audio_drag_btn_, &DragButton::MousePressed, this, &PlaybackControls::AudioPressed);
|
||||
connect(audio_drag_btn_, &DragButton::DragStarted, this, &PlaybackControls::AudioDragged);
|
||||
av_btn_layout->addWidget(audio_drag_btn_);
|
||||
lower_control_layout->addWidget(av_btn_widget);
|
||||
|
||||
|
||||
@@ -112,9 +112,9 @@ signals:
|
||||
|
||||
void VideoClicked();
|
||||
|
||||
void AudioPressed();
|
||||
void AudioDragged();
|
||||
|
||||
void VideoPressed();
|
||||
void VideoDragged();
|
||||
|
||||
void TimeChanged(const rational& t);
|
||||
|
||||
|
||||
@@ -36,8 +36,10 @@ FootageViewerWidget::FootageViewerWidget(QWidget *parent) :
|
||||
connect(display_widget(), &ViewerDisplayWidget::DragStarted, this, &FootageViewerWidget::StartFootageDrag);
|
||||
|
||||
controls_->SetAudioVideoDragButtonsVisible(true);
|
||||
connect(controls_, &PlaybackControls::VideoPressed, this, &FootageViewerWidget::StartVideoDrag);
|
||||
connect(controls_, &PlaybackControls::AudioPressed, this, &FootageViewerWidget::StartAudioDrag);
|
||||
connect(controls_, &PlaybackControls::VideoClicked, this, &FootageViewerWidget::VideoButtonClicked);
|
||||
connect(controls_, &PlaybackControls::AudioClicked, this, &FootageViewerWidget::AudioButtonClicked);
|
||||
connect(controls_, &PlaybackControls::VideoDragged, this, &FootageViewerWidget::StartVideoDrag);
|
||||
connect(controls_, &PlaybackControls::AudioDragged, this, &FootageViewerWidget::StartAudioDrag);
|
||||
|
||||
override_workarea_ = new TimelineWorkArea(this);
|
||||
}
|
||||
@@ -108,4 +110,14 @@ void FootageViewerWidget::StartAudioDrag()
|
||||
StartFootageDragInternal(false, true);
|
||||
}
|
||||
|
||||
void FootageViewerWidget::VideoButtonClicked()
|
||||
{
|
||||
this->SetWaveformMode(kWFAutomatic);
|
||||
}
|
||||
|
||||
void FootageViewerWidget::AudioButtonClicked()
|
||||
{
|
||||
this->SetWaveformMode(kWFWaveformOnly);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@@ -47,6 +47,10 @@ private slots:
|
||||
|
||||
void StartAudioDrag();
|
||||
|
||||
void VideoButtonClicked();
|
||||
|
||||
void AudioButtonClicked();
|
||||
|
||||
};
|
||||
|
||||
}
|
||||
|
||||
@@ -218,6 +218,8 @@ protected:
|
||||
|
||||
RenderTicketPtr GetSingleFrame(const rational &t, bool dry = false);
|
||||
|
||||
void SetWaveformMode(WaveformMode wf);
|
||||
|
||||
private:
|
||||
int64_t GetTimestamp() const
|
||||
{
|
||||
@@ -270,8 +272,6 @@ private:
|
||||
|
||||
void CloseAudioProcessor();
|
||||
|
||||
void SetWaveformMode(WaveformMode wf);
|
||||
|
||||
void DetectMulticamNode(const rational &time);
|
||||
|
||||
bool IsVideoVisible() const;
|
||||
|
||||
Reference in New Issue
Block a user