mirror of
https://gitlab.com/nkming2/nc-photos.git
synced 2025-02-25 02:48:54 +01:00
Show metadata task progress
This commit is contained in:
parent
6372d65f1f
commit
df45b23705
1 changed files with 32 additions and 1 deletions
|
@ -71,6 +71,7 @@ class _HomePhotosState extends State<HomePhotos>
|
||||||
_initBloc();
|
_initBloc();
|
||||||
_metadataTaskStateChangedListener.begin();
|
_metadataTaskStateChangedListener.begin();
|
||||||
_prefUpdatedListener.begin();
|
_prefUpdatedListener.begin();
|
||||||
|
_filePropertyUpdatedListener.begin();
|
||||||
}
|
}
|
||||||
|
|
||||||
@override
|
@override
|
||||||
|
@ -78,6 +79,7 @@ class _HomePhotosState extends State<HomePhotos>
|
||||||
_metadataTaskIconController.stop();
|
_metadataTaskIconController.stop();
|
||||||
_metadataTaskStateChangedListener.end();
|
_metadataTaskStateChangedListener.end();
|
||||||
_prefUpdatedListener.end();
|
_prefUpdatedListener.end();
|
||||||
|
_filePropertyUpdatedListener.end();
|
||||||
super.dispose();
|
super.dispose();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -270,7 +272,8 @@ class _HomePhotosState extends State<HomePhotos>
|
||||||
),
|
),
|
||||||
const SizedBox(width: 4),
|
const SizedBox(width: 4),
|
||||||
Text(
|
Text(
|
||||||
L10n.global().metadataTaskProcessingNotification,
|
L10n.global().metadataTaskProcessingNotification +
|
||||||
|
_getMetadataTaskProgressString(),
|
||||||
style: TextStyle(fontSize: 12),
|
style: TextStyle(fontSize: 12),
|
||||||
),
|
),
|
||||||
],
|
],
|
||||||
|
@ -479,6 +482,9 @@ class _HomePhotosState extends State<HomePhotos>
|
||||||
}
|
}
|
||||||
|
|
||||||
void _onMetadataTaskStateChanged(MetadataTaskStateChangedEvent ev) {
|
void _onMetadataTaskStateChanged(MetadataTaskStateChangedEvent ev) {
|
||||||
|
if (ev.state == MetadataTaskState.idle) {
|
||||||
|
_metadataTaskProcessCount = 0;
|
||||||
|
}
|
||||||
if (ev.state != _metadataTaskState) {
|
if (ev.state != _metadataTaskState) {
|
||||||
setState(() {
|
setState(() {
|
||||||
_metadataTaskState = ev.state;
|
_metadataTaskState = ev.state;
|
||||||
|
@ -492,6 +498,15 @@ class _HomePhotosState extends State<HomePhotos>
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void _onFilePropertyUpdated(FilePropertyUpdatedEvent ev) {
|
||||||
|
if (!ev.hasAnyProperties([FilePropertyUpdatedEvent.propMetadata])) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
setState(() {
|
||||||
|
++_metadataTaskProcessCount;
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
void _tryStartMetadataTask({
|
void _tryStartMetadataTask({
|
||||||
bool ignoreFired = false,
|
bool ignoreFired = false,
|
||||||
}) {
|
}) {
|
||||||
|
@ -499,6 +514,9 @@ class _HomePhotosState extends State<HomePhotos>
|
||||||
Pref.inst().isEnableExifOr(false) &&
|
Pref.inst().isEnableExifOr(false) &&
|
||||||
(!_hasFiredMetadataTask.value || ignoreFired)) {
|
(!_hasFiredMetadataTask.value || ignoreFired)) {
|
||||||
MetadataTaskManager().addTask(MetadataTask(widget.account));
|
MetadataTaskManager().addTask(MetadataTask(widget.account));
|
||||||
|
_metadataTaskProcessTotalCount = _backingFiles
|
||||||
|
.where((f) => file_util.isSupportedFormat(f) && f.metadata == null)
|
||||||
|
.length;
|
||||||
_hasFiredMetadataTask.value = true;
|
_hasFiredMetadataTask.value = true;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -600,6 +618,15 @@ class _HomePhotosState extends State<HomePhotos>
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
String _getMetadataTaskProgressString() {
|
||||||
|
if (_metadataTaskProcessTotalCount == 0) {
|
||||||
|
return "";
|
||||||
|
}
|
||||||
|
final clippedCount =
|
||||||
|
math.min(_metadataTaskProcessCount, _metadataTaskProcessTotalCount - 1);
|
||||||
|
return " ($clippedCount/$_metadataTaskProcessTotalCount)";
|
||||||
|
}
|
||||||
|
|
||||||
int get _thumbSize {
|
int get _thumbSize {
|
||||||
switch (_thumbZoomLevel) {
|
switch (_thumbZoomLevel) {
|
||||||
case -1:
|
case -1:
|
||||||
|
@ -651,6 +678,10 @@ class _HomePhotosState extends State<HomePhotos>
|
||||||
var _metadataTaskState = MetadataTaskManager().state;
|
var _metadataTaskState = MetadataTaskManager().state;
|
||||||
late final _prefUpdatedListener =
|
late final _prefUpdatedListener =
|
||||||
AppEventListener<PrefUpdatedEvent>(_onPrefUpdated);
|
AppEventListener<PrefUpdatedEvent>(_onPrefUpdated);
|
||||||
|
late final _filePropertyUpdatedListener =
|
||||||
|
AppEventListener<FilePropertyUpdatedEvent>(_onFilePropertyUpdated);
|
||||||
|
var _metadataTaskProcessCount = 0;
|
||||||
|
var _metadataTaskProcessTotalCount = 0;
|
||||||
late final _metadataTaskIconController = AnimationController(
|
late final _metadataTaskIconController = AnimationController(
|
||||||
upperBound: 2 * math.pi,
|
upperBound: 2 * math.pi,
|
||||||
duration: const Duration(seconds: 10),
|
duration: const Duration(seconds: 10),
|
||||||
|
|
Loading…
Reference in a new issue