Skip to content

Commit 3438da2

Browse files
committed
Resolve review comments
Remove extra button and put copy options in a menu
1 parent a788aef commit 3438da2

File tree

12 files changed

+56
-36
lines changed

12 files changed

+56
-36
lines changed

icons/dark/32x32/edit-select.png

-458 Bytes
Binary file not shown.

icons/light/32x32/edit-select.png

-206 Bytes
Binary file not shown.
-991 Bytes
Binary file not shown.

icons/resources.qrc

Lines changed: 0 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -227,12 +227,10 @@
227227
<file>oxygen/32x32/actions/edit-copy.png</file>
228228
<file>oxygen/32x32/actions/edit-cut.png</file>
229229
<file>oxygen/32x32/actions/edit-paste.png</file>
230-
<file>oxygen/32x32/actions/edit-select.png</file>
231230
<file>oxygen/32x32/actions/edit-select-all.png</file>
232231
<file>light/32x32/edit-copy.png</file>
233232
<file>light/32x32/edit-cut.png</file>
234233
<file>light/32x32/edit-paste.png</file>
235-
<file>light/32x32/edit-select.png</file>
236234
<file>light/32x32/edit-select-all.png</file>
237235
<file>oxygen/32x32/actions/format-indent-less.png</file>
238236
<file>oxygen/32x32/actions/format-indent-more.png</file>
@@ -269,7 +267,6 @@
269267
<file>dark/32x32/edit-copy.png</file>
270268
<file>dark/32x32/edit-cut.png</file>
271269
<file>dark/32x32/edit-paste.png</file>
272-
<file>dark/32x32/edit-select.png</file>
273270
<file>dark/32x32/edit-select-all.png</file>
274271
<file>dark/32x32/format-indent-less.png</file>
275272
<file>dark/32x32/format-indent-more.png</file>

src/docks/filtersdock.cpp

Lines changed: 26 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,7 @@
2121
#include <QtWidgets/QScrollArea>
2222
#include <QQmlEngine>
2323
#include <QDir>
24+
#include <QMenu>
2425
#include <QUrl>
2526
#include <QQmlContext>
2627
#include <QAction>
@@ -148,6 +149,15 @@ void FiltersDock::openFilterMenu() const
148149
QMetaObject::invokeMethod(m_qview.rootObject(), "openFilterMenu");
149150
}
150151

152+
void FiltersDock::showCopyFilterMenu()
153+
{
154+
QMenu menu;
155+
menu.addAction(Actions["filtersCopyCurrentFilterAction"]);
156+
menu.addAction(Actions["filtersCopyFiltersAction"]);
157+
menu.addAction(Actions["filtersCopyAllFilterAction"]);
158+
menu.exec(QCursor::pos());
159+
}
160+
151161
void FiltersDock::onServiceInChanged(int delta, Mlt::Service *service)
152162
{
153163
if (delta && service && m_producer.producer().is_valid()
@@ -183,6 +193,8 @@ void FiltersDock::load()
183193

184194
QObject::connect(m_qview.rootObject(), SIGNAL(currentFilterRequested(int)),
185195
SIGNAL(currentFilterRequested(int)));
196+
QObject::connect(m_qview.rootObject(), SIGNAL(copyFilterRequested()),
197+
SLOT(showCopyFilterMenu()));
186198
}
187199

188200
void FiltersDock::setupActions()
@@ -217,28 +229,39 @@ void FiltersDock::setupActions()
217229
addAction(action);
218230
Actions.add("filtersRemoveFilterAction", action, windowTitle());
219231

220-
action = new QAction(tr("Copy Filters"), this);
232+
action = new QAction(tr("Copy Enabled Filters"), this);
221233
action->setToolTip(tr("Copy checked filters to the clipboard"));
222234
icon = QIcon::fromTheme("edit-copy",
223235
QIcon(":/icons/oxygen/32x32/actions/edit-copy.png"));
224236
action->setIcon(icon);
225237
connect(action, &QAction::triggered, this, [ = ]() {
226-
QmlApplication::singleton().copyFilters();
238+
QmlApplication::singleton().copyEnabledFilters();
227239
});
228240
addAction(action);
229241
Actions.add("filtersCopyFiltersAction", action, windowTitle());
230242

231243
action = new QAction(tr("Copy Current Filter"), this);
232244
action->setToolTip(tr("Copy current filter to the clipboard"));
233245
icon = QIcon::fromTheme("edit-copy",
234-
QIcon(":/icons/oxygen/32x32/actions/edit-select.png"));
246+
QIcon(":/icons/oxygen/32x32/actions/edit-copy.png"));
235247
action->setIcon(icon);
236248
connect(action, &QAction::triggered, this, [ = ]() {
237249
QmlApplication::singleton().copyCurrentFilter();
238250
});
239251
addAction(action);
240252
Actions.add("filtersCopyCurrentFilterAction", action, windowTitle());
241253

254+
action = new QAction(tr("Copy All Filters"), this);
255+
action->setToolTip(tr("Copy all filters to the clipboard"));
256+
icon = QIcon::fromTheme("edit-copy",
257+
QIcon(":/icons/oxygen/32x32/actions/edit-copy.png"));
258+
action->setIcon(icon);
259+
connect(action, &QAction::triggered, this, [ = ]() {
260+
QmlApplication::singleton().copyAllFilters();
261+
});
262+
addAction(action);
263+
Actions.add("filtersCopyAllFilterAction", action, windowTitle());
264+
242265
action = new QAction(tr("Paste Filters"), this);
243266
action->setToolTip(tr("Paste the filters from the clipboard"));
244267
icon = QIcon::fromTheme("edit-paste",

src/docks/filtersdock.h

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -59,6 +59,7 @@ public slots:
5959
void onSeeked(int position);
6060
void onShowFrame(const SharedFrame &frame);
6161
void openFilterMenu() const;
62+
void showCopyFilterMenu();
6263
void onServiceInChanged(int delta, Mlt::Service *service);
6364
void load();
6465

src/mltcontroller.cpp

Lines changed: 5 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1117,7 +1117,7 @@ static int indexOfFirstNonGpu(Producer &toProducer)
11171117
}
11181118

11191119
void Controller::copyFilters(Producer &fromProducer, Producer &toProducer, bool fromClipboard,
1120-
bool includeDisabled, int filterIndex)
1120+
int filterIndex)
11211121
{
11221122
int in = fromProducer.get(kFilterInProperty) ? fromProducer.get_int(kFilterInProperty) :
11231123
fromProducer.get_in();
@@ -1136,11 +1136,11 @@ void Controller::copyFilters(Producer &fromProducer, Producer &toProducer, bool
11361136
&& fromFilter->get("mlt_service")) {
11371137

11381138
filterCount++;
1139-
if (filterIndex != -1 && filterIndex != (filterCount - 1)) {
1139+
if (filterIndex >= 0 && filterIndex != (filterCount - 1)) {
11401140
continue;
11411141
}
11421142

1143-
if (!includeDisabled && fromFilter->get_int("disable")) {
1143+
if (filterIndex == FILTER_INDEX_ENABLED && fromFilter->get_int("disable")) {
11441144
continue;
11451145
}
11461146

@@ -1205,13 +1205,12 @@ void Controller::copyFilters(Producer &fromProducer, Producer &toProducer, bool
12051205

12061206
void Controller::copyFilters(Mlt::Producer *producer, int filterIndex)
12071207
{
1208-
bool includeDisabled = filterIndex >= 0;
12091208
if (producer && producer->is_valid()) {
12101209
initFiltersClipboard();
1211-
copyFilters(*producer, *m_filtersClipboard, false, includeDisabled, filterIndex);
1210+
copyFilters(*producer, *m_filtersClipboard, false, filterIndex);
12121211
} else if (m_producer && m_producer->is_valid()) {
12131212
initFiltersClipboard();
1214-
copyFilters(*m_producer, *m_filtersClipboard, false, includeDisabled, filterIndex);
1213+
copyFilters(*m_producer, *m_filtersClipboard, false, filterIndex);
12151214
}
12161215
}
12171216

src/mltcontroller.h

Lines changed: 7 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -69,6 +69,11 @@ class Controller
6969
virtual int reconfigure(bool isMulti) = 0;
7070

7171
public:
72+
enum {
73+
FILTER_INDEX_ALL = -1,
74+
FILTER_INDEX_ENABLED = -2,
75+
};
76+
7277
static Controller &singleton(QObject *parent = nullptr);
7378
virtual ~Controller();
7479
static void destroy();
@@ -130,9 +135,8 @@ class Controller
130135
void setUuid(Mlt::Properties &properties, QUuid uid) const;
131136
QUuid ensureHasUuid(Mlt::Properties &properties) const;
132137
static void copyFilters(Mlt::Producer &fromProducer, Mlt::Producer &toProducer,
133-
bool fromClipboard = false, bool includeDisabled = true,
134-
int filterIndex = -1);
135-
void copyFilters(Mlt::Producer *producer = nullptr, int filterIndex = -1);
138+
bool fromClipboard = false, int filterIndex = FILTER_INDEX_ENABLED);
139+
void copyFilters(Mlt::Producer *producer = nullptr, int filterIndex = FILTER_INDEX_ENABLED);
136140
void pasteFilters(Mlt::Producer *producer = nullptr, Mlt::Producer *fromProducer = nullptr);
137141
static void adjustFilters(Mlt::Producer &producer, int startIndex = 0);
138142
static void adjustFilter(Mlt::Filter *filter, int in, int out, int inDelta, int outDelta,

src/qml/views/filter/CopyFiltersDialog.qml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -24,7 +24,7 @@ Window {
2424
id: nameDialog
2525

2626
function acceptName() {
27-
application.copyFilters();
27+
application.copyEnabledFilters();
2828
let name = nameField.text.trim();
2929
if (name.length) {
3030
metadatamodel.saveFilterSet(name);

src/qml/views/filter/filterview.qml

Lines changed: 3 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -26,6 +26,7 @@ Rectangle {
2626
property int selectedIndex: Shotcut.Filter.NoCurrentFilter
2727

2828
signal currentFilterRequested(int attachedIndex)
29+
signal copyFilterRequested()
2930

3031
function clearCurrentFilter() {
3132
if (filterConfig.item) {
@@ -225,25 +226,10 @@ Rectangle {
225226
icon.source: 'qrc:///icons/oxygen/32x32/actions/edit-copy.png'
226227
enabled: selectedIndex > Shotcut.Filter.NoCurrentFilter
227228
opacity: enabled ? 1 : 0.5
228-
onClicked: application.copyFilters()
229+
onClicked: root.copyFilterRequested()
229230

230231
Shotcut.HoverTip {
231-
text: qsTr('Copy checked filters')
232-
}
233-
}
234-
235-
Shotcut.Button {
236-
id: copySelectedButton
237-
238-
implicitWidth: height
239-
icon.name: 'edit-select'
240-
icon.source: 'qrc:///icons/oxygen/32x32/actions/edit-select.png'
241-
enabled: selectedIndex > Shotcut.Filter.NoCurrentFilter
242-
opacity: enabled ? 1 : 0.5
243-
onClicked: application.copyCurrentFilter()
244-
245-
Shotcut.HoverTip {
246-
text: qsTr('Copy current filter')
232+
text: qsTr('Copy filters')
247233
}
248234
}
249235

0 commit comments

Comments
 (0)