diff --git a/src/collection/collectionmodel.cpp b/src/collection/collectionmodel.cpp index c638efd6d..2f4e4ead8 100644 --- a/src/collection/collectionmodel.cpp +++ b/src/collection/collectionmodel.cpp @@ -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 { diff --git a/src/collection/collectionmodel.h b/src/collection/collectionmodel.h index db5bdc83b..4bc19c95a 100644 --- a/src/collection/collectionmodel.h +++ b/src/collection/collectionmodel.h @@ -268,7 +268,7 @@ class CollectionModel : public SimpleTreeModel { 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_; diff --git a/src/settings/collectionsettingspage.cpp b/src/settings/collectionsettingspage.cpp index 7a6a582be..868b0a89e 100644 --- a/src/settings/collectionsettingspage.cpp +++ b/src/settings/collectionsettingspage.cpp @@ -21,6 +21,8 @@ #include "config.h" +#include + #include #include #include @@ -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(CacheSizeUnit_MB)).toInt()); + if (ui_->combobox_cache_size->currentIndex() == -1) ui_->combobox_cache_size->setCurrentIndex(static_cast(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(CacheSizeUnit_MB)).toInt()); + if (ui_->combobox_disk_cache_size->currentIndex() == -1) ui_->combobox_cache_size->setCurrentIndex(static_cast(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(index)) { + case CacheSizeUnit_MB: + ui_->spinbox_cache_size->setMaximum(std::numeric_limits::max() / 1024); + break; + default: + ui_->spinbox_cache_size->setMaximum(std::numeric_limits::max()); + break; + } + +} + +void CollectionSettingsPage::DiskCacheSizeUnitChanged(int index) { + + switch (static_cast(index)) { + case CacheSizeUnit_GB: + ui_->spinbox_disk_cache_size->setMaximum(4); + break; + default: + ui_->spinbox_disk_cache_size->setMaximum(std::numeric_limits::max()); + break; + } + +} diff --git a/src/settings/collectionsettingspage.h b/src/settings/collectionsettingspage.h index 60c8f1f7d..e1669ffa5 100644 --- a/src/settings/collectionsettingspage.h +++ b/src/settings/collectionsettingspage.h @@ -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