From 40d5eb5a052dee4980a1708924028e0a8e67ff90 Mon Sep 17 00:00:00 2001 From: Herwig Birke Date: Thu, 26 Apr 2018 14:01:03 +0200 Subject: [PATCH] . --- ccharacter.cpp | 5 + ccharacter.h | 2 +- ccharacterwindow.cpp | 70 ++++- ccharacterwindow.h | 11 +- ccharacterwindow.ui | 694 +++++++++++++++++++++++-------------------- cimage.cpp | 1 - cimagewidget.cpp | 26 ++ cimagewidget.h | 27 ++ cimagewidget.ui | 57 ++++ cmainwindow.cpp | 37 +++ cmainwindow.h | 3 + cwidget.cpp | 8 + cwidget.h | 3 + qtStoryWriter.pro | 9 +- 14 files changed, 627 insertions(+), 326 deletions(-) create mode 100644 cimagewidget.cpp create mode 100644 cimagewidget.h create mode 100644 cimagewidget.ui diff --git a/ccharacter.cpp b/ccharacter.cpp index 942a54e..5213a6e 100644 --- a/ccharacter.cpp +++ b/ccharacter.cpp @@ -346,6 +346,11 @@ void cCharacter::addImage(cImage* lpImage) m_imageList.append(lpImage); } +QList cCharacter::images() +{ + return(m_imageList); +} + cCharacter* cCharacterList::add(const qint32& iID) { cCharacter* lpCharacter = find(iID); diff --git a/ccharacter.h b/ccharacter.h index 2fc9854..afda35d 100644 --- a/ccharacter.h +++ b/ccharacter.h @@ -109,7 +109,7 @@ public: cTextDocument* description(); void addImage(cImage* lpImage); - + QList images(); private: qint32 m_id; bool m_bMainCharacter; diff --git a/ccharacterwindow.cpp b/ccharacterwindow.cpp index fa47382..f66ff43 100644 --- a/ccharacterwindow.cpp +++ b/ccharacterwindow.cpp @@ -1,14 +1,82 @@ #include "ccharacterwindow.h" #include "ui_ccharacterwindow.h" +#include "cimagewidget.h" + +#include + + cCharacterWindow::cCharacterWindow(QWidget *parent) : QWidget(parent), - ui(new Ui::cCharacterWindow) + ui(new Ui::cCharacterWindow), + m_lpCharacter(0) { ui->setupUi(this); + ui->m_lpTab->setCurrentIndex(0); } cCharacterWindow::~cCharacterWindow() { delete ui; } + +void cCharacterWindow::setCharacter(cCharacter* lpCharacter) +{ + m_lpCharacter = lpCharacter; + + ui->m_lpFirstName->setText(lpCharacter->firstName()); + ui->m_lpMiddleName->setText(lpCharacter->middleName()); + ui->m_lpLastName->setText(lpCharacter->lastName()); + ui->m_lpMainCharacter->setChecked(lpCharacter->mainCharacter()); + ui->m_lpCreature->setText(lpCharacter->creature()); + ui->m_lpTitle->setText(lpCharacter->title()); + switch(lpCharacter->gender()) + { + case cCharacter::GENDER_female: + ui->m_lpFemale->setChecked(true); + break; + case cCharacter::GENDER_male: + ui->m_lpMale->setChecked(true); + break; + case cCharacter::GENDER_undefined: + ui->m_lpOther->setChecked(true); + break; + } + ui->m_lpDayOfBirth->setDate(lpCharacter->dateOfBirth()); + ui->m_lpDayOfDeath->setDate(lpCharacter->dateOfDeath()); + ui->m_lpPlaceOfBirth->setText(lpCharacter->placeOfBirth()); + ui->m_lpPlaceOfDeath->setText(lpCharacter->placeOfDeath()); + ui->m_lpHeight->setValue(lpCharacter->height()); + ui->m_lpWeight->setValue(lpCharacter->weight()); + ui->m_lpFigure->setText(lpCharacter->figure()); + ui->m_lpNature->setText(lpCharacter->nature()); + ui->m_lpSkin->setText(lpCharacter->skin()); + ui->m_lpHairColor->setText(lpCharacter->hairColor()); + ui->m_lpHairCut->setText(lpCharacter->hairCut()); + ui->m_lpHairLength->setText(lpCharacter->hairLength()); + ui->m_lpSchool->setText(lpCharacter->school()); + ui->m_lpspokenLanguages->setText(lpCharacter->spokenLanguages()); + ui->m_lpJob->setHtml(lpCharacter->job()); + ui->m_lpDescription->setDocument(lpCharacter->description()); + + QList images = lpCharacter->images(); + for(int x = 0;x < images.count();x++) + { + cImage* lpImage = images[x]; + QPixmap pixmap = lpImage->load(); + cImageWidget* lpImageWidget = new cImageWidget; + + lpImageWidget->setValues(lpImage->name(), lpImage->type(), lpImage->description(), pixmap); + ui->m_lpLayout->addWidget(lpImageWidget); + } + + QSpacerItem* lpSpacer = new QSpacerItem(20, 40, QSizePolicy::Minimum, QSizePolicy::Expanding); + ui->m_lpLayout->addItem(lpSpacer); + + setWindowTitle(tr("[character] - ") + lpCharacter->name()); +} + +cCharacter* cCharacterWindow::character() +{ + return(m_lpCharacter); +} diff --git a/ccharacterwindow.h b/ccharacterwindow.h index b70e86e..80cef2c 100644 --- a/ccharacterwindow.h +++ b/ccharacterwindow.h @@ -1,7 +1,12 @@ #ifndef CCHARACTERWINDOW_H #define CCHARACTERWINDOW_H + +#include "ccharacter.h" + #include +#include + namespace Ui { class cCharacterWindow; @@ -15,8 +20,12 @@ public: explicit cCharacterWindow(QWidget *parent = 0); ~cCharacterWindow(); + void setCharacter(cCharacter* lpCharacter); + cCharacter* character(); + private: - Ui::cCharacterWindow *ui; + Ui::cCharacterWindow* ui; + cCharacter* m_lpCharacter; }; #endif // CCHARACTERWINDOW_H diff --git a/ccharacterwindow.ui b/ccharacterwindow.ui index 6499de9..4f5b7c9 100644 --- a/ccharacterwindow.ui +++ b/ccharacterwindow.ui @@ -14,327 +14,383 @@ Form - - - - - - - - - Date of Death: - - - Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter - - - - - - - 999999.000000000000000 - - - - - - - - - - - - - Place of Death: - - - Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter - - - - - - - Height: - - - Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter - - - - - - - Creature: - - - Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter - - - - - - - Place of Birth: - - - Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter - - - - - - - - - - - - - Date of Birth: - - - Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter - - - - - - - - - - Main Character - - - - - - - Weight: - - - Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter - - - - - - - 999999.000000000000000 - - - - - - - Middle Name: - - - Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter - - - - - - - Title: - - - Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter - - - - - - - First Name: - - - Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter - - - - - - - - - - Description: - - - Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter - - - - - - - - - - Last Name: - - - Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter - - - - - - - - - - - - - Hair Color: - - - Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter - - - - - - - Hair Cut: - - - Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter - - - - - - - Hair Length: - - - Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter - - - - - - - - - - - - - - - - Figure: - - - Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter - - - - - - - - - - Job: - - - Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter - - - - - - - Skin: - - - Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter - - - - - - - - - - School: - - - Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter - - - - - - - Spoken Languages: - - - Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter - - - - - - - Nature: - - - Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter - - - - - - - - - - - - - - - - - - - Gender - - - - - - Male + + + + 1 + + + + Basic + + + + + + + + + + + Date of Death: + + + Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter + + + + + + + 999999.000000000000000 + + + + + + + + + + + + + Place of Death: + + + Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter + + + + + + + Height: + + + Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter + + + + + + + Creature: + + + Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter + + + + + + + Place of Birth: + + + Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter + + + + + + + + + + + + + Date of Birth: + + + Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter + + + + + + + + + + Main Character + + + + + + + Weight: + + + Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter + + + + + + + 999999.000000000000000 + + + + + + + Middle Name: + + + Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter + + + + + + + Title: + + + Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter + + + + + + + First Name: + + + Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter + + + + + + + + + + Description: + + + Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter + + + + + + + + + + Last Name: + + + Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter + + + + + + + + + + + + + Hair Color: + + + Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter + + + + + + + Hair Cut: + + + Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter + + + + + + + Hair Length: + + + Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter + + + + + + + + + + + + + + + + Figure: + + + Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter + + + + + + + + + + Job: + + + Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter + + + + + + + Skin: + + + Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter + + + + + + + + + + School: + + + Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter + + + + + + + Spoken Languages: + + + Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter + + + + + + + Nature: + + + Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter + + + + + + + + + + + + + + + + + + + Gender + + + + + + Male + + + + + + + Female + + + + + + + Other + + + + + + + + + + + + + Images + + + + + + true + + + + + 0 + 0 + 681 + 464 + + + + + + + + + Qt::Horizontal + + + + 40 + 20 + + + + + - - - - - Female - - - - - - - Other - - - - - - - + + + + + diff --git a/cimage.cpp b/cimage.cpp index af168f2..22485a6 100644 --- a/cimage.cpp +++ b/cimage.cpp @@ -84,7 +84,6 @@ QPixmap cImage::load() } } - myDebug << "image load error."; return(image); } diff --git a/cimagewidget.cpp b/cimagewidget.cpp new file mode 100644 index 0000000..ca8c6ff --- /dev/null +++ b/cimagewidget.cpp @@ -0,0 +1,26 @@ +#include "cimagewidget.h" +#include "ui_cimagewidget.h" + + +cImageWidget::cImageWidget(QWidget *parent) : + QWidget(parent), + ui(new Ui::cImageWidget) +{ + ui->setupUi(this); +} + +cImageWidget::~cImageWidget() +{ + delete ui; +} + +void cImageWidget::setValues(const QString &szName, const QString &szType, cTextDocument* lpDocument, const QPixmap &pixmap) +{ + ui->m_lpName->setTitle(szName); + ui->m_lpType->setText(szType); + ui->m_lpDescription->setDocument(lpDocument); + if(pixmap.width() > 200) + ui->m_lpImage->setPixmap(pixmap.scaled(200, 9999, Qt::KeepAspectRatio)); + else + ui->m_lpImage->setPixmap(pixmap); +} diff --git a/cimagewidget.h b/cimagewidget.h new file mode 100644 index 0000000..e7b9632 --- /dev/null +++ b/cimagewidget.h @@ -0,0 +1,27 @@ +#ifndef CIMAGEWIDGET_H +#define CIMAGEWIDGET_H + + +#include "ctextdocument.h" +#include +#include + + +namespace Ui { +class cImageWidget; +} + +class cImageWidget : public QWidget +{ + Q_OBJECT + +public: + explicit cImageWidget(QWidget *parent = 0); + ~cImageWidget(); + + void setValues(const QString& szName, const QString& szType, cTextDocument* lpDocument, const QPixmap& pixmap); +private: + Ui::cImageWidget* ui; +}; + +#endif // CIMAGEWIDGET_H diff --git a/cimagewidget.ui b/cimagewidget.ui new file mode 100644 index 0000000..dd2e4db --- /dev/null +++ b/cimagewidget.ui @@ -0,0 +1,57 @@ + + + cImageWidget + + + + 0 + 0 + 380 + 325 + + + + Form + + + + + + GroupBox + + + + + + + + + + + QFrame::Box + + + QFrame::Sunken + + + TextLabel + + + + + + + TextLabel + + + + + + + + + + + + + diff --git a/cmainwindow.cpp b/cmainwindow.cpp index 84b8d95..b26de04 100644 --- a/cmainwindow.cpp +++ b/cmainwindow.cpp @@ -6,6 +6,7 @@ #include "cpartwindow.h" #include "cchapterwindow.h" #include "cscenewindow.h" +#include "ccharacterwindow.h" #include "cwidget.h" @@ -125,6 +126,7 @@ void cMainWindow::createActions() connect(ui->m_lpMdiArea, SIGNAL(subWindowActivated(QMdiSubWindow*)), this, SLOT(onMdiAreaSubWindowActivated(QMdiSubWindow*))); connect(ui->m_lpOutlineList, SIGNAL(doubleClicked(QModelIndex)), this, SLOT(onOutlineDoubleClicked(QModelIndex))); + connect(ui->m_lpCharacterList, SIGNAL(doubleClicked(QModelIndex)), this, SLOT(onCharacterDoubleClicked(QModelIndex))); } void cMainWindow::createFileActions() @@ -426,6 +428,14 @@ void cMainWindow::onOutlineDoubleClicked(const QModelIndex& index) QMessageBox::information(this, "DoubleClicked", "outline"); } +void cMainWindow::onCharacterDoubleClicked(const QModelIndex& index) +{ + QStandardItem* lpItem = m_lpCharacterModel->itemFromIndex(index); + cCharacter* lpCharacter = qvariant_cast(lpItem->data()); + + showCharacterWindow(lpCharacter); +} + void cMainWindow::showPartWindow(cPart* lpPart) { for(int x = 0;x < ui->m_lpMainTab->count();x++) @@ -507,6 +517,33 @@ void cMainWindow::showSceneWindow(cScene* lpScene) lpSceneWindow->show(); } +void cMainWindow::showCharacterWindow(cCharacter* lpCharacter) +{ + for(int x = 0;x < ui->m_lpMainTab->count();x++) + { + cWidget* lpWidget = (cWidget*)ui->m_lpMainTab->widget(x); + if(lpWidget->type() == cWidget::TYPE_character) + { + cCharacterWindow* lpCharacterWindow = (cCharacterWindow*)lpWidget->widget(); + if(lpCharacterWindow->character() == lpCharacter) + { + ui->m_lpMainTab->setCurrentIndex(x); + ui->m_lpMdiArea->setActiveSubWindow(lpWidget->window()); + m_bUpdatingTab = false; + return; + } + } + } + + cCharacterWindow* lpCharacterWindow = new cCharacterWindow(this); + lpCharacterWindow->setCharacter(lpCharacter); + cWidget* lpWidget1 = new cWidget(lpCharacterWindow); + lpWidget1->setWindow(ui->m_lpMdiArea->addSubWindow(lpCharacterWindow)); + ui->m_lpMainTab->addTab((QWidget*)lpWidget1, lpCharacterWindow->windowTitle()); + + lpCharacterWindow->show(); +} + void cMainWindow::onFileNew() { } diff --git a/cmainwindow.h b/cmainwindow.h index f862c6b..8c9a59a 100644 --- a/cmainwindow.h +++ b/cmainwindow.h @@ -35,6 +35,7 @@ private slots: void onMdiAreaSubWindowActivated(QMdiSubWindow *arg1); void onOutlineDoubleClicked(const QModelIndex& index); + void onCharacterDoubleClicked(const QModelIndex& index); void onFileNew(); void onFileOpen(); @@ -104,6 +105,8 @@ private: void showPartWindow(cPart* lpPart); void showChapterWindow(cChapter* lpChapter); void showSceneWindow(cScene* lpScene); + void showCharacterWindow(cCharacter* lpCharacter); + protected: void closeEvent(QCloseEvent *event); }; diff --git a/cwidget.cpp b/cwidget.cpp index a1be74e..6b98a4a 100644 --- a/cwidget.cpp +++ b/cwidget.cpp @@ -25,6 +25,14 @@ cWidget::cWidget(cSceneWindow* parent) : { } +cWidget::cWidget(cCharacterWindow* parent) : + QWidget(parent), + m_type(TYPE_character), + m_lpWidget(parent), + m_lpWindow(0) +{ +} + cWidget::cWidget(QWidget* parent) : QWidget(parent), m_type(TYPE_unknown), diff --git a/cwidget.h b/cwidget.h index 5b63c50..b2e25b8 100644 --- a/cwidget.h +++ b/cwidget.h @@ -5,6 +5,7 @@ #include "cpartwindow.h" #include "cchapterwindow.h" #include "cscenewindow.h" +#include "ccharacterwindow.h" #include #include @@ -20,11 +21,13 @@ public: TYPE_part = 1, TYPE_chapter = 2, TYPE_scene = 3, + TYPE_character = 4, }; explicit cWidget(cPartWindow* parent); explicit cWidget(cChapterWindow* parent); explicit cWidget(cSceneWindow* parent); + explicit cWidget(cCharacterWindow* parent); explicit cWidget(QWidget* parent); QWidget* widget(); diff --git a/qtStoryWriter.pro b/qtStoryWriter.pro index 1739401..9e103dc 100644 --- a/qtStoryWriter.pro +++ b/qtStoryWriter.pro @@ -60,7 +60,8 @@ SOURCES += \ cimage.cpp \ cchapterwindow.cpp \ cscenewindow.cpp \ - ccharacterwindow.cpp + ccharacterwindow.cpp \ + cimagewidget.cpp HEADERS += \ cmainwindow.h \ @@ -82,14 +83,16 @@ HEADERS += \ cimage.h \ cchapterwindow.h \ cscenewindow.h \ - ccharacterwindow.h + ccharacterwindow.h \ + cimagewidget.h FORMS += \ cmainwindow.ui \ cpartwindow.ui \ cchapterwindow.ui \ cscenewindow.ui \ - ccharacterwindow.ui + ccharacterwindow.ui \ + cimagewidget.ui DISTFILES += \ storyBook.project