2
0
mirror of https://github.com/kotatogram/kotatogram-desktop synced 2025-09-01 15:15:13 +00:00

stickers emoji tab done, local cache for stickers, recent stickers and voice messages

This commit is contained in:
John Preston
2015-01-02 17:55:24 +03:00
parent 59381b8ad2
commit 091bba0fc5
41 changed files with 5178 additions and 3470 deletions

View File

@@ -160,10 +160,11 @@ SettingsInner::SettingsInner(SettingsWidget *parent) : QWidget(parent),
_catsAndDogs(this, lang(lng_settings_cats_and_dogs), cCatsAndDogs()),
// local storage
_localImagesClear(this, lang(lng_local_images_clear)),
_imagesClearingWidth(st::linkFont->m.width(lang(lng_local_images_clearing))),
_imagesClearedWidth(st::linkFont->m.width(lang(lng_local_images_cleared))),
_imagesClearFailedWidth(st::linkFont->m.width(lang(lng_local_images_clear_failed))),
_localStorageClear(this, lang(lng_local_storage_clear)),
_localStorageHeight(1),
_storageClearingWidth(st::linkFont->m.width(lang(lng_local_storage_clearing))),
_storageClearedWidth(st::linkFont->m.width(lang(lng_local_storage_cleared))),
_storageClearFailedWidth(st::linkFont->m.width(lang(lng_local_storage_clear_failed))),
// advanced
_connectionType(this, lng_connection_auto(lt_type, QString())),
@@ -249,11 +250,11 @@ SettingsInner::SettingsInner(SettingsWidget *parent) : QWidget(parent),
connect(&_catsAndDogs, SIGNAL(changed()), this, SLOT(onCatsAndDogs()));
// local storage
connect(&_localImagesClear, SIGNAL(clicked()), this, SLOT(onLocalImagesClear()));
switch (App::wnd()->localImagesState()) {
case Window::TempDirEmpty: _imagesClearState = TempDirEmpty; break;
case Window::TempDirExists: _imagesClearState = TempDirExists; break;
case Window::TempDirRemoving: _imagesClearState = TempDirClearing; break;
connect(&_localStorageClear, SIGNAL(clicked()), this, SLOT(onLocalStorageClear()));
switch (App::wnd()->localStorageState()) {
case Window::TempDirEmpty: _storageClearState = TempDirEmpty; break;
case Window::TempDirExists: _storageClearState = TempDirExists; break;
case Window::TempDirRemoving: _storageClearState = TempDirClearing; break;
}
// advanced
@@ -481,27 +482,45 @@ void SettingsInner::paintEvent(QPaintEvent *e) {
p.setFont(st::setHeaderFont->f);
p.setPen(st::setHeaderColor->p);
p.drawText(_left + st::setHeaderLeft, top + st::setHeaderTop + st::setHeaderFont->ascent, lang(lng_settings_section_cache));
top += st::setHeaderSkip;
QString localImagesText = lang(lng_settings_no_images_cached);
int32 cnt = Local::hasImages();
if (cnt) {
localImagesText = lng_settings_images_cached(lt_count, cnt, lt_size, formatSizeText(Local::storageFilesSize()));
}
p.setFont(st::linkFont->f);
p.setPen(st::black->p);
p.drawText(_left + st::setHeaderLeft, top + st::linkFont->ascent, localImagesText);
QString clearText;
int32 clearWidth = 0;
switch (_imagesClearState) {
case TempDirClearing: clearText = lang(lng_local_images_clearing); clearWidth = _imagesClearingWidth; break;
case TempDirCleared: clearText = lang(lng_local_images_cleared); clearWidth = _imagesClearedWidth; break;
case TempDirClearFailed: clearText = lang(lng_local_images_clear_failed); clearWidth = _imagesClearFailedWidth; break;
switch (_storageClearState) {
case TempDirClearing: clearText = lang(lng_local_storage_clearing); clearWidth = _storageClearingWidth; break;
case TempDirCleared: clearText = lang(lng_local_storage_cleared); clearWidth = _storageClearedWidth; break;
case TempDirClearFailed: clearText = lang(lng_local_storage_clear_failed); clearWidth = _storageClearFailedWidth; break;
}
if (clearWidth) {
p.drawText(_left + st::setWidth - clearWidth, top + st::linkFont->ascent, clearText);
p.drawText(_left + st::setWidth - clearWidth, top + st::setHeaderTop + st::setHeaderFont->ascent, clearText);
}
top += _localImagesClear.height();
top += st::setHeaderSkip;
int32 cntImages = Local::hasImages() + Local::hasStickers(), cntAudios = Local::hasAudios();
if (cntImages > 0 && cntAudios > 0) {
if (_localStorageHeight != 2) {
cntAudios = 0;
QTimer::singleShot(0, this, SLOT(onUpdateLocalStorage()));
}
} else {
if (_localStorageHeight != 1) {
QTimer::singleShot(0, this, SLOT(onUpdateLocalStorage()));
}
}
if (cntImages > 0) {
QString cnt = lng_settings_images_cached(lt_count, cntImages, lt_size, formatSizeText(Local::storageImagesSize() + Local::storageStickersSize()));
p.drawText(_left + st::setHeaderLeft, top + st::linkFont->ascent, cnt);
}
if (_localStorageHeight == 2) top += _localStorageClear.height() + st::setLittleSkip;
if (cntAudios > 0) {
QString cnt = lng_settings_audios_cached(lt_count, cntAudios, lt_size, formatSizeText(Local::storageAudiosSize()));
p.drawText(_left + st::setHeaderLeft, top + st::linkFont->ascent, cnt);
} else if (cntImages <= 0) {
p.drawText(_left + st::setHeaderLeft, top + st::linkFont->ascent, lang(lng_settings_no_data_cached));
}
top += _localStorageClear.height();
}
// advanced
@@ -590,8 +609,15 @@ void SettingsInner::resizeEvent(QResizeEvent *e) {
_catsAndDogs.move(_left, top); top += _catsAndDogs.height();
// local storage
_localStorageClear.move(_left + st::setWidth - _localStorageClear.width(), top + st::setHeaderTop + st::setHeaderFont->ascent - st::linkFont->ascent);
top += st::setHeaderSkip;
_localImagesClear.move(_left + st::setWidth - _localImagesClear.width(), top); top += _localImagesClear.height();
if ((Local::hasImages() || Local::hasStickers()) && Local::hasAudios()) {
_localStorageHeight = 2;
top += _localStorageClear.height() + st::setLittleSkip;
} else {
_localStorageHeight = 1;
}
top += _localStorageClear.height();
}
// advanced
@@ -816,14 +842,13 @@ void SettingsInner::showAll() {
_dontAskDownloadPath.hide();
_downloadPathEdit.hide();
_downloadPathClear.hide();
_localImagesClear.hide();
}
// local storage
if (self() && _imagesClearState == TempDirExists) {
_localImagesClear.show();
if (self() && _storageClearState == TempDirExists) {
_localStorageClear.show();
} else {
_localImagesClear.hide();
_localStorageClear.hide();
}
// advanced
@@ -935,6 +960,12 @@ void SettingsInner::onSaveTestLang() {
App::quit();
}
void SettingsInner::onUpdateLocalStorage() {
resizeEvent(0);
updateSize(width());
update();
}
void SettingsInner::onAutoUpdate() {
cSetAutoUpdate(!cAutoUpdate());
App::writeConfig();
@@ -1210,9 +1241,9 @@ void SettingsInner::onDownloadPathClearSure() {
update();
}
void SettingsInner::onLocalImagesClear() {
App::wnd()->tempDirDelete(Local::ClearManagerImages);
_imagesClearState = TempDirClearing;
void SettingsInner::onLocalStorageClear() {
App::wnd()->tempDirDelete(Local::ClearManagerStorage);
_storageClearState = TempDirClearing;
showAll();
update();
}
@@ -1220,8 +1251,8 @@ void SettingsInner::onLocalImagesClear() {
void SettingsInner::onTempDirCleared(int task) {
if (task & Local::ClearManagerDownloads) {
_tempDirClearState = TempDirCleared;
} else if (task & Local::ClearManagerImages) {
_imagesClearState = TempDirCleared;
} else if (task & Local::ClearManagerStorage) {
_storageClearState = TempDirCleared;
}
showAll();
update();
@@ -1230,8 +1261,8 @@ void SettingsInner::onTempDirCleared(int task) {
void SettingsInner::onTempDirClearFailed(int task) {
if (task & Local::ClearManagerDownloads) {
_tempDirClearState = TempDirClearFailed;
} else if (task & Local::ClearManagerImages) {
_imagesClearState = TempDirClearFailed;
} else if (task & Local::ClearManagerStorage) {
_storageClearState = TempDirClearFailed;
}
showAll();
update();