Image::Image(QObject *parent) : QObject(parent), m_ready(false), m_delay(10), m_dirWatch(new KDirWatch(this)), m_mode(SingleImage), m_currentSlide(-1), m_model(0), m_dialog(0), m_width(0), m_height(0) { m_wallpaperPackage = KPackage::PackageLoader::self()->loadPackage(QStringLiteral("Wallpaper/Images")); connect(&m_timer, &QTimer::timeout, this, &Image::nextSlide); connect(m_dirWatch, &KDirWatch::created, this, &Image::pathCreated); connect(m_dirWatch, &KDirWatch::dirty, this, &Image::pathDirty); connect(m_dirWatch, &KDirWatch::deleted, this, &Image::pathDeleted); m_dirWatch->startScan(); connect(this, &Image::sizeChanged, this, &Image::setTargetSize); useSingleImageDefaults(); setSingleImage(); }
void Image::componentComplete() { // don't bother loading single image until all properties have settled // otherwise we would load a too small image (initial view size) just // to load the proper one afterwards etc etc m_ready = true; if (m_mode == SingleImage) { setSingleImage(); } }
void Image::init(const KConfigGroup &config) { m_timer.stop(); if (renderingMode().name().isEmpty()) { m_mode = "SingleImage"; } else { m_mode = renderingMode().name(); } calculateGeometry(); m_delay = config.readEntry("slideTimer", 10); setResizeMethodHint((ResizeMethod)config.readEntry("wallpaperposition", (int)ScaledResize)); m_wallpaper = config.readEntry("wallpaper", QString()); if (m_wallpaper.isEmpty()) { useSingleImageDefaults(); } m_color = config.readEntry("wallpapercolor", QColor(Qt::black)); m_usersWallpapers = config.readEntry("userswallpapers", QStringList()); m_dirs = config.readEntry("slidepaths", QStringList()); if (m_dirs.isEmpty()) { m_dirs << KStandardDirs::installPath("wallpaper"); } setUsingRenderingCache(m_mode == "SingleImage"); if (m_mode == "SingleImage") { setSingleImage(); setContextualActions(QList<QAction*>()); } else { m_nextWallpaperAction = new QAction(KIcon("user-desktop"), i18n("Next Wallpaper Image"), this); connect(m_nextWallpaperAction, SIGNAL(triggered(bool)), this, SLOT(nextSlide())); m_openImageAction = new QAction(KIcon("document-open"), i18n("Open Wallpaper Image"), this); connect(m_openImageAction, SIGNAL(triggered(bool)), this, SLOT(openSlide())); QTimer::singleShot(200, this, SLOT(startSlideshow())); QList<QAction*> actions; actions.push_back(m_nextWallpaperAction); actions.push_back(m_openImageAction); setContextualActions(actions); updateWallpaperActions(); } m_animation = new QPropertyAnimation(this, "fadeValue"); m_animation->setProperty("easingCurve", QEasingCurve::InQuad); m_animation->setProperty("duration", 500); m_animation->setProperty("startValue", 0.0); m_animation->setProperty("endValue", 1.0); }
void Image::setRenderingMode(RenderingMode mode) { if (mode == m_mode) { return; } m_mode = mode; if (m_mode == SlideShow) { if (m_slidePaths.isEmpty()) { m_slidePaths << QStandardPaths::locateAll(QStandardPaths::GenericDataLocation, QStringLiteral("share/wallpapers"), QStandardPaths::LocateDirectory); } QTimer::singleShot(200, this, &Image::startSlideshow); updateDirWatch(m_slidePaths); updateDirWatch(m_slidePaths); } else { // we need to reset the prefered image setSingleImage(); } }