--- /dev/null
+#include <QTreeView>
+#include <QVBoxLayout>
+
+#include "mainwindow.h"
+#include "slidecontrolwidget.h"
+#include "slideitem.h"
+#include "slidemodel.h"
+#include "vymmodel.h"
+
+#include "slideeditor.h"
+
+extern Main *mainWindow;
+extern SlideEditor *slideEditor;
+
+extern QString editorFocusStyle;
+
+SlideEditor::SlideEditor(VymModel *m)
+{
+ vymModel = m;
+
+ // Create slides model
+ slideModel = vymModel->getSlideModel();
+
+ // Create TreeView
+ view = new QTreeView(this);
+ view->setModel(slideModel);
+
+ slideModel->setSelectionModel(view->selectionModel());
+
+ view->setStyleSheet("QTreeView:focus {" + editorFocusStyle + "}");
+
+ // Create ControlWidget
+ slideControl = new SlideControlWidget(this);
+ connect(slideControl, SIGNAL(takeSnapshot()), this, SLOT(addSlide()));
+ connect(slideControl, SIGNAL(editButtonPressed()), mainWindow,
+ SLOT(windowToggleScriptEditor()));
+ connect(slideControl, SIGNAL(deleteButtonPressed()), this,
+ SLOT(deleteSlide()));
+ connect(slideControl, SIGNAL(previousButtonPressed()), this,
+ SLOT(previousSlide()));
+ connect(slideControl, SIGNAL(nextButtonPressed()), this, SLOT(nextSlide()));
+ connect(slideControl, SIGNAL(upButtonPressed()), this, SLOT(moveSlideUp()));
+ connect(slideControl, SIGNAL(downButtonPressed()), this,
+ SLOT(moveSlideDown()));
+
+ QVBoxLayout *mainLayout = new QVBoxLayout;
+
+ mainLayout->addWidget(view);
+ mainLayout->addWidget(slideControl);
+
+ setLayout(mainLayout);
+
+ // Selection
+ connect(view->selectionModel(),
+ SIGNAL(selectionChanged(QItemSelection, QItemSelection)), vymModel,
+ SLOT(updateSlideSelection(QItemSelection, QItemSelection)));
+ connect(view->selectionModel(),
+ SIGNAL(selectionChanged(QItemSelection, QItemSelection)), this,
+ SLOT(updateSelection(QItemSelection, QItemSelection)));
+
+ // connect (resultsModel, SIGNAL(layoutChanged() ), view, SLOT
+ // (expandAll() ));
+}
+
+void SlideEditor::previousSlide()
+{
+ QModelIndex ix = slideModel->getSelectedIndex();
+ if (ix.isValid())
+ ix = view->indexAbove(ix);
+
+ if (ix.isValid())
+ view->selectionModel()->select(ix, QItemSelectionModel::ClearAndSelect);
+}
+
+void SlideEditor::nextSlide()
+{
+ QModelIndex ix = slideModel->getSelectedIndex();
+ if (ix.isValid())
+ ix = view->indexBelow(ix);
+ if (ix.isValid())
+ view->selectionModel()->select(ix, QItemSelectionModel::ClearAndSelect);
+}
+
+void SlideEditor::addSlide() { vymModel->addSlide(); }
+
+void SlideEditor::editSlide() // FIXME-4 not used yet
+{
+}
+
+void SlideEditor::deleteSlide()
+{
+ SlideItem *si = slideModel->getSelectedItem();
+ vymModel->deleteSlide(si);
+}
+
+void SlideEditor::moveSlideUp() { vymModel->moveSlideUp(); }
+
+void SlideEditor::moveSlideDown() { vymModel->moveSlideDown(); }
+
+void SlideEditor::updateSelection(QItemSelection, QItemSelection)
+{
+ // FIXME-3 updateActions missing, e.g. state for moveUp/down
+}