Search UI improvements (#1506)

This commit is contained in:
Vishnu Mohandas 2023-11-17 09:45:23 +05:30 committed by GitHub
commit 519c15bfae
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
25 changed files with 375 additions and 120 deletions

BIN
assets/map.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 14 KiB

View file

@ -26,7 +26,12 @@ class MessageLookup extends MessageLookupByLibrary {
MessageLookupByLibrary.simpleMessage("Add to hidden album"),
"deleteConfirmDialogBody": MessageLookupByLibrary.simpleMessage(
"This account is linked to other ente apps, if you use any.\\n\\nYour uploaded data, across all ente apps, will be scheduled for deletion, and your account will be permanently deleted."),
"fileTypes": MessageLookupByLibrary.simpleMessage("File types"),
"modifyYourQueryOrTrySearchingFor":
MessageLookupByLibrary.simpleMessage(
"Modify your query, or try searching for"),
"moveToHiddenAlbum":
MessageLookupByLibrary.simpleMessage("Move to hidden album")
MessageLookupByLibrary.simpleMessage("Move to hidden album"),
"yourMap": MessageLookupByLibrary.simpleMessage("Your map")
};
}

View file

@ -56,7 +56,7 @@ class MessageLookup extends MessageLookupByLibrary {
"Bitte kontaktieren Sie uns über support@ente.io, um Ihr ${provider} Abo zu verwalten.";
static String m11(count) =>
"${Intl.plural(count, one: 'Lösche 1 Element', other: 'Lösche ${count} Elemente')}";
"${Intl.plural(count, one: 'Lösche ${count} Element', other: 'Lösche ${count} Elemente')}";
static String m12(currentlyDeleting, totalCount) =>
"Lösche ${currentlyDeleting} / ${totalCount}";
@ -681,6 +681,7 @@ class MessageLookup extends MessageLookupByLibrary {
MessageLookupByLibrary.simpleMessage("Beschreibung hinzufügen …"),
"fileSavedToGallery": MessageLookupByLibrary.simpleMessage(
"Datei in Galerie gespeichert"),
"fileTypes": MessageLookupByLibrary.simpleMessage("File types"),
"filesBackedUpFromDevice": m19,
"filesBackedUpInAlbum": m20,
"filesDeleted":
@ -860,6 +861,9 @@ class MessageLookup extends MessageLookupByLibrary {
"mobileWebDesktop":
MessageLookupByLibrary.simpleMessage("Mobil, Web, Desktop"),
"moderateStrength": MessageLookupByLibrary.simpleMessage("Mittel"),
"modifyYourQueryOrTrySearchingFor":
MessageLookupByLibrary.simpleMessage(
"Modify your query, or try searching for"),
"monthly": MessageLookupByLibrary.simpleMessage("Monatlich"),
"moveItem": m30,
"moveToAlbum":
@ -1451,6 +1455,7 @@ class MessageLookup extends MessageLookupByLibrary {
"youHaveSuccessfullyFreedUp": m63,
"yourAccountHasBeenDeleted": MessageLookupByLibrary.simpleMessage(
"Dein Benutzerkonto wurde gelöscht"),
"yourMap": MessageLookupByLibrary.simpleMessage("Your map"),
"yourPlanWasSuccessfullyDowngraded":
MessageLookupByLibrary.simpleMessage(
"Ihr Tarif wurde erfolgreich heruntergestuft"),

View file

@ -137,6 +137,9 @@ class MessageLookup extends MessageLookupByLibrary {
static String m41(endDate) => "Renews on ${endDate}";
static String m64(count) =>
"${Intl.plural(count, one: '${count} result found', other: '${count} results found')}";
static String m42(count) => "${count} selected";
static String m43(count, yourCount) =>
@ -187,7 +190,7 @@ class MessageLookup extends MessageLookupByLibrary {
static String m59(count) =>
"${Intl.plural(count, zero: '', one: '1 day', other: '${count} days')}";
static String m64(endDate) => "Valid till ${endDate}";
static String m65(endDate) => "Valid till ${endDate}";
static String m60(email) => "Verify ${email}";
@ -220,6 +223,7 @@ class MessageLookup extends MessageLookupByLibrary {
"addLocation": MessageLookupByLibrary.simpleMessage("Add location"),
"addLocationButton": MessageLookupByLibrary.simpleMessage("Add"),
"addMore": MessageLookupByLibrary.simpleMessage("Add more"),
"addNew": MessageLookupByLibrary.simpleMessage("Add new"),
"addOnPageSubtitle":
MessageLookupByLibrary.simpleMessage("Details of add-ons"),
"addOns": MessageLookupByLibrary.simpleMessage("Add-ons"),
@ -230,6 +234,8 @@ class MessageLookup extends MessageLookupByLibrary {
"addToHiddenAlbum":
MessageLookupByLibrary.simpleMessage("Add to hidden album"),
"addViewer": MessageLookupByLibrary.simpleMessage("Add viewer"),
"addYourPhotosNow":
MessageLookupByLibrary.simpleMessage("Add your photos now"),
"addedAs": MessageLookupByLibrary.simpleMessage("Added as"),
"addedBy": m1,
"addedSuccessfullyTo": m2,
@ -435,6 +441,7 @@ class MessageLookup extends MessageLookupByLibrary {
"contactSupport":
MessageLookupByLibrary.simpleMessage("Contact support"),
"contactToManageSubscription": m10,
"contents": MessageLookupByLibrary.simpleMessage("Contents"),
"continueLabel": MessageLookupByLibrary.simpleMessage("Continue"),
"continueOnFreeTrial":
MessageLookupByLibrary.simpleMessage("Continue on free trial"),
@ -634,6 +641,7 @@ class MessageLookup extends MessageLookupByLibrary {
"exportLogs": MessageLookupByLibrary.simpleMessage("Export logs"),
"exportYourData":
MessageLookupByLibrary.simpleMessage("Export your data"),
"faces": MessageLookupByLibrary.simpleMessage("Faces"),
"failedToApplyCode":
MessageLookupByLibrary.simpleMessage("Failed to apply code"),
"failedToCancel":
@ -664,6 +672,7 @@ class MessageLookup extends MessageLookupByLibrary {
MessageLookupByLibrary.simpleMessage("Add a description..."),
"fileSavedToGallery":
MessageLookupByLibrary.simpleMessage("File saved to gallery"),
"fileTypes": MessageLookupByLibrary.simpleMessage("File types"),
"fileTypesAndNames":
MessageLookupByLibrary.simpleMessage("File types and names"),
"filesBackedUpFromDevice": m19,
@ -778,6 +787,7 @@ class MessageLookup extends MessageLookupByLibrary {
"linkHasExpired":
MessageLookupByLibrary.simpleMessage("Link has expired"),
"linkNeverExpires": MessageLookupByLibrary.simpleMessage("Never"),
"livePhotos": MessageLookupByLibrary.simpleMessage("Live Photos"),
"loadMessage1": MessageLookupByLibrary.simpleMessage(
"You can share your subscription with your family"),
"loadMessage2": MessageLookupByLibrary.simpleMessage(
@ -839,6 +849,9 @@ class MessageLookup extends MessageLookupByLibrary {
"mobileWebDesktop":
MessageLookupByLibrary.simpleMessage("Mobile, Web, Desktop"),
"moderateStrength": MessageLookupByLibrary.simpleMessage("Moderate"),
"modifyYourQueryOrTrySearchingFor":
MessageLookupByLibrary.simpleMessage(
"Modify your query, or try searching for"),
"moments": MessageLookupByLibrary.simpleMessage("Moments"),
"monthly": MessageLookupByLibrary.simpleMessage("Monthly"),
"moveItem": m30,
@ -927,6 +940,7 @@ class MessageLookup extends MessageLookupByLibrary {
"photoGridSize":
MessageLookupByLibrary.simpleMessage("Photo grid size"),
"photoSmallCase": MessageLookupByLibrary.simpleMessage("photo"),
"photos": MessageLookupByLibrary.simpleMessage("Photos"),
"photosAddedByYouWillBeRemovedFromTheAlbum":
MessageLookupByLibrary.simpleMessage(
"Photos added by you will be removed from the album"),
@ -1098,12 +1112,22 @@ class MessageLookup extends MessageLookupByLibrary {
MessageLookupByLibrary.simpleMessage("Find all photos of a person"),
"searchFileTypesAndNamesEmptySection":
MessageLookupByLibrary.simpleMessage("File types and names"),
"searchHint1":
MessageLookupByLibrary.simpleMessage("Fast, on-device search"),
"searchHint2":
MessageLookupByLibrary.simpleMessage("Photo dates, descriptions"),
"searchHint3": MessageLookupByLibrary.simpleMessage(
"Albums, file names, and types"),
"searchHint4": MessageLookupByLibrary.simpleMessage("Location"),
"searchHint5": MessageLookupByLibrary.simpleMessage(
"Coming soon: Photo contents, faces"),
"searchHintText": MessageLookupByLibrary.simpleMessage(
"Albums, months, days, years, ..."),
"searchLocationEmptySection": MessageLookupByLibrary.simpleMessage(
"Group photos that are taken within some radius of a photo"),
"searchPeopleEmptySection": MessageLookupByLibrary.simpleMessage(
"Invite people, and you\'ll see all photos shared by them here"),
"searchResultCount": m64,
"security": MessageLookupByLibrary.simpleMessage("Security"),
"selectAlbum": MessageLookupByLibrary.simpleMessage("Select album"),
"selectAll": MessageLookupByLibrary.simpleMessage("Select all"),
@ -1352,7 +1376,7 @@ class MessageLookup extends MessageLookupByLibrary {
"useSelectedPhoto":
MessageLookupByLibrary.simpleMessage("Use selected photo"),
"usedSpace": MessageLookupByLibrary.simpleMessage("Used space"),
"validTill": m64,
"validTill": m65,
"verificationFailedPleaseTryAgain":
MessageLookupByLibrary.simpleMessage(
"Verification failed, please try again"),
@ -1368,6 +1392,7 @@ class MessageLookup extends MessageLookupByLibrary {
"verifyingRecoveryKey":
MessageLookupByLibrary.simpleMessage("Verifying recovery key..."),
"videoSmallCase": MessageLookupByLibrary.simpleMessage("video"),
"videos": MessageLookupByLibrary.simpleMessage("Videos"),
"viewActiveSessions":
MessageLookupByLibrary.simpleMessage("View active sessions"),
"viewAddOnButton": MessageLookupByLibrary.simpleMessage("View add-ons"),
@ -1422,6 +1447,7 @@ class MessageLookup extends MessageLookupByLibrary {
"youHaveSuccessfullyFreedUp": m63,
"yourAccountHasBeenDeleted": MessageLookupByLibrary.simpleMessage(
"Your account has been deleted"),
"yourMap": MessageLookupByLibrary.simpleMessage("Your map"),
"yourPlanWasSuccessfullyDowngraded":
MessageLookupByLibrary.simpleMessage(
"Your plan was successfully downgraded"),

View file

@ -621,6 +621,7 @@ class MessageLookup extends MessageLookupByLibrary {
MessageLookupByLibrary.simpleMessage("Añadir una descripción..."),
"fileSavedToGallery": MessageLookupByLibrary.simpleMessage(
"Archivo guardado en la galería"),
"fileTypes": MessageLookupByLibrary.simpleMessage("File types"),
"filesBackedUpFromDevice": m19,
"filesBackedUpInAlbum": m20,
"filesDeleted":
@ -787,6 +788,9 @@ class MessageLookup extends MessageLookupByLibrary {
"mobileWebDesktop":
MessageLookupByLibrary.simpleMessage("Celular, Web, Computadora"),
"moderateStrength": MessageLookupByLibrary.simpleMessage("Moderada"),
"modifyYourQueryOrTrySearchingFor":
MessageLookupByLibrary.simpleMessage(
"Modify your query, or try searching for"),
"monthly": MessageLookupByLibrary.simpleMessage("Mensual"),
"moveItem": m30,
"moveToAlbum": MessageLookupByLibrary.simpleMessage("Mover al álbum"),
@ -1327,6 +1331,7 @@ class MessageLookup extends MessageLookupByLibrary {
"youHaveSuccessfullyFreedUp": m63,
"yourAccountHasBeenDeleted":
MessageLookupByLibrary.simpleMessage("Su cuenta ha sido eliminada"),
"yourMap": MessageLookupByLibrary.simpleMessage("Your map"),
"yourPlanWasSuccessfullyDowngraded":
MessageLookupByLibrary.simpleMessage(
"Tu plan ha sido degradado con éxito"),

View file

@ -689,6 +689,7 @@ class MessageLookup extends MessageLookupByLibrary {
MessageLookupByLibrary.simpleMessage("Ajouter une description..."),
"fileSavedToGallery": MessageLookupByLibrary.simpleMessage(
"Fichier enregistré dans la galerie"),
"fileTypes": MessageLookupByLibrary.simpleMessage("File types"),
"filesBackedUpFromDevice": m19,
"filesBackedUpInAlbum": m20,
"filesDeleted":
@ -873,6 +874,9 @@ class MessageLookup extends MessageLookupByLibrary {
MessageLookupByLibrary.simpleMessage("Mobile, Web, Ordinateur"),
"moderateStrength":
MessageLookupByLibrary.simpleMessage("Sécurité moyenne"),
"modifyYourQueryOrTrySearchingFor":
MessageLookupByLibrary.simpleMessage(
"Modify your query, or try searching for"),
"monthly": MessageLookupByLibrary.simpleMessage("Mensuel"),
"moveItem": m30,
"moveToAlbum":
@ -1477,6 +1481,7 @@ class MessageLookup extends MessageLookupByLibrary {
"youHaveSuccessfullyFreedUp": m63,
"yourAccountHasBeenDeleted":
MessageLookupByLibrary.simpleMessage("Votre compte a été supprimé"),
"yourMap": MessageLookupByLibrary.simpleMessage("Your map"),
"yourPlanWasSuccessfullyDowngraded":
MessageLookupByLibrary.simpleMessage(
"Votre plan a été rétrogradé avec succès"),

View file

@ -187,7 +187,7 @@ class MessageLookup extends MessageLookupByLibrary {
static String m59(count) =>
"${Intl.plural(count, zero: '', one: '1 giorno', other: '${count} giorni')}";
static String m64(endDate) => "Valido fino al ${endDate}";
static String m65(endDate) => "Valido fino al ${endDate}";
static String m60(email) => "Verifica ${email}";
@ -865,6 +865,9 @@ class MessageLookup extends MessageLookupByLibrary {
"mobileWebDesktop":
MessageLookupByLibrary.simpleMessage("Mobile, Web, Desktop"),
"moderateStrength": MessageLookupByLibrary.simpleMessage("Mediocre"),
"modifyYourQueryOrTrySearchingFor":
MessageLookupByLibrary.simpleMessage(
"Modify your query, or try searching for"),
"monthly": MessageLookupByLibrary.simpleMessage("Mensile"),
"moveItem": m30,
"moveToAlbum":
@ -1387,7 +1390,7 @@ class MessageLookup extends MessageLookupByLibrary {
"useSelectedPhoto":
MessageLookupByLibrary.simpleMessage("Usa la foto selezionata"),
"usedSpace": MessageLookupByLibrary.simpleMessage("Spazio utilizzato"),
"validTill": m64,
"validTill": m65,
"verificationFailedPleaseTryAgain":
MessageLookupByLibrary.simpleMessage(
"Verifica fallita, per favore prova di nuovo"),
@ -1459,6 +1462,7 @@ class MessageLookup extends MessageLookupByLibrary {
"youHaveSuccessfullyFreedUp": m63,
"yourAccountHasBeenDeleted": MessageLookupByLibrary.simpleMessage(
"Il tuo account è stato eliminato"),
"yourMap": MessageLookupByLibrary.simpleMessage("Your map"),
"yourPlanWasSuccessfullyDowngraded":
MessageLookupByLibrary.simpleMessage(
"Il tuo piano è stato aggiornato con successo"),

View file

@ -26,7 +26,12 @@ class MessageLookup extends MessageLookupByLibrary {
MessageLookupByLibrary.simpleMessage("Add to hidden album"),
"deleteConfirmDialogBody": MessageLookupByLibrary.simpleMessage(
"This account is linked to other ente apps, if you use any.\\n\\nYour uploaded data, across all ente apps, will be scheduled for deletion, and your account will be permanently deleted."),
"fileTypes": MessageLookupByLibrary.simpleMessage("File types"),
"modifyYourQueryOrTrySearchingFor":
MessageLookupByLibrary.simpleMessage(
"Modify your query, or try searching for"),
"moveToHiddenAlbum":
MessageLookupByLibrary.simpleMessage("Move to hidden album")
MessageLookupByLibrary.simpleMessage("Move to hidden album"),
"yourMap": MessageLookupByLibrary.simpleMessage("Your map")
};
}

View file

@ -684,6 +684,7 @@ class MessageLookup extends MessageLookupByLibrary {
"Voeg een beschrijving toe..."),
"fileSavedToGallery": MessageLookupByLibrary.simpleMessage(
"Bestand opgeslagen in galerij"),
"fileTypes": MessageLookupByLibrary.simpleMessage("File types"),
"filesBackedUpFromDevice": m19,
"filesBackedUpInAlbum": m20,
"filesDeleted":
@ -859,6 +860,9 @@ class MessageLookup extends MessageLookupByLibrary {
"mobileWebDesktop":
MessageLookupByLibrary.simpleMessage("Mobiel, Web, Desktop"),
"moderateStrength": MessageLookupByLibrary.simpleMessage("Matig"),
"modifyYourQueryOrTrySearchingFor":
MessageLookupByLibrary.simpleMessage(
"Modify your query, or try searching for"),
"monthly": MessageLookupByLibrary.simpleMessage("Maandelijks"),
"moveItem": m30,
"moveToAlbum":
@ -1444,6 +1448,7 @@ class MessageLookup extends MessageLookupByLibrary {
"youHaveSuccessfullyFreedUp": m63,
"yourAccountHasBeenDeleted":
MessageLookupByLibrary.simpleMessage("Je account is verwijderd"),
"yourMap": MessageLookupByLibrary.simpleMessage("Your map"),
"yourPlanWasSuccessfullyDowngraded":
MessageLookupByLibrary.simpleMessage(
"Uw abonnement is succesvol gedegradeerd"),

View file

@ -44,12 +44,17 @@ class MessageLookup extends MessageLookupByLibrary {
"enterYourEmailAddress": MessageLookupByLibrary.simpleMessage(
"Skriv inn e-postadressen din"),
"feedback": MessageLookupByLibrary.simpleMessage("Tilbakemelding"),
"fileTypes": MessageLookupByLibrary.simpleMessage("File types"),
"invalidEmailAddress":
MessageLookupByLibrary.simpleMessage("Ugyldig e-postadresse"),
"kindlyHelpUsWithThisInformation": MessageLookupByLibrary.simpleMessage(
"Vær vennlig og hjelp oss med denne informasjonen"),
"modifyYourQueryOrTrySearchingFor":
MessageLookupByLibrary.simpleMessage(
"Modify your query, or try searching for"),
"moveToHiddenAlbum":
MessageLookupByLibrary.simpleMessage("Move to hidden album"),
"verify": MessageLookupByLibrary.simpleMessage("Bekreft")
"verify": MessageLookupByLibrary.simpleMessage("Bekreft"),
"yourMap": MessageLookupByLibrary.simpleMessage("Your map")
};
}

View file

@ -92,6 +92,7 @@ class MessageLookup extends MessageLookupByLibrary {
"enterYourRecoveryKey": MessageLookupByLibrary.simpleMessage(
"Wprowadź swój klucz odzyskiwania"),
"feedback": MessageLookupByLibrary.simpleMessage("Informacja zwrotna"),
"fileTypes": MessageLookupByLibrary.simpleMessage("File types"),
"forgotPassword":
MessageLookupByLibrary.simpleMessage("Nie pamiętam hasła"),
"generatingEncryptionKeys": MessageLookupByLibrary.simpleMessage(
@ -109,6 +110,9 @@ class MessageLookup extends MessageLookupByLibrary {
MessageLookupByLibrary.simpleMessage("Pomóż nam z tą informacją"),
"logInLabel": MessageLookupByLibrary.simpleMessage("Zaloguj się"),
"moderateStrength": MessageLookupByLibrary.simpleMessage("Umiarkowana"),
"modifyYourQueryOrTrySearchingFor":
MessageLookupByLibrary.simpleMessage(
"Modify your query, or try searching for"),
"moveToHiddenAlbum":
MessageLookupByLibrary.simpleMessage("Move to hidden album"),
"noRecoveryKey":
@ -180,7 +184,8 @@ class MessageLookup extends MessageLookupByLibrary {
MessageLookupByLibrary.simpleMessage("Zweryfikuj hasło"),
"weakStrength": MessageLookupByLibrary.simpleMessage("Słabe"),
"welcomeBack": MessageLookupByLibrary.simpleMessage("Witaj ponownie!"),
"yourAccountHasBeenDeleted":
MessageLookupByLibrary.simpleMessage("Twoje konto zostało usunięte")
"yourAccountHasBeenDeleted": MessageLookupByLibrary.simpleMessage(
"Twoje konto zostało usunięte"),
"yourMap": MessageLookupByLibrary.simpleMessage("Your map")
};
}

View file

@ -213,6 +213,7 @@ class MessageLookup extends MessageLookupByLibrary {
"Não foi possível buscar informações do produto. Por favor, tente novamente mais tarde."),
"faq": MessageLookupByLibrary.simpleMessage("Perguntas frequentes"),
"feedback": MessageLookupByLibrary.simpleMessage("Opinião"),
"fileTypes": MessageLookupByLibrary.simpleMessage("File types"),
"forgotPassword":
MessageLookupByLibrary.simpleMessage("Esqueceu sua senha"),
"freeStorageClaimed": MessageLookupByLibrary.simpleMessage(
@ -259,6 +260,9 @@ class MessageLookup extends MessageLookupByLibrary {
MessageLookupByLibrary.simpleMessage("Dispositivo perdido?"),
"manage": MessageLookupByLibrary.simpleMessage("Gerenciar"),
"moderateStrength": MessageLookupByLibrary.simpleMessage("Moderada"),
"modifyYourQueryOrTrySearchingFor":
MessageLookupByLibrary.simpleMessage(
"Modify your query, or try searching for"),
"moveToHiddenAlbum":
MessageLookupByLibrary.simpleMessage("Move to hidden album"),
"noRecoveryKey": MessageLookupByLibrary.simpleMessage(
@ -426,6 +430,7 @@ class MessageLookup extends MessageLookupByLibrary {
"youCanAtMaxDoubleYourStorage": MessageLookupByLibrary.simpleMessage(
"* Você pode duplicar seu armazenamento no máximo"),
"yourAccountHasBeenDeleted":
MessageLookupByLibrary.simpleMessage("Sua conta foi deletada")
MessageLookupByLibrary.simpleMessage("Sua conta foi deletada"),
"yourMap": MessageLookupByLibrary.simpleMessage("Your map")
};
}

View file

@ -170,7 +170,7 @@ class MessageLookup extends MessageLookupByLibrary {
static String m59(count) =>
"${Intl.plural(count, zero: '', one: '1天', other: '${count} 天')}";
static String m64(endDate) => "有效期至 ${endDate}";
static String m65(endDate) => "有效期至 ${endDate}";
static String m60(email) => "验证 ${email}";
@ -709,6 +709,9 @@ class MessageLookup extends MessageLookupByLibrary {
"mobileWebDesktop":
MessageLookupByLibrary.simpleMessage("移动端, 网页端, 桌面端"),
"moderateStrength": MessageLookupByLibrary.simpleMessage("中等"),
"modifyYourQueryOrTrySearchingFor":
MessageLookupByLibrary.simpleMessage(
"Modify your query, or try searching for"),
"monthly": MessageLookupByLibrary.simpleMessage("每月"),
"moveItem": m30,
"moveToAlbum": MessageLookupByLibrary.simpleMessage("移动到相册"),
@ -1117,7 +1120,7 @@ class MessageLookup extends MessageLookupByLibrary {
"useRecoveryKey": MessageLookupByLibrary.simpleMessage("使用恢复密钥"),
"useSelectedPhoto": MessageLookupByLibrary.simpleMessage("使用所选照片"),
"usedSpace": MessageLookupByLibrary.simpleMessage("已用空间"),
"validTill": m64,
"validTill": m65,
"verificationFailedPleaseTryAgain":
MessageLookupByLibrary.simpleMessage("验证失败,请重试"),
"verificationId": MessageLookupByLibrary.simpleMessage("验证 ID"),
@ -1175,6 +1178,7 @@ class MessageLookup extends MessageLookupByLibrary {
"youHaveSuccessfullyFreedUp": m63,
"yourAccountHasBeenDeleted":
MessageLookupByLibrary.simpleMessage("您的账户已删除"),
"yourMap": MessageLookupByLibrary.simpleMessage("Your map"),
"yourPlanWasSuccessfullyDowngraded":
MessageLookupByLibrary.simpleMessage("您的计划已成功降级"),
"yourPlanWasSuccessfullyUpgraded":

169
lib/generated/l10n.dart generated
View file

@ -6810,10 +6810,10 @@ class S {
}
/// `File types and names`
String get fileTypes {
String get fileTypesAndNames {
return Intl.message(
'File types',
name: 'fileTypes',
'File types and names',
name: 'fileTypesAndNames',
desc: '',
args: [],
);
@ -7825,6 +7825,16 @@ class S {
);
}
/// `File types`
String get fileTypes {
return Intl.message(
'File types',
name: 'fileTypes',
desc: '',
args: [],
);
}
/// `This account is linked to other ente apps, if you use any.\n\nYour uploaded data, across all ente apps, will be scheduled for deletion, and your account will be permanently deleted.`
String get deleteConfirmDialogBody {
return Intl.message(
@ -7895,16 +7905,6 @@ class S {
);
}
/// `Black Friday Sale`
String get blackFridaySale {
return Intl.message(
'Black Friday Sale',
name: 'blackFridaySale',
desc: '',
args: [],
);
}
/// `Modify your query, or try searching for`
String get modifyYourQueryOrTrySearchingFor {
return Intl.message(
@ -7915,6 +7915,16 @@ class S {
);
}
/// `Black Friday Sale`
String get blackFridaySale {
return Intl.message(
'Black Friday Sale',
name: 'blackFridaySale',
desc: '',
args: [],
);
}
/// `Upto 50% off, until 4th Dec.`
String get upto50OffUntil4thDec {
return Intl.message(
@ -7924,6 +7934,139 @@ class S {
args: [],
);
}
/// `Photos`
String get photos {
return Intl.message(
'Photos',
name: 'photos',
desc: '',
args: [],
);
}
/// `Videos`
String get videos {
return Intl.message(
'Videos',
name: 'videos',
desc: '',
args: [],
);
}
/// `Live Photos`
String get livePhotos {
return Intl.message(
'Live Photos',
name: 'livePhotos',
desc: '',
args: [],
);
}
/// `Fast, on-device search`
String get searchHint1 {
return Intl.message(
'Fast, on-device search',
name: 'searchHint1',
desc: '',
args: [],
);
}
/// `Photo dates, descriptions`
String get searchHint2 {
return Intl.message(
'Photo dates, descriptions',
name: 'searchHint2',
desc: '',
args: [],
);
}
/// `Albums, file names, and types`
String get searchHint3 {
return Intl.message(
'Albums, file names, and types',
name: 'searchHint3',
desc: '',
args: [],
);
}
/// `Location`
String get searchHint4 {
return Intl.message(
'Location',
name: 'searchHint4',
desc: '',
args: [],
);
}
/// `Coming soon: Photo contents, faces`
String get searchHint5 {
return Intl.message(
'Coming soon: Photo contents, faces',
name: 'searchHint5',
desc: '',
args: [],
);
}
/// `Add your photos now`
String get addYourPhotosNow {
return Intl.message(
'Add your photos now',
name: 'addYourPhotosNow',
desc: '',
args: [],
);
}
/// `{count, plural, one{{count} result found} other{{count} results found}}`
String searchResultCount(int count) {
return Intl.plural(
count,
one: '$count result found',
other: '$count results found',
name: 'searchResultCount',
desc:
'Text to tell user how many results were found for their search query',
args: [count],
);
}
/// `Faces`
String get faces {
return Intl.message(
'Faces',
name: 'faces',
desc: '',
args: [],
);
}
/// `Contents`
String get contents {
return Intl.message(
'Contents',
name: 'contents',
desc: '',
args: [],
);
}
/// `Add new`
String get addNew {
return Intl.message(
'Add new',
name: 'addNew',
desc: 'Text to add a new item (location tag, album, caption etc)',
args: [],
);
}
}
class AppLocalizationDelegate extends LocalizationsDelegate<S> {

View file

@ -1124,5 +1124,30 @@
"yourMap": "Your map",
"modifyYourQueryOrTrySearchingFor": "Modify your query, or try searching for",
"blackFridaySale": "Black Friday Sale",
"upto50OffUntil4thDec": "Upto 50% off, until 4th Dec."
"upto50OffUntil4thDec": "Upto 50% off, until 4th Dec.",
"photos": "Photos",
"videos": "Videos",
"livePhotos": "Live Photos",
"searchHint1": "Fast, on-device search",
"searchHint2": "Photo dates, descriptions",
"searchHint3": "Albums, file names, and types",
"searchHint4": "Location",
"searchHint5": "Coming soon: Photo contents, faces",
"addYourPhotosNow": "Add your photos now",
"searchResultCount": "{count, plural, one{{count} result found} other{{count} results found}}",
"@searchResultCount": {
"description": "Text to tell user how many results were found for their search query",
"placeholders": {
"count": {
"example": "1|2|3",
"type": "int"
}
}
},
"faces": "Faces",
"contents": "Contents",
"addNew": "Add new",
"@addNew": {
"description": "Text to add a new item (location tag, album, caption etc)"
}
}

View file

@ -1,4 +1,6 @@
import "package:flutter/material.dart";
import "package:photo_manager/photo_manager.dart";
import "package:photos/l10n/l10n.dart";
enum FileType {
image,
@ -54,14 +56,14 @@ FileType fileTypeFromAsset(AssetEntity asset) {
return type;
}
String getHumanReadableString(FileType fileType) {
String getHumanReadableString(BuildContext context, FileType fileType) {
switch (fileType) {
case FileType.image:
return "Image";
return context.l10n.photos;
case FileType.video:
return "Video";
return context.l10n.videos;
case FileType.livePhoto:
return "Live Photo";
return context.l10n.livePhotos;
default:
return fileType.name.toUpperCase();
}

View file

@ -50,9 +50,9 @@ extension SectionTypeExtensions on SectionType {
String sectionTitle(BuildContext context) {
switch (this) {
case SectionType.face:
return "Faces";
return S.of(context).faces;
case SectionType.content:
return "Contents";
return S.of(context).contents;
case SectionType.moment:
return S.of(context).moments;
case SectionType.location:
@ -136,21 +136,23 @@ extension SectionTypeExtensions on SectionType {
String getCTAText(BuildContext context) {
switch (this) {
case SectionType.face:
// todo: later
return "Setup";
case SectionType.content:
// todo: later
return "Add tags";
case SectionType.moment:
return "Add new";
return S.of(context).addNew;
case SectionType.location:
return "Add new";
return S.of(context).addNew;
case SectionType.people:
return "Invite";
return S.of(context).invite;
case SectionType.album:
return "Add new";
return S.of(context).addNew;
case SectionType.fileTypesAndExtension:
return "";
case SectionType.fileCaption:
return "Add new";
return S.of(context).addNew;
}
}
@ -230,10 +232,10 @@ extension SectionTypeExtensions on SectionType {
}
}
Future<List<SearchResult>> getData({int? limit, BuildContext? context}) {
if (this == SectionType.moment && context == null) {
AssertionError("context cannot be null for SectionType.moment");
}
Future<List<SearchResult>> getData(
BuildContext context, {
int? limit,
}) {
switch (this) {
case SectionType.face:
return SearchService.instance.getAllLocationTags(limit);
@ -242,7 +244,7 @@ extension SectionTypeExtensions on SectionType {
return SearchService.instance.getAllLocationTags(limit);
case SectionType.moment:
return SearchService.instance.getRandomMomentsSearchResults(context!);
return SearchService.instance.getRandomMomentsSearchResults(context);
case SectionType.location:
return SearchService.instance.getAllLocationTags(limit);
@ -255,7 +257,7 @@ extension SectionTypeExtensions on SectionType {
case SectionType.fileTypesAndExtension:
return SearchService.instance
.getAllFileTypesAndExtensionsResults(limit);
.getAllFileTypesAndExtensionsResults(context, limit);
case SectionType.fileCaption:
return SearchService.instance.getAllDescriptionSearchResults(limit);

View file

@ -287,12 +287,13 @@ class SearchService {
}
Future<List<GenericSearchResult>> getFileTypeResults(
BuildContext context,
String query,
) async {
final List<GenericSearchResult> searchResults = [];
final List<EnteFile> allFiles = await getAllFiles();
for (var fileType in FileType.values) {
final String fileTypeString = getHumanReadableString(fileType);
final String fileTypeString = getHumanReadableString(context, fileType);
if (fileTypeString.toLowerCase().startsWith(query.toLowerCase())) {
final matchedFiles =
allFiles.where((e) => e.fileType == fileType).toList();
@ -311,6 +312,7 @@ class SearchService {
}
Future<List<GenericSearchResult>> getAllFileTypesAndExtensionsResults(
BuildContext context,
int? limit,
) async {
final List<GenericSearchResult> searchResults = [];
@ -340,13 +342,23 @@ class SearchService {
}
fileTypesAndMatchingFiles.forEach((key, value) {
searchResults
.add(GenericSearchResult(ResultType.fileType, key.name, value));
searchResults.add(
GenericSearchResult(
ResultType.fileType,
getHumanReadableString(context, key),
value,
),
);
});
extensionsAndMatchingFiles.forEach((key, value) {
searchResults
.add(GenericSearchResult(ResultType.fileExtension, key, value));
searchResults.add(
GenericSearchResult(
ResultType.fileExtension,
key + "s",
value,
),
);
});
if (limit != null) {
@ -860,7 +872,9 @@ class SearchService {
searchResults.add(
GenericSearchResult(
ResultType.shared,
key.name != null && key.name!.isNotEmpty ? key.name! : key.email,
key.name != null && key.name!.isNotEmpty
? key.name!
: key.email.split("@")[0],
value,
),
);

View file

@ -1,7 +1,6 @@
import "dart:async";
import "package:flutter/material.dart";
import "package:flutter/scheduler.dart";
import "package:logging/logging.dart";
import "package:photos/core/constants.dart";
import "package:photos/core/event_bus.dart";
@ -37,13 +36,11 @@ class _AllSectionsExamplesProviderState
@override
void initState() {
super.initState();
SchedulerBinding.instance.addPostFrameCallback((timeStamp) {
//add all common events for all search sections to reload to here.
_filesUpdatedEvent = Bus.instance.on<FilesUpdatedEvent>().listen((event) {
reloadAllSections();
});
//add all common events for all search sections to reload to here.
_filesUpdatedEvent = Bus.instance.on<FilesUpdatedEvent>().listen((event) {
reloadAllSections();
});
reloadAllSections();
}
void reloadAllSections() {
@ -57,7 +54,7 @@ class _AllSectionsExamplesProviderState
continue;
}
allSectionsExamples.add(
sectionType.getData(limit: searchSectionLimit, context: context),
sectionType.getData(context, limit: searchSectionLimit),
);
}
allSectionsExamplesFuture =

View file

@ -1,4 +1,3 @@
import "package:flutter/cupertino.dart";
import "package:flutter/material.dart";
import "package:photos/generated/l10n.dart";
import "package:photos/services/search_service.dart";
@ -19,7 +18,6 @@ class GoToMapWidget extends StatelessWidget {
width = 85.0 + ((textScaleFactor - 1.0) * 64);
}
final colorScheme = getEnteColorScheme(context);
return GestureDetector(
onTap: () async {
final bool result = await requestForMapEnable(context);
@ -40,14 +38,10 @@ class GoToMapWidget extends StatelessWidget {
child: Column(
mainAxisSize: MainAxisSize.min,
children: [
SizedBox(
Image.asset(
"assets/map.png",
width: 64,
height: 64,
child: Icon(
CupertinoIcons.map_fill,
color: colorScheme.strokeFaint,
size: 48,
),
),
const SizedBox(
height: 10,

View file

@ -30,24 +30,20 @@ class _SearchSectionAllPageState extends State<SearchSectionAllPage> {
@override
void initState() {
super.initState();
sectionData = widget.sectionType.getData(context);
final streamsToListenTo = widget.sectionType.viewAllUpdateEvents();
for (Stream<Event> stream in streamsToListenTo) {
streamSubscriptions.add(
stream.listen((event) async {
setState(() {
sectionData = widget.sectionType.getData();
sectionData = widget.sectionType.getData(context);
});
}),
);
}
}
@override
void didChangeDependencies() {
super.didChangeDependencies();
sectionData = widget.sectionType.getData(limit: null, context: context);
}
@override
void dispose() {
for (var subscriptions in streamSubscriptions) {

View file

@ -48,8 +48,10 @@ class _SearchSectionState extends State<SearchSection> {
for (Stream<Event> stream in streamsToListenTo) {
streamSubscriptions.add(
stream.listen((event) async {
_examples =
await widget.sectionType.getData(limit: searchSectionLimit);
_examples = await widget.sectionType.getData(
context,
limit: searchSectionLimit,
);
setState(() {});
}),
);
@ -73,47 +75,51 @@ class _SearchSectionState extends State<SearchSection> {
@override
Widget build(BuildContext context) {
debugPrint("Building section for ${widget.sectionType.name}");
final shouldShowMore = _examples.length >= widget.limit - 1;
final textTheme = getEnteTextTheme(context);
return Padding(
padding: const EdgeInsets.symmetric(vertical: 8),
child: widget.examples.isNotEmpty
? Column(
crossAxisAlignment: CrossAxisAlignment.start,
children: [
Row(
mainAxisAlignment: MainAxisAlignment.spaceBetween,
children: [
Padding(
padding: const EdgeInsets.all(12),
child: Text(
widget.sectionType.sectionTitle(context),
style: textTheme.largeBold,
),
? GestureDetector(
behavior: HitTestBehavior.opaque,
onTap: () {
if (shouldShowMore) {
routeToPage(
context,
SearchSectionAllPage(
sectionType: widget.sectionType,
),
_examples.length < (widget.limit - 1)
? const SizedBox.shrink()
: GestureDetector(
onTap: () {
routeToPage(
context,
SearchSectionAllPage(
sectionType: widget.sectionType,
),
);
},
child: Padding(
);
}
},
child: Column(
crossAxisAlignment: CrossAxisAlignment.start,
children: [
Row(
mainAxisAlignment: MainAxisAlignment.spaceBetween,
children: [
Padding(
padding: const EdgeInsets.all(12),
child: Text(
widget.sectionType.sectionTitle(context),
style: textTheme.largeBold,
),
),
shouldShowMore
? Padding(
padding: const EdgeInsets.all(12),
child: Icon(
Icons.chevron_right_outlined,
color: getEnteColorScheme(context).strokeMuted,
),
),
),
],
),
const SizedBox(height: 2),
SearchExampleRow(_examples, widget.sectionType),
],
)
: const SizedBox.shrink(),
],
),
const SizedBox(height: 2),
SearchExampleRow(_examples, widget.sectionType),
],
),
)
: Padding(
padding: const EdgeInsets.only(left: 16, right: 8),

View file

@ -1,5 +1,6 @@
import 'package:flutter/material.dart';
import 'package:logging/logging.dart';
import "package:photos/generated/l10n.dart";
import 'package:photos/models/search/album_search_result.dart';
import 'package:photos/models/search/generic_search_result.dart';
import 'package:photos/models/search/search_result.dart';
@ -21,12 +22,7 @@ class SearchSuggestionsWidget extends StatelessWidget {
Widget build(BuildContext context) {
late final String title;
final resultsCount = results.length;
//todo: extract string
if (resultsCount == 1) {
title = "$resultsCount result found";
} else {
title = "$resultsCount results found";
}
title = S.of(context).searchResultCount(resultsCount);
return Padding(
padding: const EdgeInsets.fromLTRB(12, 32, 12, 0),
child: Column(

View file

@ -225,7 +225,7 @@ class SearchWidgetState extends State<SearchWidget> {
allResults.addAll(holidayResults);
final fileTypeSearchResults =
await _searchService.getFileTypeResults(query);
await _searchService.getFileTypeResults(context, query);
allResults.addAll(fileTypeSearchResults);
final captionAndDisplayNameResult =

View file

@ -1,4 +1,5 @@
import "package:flutter/material.dart";
import "package:photos/generated/l10n.dart";
import "package:photos/theme/ente_theme.dart";
import "package:photos/ui/components/buttons/button_widget.dart";
import "package:photos/ui/components/empty_state_item_widget.dart";
@ -19,25 +20,25 @@ class SearchTabEmptyState extends StatelessWidget {
mainAxisAlignment: MainAxisAlignment.center,
crossAxisAlignment: CrossAxisAlignment.start,
children: [
Text("Fast, on-device search", style: textStyle.h3Bold),
Text(S.of(context).searchHint1, style: textStyle.h3Bold),
const SizedBox(height: 24),
const EmptyStateItemWidget("Photo dates, descriptions"),
EmptyStateItemWidget(S.of(context).searchHint2),
const SizedBox(height: 12),
const EmptyStateItemWidget("Albums, file names, and types"),
EmptyStateItemWidget(S.of(context).searchHint3),
const SizedBox(height: 12),
const EmptyStateItemWidget("Location"),
EmptyStateItemWidget(S.of(context).searchHint4),
const SizedBox(height: 12),
const EmptyStateItemWidget("Coming soon: Photo contents, faces"),
EmptyStateItemWidget(S.of(context).searchHint5),
const SizedBox(height: 32),
ButtonWidget(
buttonType: ButtonType.trailingIconPrimary,
labelText: "Add your photos now",
labelText: S.of(context).addYourPhotosNow,
icon: Icons.arrow_forward_outlined,
onTap: () async {
routeToPage(
context,
const BackupFolderSelectionPage(
buttonText: "Backup",
BackupFolderSelectionPage(
buttonText: S.of(context).backup,
),
);
},