diff options
Diffstat (limited to 'sigmodr/SpriteUI.cpp')
| -rw-r--r-- | sigmodr/SpriteUI.cpp | 40 |
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; } |
