@@ -26,6 +26,7 @@
|
||||
#include <QMessageBox>
|
||||
|
||||
#include "config/config.h"
|
||||
#include "core.h"
|
||||
|
||||
namespace olive {
|
||||
|
||||
@@ -53,7 +54,7 @@ DiskCacheDialog::DiskCacheDialog(DiskCacheFolder *folder, QWidget* parent) :
|
||||
row++;
|
||||
|
||||
clear_cache_btn_ = new QPushButton(tr("Clear Disk Cache"));
|
||||
connect(clear_cache_btn_, &QPushButton::clicked, this, &DiskCacheDialog::ClearDiskCache);
|
||||
connect(clear_cache_btn_, &QPushButton::clicked, this, static_cast<void(DiskCacheDialog::*)()>(&DiskCacheDialog::ClearDiskCache));
|
||||
layout->addWidget(clear_cache_btn_, row, 1);
|
||||
|
||||
row++;
|
||||
@@ -86,20 +87,25 @@ void DiskCacheDialog::accept()
|
||||
|
||||
void DiskCacheDialog::ClearDiskCache()
|
||||
{
|
||||
if (QMessageBox::question(this,
|
||||
tr("Clear Disk Cache"),
|
||||
tr("Are you sure you want to clear the disk cache in '%1'?").arg(Config::Current()["DiskCachePath"].toString()),
|
||||
QMessageBox::Yes | QMessageBox::No) == QMessageBox::Yes) {
|
||||
clear_cache_btn_->setEnabled(false);
|
||||
ClearDiskCache(folder_->GetPath(), this, clear_cache_btn_);
|
||||
}
|
||||
|
||||
if (DiskManager::instance()->ClearDiskCache(folder_->GetPath())) {
|
||||
clear_cache_btn_->setText(tr("Disk Cache Cleared"));
|
||||
void DiskCacheDialog::ClearDiskCache(const QString &path, QWidget *parent, QPushButton *clear_btn)
|
||||
{
|
||||
if (QMessageBox::question(parent,
|
||||
tr("Clear Disk Cache"),
|
||||
tr("Are you sure you want to clear the disk cache in '%1'?").arg(path),
|
||||
QMessageBox::Yes | QMessageBox::No) == QMessageBox::Yes) {
|
||||
if (clear_btn) clear_btn->setEnabled(false);
|
||||
|
||||
if (DiskManager::instance()->ClearDiskCache(path)) {
|
||||
if (clear_btn) clear_btn->setText(tr("Disk Cache Cleared"));
|
||||
} else {
|
||||
QMessageBox::information(this,
|
||||
QMessageBox::information(parent,
|
||||
tr("Clear Disk Cache"),
|
||||
tr("Disk cache failed to fully clear. You may have to delete the cache files manually."),
|
||||
QMessageBox::Ok);
|
||||
clear_cache_btn_->setText(tr("Disk Cache Partially Cleared"));
|
||||
if (clear_btn) clear_btn->setText(tr("Disk Cache Partially Cleared"));
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -36,6 +36,8 @@ class DiskCacheDialog : public QDialog
|
||||
public:
|
||||
DiskCacheDialog(DiskCacheFolder* folder, QWidget* parent = nullptr);
|
||||
|
||||
static void ClearDiskCache(const QString &path, QWidget *parent, QPushButton *clear_btn = nullptr);
|
||||
|
||||
public slots:
|
||||
virtual void accept() override;
|
||||
|
||||
|
||||
@@ -28,6 +28,7 @@
|
||||
#include "config/config.h"
|
||||
#include "core.h"
|
||||
#include "dialog/actionsearch/actionsearch.h"
|
||||
#include "dialog/diskcache/diskcachedialog.h"
|
||||
#include "dialog/task/task.h"
|
||||
#include "panel/panelmanager.h"
|
||||
#include "tool/tool.h"
|
||||
@@ -171,6 +172,10 @@ MainMenu::MainMenu(MainWindow *parent) :
|
||||
sequence_cache_item_ = sequence_menu_->AddItem("seqcache", this, &MainMenu::SequenceCacheTriggered);
|
||||
sequence_cache_in_to_out_item_ = sequence_menu_->AddItem("seqcacheinout", this, &MainMenu::SequenceCacheInOutTriggered);
|
||||
|
||||
sequence_menu_->addSeparator();
|
||||
|
||||
sequence_disk_cache_clear_item_ = sequence_menu_->AddItem("seqcacheclear", this, &MainMenu::SequenceCacheClearTriggered);
|
||||
|
||||
//
|
||||
// WINDOW MENU
|
||||
//
|
||||
@@ -614,6 +619,14 @@ void MainMenu::SequenceCacheInOutTriggered()
|
||||
Core::instance()->CacheActiveSequence(true);
|
||||
}
|
||||
|
||||
void MainMenu::SequenceCacheClearTriggered()
|
||||
{
|
||||
DiskCacheDialog::ClearDiskCache(
|
||||
Core::instance()->GetActiveProject()->cache_path(),
|
||||
Core::instance()->main_window()
|
||||
);
|
||||
}
|
||||
|
||||
void MainMenu::HelpFeedbackTriggered()
|
||||
{
|
||||
QDesktopServices::openUrl(QStringLiteral("https://github.com/olive-editor/olive/issues"));
|
||||
@@ -686,6 +699,7 @@ void MainMenu::Retranslate()
|
||||
sequence_menu_->setTitle(tr("&Sequence"));
|
||||
sequence_cache_item_->setText(tr("Cache Entire Sequence"));
|
||||
sequence_cache_in_to_out_item_->setText(tr("Cache Sequence In/Out"));
|
||||
sequence_disk_cache_clear_item_->setText(tr("Clear Disk Cache"));
|
||||
|
||||
// Window menu
|
||||
window_menu_->setTitle(tr("&Window"));
|
||||
|
||||
@@ -179,6 +179,7 @@ private slots:
|
||||
|
||||
void SequenceCacheTriggered();
|
||||
void SequenceCacheInOutTriggered();
|
||||
void SequenceCacheClearTriggered();
|
||||
|
||||
void HelpFeedbackTriggered();
|
||||
|
||||
@@ -249,6 +250,7 @@ private:
|
||||
Menu* sequence_menu_;
|
||||
QAction* sequence_cache_item_;
|
||||
QAction* sequence_cache_in_to_out_item_;
|
||||
QAction* sequence_disk_cache_clear_item_;
|
||||
|
||||
Menu* window_menu_;
|
||||
QAction* window_menu_separator_;
|
||||
|
||||
Reference in New Issue
Block a user