diff options
Diffstat (limited to 'weather/src/loading.cpp')
-rw-r--r-- | weather/src/loading.cpp | 77 |
1 files changed, 77 insertions, 0 deletions
diff --git a/weather/src/loading.cpp b/weather/src/loading.cpp new file mode 100644 index 0000000..02750f9 --- /dev/null +++ b/weather/src/loading.cpp @@ -0,0 +1,77 @@ +#include "loading.h" +#include "pixmaploader.h" + +// Loading + +struct ProgressImageData +{ + const char * const name; + QPixmap pic() const { return PixmapLoader::getPic(name); } + QRectF getRect() + { + QPixmap pixmap = pic(); + return QRectF(0.0, 0.0, pixmap.width(), pixmap.height()); + } +}; + +static const int ProgressImageCount = 25; +static ProgressImageData ProgressImageArray[ProgressImageCount] = { + {"loading_1"}, + {"loading_2"}, + {"loading_3"}, + {"loading_4"}, + {"loading_5"}, + {"loading_6"}, + {"loading_7"}, + {"loading_8"}, + {"loading_9"}, + {"loading_10"}, + {"loading_11"}, + {"loading_12"}, + {"loading_13"}, + {"loading_14"}, + {"loading_15"}, + {"loading_16"}, + {"loading_17"}, + {"loading_18"}, + {"loading_19"}, + {"loading_20"}, + {"loading_21"}, + {"loading_22"}, + {"loading_23"}, + {"loading_24"}, + {"loading_25"} +}; + +void Loading::loadImages() +{ + for (int i = 0; i < ProgressImageCount; ++i) + PixmapLoader::load(ProgressImageArray[i].name); +} + +Loading::Loading(QGraphicsItem *parent) + : QGraphicsItem(parent) + , m_image(0) + , m_boundingRect(ProgressImageArray[m_image].getRect()) +{ +} + +QRectF Loading::boundingRect () const +{ + return m_boundingRect; +} + +void Loading::paint(QPainter *painter, const QStyleOptionGraphicsItem *opt, QWidget *widget) +{ + Q_UNUSED(opt); + Q_UNUSED(widget); + painter->drawPixmap(0, 0, ProgressImageArray[m_image].pic()); +} + +void Loading::timerEvent(QTimerEvent *event) +{ + Q_UNUSED(event); + ++m_image; + m_image %= ProgressImageCount; + update(); +} |