more project management updates

This commit is contained in:
itsmattkc
2019-07-01 17:53:52 -07:00
parent 0966b62f29
commit 3e6bc54f48
17 changed files with 277 additions and 21 deletions
@@ -18,5 +18,7 @@ set(OLIVE_SOURCES
${OLIVE_SOURCES}
widget/projectexplorer/projectexplorer.h
widget/projectexplorer/projectexplorer.cpp
widget/projectexplorer/projectexplorertreeview.h
widget/projectexplorer/projectexplorertreeview.cpp
PARENT_SCOPE
)
+22 -1
View File
@@ -20,13 +20,16 @@
#include "projectexplorer.h"
#include <QDebug>
ProjectExplorer::ProjectExplorer(QWidget *parent) :
QStackedWidget(parent),
view_type_(olive::TreeView),
model_(this)
{
tree_view_ = new QTreeView(this);
tree_view_ = new ProjectExplorerTreeView(this);
tree_view_->setModel(&model_);
connect(tree_view_, SIGNAL(DoubleClickedView(const QModelIndex&)), this, SLOT(DoubleClickViewSlot(const QModelIndex&)));
addWidget(tree_view_);
}
@@ -40,6 +43,24 @@ void ProjectExplorer::set_view_type(olive::ProjectViewType type)
view_type_ = type;
}
void ProjectExplorer::DoubleClickViewSlot(const QModelIndex &index)
{
if (index.isValid()) {
// Retrieve source item from index
Item* i = static_cast<Item*>(index.internalPointer());
// Emit a signal
emit DoubleClickedItem(i);
} else {
// Emit nullptr since no item was actually clicked on
emit DoubleClickedItem(nullptr);
}
}
Project *ProjectExplorer::project()
{
return model_.project();
+15 -1
View File
@@ -27,6 +27,7 @@
#include "project/project.h"
#include "project/projectviewmodel.h"
#include "project/projectviewtype.h"
#include "widget/projectexplorer/projectexplorertreeview.h"
/**
* @brief The ProjectExplorer class
@@ -52,12 +53,25 @@ public:
public slots:
void set_view_type(olive::ProjectViewType type);
signals:
/**
* @brief Emitted when an Item is double clicked
*
* @param item
*
* The Item that was double clicked, or nullptr if empty area was double clicked
*/
void DoubleClickedItem(Item* item);
private:
QTreeView* tree_view_;
ProjectExplorerTreeView* tree_view_;
olive::ProjectViewType view_type_;
ProjectViewModel model_;
private slots:
void DoubleClickViewSlot(const QModelIndex& index);
};
#endif // PROJECTEXPLORER_H
@@ -0,0 +1,20 @@
#include "projectexplorertreeview.h"
#include <QMouseEvent>
ProjectExplorerTreeView::ProjectExplorerTreeView(QWidget *parent) :
QTreeView(parent)
{
}
void ProjectExplorerTreeView::mouseDoubleClickEvent(QMouseEvent *event)
{
// Perform default double click functions
QTreeView::mouseDoubleClickEvent(event);
// Get the index at whatever position was double clicked
QModelIndex index = indexAt(event->pos());
// Emit the signal with this index
emit DoubleClickedView(index);
}
@@ -0,0 +1,25 @@
#ifndef PROJECTEXPLORERTREEVIEW_H
#define PROJECTEXPLORERTREEVIEW_H
#include <QTreeView>
/**
* @brief The ProjectExplorerTreeView class
*
* A fairly simple subclass of QTreeView that provides a double clicked signal whether the index is valid or not
* (QAbstractItemView has a doubleClicked() signal but it's only emitted with a valid index).
*/
class ProjectExplorerTreeView : public QTreeView
{
Q_OBJECT
public:
ProjectExplorerTreeView(QWidget* parent);
protected:
virtual void mouseDoubleClickEvent(QMouseEvent *event) override;
signals:
void DoubleClickedView(const QModelIndex& index);
};
#endif // PROJECTEXPLORERTREEVIEW_H