summaryrefslogtreecommitdiffstats
path: root/sigmodr/widgets/SpriteUI.cpp
diff options
context:
space:
mode:
authorBen Boeckel <MathStuf@gmail.com>2009-03-01 20:44:32 -0500
committerBen Boeckel <MathStuf@gmail.com>2009-03-01 20:44:32 -0500
commit1430a9e2b52109f3f57cfa7a9bb2f68e0dda1365 (patch)
tree4e577a25fadedb054e58921a1ced00941d488c90 /sigmodr/widgets/SpriteUI.cpp
parent4ed55e72070115125732f5125d3da8efd09ffb2b (diff)
Made the rest of the widgets use pimpl
Diffstat (limited to 'sigmodr/widgets/SpriteUI.cpp')
-rw-r--r--sigmodr/widgets/SpriteUI.cpp87
1 files changed, 46 insertions, 41 deletions
diff --git a/sigmodr/widgets/SpriteUI.cpp b/sigmodr/widgets/SpriteUI.cpp
index d17dd98a..7def532f 100644
--- a/sigmodr/widgets/SpriteUI.cpp
+++ b/sigmodr/widgets/SpriteUI.cpp
@@ -17,6 +17,7 @@
// Header include
#include "SpriteUI.h"
+#include "SpriteUI_p.h"
// Sigmod includes
#include <sigmod/Game.h>
@@ -31,68 +32,72 @@
#include <KIO/NetAccess>
// Qt includes
-#include <QtCore/QFile>
#include <QtGui/QLabel>
-#include <QtGui/QVBoxLayout>
-#include <QtUiTools/QUiLoader>
using namespace Sigmod;
using namespace Sigmodr::Widgets;
SpriteUI::SpriteUI(Sprite* sprite, QWidget* parent) :
- ObjectUI(parent)
+ ObjectUI(sprite, parent),
+ d(new Private(new Sprite(*sprite)))
{
- setObjects(sprite, new Sprite(*sprite));
+ setWidget(d->makeWidgets(this));
}
-void SpriteUI::initGui()
+void SpriteUI::apply()
{
- QFile file(":/gui/sprite.ui");
- file.open(QFile::ReadOnly);
- QWidget *formWidget = QUiLoader().load(&file, this);
- file.close();
- ui_name = formWidget->findChild<KLineEdit*>("varName");
- ui_sprite = formWidget->findChild<QLabel*>("varSprite");
- KPushButton* buttonBrowse = formWidget->findChild<KPushButton*>("buttonBrowse");
- connect(ui_name, SIGNAL(textChanged(QString)), this, SLOT(nameChanged(QString)));
- connect(buttonBrowse, SIGNAL(toggled(bool)), this, SLOT(browse()));
- buttonBrowse->setIcon(KIcon("document-open"));
- QVBoxLayout* layout = new QVBoxLayout;
- layout->addWidget(formWidget);
- setLayout(layout);
+ *qobject_cast<Sprite*>(m_object) = *d->m_sprite;
+ ObjectUI::apply();
}
-void SpriteUI::setGui()
+void SpriteUI::discard()
{
- ui_name->setText(qobject_cast<Sprite*>(modified())->name());
- QPixmap icon;
- icon.loadFromData(qobject_cast<Sprite*>(modified())->sprite());
- ui_sprite->setPixmap(icon);
+ *d->m_sprite = *qobject_cast<Sprite*>(m_object);
+ d->resetGui();
+ ObjectUI::discard();
}
-void SpriteUI::apply()
+SpriteUI::Private::Private(Sprite* sprite) :
+ ObjectUIPrivate(sprite),
+ m_sprite(sprite)
{
- *qobject_cast<Sprite*>(original()) = *qobject_cast<Sprite*>(modified());
- emit(changed(false));
}
-void SpriteUI::discard()
+SpriteUI::Private::~Private()
+{
+ delete m_sprite;
+}
+
+QWidget* SpriteUI::Private::makeWidgets(ObjectUI* widget)
{
- *qobject_cast<Sprite*>(modified()) = *qobject_cast<Sprite*>(original());
- setGui();
- emit(changed(false));
+ QWidget *form = openUiFile(":/gui/sprite.ui", widget);
+ ui_name = form->findChild<KLineEdit*>("varName");
+ ui_sprite = form->findChild<QLabel*>("varSprite");
+ KPushButton* buttonBrowse = form->findChild<KPushButton*>("buttonBrowse");
+ connect(ui_name, SIGNAL(textChanged(QString)), this, SLOT(nameChanged(QString)));
+ connect(buttonBrowse, SIGNAL(clicked(bool)), this, SLOT(browse()));
+ buttonBrowse->setIcon(KIcon("document-open"));
+ return form;
+}
+
+void SpriteUI::Private::resetGui()
+{
+ ui_name->setText(m_sprite->name());
+ QPixmap icon;
+ icon.loadFromData(m_sprite->sprite());
+ ui_sprite->setPixmap(icon);
}
-void SpriteUI::nameChanged(const QString& name)
+void SpriteUI::Private::nameChanged(const QString& name)
{
const int cursor = ui_name->cursorPosition();
- qobject_cast<Sprite*>(modified())->setName(name);
+ m_sprite->setName(name);
ui_name->setCursorPosition(cursor);
}
-void SpriteUI::browse()
+void SpriteUI::Private::browse()
{
- KFileDialog* dialog = new KFileDialog(KUrl("kfiledialog:///image"), "image/png image/jpeg image/tiff image/bmp image/gif", this);
+ KFileDialog* dialog = new KFileDialog(KUrl("kfiledialog:///image"), "image/png image/jpeg image/tiff image/bmp image/gif", NULL);
dialog->setCaption("Use Image File");
dialog->setOperationMode(KFileDialog::Opening);
dialog->setPreviewWidget(new KImageFilePreview);
@@ -108,29 +113,29 @@ void SpriteUI::browse()
path = url.path();
else
{
- if (KIO::NetAccess::download(url, path, this))
+ if (KIO::NetAccess::download(url, path, NULL))
removeTempFile = true;
else
{
- KMessageBox::error(this, KIO::NetAccess::lastErrorString(), "KIO Error");
+ KMessageBox::error(NULL, KIO::NetAccess::lastErrorString(), "KIO Error");
load = false;
}
}
if (load)
{
- QImage image(url.path());
+ QPixmap image(url.path());
QByteArray bytes;
QBuffer buffer(&bytes);
buffer.open(QIODevice::WriteOnly);
image.save(&buffer);
- qobject_cast<Sprite*>(modified())->setSprite(bytes);
- setGui();
+ ui_sprite->setPixmap(image);
+ m_sprite->setSprite(bytes);
}
if (removeTempFile)
KIO::NetAccess::removeTempFile(path);
}
else
- KMessageBox::error(this, "The URL is not valid", "Malformed URL");
+ KMessageBox::error(NULL, "The URL is not valid", "Malformed URL");
}
delete dialog;
}