more project management updates
This commit is contained in:
@@ -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
|
||||
)
|
||||
|
||||
@@ -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();
|
||||
|
||||
@@ -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
|
||||
Reference in New Issue
Block a user