]> git.sven.stormbind.net Git - sven/vym.git/blobdiff - src/slideeditor.cpp
New upstream version 2.9.22
[sven/vym.git] / src / slideeditor.cpp
diff --git a/src/slideeditor.cpp b/src/slideeditor.cpp
new file mode 100644 (file)
index 0000000..88f0de8
--- /dev/null
@@ -0,0 +1,103 @@
+#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
+}