From aa3c263d705ae45fb8c1ab653159564432e0de85 Mon Sep 17 00:00:00 2001 From: Herwig Birke Date: Fri, 18 May 2018 13:07:08 +0200 Subject: [PATCH] . --- cscene.cpp | 5 +++++ cscene.h | 8 ++++++++ cscenewindow.cpp | 40 ++++++++++++++++++++++++++++++++++++++++ 3 files changed, 53 insertions(+) diff --git a/cscene.cpp b/cscene.cpp index f1c70b1..9e9bf43 100644 --- a/cscene.cpp +++ b/cscene.cpp @@ -131,6 +131,11 @@ void cScene::addCharacter(cCharacter* lpCharacter, cTextDocument* lpDescription) m_characterList.append(new cCharacterDescription(lpCharacter, lpDescription)); } +void cScene::removeCharacter(cCharacterDescription* lpCharacter) +{ + m_characterList.removeOne(lpCharacter); +} + QList cScene::characterList() { return(m_characterList); diff --git a/cscene.h b/cscene.h index 271cfef..4bc0212 100644 --- a/cscene.h +++ b/cscene.h @@ -215,6 +215,14 @@ public: /*! \brief + \fn addCharacter + \param lpCharacter + \param lpDescription + */ + void removeCharacter(cCharacterDescription* lpCharacter); + /*! + \brief + \fn characterList \return QList */ diff --git a/cscenewindow.cpp b/cscenewindow.cpp index fabbd20..0f4eda8 100644 --- a/cscenewindow.cpp +++ b/cscenewindow.cpp @@ -14,6 +14,7 @@ #include #include +#include cSceneWindow::cSceneWindow(QWidget *parent) : @@ -393,12 +394,51 @@ void cSceneWindow::onAddCharacterToList() ui->m_lpCharacterRemove->setEnabled((ui->m_lpCharacterList->count() > 0)); ui->m_lpCharacterShowDetails->setEnabled((ui->m_lpCharacterList->count() > 0)); + + m_lpMainWindow->somethingChanged(); } void cSceneWindow::onRemoveCharacterFromList() { + cCharacterDescription* lpCharacterDescription = qvariant_cast(ui->m_lpCharacterList->currentData()); + + if(!lpCharacterDescription) + return; + + if(QMessageBox::question(this, "Scene", QString(tr("Do you want to delete \"%1\" from list?")).arg(lpCharacterDescription->character()->name())) == QMessageBox::No) + return; + + m_lpScene->removeCharacter(lpCharacterDescription); + + QList characterList = m_lpScene->characterList(); + + ui->m_lpCharacterList->clear(); + + for(int x = ui->m_lpCharacterDetails->count()-1;x >= 0;x--) + ui->m_lpCharacterDetails->removeWidget(ui->m_lpCharacterDetails->widget(x)); + + for(int x = 0;x < characterList.count();x++) + { + cCharacterDescription* lpCharacterDescription = characterList[x]; + cCharacter* lpCharacter = lpCharacterDescription->character(); + + ui->m_lpCharacterList->addItem(lpCharacter->name(), QVariant::fromValue(lpCharacterDescription)); + cTextEdit* lpTextEdit = new cTextEdit(ui->m_lpCharacterDetails); + lpTextEdit->setDocument(lpCharacterDescription->description()); + ui->m_lpCharacterDetails->addWidget(lpTextEdit); + + connect(lpTextEdit, &cTextEdit::gotFocus, m_lpMainWindow, &cMainWindow::onTextEditGotFocus); + connect(lpTextEdit, &cTextEdit::lostFocus, m_lpMainWindow, &cMainWindow::onTextEditLostFocus); + + connect(lpTextEdit, &cTextEdit::textChanged, this, &cSceneWindow::onCharacterDescriptionChanged); + } + ui->m_lpCharacterList->setCurrentIndex(0); + ui->m_lpCharacterDetails->setCurrentIndex(0); + ui->m_lpCharacterRemove->setEnabled((ui->m_lpCharacterList->count() > 0)); ui->m_lpCharacterShowDetails->setEnabled((ui->m_lpCharacterList->count() > 0)); + + m_lpMainWindow->somethingChanged(); } void cSceneWindow::onAddPlaceToList()