mirror of
https://github.com/strawberrymusicplayer/strawberry
synced 2025-02-03 10:57:33 +01:00
Set limits for collection pixmap cache based on size unit
This commit is contained in:
parent
706308cefd
commit
a6a29d5c5a
@ -1741,9 +1741,9 @@ bool CollectionModel::CompareItems(const CollectionItem *a, const CollectionItem
|
||||
|
||||
}
|
||||
|
||||
int CollectionModel::MaximumCacheSize(QSettings *s, const char *size_id, const char *size_unit_id, const int cache_size_default) const {
|
||||
qint64 CollectionModel::MaximumCacheSize(QSettings *s, const char *size_id, const char *size_unit_id, const qint64 cache_size_default) const {
|
||||
|
||||
int size = s->value(size_id, cache_size_default).toInt();
|
||||
qint64 size = s->value(size_id, cache_size_default).toInt();
|
||||
int unit = s->value(size_unit_id, CollectionSettingsPage::CacheSizeUnit::CacheSizeUnit_MB).toInt() + 1;
|
||||
|
||||
do {
|
||||
|
@ -268,7 +268,7 @@ class CollectionModel : public SimpleTreeModel<CollectionItem> {
|
||||
QVariant AlbumIcon(const QModelIndex &idx);
|
||||
QVariant data(const CollectionItem *item, const int role) const;
|
||||
bool CompareItems(const CollectionItem *a, const CollectionItem *b) const;
|
||||
int MaximumCacheSize(QSettings *s, const char *size_id, const char *size_unit_id, const int cache_size_default) const;
|
||||
qint64 MaximumCacheSize(QSettings *s, const char *size_id, const char *size_unit_id, const qint64 cache_size_default) const;
|
||||
|
||||
private:
|
||||
CollectionBackend *backend_;
|
||||
|
@ -21,6 +21,8 @@
|
||||
|
||||
#include "config.h"
|
||||
|
||||
#include <limits>
|
||||
|
||||
#include <QStandardPaths>
|
||||
#include <QAbstractItemModel>
|
||||
#include <QItemSelectionModel>
|
||||
@ -59,8 +61,6 @@ const char *CollectionSettingsPage::kSettingsDiskCacheSizeUnit = "disk_cache_siz
|
||||
const int CollectionSettingsPage::kSettingsCacheSizeDefault = 160;
|
||||
const int CollectionSettingsPage::kSettingsDiskCacheSizeDefault = 360;
|
||||
|
||||
const QStringList CollectionSettingsPage::cacheUnitNames = { "KB", "MB", "GB", "TB" };
|
||||
|
||||
CollectionSettingsPage::CollectionSettingsPage(SettingsDialog *dialog)
|
||||
: SettingsPage(dialog),
|
||||
ui_(new Ui_CollectionSettingsPage),
|
||||
@ -74,8 +74,8 @@ CollectionSettingsPage::CollectionSettingsPage(SettingsDialog *dialog)
|
||||
setWindowIcon(IconLoader::Load("library-music"));
|
||||
ui_->add->setIcon(IconLoader::Load("document-open-folder"));
|
||||
|
||||
ui_->combobox_cache_size->addItems(cacheUnitNames);
|
||||
ui_->combobox_disk_cache_size->addItems(cacheUnitNames);
|
||||
ui_->combobox_cache_size->addItems({"KB", "MB"});
|
||||
ui_->combobox_disk_cache_size->addItems({"KB", "MB", "GB"});
|
||||
|
||||
connect(ui_->add, SIGNAL(clicked()), SLOT(Add()));
|
||||
connect(ui_->remove, SIGNAL(clicked()), SLOT(Remove()));
|
||||
@ -88,6 +88,9 @@ CollectionSettingsPage::CollectionSettingsPage(SettingsDialog *dialog)
|
||||
connect(ui_->button_clear_disk_cache, SIGNAL(clicked()), dialog->app(), SIGNAL(ClearPixmapDiskCache()));
|
||||
connect(ui_->button_clear_disk_cache, SIGNAL(clicked()), SLOT(ClearPixmapDiskCache()));
|
||||
|
||||
connect(ui_->combobox_cache_size, SIGNAL(currentIndexChanged(int)), SLOT(CacheSizeUnitChanged(int)));
|
||||
connect(ui_->combobox_disk_cache_size, SIGNAL(currentIndexChanged(int)), SLOT(DiskCacheSizeUnitChanged(int)));
|
||||
|
||||
}
|
||||
|
||||
CollectionSettingsPage::~CollectionSettingsPage() { delete ui_; }
|
||||
@ -173,9 +176,11 @@ void CollectionSettingsPage::Load() {
|
||||
|
||||
ui_->spinbox_cache_size->setValue(s.value(kSettingsCacheSize, kSettingsCacheSizeDefault).toInt());
|
||||
ui_->combobox_cache_size->setCurrentIndex(s.value(kSettingsCacheSizeUnit, static_cast<int>(CacheSizeUnit_MB)).toInt());
|
||||
if (ui_->combobox_cache_size->currentIndex() == -1) ui_->combobox_cache_size->setCurrentIndex(static_cast<int>(CacheSizeUnit_MB));
|
||||
ui_->checkbox_disk_cache->setChecked(s.value(kSettingsDiskCacheEnable, false).toBool());
|
||||
ui_->spinbox_disk_cache_size->setValue(s.value(kSettingsDiskCacheSize, kSettingsDiskCacheSizeDefault).toInt());
|
||||
ui_->combobox_disk_cache_size->setCurrentIndex(s.value(kSettingsDiskCacheSizeUnit, static_cast<int>(CacheSizeUnit_MB)).toInt());
|
||||
if (ui_->combobox_disk_cache_size->currentIndex() == -1) ui_->combobox_cache_size->setCurrentIndex(static_cast<int>(CacheSizeUnit_MB));
|
||||
|
||||
#if QT_VERSION >= QT_VERSION_CHECK(5, 15, 0)
|
||||
ui_->checkbox_delete_files->setChecked(s.value("delete_files", false).toBool());
|
||||
@ -271,3 +276,29 @@ void CollectionSettingsPage::ClearPixmapDiskCache() {
|
||||
ui_->disk_cache_in_use->setText("empty");
|
||||
|
||||
}
|
||||
|
||||
void CollectionSettingsPage::CacheSizeUnitChanged(int index) {
|
||||
|
||||
switch (static_cast<CacheSizeUnit>(index)) {
|
||||
case CacheSizeUnit_MB:
|
||||
ui_->spinbox_cache_size->setMaximum(std::numeric_limits<int>::max() / 1024);
|
||||
break;
|
||||
default:
|
||||
ui_->spinbox_cache_size->setMaximum(std::numeric_limits<int>::max());
|
||||
break;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
void CollectionSettingsPage::DiskCacheSizeUnitChanged(int index) {
|
||||
|
||||
switch (static_cast<CacheSizeUnit>(index)) {
|
||||
case CacheSizeUnit_GB:
|
||||
ui_->spinbox_disk_cache_size->setMaximum(4);
|
||||
break;
|
||||
default:
|
||||
ui_->spinbox_disk_cache_size->setMaximum(std::numeric_limits<int>::max());
|
||||
break;
|
||||
}
|
||||
|
||||
}
|
||||
|
@ -73,12 +73,12 @@ class CollectionSettingsPage : public SettingsPage {
|
||||
void DiskCacheEnable(const int state);
|
||||
void CoverSaveInAlbumDirChanged();
|
||||
void ClearPixmapDiskCache();
|
||||
void CacheSizeUnitChanged(int index);
|
||||
void DiskCacheSizeUnitChanged(int index);
|
||||
|
||||
private:
|
||||
Ui_CollectionSettingsPage *ui_;
|
||||
bool initialized_model_;
|
||||
|
||||
static const QStringList cacheUnitNames;
|
||||
};
|
||||
|
||||
#endif // COLLECTIONSETTINGSPAGE_H
|
||||
|
Loading…
x
Reference in New Issue
Block a user