finished customizable grade rarities

This commit is contained in:
Kima
2024-02-11 14:27:15 +01:00
parent 4b2b90be8e
commit 06247a160d
8 changed files with 253 additions and 11 deletions

View File

@@ -387,10 +387,21 @@ class SettingsHelper {
}
// v5 grade rarity texts
static void surpriseGradeRarityText(BuildContext context) {
static void surpriseGradeRarityText(
BuildContext context, {
required String title,
required String cancel,
required String done,
required List<String> rarities,
}) {
showRoundedModalBottomSheet(
context,
child: const GradeColorsSetting(),
child: GradeRarityTextSetting(
title: title,
cancel: cancel,
done: done,
defaultRarities: rarities,
),
);
}
}
@@ -726,6 +737,141 @@ class _GradeColorsSettingState extends State<GradeColorsSetting> {
}
}
class GradeRarityTextSetting extends StatefulWidget {
const GradeRarityTextSetting({
super.key,
required this.title,
required this.cancel,
required this.done,
required this.defaultRarities,
});
final String title;
final String cancel;
final String done;
final List<String> defaultRarities;
@override
_GradeRarityTextSettingState createState() => _GradeRarityTextSettingState();
}
class _GradeRarityTextSettingState extends State<GradeRarityTextSetting> {
late SettingsProvider settings;
late DatabaseProvider db;
late UserProvider user;
final _rarityText = TextEditingController();
@override
void initState() {
super.initState();
settings = Provider.of<SettingsProvider>(context, listen: false);
db = Provider.of<DatabaseProvider>(context, listen: false);
user = Provider.of<UserProvider>(context, listen: false);
}
@override
Widget build(BuildContext context) {
return Column(children: [
Padding(
padding: const EdgeInsets.all(8.0),
child: Row(
mainAxisAlignment: MainAxisAlignment.spaceEvenly,
children: List.generate(5, (index) {
return ClipOval(
child: Material(
type: MaterialType.transparency,
child: InkWell(
onTap: () async {
showRenameDialog(
title: widget.title,
cancel: widget.cancel,
done: widget.done,
rarities:
await db.userQuery.getGradeRarities(userId: user.id!),
gradeIndex: (index + 1).toString(),
defaultRarities: widget.defaultRarities,
);
},
child: GradeValueWidget(GradeValue(index + 1, "", "", 0),
fill: true, size: 36.0),
),
),
);
}),
),
),
]);
}
void showRenameDialog(
{required String title,
required String cancel,
required String done,
required Map<String, String> rarities,
required String gradeIndex,
required List<String> defaultRarities,
required}) {
showDialog(
context: context,
builder: (context) => StatefulBuilder(builder: (context, setS) {
String? rr = rarities[gradeIndex];
rr ??= '';
_rarityText.text = rr;
return AlertDialog(
title: Text(title),
content: TextField(
controller: _rarityText,
autofocus: true,
decoration: InputDecoration(
border: const OutlineInputBorder(),
label: Text(defaultRarities[int.parse(gradeIndex) - 1]),
suffixIcon: IconButton(
icon: const Icon(FeatherIcons.x),
onPressed: () {
setState(() {
_rarityText.clear();
});
},
),
),
),
actions: [
TextButton(
child: Text(
cancel,
style: const TextStyle(fontWeight: FontWeight.w500),
),
onPressed: () {
Navigator.of(context).maybePop();
},
),
TextButton(
child: Text(
done,
style: const TextStyle(fontWeight: FontWeight.w500),
),
onPressed: () {
rarities[gradeIndex] = _rarityText.text;
Provider.of<DatabaseProvider>(context, listen: false)
.userStore
.storeGradeRarities(rarities, userId: user.id!);
Navigator.of(context).pop(true);
},
),
],
);
}),
).then((val) {
_rarityText.clear();
});
}
}
class LiveActivityColorSetting extends StatefulWidget {
const LiveActivityColorSetting({super.key});

View File

@@ -84,7 +84,19 @@ class ExtrasSettingsScreenState extends State<ExtrasSettingsScreen> {
onPressed: () async {
// settingsProvider.update(
// gradeOpeningFun: !settingsProvider.gradeOpeningFun);
SettingsHelper.surpriseGradeRarityText(context);
SettingsHelper.surpriseGradeRarityText(
context,
title: 'rarity_title'.i18n,
cancel: 'cancel'.i18n,
done: 'done'.i18n,
rarities: [
"common".i18n,
"uncommon".i18n,
"rare".i18n,
"epic".i18n,
"legendary".i18n,
],
);
setState(() {});
},
trailingDivider: true,

View File

@@ -8,18 +8,45 @@ extension SettingsLocalization on String {
"personalization": "Personalization",
"extras": "Extras",
"surprise_grades": "Surprise Grades",
"cancel": "Cancel",
"done": "Done",
"rarity_title": "Rarity Text",
// default rarities
"common": "Common",
"uncommon": "Uncommon",
"rare": "Rare",
"epic": "Epic",
"legendary": "Legendary",
},
"hu_hu": {
"general": "Általános",
"personalization": "Személyre szabás",
"extras": "Extrák",
"surprise_grades": "Meglepetés jegyek",
"cancel": "Mégse",
"done": "Kész",
"rarity_title": "Ritkaság szövege",
// default rarities
"common": "Gyakori",
"uncommon": "Nem gyakori",
"rare": "Ritka",
"epic": "Epikus",
"legendary": "Legendás",
},
"de_de": {
"general": "Allgemeine",
"personalization": "Personalisierung",
"extras": "Extras",
"surprise_grades": "Überraschende Noten",
"cancel": "Abbrechen",
"done": "Bereit",
"rarity_title": "Text zur Seltenheit",
// default rarities
"common": "Gemeinsam",
"uncommon": "Gelegentlich",
"rare": "Selten",
"epic": "Episch",
"legendary": "Legendär",
},
};