diff --git a/app/codec/ffmpeg/CMakeLists.txt b/app/codec/ffmpeg/CMakeLists.txt
index a3d7a50d2..436598852 100644
--- a/app/codec/ffmpeg/CMakeLists.txt
+++ b/app/codec/ffmpeg/CMakeLists.txt
@@ -16,7 +16,6 @@
set(OLIVE_SOURCES
${OLIVE_SOURCES}
- codec/ffmpeg/avframeptr.h
codec/ffmpeg/ffmpegdecoder.h
codec/ffmpeg/ffmpegdecoder.cpp
codec/ffmpeg/ffmpegencoder.h
diff --git a/app/codec/ffmpeg/avframeptr.h b/app/codec/ffmpeg/avframeptr.h
deleted file mode 100644
index 5660fd4b2..000000000
--- a/app/codec/ffmpeg/avframeptr.h
+++ /dev/null
@@ -1,60 +0,0 @@
-/***
-
- Olive - Non-Linear Video Editor
- Copyright (C) 2020 Olive Team
-
- 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
- the Free Software Foundation, either version 3 of the License, or
- (at your option) any later version.
-
- This program is distributed in the hope that it will be useful,
- but WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- GNU General Public License for more details.
-
- You should have received a copy of the GNU General Public License
- along with this program. If not, see .
-
-***/
-
-#ifndef AVFRAMEPTR_H
-#define AVFRAMEPTR_H
-
-extern "C" {
-#include
-}
-
-#include
-#include
-
-#include "common/define.h"
-
-namespace olive {
-
-class AVFrameWrapper {
-public:
- AVFrameWrapper() {
- frame_ = av_frame_alloc();
- }
-
- virtual ~AVFrameWrapper() {
- av_frame_free(&frame_);
- }
-
- DISABLE_COPY_MOVE(AVFrameWrapper)
-
- inline AVFrame* frame() const {
- return frame_;
- }
-
-private:
- AVFrame* frame_;
-
-};
-
-using AVFramePtr = std::shared_ptr;
-
-}
-
-#endif // AVFRAMEPTR_H
diff --git a/app/codec/ffmpeg/ffmpegdecoder.h b/app/codec/ffmpeg/ffmpegdecoder.h
index 2634f06f4..6bbf80b1e 100644
--- a/app/codec/ffmpeg/ffmpegdecoder.h
+++ b/app/codec/ffmpeg/ffmpegdecoder.h
@@ -32,7 +32,6 @@ extern "C" {
#include
#include
-#include "avframeptr.h"
#include "codec/decoder.h"
#include "codec/waveoutput.h"
#include "ffmpegframepool.h"
diff --git a/app/core.cpp b/app/core.cpp
index c2b3b7860..d9a3eff95 100644
--- a/app/core.cpp
+++ b/app/core.cpp
@@ -105,7 +105,6 @@ void Core::DeclareTypesForQt()
qRegisterMetaType();
qRegisterMetaType();
qRegisterMetaType();
- qRegisterMetaType();
qRegisterMetaType();
qRegisterMetaType();
qRegisterMetaType();
@@ -263,14 +262,14 @@ void Core::ClearOpenRecentList()
void Core::CreateNewProject()
{
// If we already have an empty/new project, switch to it
- foreach (ProjectPtr already_open, open_projects_) {
+ foreach (Project* already_open, open_projects_) {
if (already_open->is_new()) {
AddOpenProject(already_open);
return;
}
}
- AddOpenProject(std::make_shared());
+ AddOpenProject(new Project());
}
const bool &Core::snapping() const
@@ -283,17 +282,6 @@ const QStringList &Core::GetRecentProjects() const
return recent_projects_;
}
-ProjectPtr Core::GetSharedPtrFromProject(Project *project) const
-{
- foreach (ProjectPtr p, open_projects_) {
- if (p.get() == project) {
- return p;
- }
- }
-
- return nullptr;
-}
-
void Core::SetTool(const Tool::Item &tool)
{
tool_ = tool;
@@ -348,10 +336,10 @@ void Core::DialogPreferencesShow()
void Core::DialogProjectPropertiesShow()
{
- ProjectPtr proj = GetActiveProject();
+ Project* proj = GetActiveProject();
if (proj) {
- ProjectPropertiesDialog ppd(proj.get(), main_window_);
+ ProjectPropertiesDialog ppd(proj, main_window_);
ppd.exec();
} else {
QMessageBox::critical(main_window_,
@@ -407,7 +395,7 @@ void Core::CreateNewFolder()
void Core::CreateNewSequence()
{
- ProjectPtr active_project = GetActiveProject();
+ Project* active_project = GetActiveProject();
if (!active_project) {
QMessageBox::critical(main_window_, tr("Failed to create new sequence"), tr("Failed to find active project"));
@@ -415,7 +403,7 @@ void Core::CreateNewSequence()
}
// Create new sequence
- SequencePtr new_sequence = CreateNewSequenceForProject(active_project.get());
+ SequencePtr new_sequence = CreateNewSequenceForProject(active_project);
// Set all defaults for the sequence
new_sequence->set_default_parameters();
@@ -440,13 +428,13 @@ void Core::CreateNewSequence()
}
}
-void Core::AddOpenProject(ProjectPtr p)
+void Core::AddOpenProject(Project* p)
{
// Ensure project is not open at the moment
- foreach (ProjectPtr already_open, open_projects_) {
+ foreach (Project* already_open, open_projects_) {
if (already_open == p) {
// Signal UI to switch to this project
- emit ProjectOpened(p.get());
+ emit ProjectOpened(p);
return;
}
}
@@ -456,24 +444,26 @@ void Core::AddOpenProject(ProjectPtr p)
CloseProject(open_projects_.last(), false);
}
- connect(p.get(), &Project::ModifiedChanged, this, &Core::ProjectWasModified);
+ connect(p, &Project::ModifiedChanged, this, &Core::ProjectWasModified);
open_projects_.append(p);
PushRecentlyOpenedProject(p->filename());
- emit ProjectOpened(p.get());
+ emit ProjectOpened(p);
}
void Core::AddOpenProjectFromTask(Task *task)
{
ProjectLoadBaseTask* load_task = static_cast(task);
- ProjectPtr project = load_task->GetLoadedProject();
+ Project* project = load_task->GetLoadedProject();
MainWindowLayoutInfo layout = load_task->GetLoadedLayout();
if (ValidateFootageInLoadedProject(project, load_task->GetFilenameProjectWasSavedAs())) {
AddOpenProject(project);
main_window_->LoadLayout(layout);
+ } else {
+ delete project;
}
}
@@ -516,7 +506,7 @@ void Core::ProjectWasModified(bool e)
} else {
// If we just set this project to "not modified", see if all projects are not modified in which case we can hide
// the modified flag
- foreach (ProjectPtr open, open_projects_) {
+ foreach (Project* open, open_projects_) {
if (open->is_modified()) {
main_window_->setWindowModified(true);
return;
@@ -546,7 +536,7 @@ bool Core::StartHeadlessExport()
CLITaskDialog task_dialog(&plm);
if (task_dialog.Run()) {
- ProjectPtr p = plm.GetLoadedProject();
+ std::unique_ptr p = std::unique_ptr(plm.GetLoadedProject());
QList items = p->get_items_of_type(Item::kSequence);
// Check if this project contains sequences
@@ -696,7 +686,7 @@ void Core::StartGUI(bool full_screen)
}
}
-void Core::SaveProjectInternal(ProjectPtr project)
+void Core::SaveProjectInternal(Project* project)
{
// Create save manager
Task* psm;
@@ -754,7 +744,7 @@ ViewerOutput *Core::GetSequenceToExport()
void Core::SaveAutorecovery()
{
- foreach (ProjectPtr p, open_projects_) {
+ foreach (Project* p, open_projects_) {
if (!p->has_autorecovery_been_saved()) {
// FIXME: SAVE AN AUTORECOVERY PROJECT
p->set_autorecovery_saved(true);
@@ -764,19 +754,19 @@ void Core::SaveAutorecovery()
void Core::ProjectSaveSucceeded(Task* task)
{
- ProjectPtr p = static_cast(task)->GetProject();
+ Project* p = static_cast(task)->GetProject();
PushRecentlyOpenedProject(p->filename());
p->set_modified(false);
}
-ProjectPtr Core::GetActiveProject() const
+Project* Core::GetActiveProject() const
{
ProjectPanel* active_project_panel = PanelManager::instance()->MostRecentlyFocused();
if (active_project_panel && active_project_panel->project()) {
- return GetSharedPtrFromProject(active_project_panel->project());
+ return active_project_panel->project();
}
return nullptr;
@@ -834,7 +824,7 @@ QString Core::PasteStringFromClipboard()
bool Core::SaveActiveProject()
{
- ProjectPtr active_project = GetActiveProject();
+ Project* active_project = GetActiveProject();
if (active_project) {
return SaveProject(active_project);
@@ -845,7 +835,7 @@ bool Core::SaveActiveProject()
bool Core::SaveActiveProjectAs()
{
- ProjectPtr active_project = GetActiveProject();
+ Project* active_project = GetActiveProject();
if (active_project) {
return SaveProjectAs(active_project);
@@ -856,7 +846,7 @@ bool Core::SaveActiveProjectAs()
bool Core::SaveAllProjects()
{
- foreach (ProjectPtr p, open_projects_) {
+ foreach (Project* p, open_projects_) {
if (!SaveProject(p)) {
return false;
}
@@ -872,10 +862,10 @@ bool Core::CloseActiveProject()
bool Core::CloseAllExceptActiveProject()
{
- ProjectPtr active_proj = GetActiveProject();
- QList copy = open_projects_;
+ Project* active_proj = GetActiveProject();
+ QList copy = open_projects_;
- foreach (ProjectPtr p, copy) {
+ foreach (Project* p, copy) {
if (p != active_proj) {
if (!CloseProject(p, true)) {
return false;
@@ -934,7 +924,7 @@ void Core::SetStartupLocale()
}
}
-bool Core::SaveProject(ProjectPtr p)
+bool Core::SaveProject(Project* p)
{
if (p->filename().isEmpty()) {
return SaveProjectAs(p);
@@ -945,7 +935,7 @@ bool Core::SaveProject(ProjectPtr p)
}
}
-bool Core::SaveProjectAs(ProjectPtr p)
+bool Core::SaveProjectAs(Project* p)
{
QFileDialog fd(main_window_, tr("Save Project As"));
@@ -992,7 +982,7 @@ void Core::PushRecentlyOpenedProject(const QString& s)
void Core::OpenProjectInternal(const QString &filename)
{
// See if this project is open already
- foreach (ProjectPtr p, open_projects_) {
+ foreach (Project* p, open_projects_) {
if (p->filename() == filename) {
// This project is already open
AddOpenProject(p);
@@ -1128,13 +1118,13 @@ void Core::OpenProjectFromRecentList(int index)
}
}
-bool Core::CloseProject(ProjectPtr p, bool auto_open_new)
+bool Core::CloseProject(Project *p, bool auto_open_new)
{
CloseProjectBehavior b = kCloseProjectOnlyOne;
return CloseProject(p, auto_open_new, b);
}
-bool Core::CloseProject(ProjectPtr p, bool auto_open_new, CloseProjectBehavior &confirm_behavior)
+bool Core::CloseProject(Project* p, bool auto_open_new, CloseProjectBehavior &confirm_behavior)
{
for (int i=0;i copy = open_projects_;
+ QList copy = open_projects_;
// See how many projects are modified so we can set "behavior" correctly
// (i.e. whether to show "Yes/No To All" buttons or not)
int modified_count = 0;
- foreach (ProjectPtr p, copy) {
+ foreach (Project* p, copy) {
if (p->is_modified()) {
modified_count++;
}
@@ -1238,7 +1229,7 @@ bool Core::CloseAllProjects(bool auto_open_new)
behavior = kCloseProjectOnlyOne;
}
- foreach (ProjectPtr p, copy) {
+ foreach (Project* p, copy) {
// If this is the only remaining project and the user hasn't chose "yes/no to all", hide those buttons
if (modified_count == 1 && behavior == kCloseProjectAsk) {
behavior = kCloseProjectOnlyOne;
@@ -1288,7 +1279,7 @@ void Core::CacheActiveSequence(bool in_out_only)
}
}
-bool Core::ValidateFootageInLoadedProject(ProjectPtr project, const QString& project_saved_url)
+bool Core::ValidateFootageInLoadedProject(Project* project, const QString& project_saved_url)
{
QList footage_we_couldnt_validate;
diff --git a/app/core.h b/app/core.h
index ed1727541..da6c2d9d2 100644
--- a/app/core.h
+++ b/app/core.h
@@ -197,11 +197,6 @@ public:
*/
const QStringList& GetRecentProjects() const;
- /**
- * @brief Convenience function to retrieve a Project's shared pointer
- */
- ProjectPtr GetSharedPtrFromProject(Project* project) const;
-
/**
* @brief Get the currently active project
*
@@ -212,7 +207,7 @@ public:
*
* The active Project file, or nullptr if the heuristic couldn't find one.
*/
- ProjectPtr GetActiveProject() const;
+ Project* GetActiveProject() const;
ProjectViewModel* GetActiveProjectModel() const;
Folder* GetSelectedFolderInActiveProject() const;
@@ -268,8 +263,8 @@ public:
/**
* @brief Closes a project
*/
- bool CloseProject(ProjectPtr p, bool auto_open_new, CloseProjectBehavior& confirm_behavior);
- bool CloseProject(ProjectPtr p, bool auto_open_new);
+ bool CloseProject(Project* p, bool auto_open_new, CloseProjectBehavior& confirm_behavior);
+ bool CloseProject(Project* p, bool auto_open_new);
/**
* @brief Closes all open projects
@@ -284,13 +279,18 @@ public:
/**
* @brief Check each footage object for whether it still exists or has changed
*/
- bool ValidateFootageInLoadedProject(ProjectPtr project, const QString &project_saved_url);
+ bool ValidateFootageInLoadedProject(Project* project, const QString &project_saved_url);
/**
* @brief Changes the current language
*/
bool SetLanguage(const QString& locale);
+ /**
+ * @brief Saves a specific project
+ */
+ bool SaveProject(Project *p);
+
static const uint kProjectVersion;
public slots:
@@ -454,15 +454,10 @@ private:
*/
void SetStartupLocale();
- /**
- * @brief Saves a specific project
- */
- bool SaveProject(ProjectPtr p);
-
/**
* @brief Performs a "save as" on a specific project
*/
- bool SaveProjectAs(ProjectPtr p);
+ bool SaveProjectAs(Project *p);
/**
* @brief Adds a filename to the top of the recently opened projects list (or moves it if it already exists)
@@ -488,7 +483,7 @@ private:
/**
* @brief Internal function for saving a project to a file
*/
- void SaveProjectInternal(ProjectPtr project);
+ void SaveProjectInternal(Project *project);
/**
* @brief Retrieves the currently most active sequence for exporting
@@ -503,7 +498,7 @@ private:
/**
* @brief List of currently open projects
*/
- QList open_projects_;
+ QList open_projects_;
/**
* @brief Currently active tool
@@ -563,7 +558,7 @@ private slots:
/**
* @brief Adds a project to the "open projects" list
*/
- void AddOpenProject(olive::ProjectPtr p);
+ void AddOpenProject(olive::Project* p);
void AddOpenProjectFromTask(Task* task);
diff --git a/app/dialog/progress/progress.cpp b/app/dialog/progress/progress.cpp
index 3024dffca..3b46c8926 100644
--- a/app/dialog/progress/progress.cpp
+++ b/app/dialog/progress/progress.cpp
@@ -30,7 +30,8 @@
namespace olive {
ProgressDialog::ProgressDialog(const QString& message, const QString& title, QWidget *parent) :
- QDialog(parent)
+ QDialog(parent),
+ show_progress_(true)
{
if (!title.isEmpty()) {
setWindowTitle(title);
@@ -56,7 +57,19 @@ ProgressDialog::ProgressDialog(const QString& message, const QString& title, QWi
cancel_layout->addStretch();
QPushButton* cancel_btn = new QPushButton(tr("Cancel"));
- connect(cancel_btn, &QPushButton::clicked, this, &ProgressDialog::Cancelled);
+
+ // Signal that derivatives can connect to
+ connect(cancel_btn, &QPushButton::clicked, this, &ProgressDialog::Cancelled, Qt::DirectConnection);
+
+ // Stop updating the elapsed/remaining timers
+ connect(cancel_btn, &QPushButton::clicked, elapsed_timer_lbl_, &ElapsedCounterWidget::Stop);
+
+ // Disable the button so that users know they don't need to keep clicking it
+ connect(cancel_btn, &QPushButton::clicked, this, &ProgressDialog::DisableSenderWidget);
+
+ // Prevent the progress bar from continuing to move
+ connect(cancel_btn, &QPushButton::clicked, this, &ProgressDialog::DisableProgressWidgets);
+
cancel_layout->addWidget(cancel_btn);
cancel_layout->addStretch();
@@ -80,6 +93,10 @@ void ProgressDialog::closeEvent(QCloseEvent *e)
void ProgressDialog::SetProgress(double value)
{
+ if (!show_progress_) {
+ return;
+ }
+
int percent = qRound(100.0 * value);
bar_->setValue(percent);
@@ -101,4 +118,14 @@ void ProgressDialog::ShowErrorMessage(const QString &title, const QString &messa
b.exec();
}
+void ProgressDialog::DisableSenderWidget()
+{
+ static_cast(sender())->setEnabled(false);
+}
+
+void ProgressDialog::DisableProgressWidgets()
+{
+ show_progress_ = false;
+}
+
}
diff --git a/app/dialog/progress/progress.h b/app/dialog/progress/progress.h
index 75103a900..38e2854b1 100644
--- a/app/dialog/progress/progress.h
+++ b/app/dialog/progress/progress.h
@@ -54,6 +54,13 @@ private:
ElapsedCounterWidget* elapsed_timer_lbl_;
+ bool show_progress_;
+
+private slots:
+ void DisableSenderWidget();
+
+ void DisableProgressWidgets();
+
};
}
diff --git a/app/panel/project/project.cpp b/app/panel/project/project.cpp
index 7fbd9560f..5a8318e93 100644
--- a/app/panel/project/project.cpp
+++ b/app/panel/project/project.cpp
@@ -51,9 +51,7 @@ ProjectPanel::ProjectPanel(QWidget *parent) :
// Make toolbar connections
connect(toolbar, &ProjectToolbar::NewClicked, this, &ProjectPanel::ShowNewMenu);
connect(toolbar, &ProjectToolbar::OpenClicked, Core::instance(), &Core::OpenProject);
- connect(toolbar, &ProjectToolbar::SaveClicked, Core::instance(), &Core::SaveActiveProject);
- connect(toolbar, &ProjectToolbar::UndoClicked, Core::instance()->undo_stack(), &QUndoStack::undo);
- connect(toolbar, &ProjectToolbar::RedoClicked, Core::instance()->undo_stack(), &QUndoStack::redo);
+ connect(toolbar, &ProjectToolbar::SaveClicked, this, &ProjectPanel::SaveConnectedProject);
// Set up main explorer object
explorer_ = new ProjectExplorer(this);
@@ -229,6 +227,11 @@ void ProjectPanel::UpdateSubtitle()
}
}
+void ProjectPanel::SaveConnectedProject()
+{
+ Core::instance()->SaveProject(this->project());
+}
+
QList ProjectPanel::GetSelectedFootage() const
{
QList- items = SelectedItems();
diff --git a/app/panel/project/project.h b/app/panel/project/project.h
index 5d15e50ad..c2a25e699 100644
--- a/app/panel/project/project.h
+++ b/app/panel/project/project.h
@@ -78,10 +78,10 @@ private slots:
void UpdateSubtitle();
+ void SaveConnectedProject();
+
};
}
-Q_DECLARE_METATYPE(olive::ProjectPtr)
-
#endif // PROJECT_PANEL_H
diff --git a/app/project/project.h b/app/project/project.h
index c86bf6e64..d6d801ca5 100644
--- a/app/project/project.h
+++ b/app/project/project.h
@@ -103,8 +103,6 @@ private slots:
};
-using ProjectPtr = std::shared_ptr;
-
}
#endif // PROJECT_H
diff --git a/app/task/project/load/load.cpp b/app/task/project/load/load.cpp
index 6a17075b5..c83cb1c1a 100644
--- a/app/task/project/load/load.cpp
+++ b/app/task/project/load/load.cpp
@@ -60,7 +60,7 @@ bool ProjectLoadTask::Run()
} else if (reader.name() == QStringLiteral("url")) {
project_saved_url_ = reader.readElementText();
} else if (reader.name() == QStringLiteral("project")) {
- project_ = std::make_shared();
+ project_ = new Project();
project_->set_filename(GetFilename());
diff --git a/app/task/project/load/loadbasetask.h b/app/task/project/load/loadbasetask.h
index a7dc831bf..0f2c6b0a4 100644
--- a/app/task/project/load/loadbasetask.h
+++ b/app/task/project/load/loadbasetask.h
@@ -32,7 +32,7 @@ class ProjectLoadBaseTask : public Task
public:
ProjectLoadBaseTask(const QString& filename);
- ProjectPtr GetLoadedProject() const
+ Project* GetLoadedProject() const
{
return project_;
}
@@ -58,7 +58,7 @@ public:
}
protected:
- ProjectPtr project_;
+ Project* project_;
MainWindowLayoutInfo layout_info_;
diff --git a/app/task/project/loadotio/loadotio.cpp b/app/task/project/loadotio/loadotio.cpp
index c8928ff5e..9c557df0f 100644
--- a/app/task/project/loadotio/loadotio.cpp
+++ b/app/task/project/loadotio/loadotio.cpp
@@ -53,7 +53,7 @@ bool LoadOTIOTask::Run()
return false;
}
- project_ = std::make_shared();
+ project_ = new Project();
project_->set_filename(GetFilename());
std::vector timelines;
@@ -165,7 +165,7 @@ bool LoadOTIOTask::Run()
if (imported_footage.contains(footage_url)) {
probed_item = imported_footage.value(footage_url);
} else {
- probed_item = Decoder::Probe(project_.get(), footage_url, &IsCancelled());
+ probed_item = Decoder::Probe(project_, footage_url, &IsCancelled());
imported_footage.insert(footage_url, probed_item);
project_->root()->add_child(probed_item);
}
diff --git a/app/task/project/save/save.cpp b/app/task/project/save/save.cpp
index b233693e4..541a75718 100644
--- a/app/task/project/save/save.cpp
+++ b/app/task/project/save/save.cpp
@@ -29,7 +29,7 @@
namespace olive {
-ProjectSaveTask::ProjectSaveTask(ProjectPtr project) :
+ProjectSaveTask::ProjectSaveTask(Project *project) :
project_(project)
{
SetTitle(tr("Saving '%1'").arg(project->filename()));
diff --git a/app/task/project/save/save.h b/app/task/project/save/save.h
index 23b116469..85306318a 100644
--- a/app/task/project/save/save.h
+++ b/app/task/project/save/save.h
@@ -30,9 +30,9 @@ class ProjectSaveTask : public Task
{
Q_OBJECT
public:
- ProjectSaveTask(ProjectPtr project);
+ ProjectSaveTask(Project* project);
- ProjectPtr GetProject() const
+ Project* GetProject() const
{
return project_;
}
@@ -41,7 +41,7 @@ protected:
virtual bool Run() override;
private:
- ProjectPtr project_;
+ Project* project_;
};
diff --git a/app/task/project/saveotio/saveotio.cpp b/app/task/project/saveotio/saveotio.cpp
index 2a2b25092..3b42839c0 100644
--- a/app/task/project/saveotio/saveotio.cpp
+++ b/app/task/project/saveotio/saveotio.cpp
@@ -31,7 +31,7 @@
namespace olive {
-SaveOTIOTask::SaveOTIOTask(ProjectPtr project) :
+SaveOTIOTask::SaveOTIOTask(Project *project) :
project_(project)
{
SetTitle(tr("Exporting project to OpenTimelineIO"));
diff --git a/app/task/project/saveotio/saveotio.h b/app/task/project/saveotio/saveotio.h
index d076a2691..4acffb796 100644
--- a/app/task/project/saveotio/saveotio.h
+++ b/app/task/project/saveotio/saveotio.h
@@ -33,7 +33,7 @@ class SaveOTIOTask : public Task
{
Q_OBJECT
public:
- SaveOTIOTask(ProjectPtr project);
+ SaveOTIOTask(Project* project);
protected:
virtual bool Run() override;
@@ -45,7 +45,7 @@ private:
bool SerializeTrackList(TrackList* list, opentimelineio::v1_0::Timeline *otio_timeline);
- ProjectPtr project_;
+ Project* project_;
};
diff --git a/app/widget/projecttoolbar/projecttoolbar.cpp b/app/widget/projecttoolbar/projecttoolbar.cpp
index a7049d207..ba7d5303d 100644
--- a/app/widget/projecttoolbar/projecttoolbar.cpp
+++ b/app/widget/projecttoolbar/projecttoolbar.cpp
@@ -36,43 +36,35 @@ ProjectToolbar::ProjectToolbar(QWidget *parent) :
layout->setMargin(0);
new_button_ = new QPushButton();
- connect(new_button_, SIGNAL(clicked(bool)), this, SIGNAL(NewClicked()));
+ connect(new_button_, &QPushButton::clicked, this, &ProjectToolbar::NewClicked);
layout->addWidget(new_button_);
open_button_ = new QPushButton();
- connect(open_button_, SIGNAL(clicked(bool)), this, SIGNAL(OpenClicked()));
+ connect(open_button_, &QPushButton::clicked, this, &ProjectToolbar::OpenClicked);
layout->addWidget(open_button_);
save_button_ = new QPushButton();
- connect(save_button_, SIGNAL(clicked(bool)), this, SIGNAL(SaveClicked()));
+ connect(save_button_, &QPushButton::clicked, this, &ProjectToolbar::SaveClicked);
layout->addWidget(save_button_);
- undo_button_ = new QPushButton();
- connect(undo_button_, SIGNAL(clicked(bool)), this, SIGNAL(UndoClicked()));
- layout->addWidget(undo_button_);
-
- redo_button_ = new QPushButton();
- connect(redo_button_, SIGNAL(clicked(bool)), this, SIGNAL(RedoClicked()));
- layout->addWidget(redo_button_);
-
search_field_ = new QLineEdit();
search_field_->setClearButtonEnabled(true);
- connect(search_field_, SIGNAL(textChanged(const QString &)), this, SIGNAL(SearchChanged(const QString&)));
+ connect(search_field_, &QLineEdit::textChanged, this, &ProjectToolbar::SearchChanged);
layout->addWidget(search_field_);
tree_button_ = new QPushButton();
tree_button_->setCheckable(true);
- connect(tree_button_, SIGNAL(clicked(bool)), this, SLOT(ViewButtonClicked()));
+ connect(tree_button_, &QPushButton::clicked, this, &ProjectToolbar::ViewButtonClicked);
layout->addWidget(tree_button_);
list_button_ = new QPushButton();
list_button_->setCheckable(true);
- connect(list_button_, SIGNAL(clicked(bool)), this, SLOT(ViewButtonClicked()));
+ connect(list_button_, &QPushButton::clicked, this, &ProjectToolbar::ViewButtonClicked);
layout->addWidget(list_button_);
icon_button_ = new QPushButton();
icon_button_->setCheckable(true);
- connect(icon_button_, SIGNAL(clicked(bool)), this, SLOT(ViewButtonClicked()));
+ connect(icon_button_, &QPushButton::clicked, this, &ProjectToolbar::ViewButtonClicked);
layout->addWidget(icon_button_);
// Group Tree/List/Icon view buttons into a button group for easy exclusive-buttons
@@ -116,14 +108,12 @@ void ProjectToolbar::Retranslate()
new_button_->setToolTip(tr("New..."));
open_button_->setToolTip(tr("Open Project"));
save_button_->setToolTip(tr("Save Project"));
- undo_button_->setToolTip(tr("Undo"));
- redo_button_->setToolTip(tr("Redo"));
search_field_->setPlaceholderText(tr("Search media, markers, etc."));
- tree_button_->setToolTip(tr("Switch to Tree View"));
- list_button_->setToolTip(tr("Switch to List View"));
- icon_button_->setToolTip(tr("Switch to Icon View"));
+ tree_button_->setToolTip(tr("Tree View"));
+ list_button_->setToolTip(tr("List View"));
+ icon_button_->setToolTip(tr("Icon View"));
}
void ProjectToolbar::UpdateIcons()
@@ -131,8 +121,6 @@ void ProjectToolbar::UpdateIcons()
new_button_->setIcon(icon::New);
open_button_->setIcon(icon::Open);
save_button_->setIcon(icon::Save);
- undo_button_->setIcon(icon::Undo);
- redo_button_->setIcon(icon::Redo);
tree_button_->setIcon(icon::TreeView);
list_button_->setIcon(icon::ListView);
icon_button_->setIcon(icon::IconView);
diff --git a/app/widget/projecttoolbar/projecttoolbar.h b/app/widget/projecttoolbar/projecttoolbar.h
index 35abec4de..a5f5cfa28 100644
--- a/app/widget/projecttoolbar/projecttoolbar.h
+++ b/app/widget/projecttoolbar/projecttoolbar.h
@@ -60,9 +60,6 @@ signals:
void OpenClicked();
void SaveClicked();
- void UndoClicked();
- void RedoClicked();
-
void SearchChanged(const QString&);
void ViewChanged(ViewType type);
@@ -74,8 +71,6 @@ private:
QPushButton* new_button_;
QPushButton* open_button_;
QPushButton* save_button_;
- QPushButton* undo_button_;
- QPushButton* redo_button_;
QLineEdit* search_field_;
diff --git a/app/widget/taskview/elapsedcounterwidget.cpp b/app/widget/taskview/elapsedcounterwidget.cpp
index d8cc976d0..e38c5e4b8 100644
--- a/app/widget/taskview/elapsedcounterwidget.cpp
+++ b/app/widget/taskview/elapsedcounterwidget.cpp
@@ -65,6 +65,11 @@ void ElapsedCounterWidget::Start(qint64 start_time)
UpdateTimers();
}
+void ElapsedCounterWidget::Stop()
+{
+ elapsed_timer_.stop();
+}
+
void ElapsedCounterWidget::UpdateTimers()
{
int64_t elapsed_ms, remaining_ms;
diff --git a/app/widget/taskview/elapsedcounterwidget.h b/app/widget/taskview/elapsedcounterwidget.h
index 902b11fd4..d85d7ba70 100644
--- a/app/widget/taskview/elapsedcounterwidget.h
+++ b/app/widget/taskview/elapsedcounterwidget.h
@@ -40,6 +40,9 @@ public:
void Start();
void Start(qint64 start_time);
+public slots:
+ void Stop();
+
private:
QLabel* elapsed_lbl_;
diff --git a/app/widget/timelinewidget/tool/import.cpp b/app/widget/timelinewidget/tool/import.cpp
index da9aa2bb1..ff9a6a2b3 100644
--- a/app/widget/timelinewidget/tool/import.cpp
+++ b/app/widget/timelinewidget/tool/import.cpp
@@ -350,10 +350,10 @@ void ImportTool::DropGhosts(bool insert)
}
if (behavior != kDWSDisable) {
- ProjectPtr active_project = Core::instance()->GetActiveProject();
+ Project* active_project = Core::instance()->GetActiveProject();
if (active_project) {
- SequencePtr new_sequence = Core::instance()->CreateNewSequenceForProject(active_project.get());
+ SequencePtr new_sequence = Core::instance()->CreateNewSequenceForProject(active_project);
new_sequence->set_default_parameters();
diff --git a/app/window/mainwindow/mainmenu.cpp b/app/window/mainwindow/mainmenu.cpp
index c9fef2ec0..a5d8c1dc2 100644
--- a/app/window/mainwindow/mainmenu.cpp
+++ b/app/window/mainwindow/mainmenu.cpp
@@ -282,7 +282,7 @@ void MainMenu::ToolItemTriggered()
void MainMenu::FileMenuAboutToShow()
{
- Project* active_project = Core::instance()->GetActiveProject().get();
+ Project* active_project = Core::instance()->GetActiveProject();
file_project_properties_item_->setEnabled(active_project);
file_save_item_->setEnabled(active_project);
diff --git a/app/window/mainwindow/mainwindow.cpp b/app/window/mainwindow/mainwindow.cpp
index d9d14ec1f..662e31d75 100644
--- a/app/window/mainwindow/mainwindow.cpp
+++ b/app/window/mainwindow/mainwindow.cpp
@@ -479,7 +479,7 @@ void MainWindow::ProjectCloseRequested()
ProjectPanel* panel = static_cast(sender());
Project* p = panel->project();
- Core::instance()->CloseProject(Core::instance()->GetSharedPtrFromProject(p), true);
+ Core::instance()->CloseProject(p, true);
}
void MainWindow::FloatingPanelCloseRequested()