CollectionModel: Move model reset to regular model updates
This commit is contained in:
@@ -88,7 +88,6 @@ CollectionModel::CollectionModel(const SharedPtr<CollectionBackend> backend, con
|
||||
albumcover_loader_(albumcover_loader),
|
||||
dir_model_(new CollectionDirectoryModel(backend, this)),
|
||||
filter_(new CollectionFilter(this)),
|
||||
timer_reload_(new QTimer(this)),
|
||||
timer_update_(new QTimer(this)),
|
||||
icon_artist_(IconLoader::Load(u"folder-sound"_s)),
|
||||
use_disk_cache_(false),
|
||||
@@ -130,10 +129,6 @@ CollectionModel::CollectionModel(const SharedPtr<CollectionBackend> backend, con
|
||||
backend_->UpdateTotalArtistCountAsync();
|
||||
backend_->UpdateTotalAlbumCountAsync();
|
||||
|
||||
timer_reload_->setSingleShot(true);
|
||||
timer_reload_->setInterval(300ms);
|
||||
QObject::connect(timer_reload_, &QTimer::timeout, this, &CollectionModel::Reload);
|
||||
|
||||
timer_update_->setSingleShot(false);
|
||||
timer_update_->setInterval(20ms);
|
||||
QObject::connect(timer_update_, &QTimer::timeout, this, &CollectionModel::ProcessUpdate);
|
||||
@@ -191,13 +186,9 @@ void CollectionModel::EndReset() {
|
||||
|
||||
}
|
||||
|
||||
void CollectionModel::Reload() {
|
||||
void CollectionModel::ResetInternal() {
|
||||
|
||||
loading_ = true;
|
||||
if (timer_reload_->isActive()) {
|
||||
timer_reload_->stop();
|
||||
}
|
||||
updates_.clear();
|
||||
|
||||
options_active_ = options_current_;
|
||||
|
||||
@@ -211,14 +202,6 @@ void CollectionModel::Reload() {
|
||||
|
||||
}
|
||||
|
||||
void CollectionModel::ScheduleReset() {
|
||||
|
||||
if (!timer_reload_->isActive()) {
|
||||
timer_reload_->start();
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
void CollectionModel::ReloadSettings() {
|
||||
|
||||
Settings settings;
|
||||
@@ -421,10 +404,15 @@ void CollectionModel::RemoveSongs(const SongList &songs) {
|
||||
|
||||
void CollectionModel::ScheduleUpdate(const CollectionModelUpdate::Type type, const SongList &songs) {
|
||||
|
||||
for (qint64 i = 0; i < songs.count(); i += 400LL) {
|
||||
const qint64 number = std::min(songs.count() - i, 400LL);
|
||||
const SongList songs_to_queue = songs.mid(i, number);
|
||||
updates_.enqueue(CollectionModelUpdate(type, songs_to_queue));
|
||||
if (type == CollectionModelUpdate::Type::Reset) {
|
||||
updates_.enqueue(CollectionModelUpdate(type));
|
||||
}
|
||||
else {
|
||||
for (qint64 i = 0; i < songs.count(); i += 400LL) {
|
||||
const qint64 number = std::min(songs.count() - i, 400LL);
|
||||
const SongList songs_to_queue = songs.mid(i, number);
|
||||
updates_.enqueue(CollectionModelUpdate(type, songs_to_queue));
|
||||
}
|
||||
}
|
||||
|
||||
if (!timer_update_->isActive()) {
|
||||
@@ -433,6 +421,12 @@ void CollectionModel::ScheduleUpdate(const CollectionModelUpdate::Type type, con
|
||||
|
||||
}
|
||||
|
||||
void CollectionModel::ScheduleReset() {
|
||||
|
||||
ScheduleUpdate(CollectionModelUpdate::Type::Reset);
|
||||
|
||||
}
|
||||
|
||||
void CollectionModel::ScheduleAddSongs(const SongList &songs) {
|
||||
|
||||
ScheduleUpdate(CollectionModelUpdate::Type::Add, songs);
|
||||
@@ -465,6 +459,9 @@ void CollectionModel::ProcessUpdate() {
|
||||
}
|
||||
|
||||
switch (update.type) {
|
||||
case CollectionModelUpdate::Type::Reset:
|
||||
ResetInternal();
|
||||
break;
|
||||
case CollectionModelUpdate::Type::AddReAddOrUpdate:
|
||||
AddReAddOrUpdateSongsInternal(update.songs);
|
||||
break;
|
||||
|
||||
Reference in New Issue
Block a user