-
Notifications
You must be signed in to change notification settings - Fork 0
/
FolderCtrl.cpp
119 lines (105 loc) · 4.07 KB
/
FolderCtrl.cpp
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
/*
* Copyright 2012-2018 Rochus Keller <mailto:me@rochus-keller.info>
*
* This file is part of the WorkTree application.
*
* The following is the license that applies to this copy of the
* application. For a license to use the application under conditions
* other than those described here, please email to me@rochus-keller.info.
*
* GNU General Public License Usage
* This file may be used under the terms of the GNU General Public
* License (GPL) versions 2.0 or 3.0 as published by the Free Software
* Foundation and appearing in the file LICENSE.GPL included in
* the packaging of this file. Please review the following information
* to ensure GNU General Public Licensing requirements will be met:
* http://www.fsf.org/licensing/licenses/info/GPLv2.html and
* http://www.gnu.org/copyleft/gpl.html.
*/
#include "FolderCtrl.h"
#include <QtGui/QTreeView>
#include <Udb/ContentObject.h>
#include "WtTypeDefs.h"
using namespace Wt;
FolderCtrl::FolderCtrl(QTreeView *tree, GenericMdl *mdl) :
GenericCtrl(tree, mdl)
{
}
FolderCtrl *FolderCtrl::create(QWidget *parent, const Udb::Obj &root)
{
QTreeView* tree = new QTreeView( parent );
tree->setHeaderHidden( true );
tree->setSelectionMode( QAbstractItemView::ExtendedSelection );
tree->setEditTriggers( QAbstractItemView::SelectedClicked );
tree->setDragDropMode( QAbstractItemView::DragDrop );
tree->setDragEnabled( true );
tree->setDragDropOverwriteMode( false );
tree->setAlternatingRowColors(true);
tree->setIndentation( 15 );
tree->setExpandsOnDoubleClick( false );
FolderMdl* mdl = new FolderMdl( tree );
tree->setModel( mdl );
FolderCtrl* ctrl = new FolderCtrl(tree, mdl);
ctrl->setRoot( root );
connect( mdl, SIGNAL(signalNameEdited(QModelIndex,QVariant)),
ctrl, SLOT(onNameEdited(QModelIndex,QVariant) ) );
connect( mdl, SIGNAL(signalMoveTo(QList<Udb::Obj>,QModelIndex,int)),
ctrl, SLOT(onMoveTo(QList<Udb::Obj>,QModelIndex,int)) );
connect( tree->selectionModel(), SIGNAL( selectionChanged ( const QItemSelection &, const QItemSelection & ) ),
ctrl, SLOT( onSelectionChanged() ) );
connect( tree, SIGNAL(clicked(QModelIndex)), ctrl, SLOT( onSelectionChanged() ) );
connect( tree, SIGNAL(doubleClicked(QModelIndex)), ctrl, SLOT(onDoubleClicked(QModelIndex)) );
return ctrl;
}
void FolderCtrl::addCommands(Gui2::AutoMenu * pop)
{
pop->addAction( tr("Expand All"), getTree(), SLOT( expandAll() ) );
pop->addAction( tr("Expand Selected"), this, SLOT( onExpandSelected() ) );
pop->addAction( tr("Collapse All"), getTree(), SLOT( collapseAll() ) );
pop->addSeparator();
pop->addCommand( tr("Move up"), this, SLOT(onMoveUp()), tr("SHIFT+Up"), true );
pop->addCommand( tr("Move down"), this, SLOT(onMoveDown()), tr("SHIFT+Down"), true );
pop->addSeparator();
pop->addCommand( tr("New Item (same type)"), this, SLOT(onAddNext()), tr("CTRL+N"), true );
pop->addCommand( tr("New Folder"), this, SLOT(onAddFolder()) );
pop->addCommand( tr("New PDM Diagram"), this, SLOT(onAddPdmDiagram()) );
pop->addCommand( tr("New Outline"), this, SLOT(onAddOutline()) );
pop->addCommand( tr("New Lua Script"), this, SLOT(onAddScript()) );
pop->addSeparator();
pop->addCommand( tr("Copy"), this, SLOT( onCopy() ), tr("CTRL+C"), true );
pop->addSeparator();
pop->addCommand( tr("Edit Name"), this, SLOT( onEditName() ) );
pop->addCommand( tr("Delete Items"), this, SLOT( onDeleteItems() ), tr("CTRL+D"), true );
}
void FolderCtrl::onAddFolder()
{
add( TypeFolder );
}
void FolderCtrl::onAddPdmDiagram()
{
add( TypePdmDiagram );
}
void FolderCtrl::onAddOutline()
{
add( TypeOutline );
}
void FolderCtrl::onAddScript()
{
add( Udb::ScriptSource::TID );
}
FolderMdl::FolderMdl(QObject *parent):GenericMdl(parent)
{
}
bool FolderMdl::isSupportedType(quint32 type)
{
switch( type )
{
case TypeFolder:
case TypeOutline:
case TypePdmDiagram:
return true;
}
if( type == Udb::ScriptSource::TID )
return true;
return false;
}