mirror of
https://github.com/LinwoodDev/Butterfly.git
synced 2025-08-17 12:00:48 +08:00
125 lines
3.7 KiB
Dart
125 lines
3.7 KiB
Dart
import 'package:butterfly/api/file_system/file_system_remote.dart';
|
|
import 'package:butterfly/cubits/settings.dart';
|
|
import 'package:butterfly/services/sync.dart';
|
|
import 'package:flutter/material.dart';
|
|
import 'package:flutter_gen/gen_l10n/app_localizations.dart';
|
|
import 'package:phosphor_flutter/phosphor_flutter.dart';
|
|
|
|
extension FileSyncStatusVisualizer on FileSyncStatus? {
|
|
String getLocalizedName(BuildContext context) {
|
|
switch (this) {
|
|
case FileSyncStatus.localLatest:
|
|
return AppLocalizations.of(context).localLatest;
|
|
case FileSyncStatus.remoteLatest:
|
|
return AppLocalizations.of(context).connectionLatest;
|
|
case FileSyncStatus.synced:
|
|
return AppLocalizations.of(context).synced;
|
|
case FileSyncStatus.conflict:
|
|
return AppLocalizations.of(context).conflict;
|
|
case FileSyncStatus.offline:
|
|
return AppLocalizations.of(context).offline;
|
|
default:
|
|
return AppLocalizations.of(context).loading;
|
|
}
|
|
}
|
|
|
|
PhosphorIconData getIcon() {
|
|
switch (this) {
|
|
case FileSyncStatus.localLatest:
|
|
return PhosphorIconsLight.upload;
|
|
case FileSyncStatus.remoteLatest:
|
|
return PhosphorIconsLight.download;
|
|
case FileSyncStatus.synced:
|
|
return PhosphorIconsLight.check;
|
|
case FileSyncStatus.conflict:
|
|
return PhosphorIconsLight.warning;
|
|
case FileSyncStatus.offline:
|
|
return PhosphorIconsLight.wifiSlash;
|
|
default:
|
|
return PhosphorIconsLight.arrowClockwise;
|
|
}
|
|
}
|
|
|
|
Color getColor(ColorScheme colorScheme) {
|
|
switch (this) {
|
|
case FileSyncStatus.synced:
|
|
return colorScheme.primary;
|
|
case FileSyncStatus.localLatest:
|
|
return colorScheme.secondary;
|
|
case FileSyncStatus.remoteLatest:
|
|
return colorScheme.tertiary;
|
|
case FileSyncStatus.conflict:
|
|
return colorScheme.error;
|
|
case FileSyncStatus.offline:
|
|
return colorScheme.onSurface;
|
|
default:
|
|
return colorScheme.onSurface;
|
|
}
|
|
}
|
|
}
|
|
|
|
extension SyncStatusVisualizer on SyncStatus? {
|
|
String getLocalizedName(BuildContext context) {
|
|
switch (this) {
|
|
case SyncStatus.syncing:
|
|
return AppLocalizations.of(context).syncing;
|
|
case SyncStatus.synced:
|
|
return AppLocalizations.of(context).synced;
|
|
case SyncStatus.error:
|
|
return AppLocalizations.of(context).error;
|
|
default:
|
|
return AppLocalizations.of(context).loading;
|
|
}
|
|
}
|
|
|
|
PhosphorIconData getIcon() {
|
|
switch (this) {
|
|
case SyncStatus.syncing:
|
|
return PhosphorIconsLight.arrowClockwise;
|
|
case SyncStatus.synced:
|
|
return PhosphorIconsLight.check;
|
|
case SyncStatus.error:
|
|
return PhosphorIconsLight.warning;
|
|
default:
|
|
return PhosphorIconsLight.arrowClockwise;
|
|
}
|
|
}
|
|
|
|
Color getColor(ColorScheme colorScheme) {
|
|
switch (this) {
|
|
case SyncStatus.syncing:
|
|
return colorScheme.onSurface;
|
|
case SyncStatus.synced:
|
|
return colorScheme.primary;
|
|
case SyncStatus.error:
|
|
return colorScheme.error;
|
|
default:
|
|
return colorScheme.onSurface;
|
|
}
|
|
}
|
|
}
|
|
|
|
extension SyncModeVisualizer on SyncMode {
|
|
String getLocalizedName(BuildContext context) {
|
|
switch (this) {
|
|
case SyncMode.always:
|
|
return AppLocalizations.of(context).always;
|
|
case SyncMode.noMobile:
|
|
return AppLocalizations.of(context).noMobile;
|
|
case SyncMode.manual:
|
|
return AppLocalizations.of(context).manual;
|
|
}
|
|
}
|
|
|
|
PhosphorIconData getIcon() {
|
|
switch (this) {
|
|
case SyncMode.always:
|
|
return PhosphorIconsLight.wifiHigh;
|
|
case SyncMode.noMobile:
|
|
return PhosphorIconsLight.wifiSlash;
|
|
case SyncMode.manual:
|
|
return PhosphorIconsLight.arrowClockwise;
|
|
}
|
|
}
|
|
}
|