Change default wallpaper.

This commit is contained in:
John Preston 2021-07-23 12:16:33 +03:00
parent 9943f8a093
commit 8f478b86ee
10 changed files with 34 additions and 14 deletions

Binary file not shown.

After

Width:  |  Height:  |  Size: 103 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 105 KiB

View file

@ -42,7 +42,7 @@
<file alias="js/script.js">../../export_html/js/script.js</file> <file alias="js/script.js">../../export_html/js/script.js</file>
</qresource> </qresource>
<qresource prefix="/gui"> <qresource prefix="/gui">
<file alias="art/bg.jpg">../../art/bg.jpg</file> <file alias="art/background.jpg">../../art/background.jpg</file>
<file alias="art/bg_initial.jpg">../../art/bg_initial.jpg</file> <file alias="art/bg_initial.jpg">../../art/bg_initial.jpg</file>
<file alias="art/logo_256.png">../../art/logo_256.png</file> <file alias="art/logo_256.png">../../art/logo_256.png</file>
<file alias="art/logo_256_no_margin.png">../../art/logo_256_no_margin.png</file> <file alias="art/logo_256_no_margin.png">../../art/logo_256_no_margin.png</file>

View file

@ -239,8 +239,9 @@ void BackgroundBox::Inner::sortPapers() {
return std::make_tuple( return std::make_tuple(
data.id() == current, data.id() == current,
night ? data.isDark() : !data.isDark(), night ? data.isDark() : !data.isDark(),
!data.isDefault() && !data.isLocal(), !data.isDefault() && !Data::IsLegacy1DefaultWallPaper(data),
!data.isDefault() && data.isLocal()); Data::IsLegacy2DefaultWallPaper(data),
Data::IsLegacy1DefaultWallPaper(data));
}); });
if (!_papers.empty() && _papers.front().data.id() == current) { if (!_papers.empty() && _papers.front().data.id() == current) {
_papers.front().data = _papers.front().data.withParamsFrom( _papers.front().data = _papers.front().data.withParamsFrom(
@ -366,6 +367,7 @@ void BackgroundBox::Inner::paintPaper(
_check->paint(p, checkLeft, checkTop, width()); _check->paint(p, checkLeft, checkTop, width());
} else if (Data::IsCloudWallPaper(paper.data) } else if (Data::IsCloudWallPaper(paper.data)
&& !Data::IsDefaultWallPaper(paper.data) && !Data::IsDefaultWallPaper(paper.data)
&& !Data::IsLegacy2DefaultWallPaper(paper.data)
&& !v::is_null(over) && !v::is_null(over)
&& (&paper == &_papers[getSelectionIndex(over)])) { && (&paper == &_papers[getSelectionIndex(over)])) {
const auto deleteSelected = v::is<DeleteSelected>(over); const auto deleteSelected = v::is<DeleteSelected>(over);
@ -395,6 +397,7 @@ void BackgroundBox::Inner::mouseMoveEvent(QMouseEvent *e) {
} else if (result >= _papers.size()) { } else if (result >= _papers.size()) {
return Selection(); return Selection();
} }
auto &data = _papers[result].data;
const auto deleteLeft = (column + 1) * (width + skip) const auto deleteLeft = (column + 1) * (width + skip)
- st::stickerPanDeleteIconBg.width(); - st::stickerPanDeleteIconBg.width();
const auto deleteBottom = row * (height + skip) + skip const auto deleteBottom = row * (height + skip) + skip
@ -402,9 +405,10 @@ void BackgroundBox::Inner::mouseMoveEvent(QMouseEvent *e) {
const auto currentId = Window::Theme::Background()->id(); const auto currentId = Window::Theme::Background()->id();
const auto inDelete = (x >= deleteLeft) const auto inDelete = (x >= deleteLeft)
&& (y < deleteBottom) && (y < deleteBottom)
&& Data::IsCloudWallPaper(_papers[result].data) && Data::IsCloudWallPaper(data)
&& !Data::IsDefaultWallPaper(_papers[result].data) && !Data::IsDefaultWallPaper(data)
&& (currentId != _papers[result].data.id()); && !Data::IsLegacy2DefaultWallPaper(data)
&& (currentId != data.id());
return (result >= _papers.size()) return (result >= _papers.size())
? Selection() ? Selection()
: inDelete : inDelete

View file

@ -4155,10 +4155,19 @@ void Session::setWallpapers(const QVector<MTPWallPaper> &data, int32 hash) {
_wallpapers.push_back(*parsed); _wallpapers.push_back(*parsed);
} }
} }
// Put the legacy2 (flowers) wallpaper to the front of the list.
const auto legacy2 = ranges::find_if(
_wallpapers,
Data::IsLegacy2DefaultWallPaper);
if (legacy2 != end(_wallpapers)) {
ranges::rotate(begin(_wallpapers), legacy2, legacy2 + 1);
}
if (ranges::none_of(_wallpapers, Data::IsDefaultWallPaper)) { if (ranges::none_of(_wallpapers, Data::IsDefaultWallPaper)) {
_wallpapers.push_back(Data::DefaultWallPaper()); _wallpapers.push_back(Data::DefaultWallPaper());
_wallpapers.back().setLocalImageAsThumbnail(std::make_shared<Image>( _wallpapers.back().setLocalImageAsThumbnail(std::make_shared<Image>(
u":/gui/arg/bg.jpg"_q)); u":/gui/art/background.jpg"_q));
} }
} }

View file

@ -28,7 +28,8 @@ constexpr auto kTestingEditorBackground = FromLegacyBackgroundId(-664);
constexpr auto kThemeBackground = FromLegacyBackgroundId(-2); constexpr auto kThemeBackground = FromLegacyBackgroundId(-2);
constexpr auto kCustomBackground = FromLegacyBackgroundId(-1); constexpr auto kCustomBackground = FromLegacyBackgroundId(-1);
constexpr auto kLegacy1DefaultBackground = FromLegacyBackgroundId(0); constexpr auto kLegacy1DefaultBackground = FromLegacyBackgroundId(0);
constexpr auto kDefaultBackground = 5947530738516623361; constexpr auto kLegacy2DefaultBackground = 5947530738516623361;
constexpr auto kDefaultBackground = 5778236420632084488;
constexpr auto kIncorrectDefaultBackground = FromLegacyBackgroundId(105); constexpr auto kIncorrectDefaultBackground = FromLegacyBackgroundId(105);
quint32 SerializeMaybeColor(std::optional<QColor> color) { quint32 SerializeMaybeColor(std::optional<QColor> color) {
@ -497,13 +498,17 @@ bool IsLegacy1DefaultWallPaper(const WallPaper &paper) {
return (paper.id() == kLegacy1DefaultBackground); return (paper.id() == kLegacy1DefaultBackground);
} }
bool IsLegacy2DefaultWallPaper(const WallPaper &paper) {
return (paper.id() == kLegacy2DefaultBackground)
|| (paper.id() == kIncorrectDefaultBackground);
}
WallPaper DefaultWallPaper() { WallPaper DefaultWallPaper() {
return WallPaper(kDefaultBackground); return WallPaper(kDefaultBackground);
} }
bool IsDefaultWallPaper(const WallPaper &paper) { bool IsDefaultWallPaper(const WallPaper &paper) {
return (paper.id() == kDefaultBackground) return (paper.id() == kDefaultBackground);
|| (paper.id() == kIncorrectDefaultBackground);
} }
bool IsCloudWallPaper(const WallPaper &paper) { bool IsCloudWallPaper(const WallPaper &paper) {

View file

@ -98,6 +98,7 @@ private:
[[nodiscard]] bool IsCustomWallPaper(const WallPaper &paper); [[nodiscard]] bool IsCustomWallPaper(const WallPaper &paper);
[[nodiscard]] WallPaper Legacy1DefaultWallPaper(); [[nodiscard]] WallPaper Legacy1DefaultWallPaper();
[[nodiscard]] bool IsLegacy1DefaultWallPaper(const WallPaper &paper); [[nodiscard]] bool IsLegacy1DefaultWallPaper(const WallPaper &paper);
[[nodiscard]] bool IsLegacy2DefaultWallPaper(const WallPaper &paper);
[[nodiscard]] WallPaper DefaultWallPaper(); [[nodiscard]] WallPaper DefaultWallPaper();
[[nodiscard]] bool IsDefaultWallPaper(const WallPaper &paper); [[nodiscard]] bool IsDefaultWallPaper(const WallPaper &paper);
[[nodiscard]] bool IsCloudWallPaper(const WallPaper &paper); [[nodiscard]] bool IsCloudWallPaper(const WallPaper &paper);

View file

@ -682,9 +682,10 @@ bool readBackground() {
const auto isOldEmptyImage = (bg.stream.status() != QDataStream::Ok); const auto isOldEmptyImage = (bg.stream.status() != QDataStream::Ok);
if (isOldEmptyImage if (isOldEmptyImage
|| Data::IsLegacy1DefaultWallPaper(*paper) || Data::IsLegacy1DefaultWallPaper(*paper)
|| (Data::IsLegacy2DefaultWallPaper(*paper) && bg.version < 2008012)
|| Data::IsDefaultWallPaper(*paper)) { || Data::IsDefaultWallPaper(*paper)) {
_backgroundCanWrite = false; _backgroundCanWrite = false;
if (isOldEmptyImage || bg.version < 8005) { if (isOldEmptyImage || bg.version < 2008012) {
Window::Theme::Background()->set(Data::DefaultWallPaper()); Window::Theme::Background()->set(Data::DefaultWallPaper());
Window::Theme::Background()->setTile(false); Window::Theme::Background()->setTile(false);
} else { } else {

View file

@ -654,7 +654,7 @@ void ChatBackground::set(const Data::WallPaper &paper, QImage image) {
|| Data::details::IsTestingEditorWallPaper(_paper)) { || Data::details::IsTestingEditorWallPaper(_paper)) {
if (Data::details::IsTestingDefaultWallPaper(_paper) if (Data::details::IsTestingDefaultWallPaper(_paper)
|| image.isNull()) { || image.isNull()) {
image.load(qsl(":/gui/art/bg.jpg")); image.load(qsl(":/gui/art/background.jpg"));
setPaper(Data::details::TestingDefaultWallPaper()); setPaper(Data::details::TestingDefaultWallPaper());
} }
image = validateBackgroundImage(std::move(image)); image = validateBackgroundImage(std::move(image));
@ -671,7 +671,7 @@ void ChatBackground::set(const Data::WallPaper &paper, QImage image) {
} else if (Data::IsDefaultWallPaper(_paper) } else if (Data::IsDefaultWallPaper(_paper)
|| (!_paper.backgroundColor() && image.isNull())) { || (!_paper.backgroundColor() && image.isNull())) {
setPaper(Data::DefaultWallPaper().withParamsFrom(_paper)); setPaper(Data::DefaultWallPaper().withParamsFrom(_paper));
image.load(qsl(":/gui/art/bg.jpg")); image.load(qsl(":/gui/art/background.jpg"));
} }
Local::writeBackground( Local::writeBackground(
_paper, _paper,

View file

@ -416,7 +416,7 @@ void Generator::paintHistoryBackground() {
if (background.isNull()) { if (background.isNull()) {
const auto fakePaper = Data::WallPaper(_current.backgroundId); const auto fakePaper = Data::WallPaper(_current.backgroundId);
if (Data::IsThemeWallPaper(fakePaper)) { if (Data::IsThemeWallPaper(fakePaper)) {
background.load(qsl(":/gui/art/bg.jpg")); background.load(qsl(":/gui/art/background.jpg"));
tiled = false; tiled = false;
} else { } else {
background = std::move(_current.backgroundImage); background = std::move(_current.backgroundImage);