Beispiel #1
0
/**
 Add a new scene to a chapter by chapter id.
*/
QDomElement VondelBook::addNewScene(int chapterId, QString title)
{
    QDomElement chapter;
    QDomNode n = chaptersList.firstChild();

    while (!n.isNull())
    {
        QDomElement c = n.toElement();
        if (!c.isNull())
        {
            if (c.attribute(VondelBook::XML_ID).toInt() == chapterId)
            {
                // Found the right chapter.
                chapter = c;
                break;
            }
        }
        n = n.nextSibling();
    }

    if (!chapter.isNull())
        return addNewScene(chapter, title);
    else
        return chapter;
}
Beispiel #2
0
/*!
 * Create a new book.
 */
void VondelBook::createNewBook()
{
    QDomElement NewBook, Chapter;

    vondelDOM->clear();

    auto pi = vondelDOM->createProcessingInstruction("xml", "version=\"1.0\" encoding=\"utf-8\"");
    vondelDOM->appendChild(pi);

    NewBook = vondelDOM->createElement(VondelBook::XML_BOOK);
    vondelDOM->appendChild(NewBook);
    NewBook.setAttribute("title", QObject::tr("No Title"));
    addCreationDate(NewBook);

    chaptersList = vondelDOM->createElement(VondelBook::XML_CHAPTERS);
    chaptersList.setAttribute(VondelBook::XML_COUNTER, 0);
    NewBook.appendChild(chaptersList);

    scenesList = vondelDOM->createElement(VondelBook::XML_SCENES);
    scenesList.setAttribute(VondelBook::XML_COUNTER, 0);
    NewBook.appendChild(scenesList);

    charactersList = vondelDOM->createElement(VondelBook::XML_CHARACTERS);
    charactersList.setAttribute(VondelBook::XML_COUNTER, 0);
    NewBook.appendChild(charactersList);

    locationsList = vondelDOM->createElement(VondelBook::XML_LOCATIONS);
    locationsList.setAttribute(VondelBook::XML_COUNTER, 0);
    NewBook.appendChild(locationsList);

    itemsList = vondelDOM->createElement(VondelBook::XML_ITEMS);
    itemsList.setAttribute(VondelBook::XML_COUNTER, 0);
    NewBook.appendChild(itemsList);

    Chapter = addNewChapter("Chapter 1");
    addNewScene(Chapter, "Scene 1");
    addNewScene(Chapter, "Scene 2");

    Chapter = addNewChapter("Chapter 2");
    addNewScene(Chapter, "Scene 3");
    addNewScene(Chapter, "Scene 4");
    addNewScene(Chapter, "àäá-èëé-â");

    addNewCharacter("Mr X");
    addNewCharacter("Mrs X");
}
Beispiel #3
0
StudySceneEditor::StudySceneEditor(Study *study, QSqlDatabase *database, QWidget *parent) :
    QDialog(parent)
{
    m_ui.setupUi(this);
    m_ui.removeSceneButton->setEnabled(false);

    m_model = new StudySceneModel(this, *database);
    m_delegate = new StudySceneDelegate(this);
    m_study = study;
    m_studyIndex = -1;

    QString title = windowTitle();
    setWindowTitle(m_study->name() + " - " + title);

    QSqlQuery query(*database);
    query.prepare("select id from studies where name = ?");
    query.addBindValue(m_study->name());

    // if there is already a study with that name, show the scenes for it
    if (query.exec() && query.next()) {
         m_studyIndex = query.value(0).toInt();
    }

    m_model->setTable("scenes");
    //m_model->setEditStrategy(QSqlTableModel::OnFieldChange);
    QString filter = QString("study = %1").arg(m_studyIndex);
    m_model->setFilter(filter);
    m_model->setHeaderData(1, Qt::Horizontal, "Name", Qt::DisplayRole);
    m_model->setHeaderData(2, Qt::Horizontal, "Length \n (in seconds)", Qt::DisplayRole);
    m_model->setHeaderData(3, Qt::Horizontal, "Type", Qt::DisplayRole);
    m_model->select();

    // Set up the view
    m_ui.sceneView->setModel(m_model);
    m_ui.sceneView->setColumnHidden(0, true);
    m_ui.sceneView->setColumnHidden(4, true);
    m_ui.sceneView->horizontalHeader()->setResizeMode(QHeaderView::Stretch);
    m_ui.sceneView->setItemDelegate(m_delegate);
    m_ui.sceneView->update();

    m_signalMapper = new QSignalMapper(this);
    connect(m_ui.addSceneButton, SIGNAL(clicked()), m_signalMapper, SLOT(map()));
    m_signalMapper->setMapping(m_ui.addSceneButton, m_ui.addSceneButton->text());
    connect(m_ui.addBreakSceneButton, SIGNAL(clicked()), m_signalMapper, SLOT(map()));
    m_signalMapper->setMapping(m_ui.addBreakSceneButton, m_ui.addBreakSceneButton->text());
    connect(m_signalMapper, SIGNAL(mapped(QString)), this, SIGNAL(clicked(const QString &)));
    connect(this, SIGNAL(clicked(QString)), this, SLOT(addNewScene(QString)));


    connect(m_ui.closeButton, SIGNAL(clicked()), this, SLOT(submitAndClose()));
    connect(m_ui.removeSceneButton, SIGNAL(clicked()), this, SLOT(removeScene()));
    connect(m_ui.sceneView, SIGNAL(clicked(QModelIndex)), this, SLOT(changeRemoveButtonState(QModelIndex)));
    connect(m_model, SIGNAL(primeInsert(int, QSqlRecord&)),
            this, SLOT(populateNewRowValues(int, QSqlRecord&)));
}