]> git.sven.stormbind.net Git - sven/vym.git/blob - src/slideeditor.cpp
New upstream version 2.9.22
[sven/vym.git] / src / slideeditor.cpp
1 #include <QTreeView>
2 #include <QVBoxLayout>
3
4 #include "mainwindow.h"
5 #include "slidecontrolwidget.h"
6 #include "slideitem.h"
7 #include "slidemodel.h"
8 #include "vymmodel.h"
9
10 #include "slideeditor.h"
11
12 extern Main *mainWindow;
13 extern SlideEditor *slideEditor;
14
15 extern QString editorFocusStyle;
16
17 SlideEditor::SlideEditor(VymModel *m)
18 {
19     vymModel = m;
20
21     // Create slides model
22     slideModel = vymModel->getSlideModel();
23
24     // Create TreeView
25     view = new QTreeView(this);
26     view->setModel(slideModel);
27
28     slideModel->setSelectionModel(view->selectionModel());
29
30     view->setStyleSheet("QTreeView:focus {" + editorFocusStyle + "}");
31
32     // Create ControlWidget
33     slideControl = new SlideControlWidget(this);
34     connect(slideControl, SIGNAL(takeSnapshot()), this, SLOT(addSlide()));
35     connect(slideControl, SIGNAL(editButtonPressed()), mainWindow,
36             SLOT(windowToggleScriptEditor()));
37     connect(slideControl, SIGNAL(deleteButtonPressed()), this,
38             SLOT(deleteSlide()));
39     connect(slideControl, SIGNAL(previousButtonPressed()), this,
40             SLOT(previousSlide()));
41     connect(slideControl, SIGNAL(nextButtonPressed()), this, SLOT(nextSlide()));
42     connect(slideControl, SIGNAL(upButtonPressed()), this, SLOT(moveSlideUp()));
43     connect(slideControl, SIGNAL(downButtonPressed()), this,
44             SLOT(moveSlideDown()));
45
46     QVBoxLayout *mainLayout = new QVBoxLayout;
47
48     mainLayout->addWidget(view);
49     mainLayout->addWidget(slideControl);
50
51     setLayout(mainLayout);
52
53     // Selection
54     connect(view->selectionModel(),
55             SIGNAL(selectionChanged(QItemSelection, QItemSelection)), vymModel,
56             SLOT(updateSlideSelection(QItemSelection, QItemSelection)));
57     connect(view->selectionModel(),
58             SIGNAL(selectionChanged(QItemSelection, QItemSelection)), this,
59             SLOT(updateSelection(QItemSelection, QItemSelection)));
60
61     //    connect (resultsModel, SIGNAL(layoutChanged() ), view, SLOT
62     //    (expandAll() ));
63 }
64
65 void SlideEditor::previousSlide()
66 {
67     QModelIndex ix = slideModel->getSelectedIndex();
68     if (ix.isValid())
69         ix = view->indexAbove(ix);
70
71     if (ix.isValid())
72         view->selectionModel()->select(ix, QItemSelectionModel::ClearAndSelect);
73 }
74
75 void SlideEditor::nextSlide()
76 {
77     QModelIndex ix = slideModel->getSelectedIndex();
78     if (ix.isValid())
79         ix = view->indexBelow(ix);
80     if (ix.isValid())
81         view->selectionModel()->select(ix, QItemSelectionModel::ClearAndSelect);
82 }
83
84 void SlideEditor::addSlide() { vymModel->addSlide(); }
85
86 void SlideEditor::editSlide() // FIXME-4 not used yet
87 {
88 }
89
90 void SlideEditor::deleteSlide()
91 {
92     SlideItem *si = slideModel->getSelectedItem();
93     vymModel->deleteSlide(si);
94 }
95
96 void SlideEditor::moveSlideUp() { vymModel->moveSlideUp(); }
97
98 void SlideEditor::moveSlideDown() { vymModel->moveSlideDown(); }
99
100 void SlideEditor::updateSelection(QItemSelection, QItemSelection)
101 {
102     // FIXME-3 updateActions missing, e.g. state for moveUp/down
103 }