summaryrefslogtreecommitdiffstats
path: root/sigmodr/widgets/AuthorUI.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'sigmodr/widgets/AuthorUI.cpp')
-rw-r--r--sigmodr/widgets/AuthorUI.cpp79
1 files changed, 41 insertions, 38 deletions
diff --git a/sigmodr/widgets/AuthorUI.cpp b/sigmodr/widgets/AuthorUI.cpp
index 749cf4ee..f3378c01 100644
--- a/sigmodr/widgets/AuthorUI.cpp
+++ b/sigmodr/widgets/AuthorUI.cpp
@@ -17,6 +17,7 @@
// Header include
#include "AuthorUI.h"
+#include "AuthorUI_p.h"
// Sigmod includes
#include <sigmod/Author.h>
@@ -24,74 +25,76 @@
// KDE includes
#include <KLineEdit>
-// Qt includes
-#include <QtCore/QFile>
-#include <QtGui/QVBoxLayout>
-#include <QtUiTools/QUiLoader>
-
using namespace Sigmod;
using namespace Sigmodr::Widgets;
AuthorUI::AuthorUI(Author* author, QWidget* parent) :
- ObjectUI(parent)
+ ObjectUI(author, parent),
+ d(new Private(new Author(*author)))
{
- setObjects(author, new Author(*author));
+ setWidget(d->makeWidgets(this));
}
-void AuthorUI::initGui()
+void AuthorUI::apply()
{
- QFile file(":/gui/author.ui");
- file.open(QFile::ReadOnly);
- QWidget *formWidget = QUiLoader().load(&file, this);
- file.close();
- ui_name = formWidget->findChild<KLineEdit*>("varName");
- ui_email= formWidget->findChild<KLineEdit*>("varEmail");
- ui_role = formWidget->findChild<KLineEdit*>("varRole");
- connect(ui_name, SIGNAL(textChanged(QString)), this, SLOT(nameChanged(QString)));
- connect(ui_email, SIGNAL(textChanged(QString)), this, SLOT(emailChanged(QString)));
- connect(ui_role, SIGNAL(textChanged(QString)), this, SLOT(roleChanged(QString)));
- QVBoxLayout* layout = new QVBoxLayout;
- layout->addWidget(formWidget);
- setLayout(layout);
+ *qobject_cast<Author*>(m_object) = *d->m_author;
+ ObjectUI::apply();
}
-void AuthorUI::setGui()
+void AuthorUI::discard()
{
- ui_name->setText(qobject_cast<Author*>(modified())->name());
- ui_email->setText(qobject_cast<Author*>(modified())->email());
- ui_role->setText(qobject_cast<Author*>(modified())->role());
+ *d->m_author = *qobject_cast<Author*>(m_object);
+ d->resetGui();
+ ObjectUI::discard();
}
-void AuthorUI::apply()
+AuthorUI::Private::Private(Author* author) :
+ ObjectUIPrivate(author),
+ m_author(author)
{
- *qobject_cast<Author*>(original()) = *qobject_cast<Author*>(modified());
- emit(changed(false));
}
-void AuthorUI::discard()
+AuthorUI::Private::~Private()
+{
+ delete m_author;
+}
+
+QWidget* AuthorUI::Private::makeWidgets(ObjectUI* widget)
+{
+ QWidget *form = openUiFile(":/gui/author.ui", widget);
+ ui_name = form->findChild<KLineEdit*>("varName");
+ ui_email= form->findChild<KLineEdit*>("varEmail");
+ ui_role = form->findChild<KLineEdit*>("varRole");
+ connect(ui_name, SIGNAL(textChanged(QString)), this, SLOT(nameChanged(QString)));
+ connect(ui_email, SIGNAL(textChanged(QString)), this, SLOT(emailChanged(QString)));
+ connect(ui_role, SIGNAL(textChanged(QString)), this, SLOT(roleChanged(QString)));
+ return form;
+}
+
+void AuthorUI::Private::resetGui()
{
- *qobject_cast<Author*>(modified()) = *qobject_cast<Author*>(original());
- setGui();
- emit(changed(false));
+ ui_name->setText(m_author->name());
+ ui_email->setText(m_author->email());
+ ui_role->setText(m_author->role());
}
-void AuthorUI::nameChanged(const QString& name)
+void AuthorUI::Private::nameChanged(const QString& name)
{
const int cursor = ui_name->cursorPosition();
- qobject_cast<Author*>(modified())->setName(name);
+ m_author->setName(name);
ui_name->setCursorPosition(cursor);
}
-void AuthorUI::emailChanged(const QString& email)
+void AuthorUI::Private::emailChanged(const QString& email)
{
const int cursor = ui_email->cursorPosition();
- qobject_cast<Author*>(modified())->setEmail(email);
+ m_author->setEmail(email);
ui_email->setCursorPosition(cursor);
}
-void AuthorUI::roleChanged(const QString& role)
+void AuthorUI::Private::roleChanged(const QString& role)
{
const int cursor = ui_role->cursorPosition();
- qobject_cast<Author*>(modified())->setRole(role);
+ m_author->setRole(role);
ui_role->setCursorPosition(cursor);
}