proxy: add dedicated Proxy dialog and preferences fields

- New ProxyDialog (Tools > Proxy Settings..., plus 'Proxy Settings...'
  in the project panel and timeline Proxy submenus) unifying global
  proxy settings, per-footage custom presets, generation and deletion
  in one place instead of three scattered entry points; this also fixes
  the Tools menu action opening the wrong preferences tab
- Preferences Disk tab gains an 'include audio in proxies' checkbox and
  an ffmpeg executable path field (blank = auto-detect)
- Add ProxyDialog smoke tests
This commit is contained in:
2026-07-16 22:53:13 +08:00
parent 6aaf37e2e5
commit ddca6a5e01
13 changed files with 592 additions and 2 deletions
@@ -33,6 +33,7 @@
#include "common/define.h"
#include "core.h"
#include "dialog/footageproperties/footageproperties.h"
#include "dialog/proxy/proxydialog.h"
#include "dialog/sequence/sequence.h"
#include "projectexplorerundo.h"
#include "codec/proxymanager.h"
@@ -470,6 +471,11 @@ void ProjectExplorer::ShowContextMenu()
}));
connect(delete_proxy, &QAction::triggered, this,
&ProjectExplorer::DeleteProxiesForSelectedFootage);
QAction *proxy_settings =
proxy_menu->addAction(tr("Proxy Settings..."));
connect(proxy_settings, &QAction::triggered, this,
&ProjectExplorer::ShowProxyDialogForSelectedFootage);
}
Q_UNUSED(all_items_are_footage_or_sequence)
@@ -690,6 +696,12 @@ void ProjectExplorer::DeleteProxiesForSelectedFootage()
}
}
void ProjectExplorer::ShowProxyDialogForSelectedFootage()
{
ProxyDialog d(this, GetSelectedProxyFootage(context_menu_items_));
d.exec();
}
void ProjectExplorer::ViewSelectionChanged()
{
QItemSelectionModel *model = static_cast<QItemSelectionModel *>(sender());