diff options
author | Henry Hu <henry.hu.sh@gmail.com> | 2016-05-12 03:45:03 -0400 |
---|---|---|
committer | Henry Hu <henry.hu.sh@gmail.com> | 2016-05-12 03:45:03 -0400 |
commit | 8f0f9a0ef707799cef942170243d6bc28a86b577 (patch) | |
tree | ff76add4fc5e19071d4283ba8b35848bd204cd63 /src-qt5/core | |
parent | Merge branch 'master' of github.com:pcbsd/lumina (diff) | |
download | lumina-8f0f9a0ef707799cef942170243d6bc28a86b577.tar.gz lumina-8f0f9a0ef707799cef942170243d6bc28a86b577.tar.bz2 lumina-8f0f9a0ef707799cef942170243d6bc28a86b577.zip |
add 2 options for background image: fit and full
Diffstat (limited to 'src-qt5/core')
-rw-r--r-- | src-qt5/core/lumina-desktop/LDesktop.cpp | 30 |
1 files changed, 30 insertions, 0 deletions
diff --git a/src-qt5/core/lumina-desktop/LDesktop.cpp b/src-qt5/core/lumina-desktop/LDesktop.cpp index 72b267b0..5f959629 100644 --- a/src-qt5/core/lumina-desktop/LDesktop.cpp +++ b/src-qt5/core/lumina-desktop/LDesktop.cpp @@ -509,9 +509,39 @@ void LDesktop::UpdateBackground(){ }else if( format == "bottomleft"){ style = "QWidget#bgWindow{ background: black url(%1); background-position: bottom left; background-repeat: no-repeat; }"; }else if( format == "bottomright"){ style = "QWidget#bgWindow{ background: black url(%1); background-position: bottom right; background-repeat: no-repeat; }"; }else if( format == "tile"){ style = "QWidget#bgWindow{ background-color: black; border-image:url(%1) repeat;}"; + }else if( format == "full" || format == "fit") { style = ""; }else{ /* STRETCH*/ style = "QWidget#bgWindow{ background-color: black; border-image:url(%1) stretch;}"; } style = style.arg(bgFile); bgWindow->setStyleSheet(style); + if(!bgFile.startsWith("rgb(") && (format == "full" || format == "fit")){ + // Load the background file and scale + QPixmap background(bgFile); + Qt::AspectRatioMode mode; + if (format == "full") { + mode = Qt::KeepAspectRatioByExpanding; + } else { + mode = Qt::KeepAspectRatio; + } + background = background.scaled(bgWindow->size(), mode); + // Put the image at the center (for fit) + int dx = 0, dy = 0; + if (background.width() < bgWindow->width()) { + dx = (bgWindow->width() - background.width()) / 2; + } + if (background.height() < bgWindow->height()) { + dy = (bgWindow->height() - background.height()) / 2; + } + QPixmap fullBg(bgWindow->size()); + fullBg.fill(Qt::black); + QPainter painter(&fullBg); + painter.setBrush(background); + painter.setBrushOrigin(dx, dy); + painter.drawRect(dx, dy, background.width(), background.height()); + // Set the background + QPalette palette; + palette.setBrush(QPalette::Background, fullBg); + bgWindow->setPalette(palette); + } bgWindow->show(); //Now reset the timer for the next change (if appropriate) if(bgtimer->isActive()){ bgtimer->stop(); } |