#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-5 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-4 updateActions missing, e.g. state for moveUp/down
}