summaryrefslogtreecommitdiffstats
path: root/sigmodr/SpriteUI.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'sigmodr/SpriteUI.cpp')
-rw-r--r--sigmodr/SpriteUI.cpp40
1 files changed, 33 insertions, 7 deletions
diff --git a/sigmodr/SpriteUI.cpp b/sigmodr/SpriteUI.cpp
index 19562b4c..4edd38f1 100644
--- a/sigmodr/SpriteUI.cpp
+++ b/sigmodr/SpriteUI.cpp
@@ -25,6 +25,8 @@
// KDE includes
#include <KFileDialog>
#include <KImageFilePreview>
+#include <KMessageBox>
+#include <KIO/NetAccess>
Sigmodr::SpriteUI::SpriteUI(Sigmod::Sprite* sprite, QWidget* parent) :
ObjectUI(parent)
@@ -37,12 +39,15 @@ Sigmodr::SpriteUI::~SpriteUI()
{
}
+void Sigmodr::SpriteUI::initGui()
+{
+ buttonBrowse->setIcon(KIcon("document-open"));
+}
+
void Sigmodr::SpriteUI::setGui()
{
- const QImage sprite = qobject_cast<Sigmod::Sprite*>(modified())->sprite();
varName->setText(qobject_cast<Sigmod::Sprite*>(modified())->name());
- varSprite->setIcon(QPixmap::fromImage(sprite));
- varSprite->setMinimumSize(sprite.size());
+ varSprite->setPixmap(QPixmap::fromImage(qobject_cast<Sigmod::Sprite*>(modified())->sprite()));
}
void Sigmodr::SpriteUI::apply()
@@ -65,16 +70,37 @@ void Sigmodr::SpriteUI::on_varName_textChanged(const QString& name)
varName->setCursorPosition(cursor);
}
-void Sigmodr::SpriteUI::on_varSprite_pressed()
+void Sigmodr::SpriteUI::on_buttonBrowse_pressed()
{
- KFileDialog* dialog = new KFileDialog(KUrl("kfiledialog:///image"), "image/*|Image files", NULL);
+ KFileDialog* dialog = new KFileDialog(KUrl("kfiledialog:///image"), "image/png image/jpeg image/tiff image/bmp image/gif", this);
dialog->setCaption("Use Image File");
dialog->setOperationMode(KFileDialog::Opening);
dialog->setPreviewWidget(new KImageFilePreview);
if (dialog->exec() == QDialog::Accepted)
{
- qobject_cast<Sigmod::Sprite*>(modified())->setSprite(QImage(dialog->selectedFile()));
- setGui();
+ KUrl url = dialog->selectedFile();
+ if (url.isValid())
+ {
+ if (url.isLocalFile())
+ {
+ qobject_cast<Sigmod::Sprite*>(modified())->setSprite(QImage(url.path()));
+ setGui();
+ }
+ else
+ {
+ QString path;
+ if (KIO::NetAccess::download(url, path, this))
+ {
+ qobject_cast<Sigmod::Sprite*>(modified())->setSprite(QImage(path));
+ setGui();
+ KIO::NetAccess::removeTempFile(path);
+ }
+ else
+ KMessageBox::error(this, KIO::NetAccess::lastErrorString(), "KIO Error");
+ }
+ }
+ else
+ KMessageBox::error(this, "The URL is not valid", "Malformed URL");
}
delete dialog;
}