projectexplorer: added functionality for opening a folder in another tab/window

This commit is contained in:
itsmattkc
2020-04-19 01:11:50 +10:00
parent 93e5e7c0c1
commit 55dcf0f5fd
11 changed files with 146 additions and 30 deletions
+1 -1
View File
@@ -37,7 +37,7 @@ FootageViewerPanel::FootageViewerPanel(QWidget *parent) :
Retranslate();
}
QList<Footage *> FootageViewerPanel::GetSelectedFootage()
QList<Footage *> FootageViewerPanel::GetSelectedFootage() const
{
return {static_cast<FootageViewerWidget*>(GetTimeBasedWidget())->GetFootage()};
}
+1 -1
View File
@@ -36,7 +36,7 @@ class FootageViewerPanel : public ViewerPanelBase, public FootageManagementPanel
public:
FootageViewerPanel(QWidget* parent);
virtual QList<Footage*> GetSelectedFootage() override;
virtual QList<Footage*> GetSelectedFootage() const override;
void SetFootage(Footage* f);
+1 -1
View File
@@ -29,7 +29,7 @@ OLIVE_NAMESPACE_ENTER
class FootageManagementPanel {
public:
virtual QList<Footage*> GetSelectedFootage() = 0;
virtual QList<Footage*> GetSelectedFootage() const = 0;
};
OLIVE_NAMESPACE_EXIT
+36 -9
View File
@@ -72,7 +72,7 @@ ProjectPanel::ProjectPanel(QWidget *parent) :
Retranslate();
}
Project *ProjectPanel::project()
Project *ProjectPanel::project() const
{
return explorer_->project();
}
@@ -102,17 +102,24 @@ void ProjectPanel::set_project(Project *p)
}
}
QList<Item *> ProjectPanel::SelectedItems()
void ProjectPanel::set_root(Item *item)
{
explorer_->set_root(item);
Retranslate();
}
QList<Item *> ProjectPanel::SelectedItems() const
{
return explorer_->SelectedItems();
}
Folder *ProjectPanel::GetSelectedFolder()
Folder *ProjectPanel::GetSelectedFolder() const
{
return explorer_->GetSelectedFolder();
}
ProjectViewModel *ProjectPanel::model()
ProjectViewModel *ProjectPanel::model() const
{
return explorer_->model();
}
@@ -157,7 +164,11 @@ void ProjectPanel::Edit(Item* item)
void ProjectPanel::Retranslate()
{
SetTitle(tr("Project"));
if (explorer_->root_index().isValid()) {
SetTitle(tr("Folder"));
} else {
SetTitle(tr("Project"));
}
UpdateSubtitle();
}
@@ -187,14 +198,30 @@ void ProjectPanel::ShowNewMenu()
void ProjectPanel::UpdateSubtitle()
{
if (project() == nullptr) {
SetSubtitle(tr("(none)"));
if (project()) {
QString project_title = QStringLiteral("[*]%1").arg(project()->name());
if (explorer_->root_index().isValid()) {
QString folder_path;
Item* item = static_cast<Item*>(explorer_->root_index().internalPointer());
do {
folder_path.prepend(QStringLiteral("/%1").arg(item->name()));
item = item->parent();
} while (item != project()->root());
project_title.append(folder_path);
}
SetSubtitle(project_title);
} else {
SetSubtitle(QStringLiteral("[*]%1").arg(project()->name()));
SetSubtitle(tr("(none)"));
}
}
QList<Footage *> ProjectPanel::GetSelectedFootage()
QList<Footage *> ProjectPanel::GetSelectedFootage() const
{
QList<Item*> items = SelectedItems();
QList<Footage*> footage;
+7 -5
View File
@@ -37,16 +37,18 @@ class ProjectPanel : public PanelWidget, public FootageManagementPanel
public:
ProjectPanel(QWidget* parent);
Project* project();
Project* project() const;
void set_project(Project* p);
QList<Item*> SelectedItems();
void set_root(Item* item);
Folder* GetSelectedFolder();
QList<Item*> SelectedItems() const;
virtual QList<Footage*> GetSelectedFootage() override;
Folder* GetSelectedFolder() const;
ProjectViewModel* model();
virtual QList<Footage*> GetSelectedFootage() const override;
ProjectViewModel* model() const;
virtual void SelectAll() override;
virtual void DeselectAll() override;