Default background changed to green, "video file" -> "video" in lang.
Before Width: | Height: | Size: 260 KiB After Width: | Height: | Size: 105 KiB |
Before Width: | Height: | Size: 197 KiB After Width: | Height: | Size: 197 KiB |
|
@ -103,7 +103,7 @@ boxLabel: flatLabel(labelDefFlat) {
|
|||
defaultLeftOutlineButton: OutlineButton {
|
||||
outlineWidth: 3px;
|
||||
outlineFg: windowBg;
|
||||
outlineFgOver: windowActiveFill;
|
||||
outlineFgOver: windowActiveBg;
|
||||
|
||||
textBg: windowBg;
|
||||
textBgOver: #f2f7fa;
|
||||
|
@ -180,7 +180,7 @@ defaultCheckbox: Checkbox {
|
|||
checkBg: #ffffff;
|
||||
checkFg: #b3b3b3;
|
||||
checkFgOver: #b3b3b3;
|
||||
checkFgActive: windowActiveFill;
|
||||
checkFgActive: windowActiveBg;
|
||||
|
||||
width: -44px;
|
||||
height: 22px;
|
||||
|
@ -188,7 +188,7 @@ defaultCheckbox: Checkbox {
|
|||
textPosition: point(32px, 2px);
|
||||
diameter: 22px;
|
||||
thickness: 2px;
|
||||
checkIcon: icon {{ "default_checkbox_check", #ffffff, point(4px, 7px) }};
|
||||
checkIcon: icon {{ "default_checkbox_check", windowActiveFg, point(4px, 7px) }};
|
||||
|
||||
font: normalFont;
|
||||
duration: 120;
|
||||
|
@ -655,7 +655,7 @@ msgFileThumbLinkOutFgSelected: #31a298;
|
|||
msgFileNameTop: 16px;
|
||||
msgFileStatusTop: 37px;
|
||||
msgFileMinWidth: 294px;
|
||||
msgFileInBg: windowActiveFill;
|
||||
msgFileInBg: windowActiveBg;
|
||||
msgFileInBgOver: #4eade3;
|
||||
msgFileInBgSelected: #51a3d3;
|
||||
msgFileOutBg: #78c67f;
|
||||
|
@ -671,7 +671,7 @@ msgWaveformBar: 2px;
|
|||
msgWaveformSkip: 1px;
|
||||
msgWaveformMin: 2px;
|
||||
msgWaveformMax: 20px;
|
||||
msgWaveformInActive: windowActiveFill;
|
||||
msgWaveformInActive: windowActiveBg;
|
||||
msgWaveformInActiveSelected: #51a3d3;
|
||||
msgWaveformInInactive: #d4dee6;
|
||||
msgWaveformInInactiveSelected: #9cc1e1;
|
||||
|
|
|
@ -23,19 +23,20 @@ Copyright (c) 2014-2016 John Preston, https://desktop.telegram.org
|
|||
windowBg: #ffffff; // white: fallback for background
|
||||
windowTextFg: #000000; // black: fallback for text color
|
||||
windowSubTextFg: #999999; // gray: fallback for subtext color
|
||||
windowActiveFill: #40ace3; // bright blue: fallback for blue filled active areas
|
||||
windowActiveBg: #40ace3; // bright blue: fallback for blue filled active areas
|
||||
windowActiveFg: #ffffff; // text on bright blue: fallback for text on active areas
|
||||
windowOverBg: #f0f0f0; // light gray: fallback for over background
|
||||
windowSubTextFgOver: #7c99b2; // gray over light blue: fallback for subtext over color
|
||||
windowActiveTextFg: #1485c2; // online blue: fallback for active color
|
||||
windowActiveTextFg: #2687bf; // online blue: fallback for active color
|
||||
windowShadowFg: #000000; // black: fallback for shadow color
|
||||
|
||||
imageBg: #000000;
|
||||
imageBgTransparent: #ffffff;
|
||||
|
||||
// widgets
|
||||
activeButtonBg: windowActiveFill;
|
||||
activeButtonBg: windowActiveBg;
|
||||
activeButtonBgOver: #46b4eb;
|
||||
activeButtonFg: #ffffff;
|
||||
activeButtonFg: windowActiveFg;
|
||||
activeButtonFgOver: activeButtonFg;
|
||||
activeButtonSecondaryFg: #cceeff;
|
||||
activeButtonSecondaryFgOver: activeButtonSecondaryFg;
|
||||
|
@ -45,7 +46,8 @@ lightButtonBgOver: #edf7ff;
|
|||
lightButtonFg: #2b99d5;
|
||||
lightButtonFgOver: lightButtonFg;
|
||||
|
||||
menuIconFg: windowSubTextFg;
|
||||
menuIconFg: #a8a8a8;
|
||||
menuIconFgOver: #999999;
|
||||
|
||||
// custom title bar for Windows
|
||||
titleBg: windowOverBg;
|
||||
|
@ -95,7 +97,7 @@ settingsCloseFgOver: cancelIconFgOver;
|
|||
|
||||
notificationsBoxMonitorFg: windowTextFg;
|
||||
|
||||
notificationSampleUserpicFg: windowActiveFill;
|
||||
notificationSampleUserpicFg: windowActiveBg;
|
||||
notificationSampleCloseFg: #d7d7d7 | windowSubTextFg;
|
||||
notificationSampleTextFg: #d7d7d7 | windowSubTextFg;
|
||||
notificationSampleNameFg: #939393 | windowSubTextFg;
|
||||
|
@ -106,6 +108,7 @@ introErrorFg: windowTextFg;
|
|||
|
||||
// dialogs
|
||||
dialogsMenuIconFg: menuIconFg;
|
||||
dialogsMenuIconFgOver: menuIconFgOver;
|
||||
|
||||
dialogsBg: windowBg;
|
||||
dialogsNameFg: #373737;
|
||||
|
@ -118,7 +121,7 @@ dialogsVerifiedIconBg: #4abcf1;
|
|||
dialogsVerifiedIconFg: #ffffff;
|
||||
dialogsSendingIconFg: #c1c1c1;
|
||||
dialogsSentIconFg: #5dc452;
|
||||
dialogsUnreadBg: windowActiveFill;
|
||||
dialogsUnreadBg: windowActiveBg;
|
||||
dialogsUnreadBgMuted: #bbbbbb;
|
||||
dialogsUnreadFg: #ffffff;
|
||||
|
||||
|
@ -137,22 +140,23 @@ dialogsUnreadBgOver: dialogsUnreadBg;
|
|||
dialogsUnreadBgMutedOver: dialogsUnreadBgMuted;
|
||||
dialogsUnreadFgOver: dialogsUnreadFg;
|
||||
|
||||
dialogsBgActive: dialogsBgOver;
|
||||
dialogsNameFgActive: dialogsNameFgOver;
|
||||
dialogsBgActive: #419fd9;
|
||||
dialogsNameFgActive: windowActiveFg;
|
||||
dialogsChatIconFgActive: dialogsNameFgActive;
|
||||
dialogsDateFgActive: dialogsDateFgOver;
|
||||
dialogsTextFgActive: dialogsTextFgOver;
|
||||
dialogsTextFgServiceActive: dialogsTextFgServiceOver;
|
||||
dialogsDraftFgActive: dialogsDraftFgOver;
|
||||
dialogsVerifiedIconBgActive: dialogsVerifiedIconBgOver;
|
||||
dialogsVerifiedIconFgActive: dialogsVerifiedIconFgOver;
|
||||
dialogsSendingIconFgActive: dialogsSendingIconFgOver;
|
||||
dialogsSentIconFgActive: dialogsSentIconFgOver;
|
||||
dialogsUnreadBgActive: dialogsUnreadBgOver;
|
||||
dialogsUnreadBgMutedActive: dialogsUnreadBgMutedOver;
|
||||
dialogsUnreadFgActive: dialogsUnreadFgOver;
|
||||
dialogsDateFgActive: windowActiveFg;
|
||||
dialogsTextFgActive: windowActiveFg;
|
||||
dialogsTextFgServiceActive: dialogsTextFgActive;
|
||||
dialogsDraftFgActive: #c6e1f7;
|
||||
dialogsVerifiedIconBgActive: dialogsTextFgActive;
|
||||
dialogsVerifiedIconFgActive: dialogsBgActive;
|
||||
dialogsSendingIconFgActive: #ffffff99;
|
||||
dialogsSentIconFgActive: dialogsTextFgActive;
|
||||
dialogsUnreadBgActive: dialogsTextFgActive;
|
||||
dialogsUnreadBgMutedActive: #d3e2ee;
|
||||
dialogsUnreadFgActive: dialogsBgActive;
|
||||
|
||||
dialogsForwardFg: #ffffff;
|
||||
dialogsForwardBg: dialogsBgActive;
|
||||
dialogsForwardFg: dialogsNameFgActive;
|
||||
|
||||
// history
|
||||
topBarBg: windowBg;
|
||||
|
@ -163,8 +167,8 @@ emojiPanHeaderFg: #999999 | windowSubTextFg;
|
|||
emojiPanHeaderBg: #fffffff2 | emojiPanBg;
|
||||
|
||||
historyComposeAreaBg: windowBg;
|
||||
historyComposeIconFg: #cccccc;
|
||||
historyComposeIconFgOver: #bebebe;
|
||||
historyComposeIconFg: menuIconFg;
|
||||
historyComposeIconFgOver: menuIconFgOver;
|
||||
historyPinnedBg: historyComposeAreaBg;
|
||||
historyReplyBg: historyComposeAreaBg;
|
||||
historyReplyCancelIconFg: cancelIconFg;
|
||||
|
@ -172,7 +176,6 @@ historyReplyCancelIconFgOver: cancelIconFgOver;
|
|||
|
||||
historySendBg: historyComposeAreaBg;
|
||||
historySendBgOver: #f5f5f5 | historySendBg;
|
||||
historyMenuItemBgOver: historySendBgOver;
|
||||
|
||||
historyTextInFg: windowTextFg;
|
||||
historyTextOutFg: windowTextFg;
|
||||
|
|
Before Width: | Height: | Size: 408 B After Width: | Height: | Size: 444 B |
Before Width: | Height: | Size: 430 B After Width: | Height: | Size: 450 B |
|
@ -473,8 +473,8 @@ Copyright (c) 2014-2016 John Preston, https://desktop.telegram.org
|
|||
"lng_profile_no_media" = "No media in this conversation.";
|
||||
"lng_profile_photos" = "{count:_not_used_|# photo|# photos}";
|
||||
"lng_profile_photos_header" = "Photos overview";
|
||||
"lng_profile_videos" = "{count:_not_used_|# video file|# video files}";
|
||||
"lng_profile_videos_header" = "Video files overview";
|
||||
"lng_profile_videos" = "{count:_not_used_|# video|# videos}";
|
||||
"lng_profile_videos_header" = "Videos overview";
|
||||
"lng_profile_songs" = "{count:_not_used_|# audio file|# audio files}";
|
||||
"lng_profile_songs_header" = "Audio files overview";
|
||||
"lng_profile_files" = "{count:_not_used_|# file|# files}";
|
||||
|
@ -582,7 +582,7 @@ Copyright (c) 2014-2016 John Preston, https://desktop.telegram.org
|
|||
"lng_action_pinned_message" = "{from} pinned «{text}»";
|
||||
"lng_action_pinned_media" = "{from} pinned {media}";
|
||||
"lng_action_pinned_media_photo" = "a photo";
|
||||
"lng_action_pinned_media_video" = "a video file";
|
||||
"lng_action_pinned_media_video" = "a video";
|
||||
"lng_action_pinned_media_audio" = "an audio file";
|
||||
"lng_action_pinned_media_voice" = "a voice message";
|
||||
"lng_action_pinned_media_file" = "a file";
|
||||
|
@ -666,7 +666,7 @@ Copyright (c) 2014-2016 John Preston, https://desktop.telegram.org
|
|||
|
||||
"lng_media_type" = "Media type";
|
||||
"lng_media_type_photos" = "Photos";
|
||||
"lng_media_type_videos" = "Video files";
|
||||
"lng_media_type_videos" = "Videos";
|
||||
"lng_media_type_songs" = "Audio files";
|
||||
"lng_media_type_files" = "Files";
|
||||
"lng_media_type_audios" = "Voice messages";
|
||||
|
@ -675,7 +675,7 @@ Copyright (c) 2014-2016 John Preston, https://desktop.telegram.org
|
|||
"lng_media_open_with" = "Open With";
|
||||
"lng_media_download" = "Download";
|
||||
"lng_media_cancel" = "Cancel";
|
||||
"lng_media_video" = "Video file";
|
||||
"lng_media_video" = "Video";
|
||||
"lng_media_audio" = "Voice message";
|
||||
|
||||
"lng_media_auto_settings" = "Automatic media download settings";
|
||||
|
@ -730,7 +730,7 @@ Copyright (c) 2014-2016 John Preston, https://desktop.telegram.org
|
|||
"lng_stickers_masks_pack" = "This is a pack of mask stickers. You can use them in the photo editor on our mobile apps.";
|
||||
|
||||
"lng_in_dlg_photo" = "Photo";
|
||||
"lng_in_dlg_video" = "Video file";
|
||||
"lng_in_dlg_video" = "Video";
|
||||
"lng_in_dlg_audio_file" = "Audio file";
|
||||
"lng_in_dlg_contact" = "Contact";
|
||||
"lng_in_dlg_audio" = "Voice message";
|
||||
|
@ -825,7 +825,7 @@ Copyright (c) 2014-2016 John Preston, https://desktop.telegram.org
|
|||
|
||||
"lng_maps_point" = "Location";
|
||||
"lng_save_photo" = "Save image";
|
||||
"lng_save_video" = "Save video file";
|
||||
"lng_save_video" = "Save video";
|
||||
"lng_save_audio_file" = "Save audio file";
|
||||
"lng_save_audio" = "Save voice message";
|
||||
"lng_save_file" = "Save file";
|
||||
|
@ -853,7 +853,7 @@ Copyright (c) 2014-2016 John Preston, https://desktop.telegram.org
|
|||
"lng_context_cancel_download" = "Cancel Download";
|
||||
"lng_context_show_in_folder" = "Show in Folder";
|
||||
"lng_context_show_in_finder" = "Show in Finder";
|
||||
"lng_context_save_video" = "Save Video File As...";
|
||||
"lng_context_save_video" = "Save Video As...";
|
||||
"lng_context_save_audio_file" = "Save Audio File As...";
|
||||
"lng_context_save_audio" = "Save Voice Message As...";
|
||||
"lng_context_pack_info" = "Pack Info";
|
||||
|
|
|
@ -24,16 +24,17 @@
|
|||
windowBg: #ffffff;
|
||||
windowTextFg: #000000;
|
||||
windowSubTextFg: #999999;
|
||||
windowActiveFill: #40ace3;
|
||||
windowActiveBg: #40ace3;
|
||||
windowActiveFg: #ffffff;
|
||||
windowOverBg: #f0f0f0;
|
||||
windowSubTextFgOver: #7c99b2;
|
||||
windowActiveTextFg: #1485c2;
|
||||
windowActiveTextFg: #2687bf;
|
||||
windowShadowFg: #000000;
|
||||
imageBg: #000000;
|
||||
imageBgTransparent: #ffffff;
|
||||
activeButtonBg: windowActiveFill;
|
||||
activeButtonBg: windowActiveBg;
|
||||
activeButtonBgOver: #46b4eb;
|
||||
activeButtonFg: #ffffff;
|
||||
activeButtonFg: windowActiveFg;
|
||||
activeButtonFgOver: activeButtonFg;
|
||||
activeButtonSecondaryFg: #cceeff;
|
||||
activeButtonSecondaryFgOver: activeButtonSecondaryFg;
|
||||
|
@ -41,7 +42,8 @@ lightButtonBg: windowBg;
|
|||
lightButtonBgOver: #edf7ff;
|
||||
lightButtonFg: #2b99d5;
|
||||
lightButtonFgOver: lightButtonFg;
|
||||
menuIconFg: windowSubTextFg;
|
||||
menuIconFg: #a8a8a8;
|
||||
menuIconFgOver: #999999;
|
||||
titleBg: windowOverBg;
|
||||
titleShadow: #00000003;
|
||||
titleButtonFg: #ababab;
|
||||
|
@ -75,13 +77,14 @@ settingsFixedBarBg: boxBg;
|
|||
settingsCloseFg: cancelIconFg;
|
||||
settingsCloseFgOver: cancelIconFgOver;
|
||||
notificationsBoxMonitorFg: windowTextFg;
|
||||
notificationSampleUserpicFg: windowActiveFill;
|
||||
notificationSampleUserpicFg: windowActiveBg;
|
||||
notificationSampleCloseFg: #d7d7d7; // windowSubTextFg;
|
||||
notificationSampleTextFg: #d7d7d7; // windowSubTextFg;
|
||||
notificationSampleNameFg: #939393; // windowSubTextFg;
|
||||
introHeaderFg: windowTextFg;
|
||||
introErrorFg: windowTextFg;
|
||||
dialogsMenuIconFg: menuIconFg;
|
||||
dialogsMenuIconFgOver: menuIconFgOver;
|
||||
dialogsBg: windowBg;
|
||||
dialogsNameFg: #373737;
|
||||
dialogsChatIconFg: dialogsNameFg;
|
||||
|
@ -93,7 +96,7 @@ dialogsVerifiedIconBg: #4abcf1;
|
|||
dialogsVerifiedIconFg: #ffffff;
|
||||
dialogsSendingIconFg: #c1c1c1;
|
||||
dialogsSentIconFg: #5dc452;
|
||||
dialogsUnreadBg: windowActiveFill;
|
||||
dialogsUnreadBg: windowActiveBg;
|
||||
dialogsUnreadBgMuted: #bbbbbb;
|
||||
dialogsUnreadFg: #ffffff;
|
||||
dialogsBgOver: windowOverBg;
|
||||
|
@ -110,36 +113,36 @@ dialogsSentIconFgOver: dialogsSentIconFg;
|
|||
dialogsUnreadBgOver: dialogsUnreadBg;
|
||||
dialogsUnreadBgMutedOver: dialogsUnreadBgMuted;
|
||||
dialogsUnreadFgOver: dialogsUnreadFg;
|
||||
dialogsBgActive: dialogsBgOver;
|
||||
dialogsNameFgActive: dialogsNameFgOver;
|
||||
dialogsBgActive: #419fd9;
|
||||
dialogsNameFgActive: windowActiveFg;
|
||||
dialogsChatIconFgActive: dialogsNameFgActive;
|
||||
dialogsDateFgActive: dialogsDateFgOver;
|
||||
dialogsTextFgActive: dialogsTextFgOver;
|
||||
dialogsTextFgServiceActive: dialogsTextFgServiceOver;
|
||||
dialogsDraftFgActive: dialogsDraftFgOver;
|
||||
dialogsVerifiedIconBgActive: dialogsVerifiedIconBgOver;
|
||||
dialogsVerifiedIconFgActive: dialogsVerifiedIconFgOver;
|
||||
dialogsSendingIconFgActive: dialogsSendingIconFgOver;
|
||||
dialogsSentIconFgActive: dialogsSentIconFgOver;
|
||||
dialogsUnreadBgActive: dialogsUnreadBgOver;
|
||||
dialogsUnreadBgMutedActive: dialogsUnreadBgMutedOver;
|
||||
dialogsUnreadFgActive: dialogsUnreadFgOver;
|
||||
dialogsForwardFg: #ffffff;
|
||||
dialogsDateFgActive: windowActiveFg;
|
||||
dialogsTextFgActive: windowActiveFg;
|
||||
dialogsTextFgServiceActive: dialogsTextFgActive;
|
||||
dialogsDraftFgActive: #c6e1f7;
|
||||
dialogsVerifiedIconBgActive: dialogsTextFgActive;
|
||||
dialogsVerifiedIconFgActive: dialogsBgActive;
|
||||
dialogsSendingIconFgActive: #ffffff99;
|
||||
dialogsSentIconFgActive: dialogsTextFgActive;
|
||||
dialogsUnreadBgActive: dialogsTextFgActive;
|
||||
dialogsUnreadBgMutedActive: #d3e2ee;
|
||||
dialogsUnreadFgActive: dialogsBgActive;
|
||||
dialogsForwardBg: dialogsBgActive;
|
||||
dialogsForwardFg: dialogsNameFgActive;
|
||||
topBarBg: windowBg;
|
||||
emojiPanBg: windowBg;
|
||||
emojiPanCategories: #f7f7f7; // windowBg;
|
||||
emojiPanHeaderFg: windowSubTextFg;
|
||||
emojiPanHeaderBg: #fffffff2; // emojiPanBg;
|
||||
historyComposeAreaBg: windowBg;
|
||||
historyComposeIconFg: #cccccc;
|
||||
historyComposeIconFgOver: #bebebe;
|
||||
historyComposeIconFg: menuIconFg;
|
||||
historyComposeIconFgOver: menuIconFgOver;
|
||||
historyPinnedBg: historyComposeAreaBg;
|
||||
historyReplyBg: historyComposeAreaBg;
|
||||
historyReplyCancelIconFg: cancelIconFg;
|
||||
historyReplyCancelIconFgOver: cancelIconFgOver;
|
||||
historySendBg: historyComposeAreaBg;
|
||||
historySendBgOver: #f5f5f5; // historySendBg;
|
||||
historyMenuItemBgOver: historySendBgOver;
|
||||
historyTextInFg: windowTextFg;
|
||||
historyTextOutFg: windowTextFg;
|
||||
historyCaptionInFg: historyTextInFg;
|
||||
|
|
|
@ -5,7 +5,7 @@
|
|||
<file>art/fonts/OpenSans-Semibold.ttf</file>
|
||||
<file>art/newmsg.wav</file>
|
||||
<file>art/bg.jpg</file>
|
||||
<file>art/bg_old.png</file>
|
||||
<file>art/bg_initial.png</file>
|
||||
<file>art/icon256.png</file>
|
||||
<file>art/iconbig256.png</file>
|
||||
</qresource>
|
||||
|
|
|
@ -56,12 +56,14 @@ QString countBetaVersionSignature(quint64 version);
|
|||
typedef unsigned char uchar;
|
||||
typedef unsigned int uint32;
|
||||
typedef signed int int32;
|
||||
|
||||
namespace{
|
||||
|
||||
inline uint32 sha1Shift(uint32 v, uint32 shift) {
|
||||
return ((v << shift) | (v >> (32 - shift)));
|
||||
}
|
||||
void sha1PartHash(uint32 *sha, uint32 *temp)
|
||||
{
|
||||
|
||||
void sha1PartHash(uint32 *sha, uint32 *temp) {
|
||||
uint32 a = sha[0], b = sha[1], c = sha[2], d = sha[3], e = sha[4], round = 0;
|
||||
|
||||
#define _shiftswap(f, v) { \
|
||||
|
@ -73,6 +75,7 @@ namespace{
|
|||
a = t; \
|
||||
++round; \
|
||||
}
|
||||
|
||||
#define _shiftshiftswap(f, v) { \
|
||||
temp[round] = sha1Shift((temp[round - 3] ^ temp[round - 8] ^ temp[round - 14] ^ temp[round - 16]), 1); \
|
||||
_shiftswap(f, v) \
|
||||
|
@ -93,7 +96,8 @@ namespace{
|
|||
sha[3] += d;
|
||||
sha[4] += e;
|
||||
}
|
||||
}
|
||||
|
||||
} // namespace
|
||||
|
||||
int32 *hashSha1(const void *data, uint32 len, void *dest) {
|
||||
const uchar *buf = (const uchar *)data;
|
||||
|
|
|
@ -73,15 +73,14 @@ BackgroundBox::Inner::Inner(QWidget *parent) : TWidget(parent)
|
|||
void BackgroundBox::Inner::gotWallpapers(const MTPVector<MTPWallPaper> &result) {
|
||||
App::WallPapers wallpapers;
|
||||
|
||||
auto oldBackground = ImagePtr(qsl(":/gui/art/bg_old.png"));
|
||||
wallpapers.push_back(App::WallPaper(Window::Theme::kOldBackground, oldBackground, oldBackground));
|
||||
const auto &v(result.c_vector().v);
|
||||
for (int i = 0, l = v.size(); i < l; ++i) {
|
||||
const auto &w(v.at(i));
|
||||
auto oldBackground = ImagePtr(qsl(":/gui/art/bg_initial.png"));
|
||||
wallpapers.push_back(App::WallPaper(Window::Theme::kInitialBackground, oldBackground, oldBackground));
|
||||
auto &v = result.c_vector().v;
|
||||
for_const (auto &w, v) {
|
||||
switch (w.type()) {
|
||||
case mtpc_wallPaper: {
|
||||
const auto &d(w.c_wallPaper());
|
||||
const auto &sizes(d.vsizes.c_vector().v);
|
||||
auto &d = w.c_wallPaper();
|
||||
auto &sizes = d.vsizes.c_vector().v;
|
||||
const MTPPhotoSize *thumb = 0, *full = 0;
|
||||
int32 thumbLevel = -1, fullLevel = -1;
|
||||
for (QVector<MTPPhotoSize>::const_iterator j = sizes.cbegin(), e = sizes.cend(); j != e; ++j) {
|
||||
|
@ -89,14 +88,14 @@ void BackgroundBox::Inner::gotWallpapers(const MTPVector<MTPWallPaper> &result)
|
|||
int32 w = 0, h = 0;
|
||||
switch (j->type()) {
|
||||
case mtpc_photoSize: {
|
||||
const auto &s(j->c_photoSize().vtype.c_string().v);
|
||||
auto &s = j->c_photoSize().vtype.c_string().v;
|
||||
if (s.size()) size = s[0];
|
||||
w = j->c_photoSize().vw.v;
|
||||
h = j->c_photoSize().vh.v;
|
||||
} break;
|
||||
|
||||
case mtpc_photoCachedSize: {
|
||||
const auto &s(j->c_photoCachedSize().vtype.c_string().v);
|
||||
auto &s = j->c_photoCachedSize().vtype.c_string().v;
|
||||
if (s.size()) size = s[0];
|
||||
w = j->c_photoCachedSize().vw.v;
|
||||
h = j->c_photoCachedSize().vh.v;
|
||||
|
@ -120,7 +119,7 @@ void BackgroundBox::Inner::gotWallpapers(const MTPVector<MTPWallPaper> &result)
|
|||
} break;
|
||||
|
||||
case mtpc_wallPaperSolid: {
|
||||
const auto &d(w.c_wallPaperSolid());
|
||||
auto &d = w.c_wallPaperSolid();
|
||||
} break;
|
||||
}
|
||||
}
|
||||
|
|
|
@ -166,13 +166,13 @@ contactsPhotoCheckbox: RoundImageCheckbox {
|
|||
imageRadius: 21px;
|
||||
imageSmallRadius: 18px;
|
||||
selectWidth: 2px;
|
||||
selectFg: windowActiveFill;
|
||||
selectFg: windowActiveBg;
|
||||
selectDuration: 150;
|
||||
checkBorder: windowBg;
|
||||
checkBg: windowActiveFill;
|
||||
checkBg: windowActiveBg;
|
||||
checkRadius: 10px;
|
||||
checkSmallRadius: 3px;
|
||||
checkIcon: icon {{ "default_checkbox_check", windowBg, point(3px, 6px) }};
|
||||
checkIcon: icon {{ "default_checkbox_check", windowActiveFg, point(3px, 6px) }};
|
||||
}
|
||||
contactsPhotoDisabledCheckFg: #bbbbbb;
|
||||
contactsNameCheckedFg: #2b88b8;
|
||||
|
|
|
@ -356,7 +356,7 @@ void ContactsBox::onFilterUpdate(const QString &filter) {
|
|||
void ContactsBox::addPeerToMultiSelect(PeerData *peer, bool skipAnimation) {
|
||||
using AddItemWay = Ui::MultiSelect::AddItemWay;
|
||||
auto addItemWay = skipAnimation ? AddItemWay::SkipAnimation : AddItemWay::Default;
|
||||
_select->entity()->addItem(peer->id, peer->shortName(), st::windowActiveFill, PaintUserpicCallback(peer), addItemWay);
|
||||
_select->entity()->addItem(peer->id, peer->shortName(), st::activeButtonBg, PaintUserpicCallback(peer), addItemWay);
|
||||
}
|
||||
|
||||
void ContactsBox::onPeerSelectedChanged(PeerData *peer, bool checked) {
|
||||
|
|
|
@ -236,7 +236,7 @@ void ShareBox::onFilterUpdate(const QString &query) {
|
|||
void ShareBox::addPeerToMultiSelect(PeerData *peer, bool skipAnimation) {
|
||||
using AddItemWay = Ui::MultiSelect::AddItemWay;
|
||||
auto addItemWay = skipAnimation ? AddItemWay::SkipAnimation : AddItemWay::Default;
|
||||
_select->addItem(peer->id, peer->shortName(), st::windowActiveFill, PaintUserpicCallback(peer), addItemWay);
|
||||
_select->addItem(peer->id, peer->shortName(), st::activeButtonBg, PaintUserpicCallback(peer), addItemWay);
|
||||
}
|
||||
|
||||
void ShareBox::onPeerSelectedChanged(PeerData *peer, bool checked) {
|
||||
|
|
|
@ -81,13 +81,16 @@ dialogsMenuToggle: IconButton {
|
|||
height: 32px;
|
||||
|
||||
icon: icon {{ "dialogs_menu", dialogsMenuIconFg }};
|
||||
iconOver: icon {{ "dialogs_menu", dialogsMenuIconFgOver }};
|
||||
iconPosition: point(6px, 6px);
|
||||
iconPositionDown: point(6px, 6px);
|
||||
}
|
||||
dialogsLock: IconButton(dialogsMenuToggle) {
|
||||
icon: icon {{ "dialogs_lock", dialogsMenuIconFg }};
|
||||
iconOver: icon {{ "dialogs_lock", dialogsMenuIconFgOver }};
|
||||
}
|
||||
dialogsUnlockIcon: icon {{ "dialogs_unlock", dialogsMenuIconFg }};
|
||||
dialogsUnlockIconOver: icon {{ "dialogs_unlock", dialogsMenuIconFgOver }};
|
||||
|
||||
dialogsFilter: flatInput(inpDefGray) {
|
||||
font: font(fsize);
|
||||
|
@ -114,10 +117,15 @@ dialogsMenu: DropdownMenu(defaultDropdownMenu) {
|
|||
}
|
||||
dialogsMenuPosition: point(-3px, -2px);
|
||||
dialogsMenuNewGroup: icon {{ "menu_new_group", menuIconFg }};
|
||||
dialogsMenuNewGroupOver: icon {{ "menu_new_group", menuIconFgOver }};
|
||||
dialogsMenuNewChannel: icon {{ "menu_new_channel", menuIconFg }};
|
||||
dialogsMenuNewChannelOver: icon {{ "menu_new_channel", menuIconFgOver }};
|
||||
dialogsMenuContacts: icon {{ "menu_contacts", menuIconFg }};
|
||||
dialogsMenuContactsOver: icon {{ "menu_contacts", menuIconFgOver }};
|
||||
dialogsMenuSettings: icon {{ "menu_settings", menuIconFg }};
|
||||
dialogsMenuSettingsOver: icon {{ "menu_settings", menuIconFgOver }};
|
||||
dialogsMenuHelp: icon {{ "menu_help", menuIconFg }};
|
||||
dialogsMenuHelpOver: icon {{ "menu_help", menuIconFgOver }};
|
||||
|
||||
dialogsChatTypeSkip: 22px;
|
||||
dialogsChatIcon: icon {{ "dialogs_chat", dialogsChatIconFg, point(1px, 4px) }};
|
||||
|
@ -191,4 +199,3 @@ dialogsForwardCancel: IconButton {
|
|||
iconPositionDown: point(12px, 11px);
|
||||
}
|
||||
dialogsForwardFont: semiboldFont;
|
||||
dialogsForwardBg: windowActiveFill;
|
||||
|
|
|
@ -1701,7 +1701,7 @@ DialogsWidget::DialogsWidget(QWidget *parent) : TWidget(parent)
|
|||
_lockUnlock->setVisible(Global::LocalPasscode());
|
||||
subscribe(Global::RefLocalPasscodeChanged(), [this] { updateLockUnlockVisibility(); });
|
||||
_lockUnlock->setClickedCallback([this] {
|
||||
_lockUnlock->setIcon(&st::dialogsUnlockIcon);
|
||||
_lockUnlock->setIcon(&st::dialogsUnlockIcon, &st::dialogsUnlockIconOver);
|
||||
App::wnd()->setupPasscode();
|
||||
_lockUnlock->setIcon(nullptr);
|
||||
});
|
||||
|
@ -2016,19 +2016,19 @@ void DialogsWidget::showMainMenu() {
|
|||
_mainMenu.create(this, st::dialogsMenu);
|
||||
_mainMenu->addAction(lang(lng_create_group_title), [] {
|
||||
App::wnd()->onShowNewGroup();
|
||||
}, &st::dialogsMenuNewGroup);
|
||||
}, &st::dialogsMenuNewGroup, &st::dialogsMenuNewGroupOver);
|
||||
_mainMenu->addAction(lang(lng_create_channel_title), [] {
|
||||
App::wnd()->onShowNewChannel();
|
||||
}, &st::dialogsMenuNewChannel);
|
||||
}, &st::dialogsMenuNewChannel, &st::dialogsMenuNewChannelOver);
|
||||
_mainMenu->addAction(lang(lng_menu_contacts), [] {
|
||||
Ui::showLayer(new ContactsBox());
|
||||
}, &st::dialogsMenuContacts);
|
||||
}, &st::dialogsMenuContacts, &st::dialogsMenuContactsOver);
|
||||
_mainMenu->addAction(lang(lng_menu_settings), [] {
|
||||
App::wnd()->showSettings();
|
||||
}, &st::dialogsMenuSettings);
|
||||
}, &st::dialogsMenuSettings, &st::dialogsMenuSettingsOver);
|
||||
_mainMenu->addAction(lang(lng_settings_faq), [] {
|
||||
QDesktopServices::openUrl(telegramFaqLink());
|
||||
}, &st::dialogsMenuHelp);
|
||||
}, &st::dialogsMenuHelp, &st::dialogsMenuHelpOver);
|
||||
}
|
||||
updateMainMenuGeometry();
|
||||
_mainMenu->showAnimated();
|
||||
|
|
|
@ -157,32 +157,19 @@ historyComposeField: flatTextarea {
|
|||
historyComposeFieldMaxHeight: 224px;
|
||||
// historyMinHeight: 56px;
|
||||
|
||||
historyMediaTypeFile: icon {{ "media_type_file", historyComposeIconFg, point(2px, 2px) }};
|
||||
historyMediaTypeFileOver: icon {{ "media_type_file", historyComposeIconFgOver, point(2px, 2px) }};
|
||||
historyMediaTypePhoto: icon {{ "media_type_photo", historyComposeIconFg, point(2px, 2px) }};
|
||||
historyMediaTypePhotoOver: icon {{ "media_type_photo", historyComposeIconFgOver, point(2px, 2px) }};
|
||||
historyMediaTypeVideo: icon {{ "media_type_video", historyComposeIconFg, point(2px, 2px) }};
|
||||
historyMediaTypeVideoOver: icon {{ "media_type_video", historyComposeIconFgOver, point(2px, 2px) }};
|
||||
historyMediaTypeSong: icon {{ "media_type_song", historyComposeIconFg, point(0px, 0px) }};
|
||||
historyMediaTypeSongOver: icon {{ "media_type_song", historyComposeIconFgOver, point(0px, 0px) }};
|
||||
historyMediaTypeVoice: icon {{ "media_type_voice", historyComposeIconFg, point(2px, 2px) }};
|
||||
historyMediaTypeVoiceOver: icon {{ "media_type_voice", historyComposeIconFgOver, point(2px, 2px) }};
|
||||
historyMediaTypeLink: icon {{ "media_type_link", historyComposeIconFg, point(2px, 2px) }};
|
||||
historyMediaTypeLinkOver: icon {{ "media_type_link", historyComposeIconFgOver, point(2px, 2px) }};
|
||||
|
||||
historyAttachDocument: IconButton {
|
||||
width: 46px;
|
||||
height: 46px;
|
||||
|
||||
icon: historyMediaTypeFile;
|
||||
iconOver: historyMediaTypeFileOver;
|
||||
icon: icon {{ "media_type_file", historyComposeIconFg, point(2px, 2px) }};
|
||||
iconOver: icon {{ "media_type_file", historyComposeIconFgOver, point(2px, 2px) }};
|
||||
|
||||
iconPosition: point(9px, 9px);
|
||||
iconPositionDown: point(9px, 10px);
|
||||
}
|
||||
historyAttachPhoto: IconButton(historyAttachDocument) {
|
||||
icon: historyMediaTypePhoto;
|
||||
iconOver: historyMediaTypePhotoOver;
|
||||
icon: icon {{ "media_type_photo", historyComposeIconFg, point(2px, 2px) }};
|
||||
iconOver: icon {{ "media_type_photo", historyComposeIconFgOver, point(2px, 2px) }};
|
||||
}
|
||||
historyAttachEmoji: IconButton(historyAttachDocument) {
|
||||
width: 33px;
|
||||
|
@ -233,11 +220,23 @@ historyRecordFont: font(13px);
|
|||
historyRecordDurationFg: #000000;
|
||||
historyRecordTextTop: 14px;
|
||||
|
||||
historyMediaTypeFile: icon {{ "media_type_file", menuIconFg, point(2px, 2px) }};
|
||||
historyMediaTypeFileOver: icon {{ "media_type_file", menuIconFgOver, point(2px, 2px) }};
|
||||
historyMediaTypePhoto: icon {{ "media_type_photo", menuIconFg, point(2px, 2px) }};
|
||||
historyMediaTypePhotoOver: icon {{ "media_type_photo", menuIconFgOver, point(2px, 2px) }};
|
||||
historyMediaTypeVideo: icon {{ "media_type_video", menuIconFg, point(2px, 2px) }};
|
||||
historyMediaTypeVideoOver: icon {{ "media_type_video", menuIconFgOver, point(2px, 2px) }};
|
||||
historyMediaTypeSong: icon {{ "media_type_song", menuIconFg, point(0px, 0px) }};
|
||||
historyMediaTypeSongOver: icon {{ "media_type_song", menuIconFgOver, point(0px, 0px) }};
|
||||
historyMediaTypeVoice: icon {{ "media_type_voice", menuIconFg, point(2px, 2px) }};
|
||||
historyMediaTypeVoiceOver: icon {{ "media_type_voice", menuIconFgOver, point(2px, 2px) }};
|
||||
historyMediaTypeLink: icon {{ "media_type_link", menuIconFg, point(2px, 2px) }};
|
||||
historyMediaTypeLinkOver: icon {{ "media_type_link", menuIconFgOver, point(2px, 2px) }};
|
||||
|
||||
historyAttachDropdownMenu: DropdownMenu(defaultDropdownMenu) {
|
||||
menu: Menu(defaultMenu) {
|
||||
skip: 5px;
|
||||
|
||||
itemBgOver: historyMenuItemBgOver;
|
||||
itemIconPosition: point(12px, 6px);
|
||||
itemPadding: margins(48px, 11px, 48px, 11px);
|
||||
}
|
||||
|
@ -277,15 +276,15 @@ topBarSearch: IconButton {
|
|||
width: 44px;
|
||||
height: topBarHeight;
|
||||
|
||||
icon: icon {{ "title_search", #a8a8a8 }};
|
||||
iconOver: icon {{ "title_search", #a3a3a3 }};
|
||||
icon: icon {{ "title_search", menuIconFg }};
|
||||
iconOver: icon {{ "title_search", menuIconFgOver }};
|
||||
|
||||
iconPosition: point(13px, 18px);
|
||||
iconPositionDown: point(13px, 18px);
|
||||
}
|
||||
topBarMenuToggle: IconButton(topBarSearch) {
|
||||
icon: icon {{ "title_menu_dots", #a8a8a8 }};
|
||||
iconOver: icon {{ "title_menu_dots", #a3a3a3 }};
|
||||
icon: icon {{ "title_menu_dots", menuIconFg }};
|
||||
iconOver: icon {{ "title_menu_dots", menuIconFgOver }};
|
||||
|
||||
iconPosition: point(18px, 17px);
|
||||
iconPositionDown: point(18px, 17px);
|
||||
|
|
|
@ -5004,8 +5004,8 @@ void HistoryWidget::loadMessages() {
|
|||
return firstLoadMessages();
|
||||
}
|
||||
|
||||
bool loadMigrated = _migrated && (_history->isEmpty() || _history->loadedAtTop() || (!_migrated->isEmpty() && !_migrated->loadedAtBottom()));
|
||||
History *from = loadMigrated ? _migrated : _history;
|
||||
auto loadMigrated = _migrated && (_history->isEmpty() || _history->loadedAtTop() || (!_migrated->isEmpty() && !_migrated->loadedAtBottom()));
|
||||
auto from = loadMigrated ? _migrated : _history;
|
||||
if (from->loadedAtTop()) {
|
||||
return;
|
||||
}
|
||||
|
|
|
@ -3630,8 +3630,7 @@ void writeBackground(int32 id, const QImage &img) {
|
|||
}
|
||||
quint32 size = sizeof(qint32) + sizeof(quint32) + (bmp.isEmpty() ? 0 : (sizeof(quint32) + bmp.size()));
|
||||
EncryptedDescriptor data(size);
|
||||
data.stream << qint32(id);
|
||||
if (!bmp.isEmpty()) data.stream << bmp;
|
||||
data.stream << qint32(id) << bmp;
|
||||
|
||||
FileWriteDescriptor file(_backgroundKey);
|
||||
file.writeEncrypted(data);
|
||||
|
@ -3653,21 +3652,21 @@ bool readBackground() {
|
|||
|
||||
QByteArray pngData;
|
||||
qint32 id;
|
||||
bg.stream >> id;
|
||||
if (id == Window::Theme::kOldBackground || id == Window::Theme::kDefaultBackground) {
|
||||
bg.stream >> id >> pngData;
|
||||
auto oldEmptyImage = (bg.stream.status() != QDataStream::Ok);
|
||||
if (oldEmptyImage
|
||||
|| id == Window::Theme::kInitialBackground
|
||||
|| id == Window::Theme::kDefaultBackground) {
|
||||
_backgroundCanWrite = false;
|
||||
if (bg.version < 8005) {
|
||||
if (oldEmptyImage || bg.version < 8005) {
|
||||
Window::Theme::Background()->setImage(Window::Theme::kDefaultBackground);
|
||||
if (id == Window::Theme::kOldBackground) {
|
||||
Window::Theme::Background()->setTile(false);
|
||||
}
|
||||
} else {
|
||||
Window::Theme::Background()->setImage(id);
|
||||
}
|
||||
_backgroundCanWrite = true;
|
||||
return true;
|
||||
}
|
||||
bg.stream >> pngData;
|
||||
|
||||
QImage image;
|
||||
QBuffer buf(&pngData);
|
||||
|
|
|
@ -1925,7 +1925,9 @@ void MainWidget::checkChatBackground() {
|
|||
if (_background->full->loaded()) {
|
||||
if (_background->full->isNull()) {
|
||||
Window::Theme::Background()->setImage(Window::Theme::kDefaultBackground);
|
||||
} else if (_background->id == Window::Theme::kOldBackground || _background->id == Window::Theme::kDefaultBackground) {
|
||||
} else if (false
|
||||
|| _background->id == Window::Theme::kInitialBackground
|
||||
|| _background->id == Window::Theme::kDefaultBackground) {
|
||||
Window::Theme::Background()->setImage(_background->id);
|
||||
} else {
|
||||
Window::Theme::Background()->setImage(_background->id, _background->full->pix().toImage());
|
||||
|
|
|
@ -159,8 +159,8 @@ void MainWindow::onStateChanged(Qt::WindowState state) {
|
|||
savePosition(state);
|
||||
}
|
||||
|
||||
void MainWindow::init() {
|
||||
Platform::MainWindow::init();
|
||||
void MainWindow::initHook() {
|
||||
Platform::MainWindow::initHook();
|
||||
|
||||
setWindowIcon(wndIcon);
|
||||
|
||||
|
@ -198,6 +198,7 @@ void MainWindow::firstShow() {
|
|||
trayIconMenu->addAction(lang(lng_quit_from_tray), this, SLOT(quitFromTray()))->setEnabled(true);
|
||||
}
|
||||
psUpdateWorkmode();
|
||||
|
||||
psFirstShow();
|
||||
updateTrayMenu();
|
||||
|
||||
|
|
|
@ -77,7 +77,6 @@ public:
|
|||
MainWindow();
|
||||
~MainWindow();
|
||||
|
||||
void init();
|
||||
void firstShow();
|
||||
|
||||
QWidget *filedialogParent();
|
||||
|
@ -168,6 +167,8 @@ protected:
|
|||
void closeEvent(QCloseEvent *e) override;
|
||||
void resizeEvent(QResizeEvent *e) override;
|
||||
|
||||
void initHook() override;
|
||||
|
||||
public slots:
|
||||
void updateIsActive(int timeout = 0);
|
||||
|
||||
|
|
|
@ -47,11 +47,12 @@ TitleWidget::TitleWidget(QWidget *parent) : Window::TitleWidget(parent)
|
|||
});
|
||||
|
||||
setAttribute(Qt::WA_OpaquePaintEvent);
|
||||
}
|
||||
|
||||
void TitleWidget::init() {
|
||||
connect(window()->windowHandle(), SIGNAL(windowStateChanged(Qt::WindowState)), this, SLOT(onWindowStateChanged(Qt::WindowState)));
|
||||
_maximized = (window()->windowState() & Qt::WindowMaximized);
|
||||
updateMaximizeRestoreButton();
|
||||
|
||||
onWindowStateChanged();
|
||||
|
||||
connect(parent->window()->windowHandle(), SIGNAL(windowStateChanged(Qt::WindowState)), this, SLOT(onWindowStateChanged(Qt::WindowState)));
|
||||
}
|
||||
|
||||
void TitleWidget::paintEvent(QPaintEvent *e) {
|
||||
|
|
|
@ -35,6 +35,8 @@ class TitleWidget : public Window::TitleWidget, private base::Subscriber {
|
|||
public:
|
||||
TitleWidget(QWidget *parent);
|
||||
|
||||
void init() override;
|
||||
|
||||
Window::HitTestResult hitTest(const QPoint &p) const override;
|
||||
|
||||
public slots:
|
||||
|
|
|
@ -60,11 +60,11 @@ profilePrimaryButton: defaultActiveButton;
|
|||
profileSecondaryButton: defaultLightButton;
|
||||
profileAddMemberButton: RoundButton(profileSecondaryButton) {
|
||||
width: 62px;
|
||||
icon: icon {{ "profile_add_member", windowActiveFill, point(20px, 10px) }};
|
||||
icon: icon {{ "profile_add_member", lightButtonFg, point(20px, 10px) }};
|
||||
}
|
||||
|
||||
profileDropAreaBg: profileBg;
|
||||
profileDropAreaFg: windowActiveFill;
|
||||
profileDropAreaFg: lightButtonFg;
|
||||
profileDropAreaPadding: margins(25px, 3px, 25px, 20px);
|
||||
profileDropAreaTitleFont: font(24px);
|
||||
profileDropAreaTitleTop: 30px;
|
||||
|
|
|
@ -2135,7 +2135,7 @@ void StickerPanInner::updateSelected() {
|
|||
t_assert(row >= 0 && row < _inlineRows.size() && col >= 0 && col < _inlineRows.at(row).items.size());
|
||||
Ui::repaintInlineItem(_inlineRows.at(row).items.at(col));
|
||||
}
|
||||
if (_pressed >= 0 && _selected >= 0 && _pressed != _selected) {
|
||||
if (_previewShown && _selected >= 0 && _pressed != _selected) {
|
||||
_pressed = _selected;
|
||||
if (row >= 0 && col >= 0) {
|
||||
auto layout = _inlineRows.at(row).items.at(col);
|
||||
|
@ -2260,7 +2260,7 @@ void StickerPanInner::updateSelected() {
|
|||
}
|
||||
}
|
||||
_selected = selIndex;
|
||||
if (_pressed >= 0 && _selected >= 0 && _pressed != _selected) {
|
||||
if (_previewShown && _selected >= 0 && _pressed != _selected) {
|
||||
_pressed = _selected;
|
||||
if (newSel >= 0 && xNewSel < 0) {
|
||||
Ui::showMediaPreview(sets.at(newSelTab).pack.at(newSel % MatrixRowShift));
|
||||
|
|
|
@ -56,7 +56,7 @@ stickersFeaturedUnreadBg: msgFileInBg;
|
|||
stickersFeaturedUnreadSize: 5px;
|
||||
stickersFeaturedUnreadSkip: 5px;
|
||||
stickersFeaturedUnreadTop: 7px;
|
||||
stickersFeaturedInstalled: icon {{ "mediaview_save_check", windowActiveFill }};
|
||||
stickersFeaturedInstalled: icon {{ "mediaview_save_check", lightButtonFg }};
|
||||
|
||||
stickersMaxHeight: 440px;
|
||||
stickersPadding: margins(19px, 17px, 19px, 17px);
|
||||
|
|
|
@ -28,10 +28,9 @@ Copyright (c) 2014-2016 John Preston, https://desktop.telegram.org
|
|||
|
||||
namespace Window {
|
||||
|
||||
MainWindow::MainWindow() : QMainWindow()
|
||||
MainWindow::MainWindow() : QWidget()
|
||||
, _positionUpdatedTimer(this)
|
||||
, _body(this) {
|
||||
setCentralWidget(_body);
|
||||
subscribe(Theme::Background(), [this](const Theme::BackgroundUpdate &data) {
|
||||
using Type = Theme::BackgroundUpdate::Type;
|
||||
if (data.type == Type::TestingTheme || data.type == Type::RevertingTheme || data.type == Type::ApplyingTheme) {
|
||||
|
@ -40,20 +39,21 @@ MainWindow::MainWindow() : QMainWindow()
|
|||
}
|
||||
}
|
||||
});
|
||||
|
||||
_title = Platform::CreateTitleWidget(this);
|
||||
}
|
||||
|
||||
void MainWindow::init() {
|
||||
_positionUpdatedTimer->setSingleShot(true);
|
||||
connect(_positionUpdatedTimer, SIGNAL(timeout()), this, SLOT(savePositionByTimer()));
|
||||
|
||||
_title = Platform::CreateTitleWidget(this);
|
||||
|
||||
auto p = palette();
|
||||
p.setColor(QPalette::Window, st::windowBg->c);
|
||||
setPalette(p);
|
||||
|
||||
initSize();
|
||||
if (_title) _title->init();
|
||||
|
||||
initSize();
|
||||
initHook();
|
||||
}
|
||||
|
||||
|
|
|
@ -26,7 +26,7 @@ namespace Window {
|
|||
|
||||
class TitleWidget;
|
||||
|
||||
class MainWindow : public QMainWindow, protected base::Subscriber {
|
||||
class MainWindow : public QWidget, protected base::Subscriber {
|
||||
Q_OBJECT
|
||||
|
||||
public:
|
||||
|
|
|
@ -76,7 +76,7 @@ notifySendReply: IconButton {
|
|||
width: 36px;
|
||||
height: 36px;
|
||||
|
||||
icon: icon {{ "notification_send", windowActiveFill, point(3px, 9px) }};
|
||||
icon: icon {{ "notification_send", lightButtonFg, point(3px, 9px) }};
|
||||
iconPosition: point(0px, 0px);
|
||||
iconPositionDown: point(0px, 1px);
|
||||
}
|
||||
|
|
|
@ -440,18 +440,18 @@ void ChatBackground::setImage(int32 id, QImage &&image) {
|
|||
}
|
||||
setPreparedImage(std_::move(image));
|
||||
} else {
|
||||
if (_id == kDefaultBackground) {
|
||||
image.load(qsl(":/gui/art/bg.jpg"));
|
||||
} else if (_id == kOldBackground || image.isNull()) {
|
||||
_id = kOldBackground;
|
||||
image.load(qsl(":/gui/art/bg_old.png"));
|
||||
if (_id == kInitialBackground) {
|
||||
image.load(qsl(":/gui/art/bg_initial.png"));
|
||||
if (cRetina()) {
|
||||
image = image.scaledToWidth(image.width() * 2, Qt::SmoothTransformation);
|
||||
} else if (cScale() != dbisOne) {
|
||||
image = image.scaledToWidth(convertScale(image.width()), Qt::SmoothTransformation);
|
||||
}
|
||||
} else if (_id == kDefaultBackground || image.isNull()) {
|
||||
_id = kDefaultBackground;
|
||||
image.load(qsl(":/gui/art/bg.jpg"));
|
||||
}
|
||||
Local::writeBackground(_id, (_id == kDefaultBackground || _id == kOldBackground) ? QImage() : image);
|
||||
Local::writeBackground(_id, (_id == kDefaultBackground || _id == kInitialBackground) ? QImage() : image);
|
||||
setPreparedImage(prepareBackgroundImage(std_::move(image)));
|
||||
}
|
||||
t_assert(!_image.isNull());
|
||||
|
|
|
@ -32,8 +32,8 @@ constexpr int32 kTestingDefaultBackground = -665;
|
|||
|
||||
constexpr int32 kThemeBackground = -2;
|
||||
constexpr int32 kCustomBackground = -1;
|
||||
constexpr int32 kOldBackground = 0;
|
||||
constexpr int32 kDefaultBackground = 21;
|
||||
constexpr int32 kInitialBackground = 0;
|
||||
constexpr int32 kDefaultBackground = 105;
|
||||
|
||||
struct Cached {
|
||||
QByteArray colors;
|
||||
|
|
|
@ -40,6 +40,9 @@ enum class HitTestResult {
|
|||
class TitleWidget : public TWidget {
|
||||
public:
|
||||
using TWidget::TWidget;
|
||||
|
||||
virtual void init() {
|
||||
}
|
||||
virtual HitTestResult hitTest(const QPoint &p) const {
|
||||
return HitTestResult::None;
|
||||
}
|
||||
|
|