diff --git a/lib/geo/states.dart b/lib/geo/states.dart index 940596907..b837f2a79 100644 --- a/lib/geo/states.dart +++ b/lib/geo/states.dart @@ -1,4 +1,4 @@ -import 'package:aves/utils/emoji_utils.dart'; +import 'package:aves/ref/unicode.dart'; import 'package:country_code/country_code.dart'; class GeoStates { @@ -15,73 +15,73 @@ class GeoStates { }; static const _australiaEnglish = { - 'Australian Capital Territory': StateCodes.auAustralianCapitalTerritory, - 'New South Wales': StateCodes.auNewSouthWales, - 'Northern Territory': StateCodes.auNorthernTerritory, - 'Queensland': StateCodes.auQueensland, - 'South Australia': StateCodes.auSouthAustralia, - 'Tasmania': StateCodes.auTasmania, - 'Victoria': StateCodes.auVictoria, - 'Western Australia': StateCodes.auWesternAustralia, + 'Australian Capital Territory': EmojiStateCodes.auAustralianCapitalTerritory, + 'New South Wales': EmojiStateCodes.auNewSouthWales, + 'Northern Territory': EmojiStateCodes.auNorthernTerritory, + 'Queensland': EmojiStateCodes.auQueensland, + 'South Australia': EmojiStateCodes.auSouthAustralia, + 'Tasmania': EmojiStateCodes.auTasmania, + 'Victoria': EmojiStateCodes.auVictoria, + 'Western Australia': EmojiStateCodes.auWesternAustralia, }; static const _unitedKingdomEnglish = { - 'England': StateCodes.gbEngland, - 'Northern Ireland': StateCodes.gbNorthernIreland, - 'Scotland': StateCodes.gbScotland, - 'Wales': StateCodes.gbWales, + 'England': EmojiStateCodes.gbEngland, + 'Northern Ireland': EmojiStateCodes.gbNorthernIreland, + 'Scotland': EmojiStateCodes.gbScotland, + 'Wales': EmojiStateCodes.gbWales, }; static const _unitedStatesEnglish = { - 'Alabama': StateCodes.usAlabama, - 'Alaska': StateCodes.usAlaska, - 'Arizona': StateCodes.usArizona, - 'Arkansas': StateCodes.usArkansas, - 'California': StateCodes.usCalifornia, - 'Colorado': StateCodes.usColorado, - 'Connecticut': StateCodes.usConnecticut, - 'Delaware': StateCodes.usDelaware, - 'Florida': StateCodes.usFlorida, - 'Georgia': StateCodes.usGeorgia, - 'Hawaii': StateCodes.usHawaii, - 'Idaho': StateCodes.usIdaho, - 'Illinois': StateCodes.usIllinois, - 'Indiana': StateCodes.usIndiana, - 'Iowa': StateCodes.usIowa, - 'Kansas': StateCodes.usKansas, - 'Kentucky': StateCodes.usKentucky, - 'Louisiana': StateCodes.usLouisiana, - 'Maine': StateCodes.usMaine, - 'Maryland': StateCodes.usMaryland, - 'Massachusetts': StateCodes.usMassachusetts, - 'Michigan': StateCodes.usMichigan, - 'Minnesota': StateCodes.usMinnesota, - 'Mississippi': StateCodes.usMississippi, - 'Missouri': StateCodes.usMissouri, - 'Montana': StateCodes.usMontana, - 'Nebraska': StateCodes.usNebraska, - 'Nevada': StateCodes.usNevada, - 'New Hampshire': StateCodes.usNewHampshire, - 'New Jersey': StateCodes.usNewJersey, - 'New Mexico': StateCodes.usNewMexico, - 'New York': StateCodes.usNewYork, - 'North Carolina': StateCodes.usNorthCarolina, - 'North Dakota': StateCodes.usNorthDakota, - 'Ohio': StateCodes.usOhio, - 'Oklahoma': StateCodes.usOklahoma, - 'Oregon': StateCodes.usOregon, - 'Pennsylvania': StateCodes.usPennsylvania, - 'Rhode Island': StateCodes.usRhodeIsland, - 'South Carolina': StateCodes.usSouthCarolina, - 'South Dakota': StateCodes.usSouthDakota, - 'Tennessee': StateCodes.usTennessee, - 'Utah': StateCodes.usUtah, - 'Vermont': StateCodes.usVermont, - 'Virginia': StateCodes.usVirginia, - 'Washington': StateCodes.usWashington, - 'Washington DC': StateCodes.usWashingtonDC, - 'West Virginia': StateCodes.usWestVirginia, - 'Wisconsin': StateCodes.usWisconsin, - 'Wyoming': StateCodes.usWyoming, + 'Alabama': EmojiStateCodes.usAlabama, + 'Alaska': EmojiStateCodes.usAlaska, + 'Arizona': EmojiStateCodes.usArizona, + 'Arkansas': EmojiStateCodes.usArkansas, + 'California': EmojiStateCodes.usCalifornia, + 'Colorado': EmojiStateCodes.usColorado, + 'Connecticut': EmojiStateCodes.usConnecticut, + 'Delaware': EmojiStateCodes.usDelaware, + 'Florida': EmojiStateCodes.usFlorida, + 'Georgia': EmojiStateCodes.usGeorgia, + 'Hawaii': EmojiStateCodes.usHawaii, + 'Idaho': EmojiStateCodes.usIdaho, + 'Illinois': EmojiStateCodes.usIllinois, + 'Indiana': EmojiStateCodes.usIndiana, + 'Iowa': EmojiStateCodes.usIowa, + 'Kansas': EmojiStateCodes.usKansas, + 'Kentucky': EmojiStateCodes.usKentucky, + 'Louisiana': EmojiStateCodes.usLouisiana, + 'Maine': EmojiStateCodes.usMaine, + 'Maryland': EmojiStateCodes.usMaryland, + 'Massachusetts': EmojiStateCodes.usMassachusetts, + 'Michigan': EmojiStateCodes.usMichigan, + 'Minnesota': EmojiStateCodes.usMinnesota, + 'Mississippi': EmojiStateCodes.usMississippi, + 'Missouri': EmojiStateCodes.usMissouri, + 'Montana': EmojiStateCodes.usMontana, + 'Nebraska': EmojiStateCodes.usNebraska, + 'Nevada': EmojiStateCodes.usNevada, + 'New Hampshire': EmojiStateCodes.usNewHampshire, + 'New Jersey': EmojiStateCodes.usNewJersey, + 'New Mexico': EmojiStateCodes.usNewMexico, + 'New York': EmojiStateCodes.usNewYork, + 'North Carolina': EmojiStateCodes.usNorthCarolina, + 'North Dakota': EmojiStateCodes.usNorthDakota, + 'Ohio': EmojiStateCodes.usOhio, + 'Oklahoma': EmojiStateCodes.usOklahoma, + 'Oregon': EmojiStateCodes.usOregon, + 'Pennsylvania': EmojiStateCodes.usPennsylvania, + 'Rhode Island': EmojiStateCodes.usRhodeIsland, + 'South Carolina': EmojiStateCodes.usSouthCarolina, + 'South Dakota': EmojiStateCodes.usSouthDakota, + 'Tennessee': EmojiStateCodes.usTennessee, + 'Utah': EmojiStateCodes.usUtah, + 'Vermont': EmojiStateCodes.usVermont, + 'Virginia': EmojiStateCodes.usVirginia, + 'Washington': EmojiStateCodes.usWashington, + 'Washington DC': EmojiStateCodes.usWashingtonDC, + 'West Virginia': EmojiStateCodes.usWestVirginia, + 'Wisconsin': EmojiStateCodes.usWisconsin, + 'Wyoming': EmojiStateCodes.usWyoming, }; } diff --git a/lib/model/app/contributors.dart b/lib/model/app/contributors.dart new file mode 100644 index 000000000..63ed888c0 --- /dev/null +++ b/lib/model/app/contributors.dart @@ -0,0 +1,60 @@ +class Contributors { + static const translators = { + Contributor('D3ZOXY', 'its.ghost.message@gmail.com'), + Contributor('JanWaldhorn', 'weblate@jwh.anonaddy.com'), + Contributor('n-berenice', null), + Contributor('Jonatas de Almeida Barros', 'ajonatas56@gmail.com'), + Contributor('MeFinity', 'me.dot.finity@gmail.com'), + Contributor('Maki', null), + Contributor('HiSubway', 'shenyusoftware@gmail.com'), + Contributor('glemco', 'glemco@posteo.net'), + Contributor('Aerowolf', null), + Contributor('小默', 'duzhe163908@gmail.com'), + Contributor('metezd', 'itoldyouthat@protonmail.com'), + Contributor('Martijn Fabrie', null), + Contributor('Koen Koppens', 'koenkoppens@proton.me'), + Contributor('Emmanouil Papavergis', null), + Contributor('kha84', 'khalukhin@gmail.com'), + Contributor('gallegonovato', 'fran-carro@hotmail.es'), + Contributor('Havokdan', 'havokdan@yahoo.com.br'), + Contributor('Jean Mareilles', 'waged1266@tutanota.com'), + Contributor('이정희', 'daemul72@gmail.com'), + Contributor('Translator-3000', 'weblate.m1d0h@8shield.net'), + Contributor('Ralea Adrian Vicențiu', 'ralea.adrian@gmail.com'), + Contributor('Igor Sorocean', 'sorocean.igor@gmail.com'), + Contributor('JY3', 'GeeyunJY3@gmail.com'), + Contributor('Gediminas Murauskas', 'muziejusinfo@gmail.com'), + Contributor('Oğuz Ersen', 'oguz@ersen.moe'), + Contributor('Allan Nordhøy', 'epost@anotheragency.no'), + Contributor('pemibe', 'pemibe4634@dmonies.com'), + Contributor('Linerly', 'linerly@protonmail.com'), + Contributor('Skrripy', 'rozihrash.ya6w7@simplelogin.com'), + Contributor('vesp', 'vesp@post.cz'), + Contributor('Dan', 'denqwerta@gmail.com'), + Contributor('Tijolinho', 'pedrohenrique29.alfenas@gmail.com'), + Contributor('Piotr K', '1337.kelt@gmail.com'), + Contributor('rehork', 'cooky@e.email'), + Contributor('Eric', 'hamburger2048@users.noreply.hosted.weblate.org'), + Contributor('Aitor Salaberria', 'trslbrr@gmail.com'), + Contributor('Felipe Nogueira', 'contato.fnog@gmail.com'), + Contributor('kaajjo', 'claymanoff@gmail.com'), + Contributor('Eduardo Malaspina', 'vaio0@swismail.com'), + // Contributor('SAMIRAH AIL', 'samiratalzahrani@gmail.com'), // Arabic + // Contributor('Salih Ail', 'rrrfff444@gmail.com'), // Arabic + // Contributor('امیر جهانگرد', 'ijahangard.a@gmail.com'), // Persian + // Contributor('slasb37', 'p84haghi@gmail.com'), // Persian + // Contributor('tryvseu', 'tryvseu@tuta.io'), // Nynorsk + // Contributor('Nattapong K', 'mixer5056@gmail.com'), // Thai + // Contributor('Idj', 'joneltmp+goahn@gmail.com'), // Hebrew + // Contributor('Martin Frandel', 'martinko.fr@gmail.com'), // Slovak + // Contributor('GoRaN', 'gorangharib.909@gmail.com'), // Kurdish (Central) + // Contributor('Rohit Burman', 'rohitburman31p@rediffmail.com'), // Hindi + }; +} + +class Contributor { + final String name; + final String? weblateEmail; + + const Contributor(this.name, this.weblateEmail); +} diff --git a/lib/model/dependencies.dart b/lib/model/app/dependencies.dart similarity index 100% rename from lib/model/dependencies.dart rename to lib/model/app/dependencies.dart diff --git a/lib/model/app/permissions.dart b/lib/model/app/permissions.dart new file mode 100644 index 000000000..310427242 --- /dev/null +++ b/lib/model/app/permissions.dart @@ -0,0 +1,16 @@ +import 'package:permission_handler/permission_handler.dart'; + +class Permissions { + static const storage = [ + Permission.storage, + // for media access on Android >=13 + Permission.photos, + Permission.videos, + ]; + + static const mediaAccess = [ + ...storage, + // to access media with unredacted metadata with scoped storage (Android >=10) + Permission.accessMediaLocation, + ]; +} diff --git a/lib/model/entry/extensions/props.dart b/lib/model/entry/extensions/props.dart index 0069666b4..96ce06708 100644 --- a/lib/model/entry/extensions/props.dart +++ b/lib/model/entry/extensions/props.dart @@ -96,9 +96,9 @@ extension ExtraAvesEntryProps on AvesEntry { final gcd = width.gcd(height); final w = width ~/ gcd; final h = height ~/ gcd; - return isRotated ? '$h${Unicode.ratio}$w' : '$w${Unicode.ratio}$h'; + return isRotated ? '$h${UniChars.ratio}$w' : '$w${UniChars.ratio}$h'; } else { - return '?${Unicode.ratio}?'; + return '?${UniChars.ratio}?'; } } diff --git a/lib/model/filters/rating.dart b/lib/model/filters/rating.dart index 24f0c5b45..631d13765 100644 --- a/lib/model/filters/rating.dart +++ b/lib/model/filters/rating.dart @@ -68,7 +68,7 @@ class RatingFilter extends CollectionFilter { case 0: return context.l10n.filterNoRatingLabel; default: - return Unicode.whiteMediumStar * rating; + return UniChars.whiteMediumStar * rating; } } } diff --git a/lib/ref/unicode.dart b/lib/ref/unicode.dart index 9445cdfd1..474223c90 100644 --- a/lib/ref/unicode.dart +++ b/lib/ref/unicode.dart @@ -1,5 +1,5 @@ // cf Flutter's `foundation/unicode.dart` for bidi related characters -class Unicode { +class UniChars { static const noBreakSpace = '\u00A0'; static const multiplicationSign = '\u00D7'; // × static const emDash = '\u2014'; // — @@ -7,3 +7,88 @@ class Unicode { static const ratio = '\u2236'; // ∶ static const whiteMediumStar = '\u2B50'; // ⭐ } + +class UniCodes { + // Block: Basic Latin + static const latinCapitalLetterA = 0x0041; + + // Block: Enclosed Alphanumeric Supplement + static const regionalIndicatorSymbolLetterA = 0x1F1E6; + + // Block: Miscellaneous Symbols and Pictographs + static const wavingBlackFlag = 0x1F3F4; + + // Block: Tags + static const tagLatinSmallLetterA = 0xE0061; + static const cancelTag = 0xE007F; +} + +class EmojiStateCodes { + // AU + static const auAustralianCapitalTerritory = 'auact'; + static const auNewSouthWales = 'aunsw'; + static const auNorthernTerritory = 'aunt'; + static const auQueensland = 'auqld'; + static const auSouthAustralia = 'ausa'; + static const auTasmania = 'autas'; + static const auVictoria = 'auvic'; + static const auWesternAustralia = 'auwa'; + + // GB + static const gbEngland = 'gbeng'; + static const gbNorthernIreland = 'gbnir'; + static const gbScotland = 'gbsct'; + static const gbWales = 'gbwls'; + + // US + static const usAlabama = 'usal'; + static const usAlaska = 'usak'; + static const usArizona = 'usaz'; + static const usArkansas = 'usar'; + static const usCalifornia = 'usca'; + static const usColorado = 'usco'; + static const usConnecticut = 'usct'; + static const usDelaware = 'usde'; + static const usFlorida = 'usfl'; + static const usGeorgia = 'usga'; + static const usHawaii = 'ushi'; + static const usIdaho = 'usid'; + static const usIllinois = 'usil'; + static const usIndiana = 'usin'; + static const usIowa = 'usia'; + static const usKansas = 'usks'; + static const usKentucky = 'usky'; + static const usLouisiana = 'usla'; + static const usMaine = 'usme'; + static const usMaryland = 'usmd'; + static const usMassachusetts = 'usma'; + static const usMichigan = 'usmi'; + static const usMinnesota = 'usmn'; + static const usMississippi = 'usms'; + static const usMissouri = 'usmo'; + static const usMontana = 'usmt'; + static const usNebraska = 'usne'; + static const usNevada = 'usnv'; + static const usNewHampshire = 'usnh'; + static const usNewJersey = 'usnj'; + static const usNewMexico = 'usnm'; + static const usNewYork = 'usny'; + static const usNorthCarolina = 'usnc'; + static const usNorthDakota = 'usnd'; + static const usOhio = 'usoh'; + static const usOklahoma = 'usok'; + static const usOregon = 'usor'; + static const usPennsylvania = 'uspa'; + static const usRhodeIsland = 'usri'; + static const usSouthCarolina = 'ussc'; + static const usSouthDakota = 'ussd'; + static const usTennessee = 'ustn'; + static const usUtah = 'usut'; + static const usVermont = 'usvt'; + static const usVirginia = 'usva'; + static const usWashington = 'uswa'; + static const usWashingtonDC = 'usdc'; + static const usWestVirginia = 'uswv'; + static const usWisconsin = 'uswi'; + static const usWyoming = 'uswy'; +} diff --git a/lib/theme/colors.dart b/lib/theme/colors.dart index e7c15c510..5740264da 100644 --- a/lib/theme/colors.dart +++ b/lib/theme/colors.dart @@ -7,6 +7,16 @@ import 'package:flutter/material.dart'; import 'package:palette_generator/palette_generator.dart'; import 'package:provider/provider.dart'; +class AColors { + static const starEnabled = Colors.amber; + static const starDisabled = Colors.grey; + + static const boraBoraGradient = [ + Color(0xff2bc0e4), + Color(0xffeaecc6), + ]; +} + class AvesColorsProvider extends StatelessWidget { final Widget child; diff --git a/lib/theme/styles.dart b/lib/theme/styles.dart index 95ec94dbc..03864dc49 100644 --- a/lib/theme/styles.dart +++ b/lib/theme/styles.dart @@ -1,6 +1,6 @@ import 'dart:ui'; -import 'package:flutter/widgets.dart'; +import 'package:flutter/material.dart'; class AStyles { // as of Flutter v2.8.0, overflowing `Text` miscalculates height and some text (e.g. 'Å') is clipped @@ -19,4 +19,11 @@ class AStyles { final smcp = locale.languageCode != 'el'; unknownTitleText = smcp ? knownTitleText : knownTitleText.copyWith(fontFeatures: []); } + + static const embossShadows = [ + Shadow( + color: Colors.black, + offset: Offset(0.5, 1.0), + ) + ]; } diff --git a/lib/theme/text.dart b/lib/theme/text.dart index 6e79fa53a..b7840d33f 100644 --- a/lib/theme/text.dart +++ b/lib/theme/text.dart @@ -1,7 +1,7 @@ import 'package:aves/ref/unicode.dart'; class AText { - static const separator = ' ${Unicode.bullet} '; - static const resolutionSeparator = ' ${Unicode.multiplicationSign} '; - static const valueNotAvailable = Unicode.emDash; + static const separator = ' ${UniChars.bullet} '; + static const resolutionSeparator = ' ${UniChars.multiplicationSign} '; + static const valueNotAvailable = UniChars.emDash; } \ No newline at end of file diff --git a/lib/utils/constants.dart b/lib/utils/constants.dart deleted file mode 100644 index d49974b70..000000000 --- a/lib/utils/constants.dart +++ /dev/null @@ -1,27 +0,0 @@ -import 'package:flutter/material.dart'; -import 'package:permission_handler/permission_handler.dart'; - -class Constants { - static const storagePermissions = [ - Permission.storage, - // for media access on Android >=13 - Permission.photos, - Permission.videos, - ]; - - static const double colorPickerRadius = 16; - - static const embossShadows = [ - Shadow( - color: Colors.black, - offset: Offset(0.5, 1.0), - ) - ]; - - static const boraBoraGradientColors = [ - Color(0xff2bc0e4), - Color(0xffeaecc6), - ]; - - static const int infoGroupMaxValueLength = 140; -} diff --git a/lib/utils/emoji_utils.dart b/lib/utils/emoji_utils.dart index 4d60fe703..d3b06d49e 100644 --- a/lib/utils/emoji_utils.dart +++ b/lib/utils/emoji_utils.dart @@ -1,15 +1,10 @@ +import 'package:aves/ref/unicode.dart'; + class EmojiUtils { - // U+0041 Latin Capital letter A - static const _capitalLetterA = 0x0041; - - // U+1F1E6 Regional Indicator Symbol Letter A - static const _countryCodeToFlagDiff = 0x1F1E6 - _capitalLetterA; - - // U+E0061 Tag Latin Small Letter a - static const _stateCodeToFlagDiff = 0xE0061 - _capitalLetterA; - - static const _blackFlag = 0x1F3F4; - static const _cancel = 0xE007F; + static const _countryCodeToFlagDiff = UniCodes.regionalIndicatorSymbolLetterA - UniCodes.latinCapitalLetterA; + static const _stateCodeToFlagDiff = UniCodes.tagLatinSmallLetterA - UniCodes.latinCapitalLetterA; + static const _subFlagStart = UniCodes.wavingBlackFlag; + static const _subFlagEnd = UniCodes.cancelTag; static String? countryCodeToFlag(String? code) { if (code == null || code.length != 2) return null; @@ -18,76 +13,10 @@ class EmojiUtils { static String? stateCodeToFlag(String? code) { if (code == null) return null; - return String.fromCharCodes([_blackFlag, ...code.toUpperCase().codeUnits.map((letter) => letter += _stateCodeToFlagDiff), _cancel]); + return String.fromCharCodes([ + _subFlagStart, + ...code.toUpperCase().codeUnits.map((letter) => letter += _stateCodeToFlagDiff), + _subFlagEnd, + ]); } } - -class StateCodes { - // AU - static const auAustralianCapitalTerritory = 'auact'; - static const auNewSouthWales = 'aunsw'; - static const auNorthernTerritory = 'aunt'; - static const auQueensland = 'auqld'; - static const auSouthAustralia = 'ausa'; - static const auTasmania = 'autas'; - static const auVictoria = 'auvic'; - static const auWesternAustralia = 'auwa'; - - // GB - static const gbEngland = 'gbeng'; - static const gbNorthernIreland = 'gbnir'; - static const gbScotland = 'gbsct'; - static const gbWales = 'gbwls'; - - // US - static const usAlabama = 'usal'; - static const usAlaska = 'usak'; - static const usArizona = 'usaz'; - static const usArkansas = 'usar'; - static const usCalifornia = 'usca'; - static const usColorado = 'usco'; - static const usConnecticut = 'usct'; - static const usDelaware = 'usde'; - static const usFlorida = 'usfl'; - static const usGeorgia = 'usga'; - static const usHawaii = 'ushi'; - static const usIdaho = 'usid'; - static const usIllinois = 'usil'; - static const usIndiana = 'usin'; - static const usIowa = 'usia'; - static const usKansas = 'usks'; - static const usKentucky = 'usky'; - static const usLouisiana = 'usla'; - static const usMaine = 'usme'; - static const usMaryland = 'usmd'; - static const usMassachusetts = 'usma'; - static const usMichigan = 'usmi'; - static const usMinnesota = 'usmn'; - static const usMississippi = 'usms'; - static const usMissouri = 'usmo'; - static const usMontana = 'usmt'; - static const usNebraska = 'usne'; - static const usNevada = 'usnv'; - static const usNewHampshire = 'usnh'; - static const usNewJersey = 'usnj'; - static const usNewMexico = 'usnm'; - static const usNewYork = 'usny'; - static const usNorthCarolina = 'usnc'; - static const usNorthDakota = 'usnd'; - static const usOhio = 'usoh'; - static const usOklahoma = 'usok'; - static const usOregon = 'usor'; - static const usPennsylvania = 'uspa'; - static const usRhodeIsland = 'usri'; - static const usSouthCarolina = 'ussc'; - static const usSouthDakota = 'ussd'; - static const usTennessee = 'ustn'; - static const usUtah = 'usut'; - static const usVermont = 'usvt'; - static const usVirginia = 'usva'; - static const usWashington = 'uswa'; - static const usWashingtonDC = 'usdc'; - static const usWestVirginia = 'uswv'; - static const usWisconsin = 'uswi'; - static const usWyoming = 'uswy'; -} diff --git a/lib/widgets/about/licenses.dart b/lib/widgets/about/licenses.dart index 8e6388910..5d0400bbd 100644 --- a/lib/widgets/about/licenses.dart +++ b/lib/widgets/about/licenses.dart @@ -2,7 +2,7 @@ import 'package:aves/app_flavor.dart'; import 'package:aves/model/settings/settings.dart'; import 'package:aves/ref/brand_colors.dart'; import 'package:aves/theme/colors.dart'; -import 'package:aves/model/dependencies.dart'; +import 'package:aves/model/app/dependencies.dart'; import 'package:aves/widgets/about/title.dart'; import 'package:aves/widgets/about/tv_license_page.dart'; import 'package:aves/widgets/common/basic/link_chip.dart'; diff --git a/lib/widgets/about/translators.dart b/lib/widgets/about/translators.dart index 599f5c0c5..f42c2f172 100644 --- a/lib/widgets/about/translators.dart +++ b/lib/widgets/about/translators.dart @@ -1,5 +1,6 @@ import 'dart:math'; +import 'package:aves/model/app/contributors.dart'; import 'package:aves/theme/text.dart'; import 'package:aves/widgets/about/title.dart'; import 'package:aves/widgets/common/basic/text/change_highlight.dart'; @@ -10,58 +11,6 @@ import 'package:flutter/material.dart'; class AboutTranslators extends StatelessWidget { const AboutTranslators({super.key}); - static const translators = { - Contributor('D3ZOXY', 'its.ghost.message@gmail.com'), - Contributor('JanWaldhorn', 'weblate@jwh.anonaddy.com'), - Contributor('n-berenice', null), - Contributor('Jonatas de Almeida Barros', 'ajonatas56@gmail.com'), - Contributor('MeFinity', 'me.dot.finity@gmail.com'), - Contributor('Maki', null), - Contributor('HiSubway', 'shenyusoftware@gmail.com'), - Contributor('glemco', 'glemco@posteo.net'), - Contributor('Aerowolf', null), - Contributor('小默', 'duzhe163908@gmail.com'), - Contributor('metezd', 'itoldyouthat@protonmail.com'), - Contributor('Martijn Fabrie', null), - Contributor('Koen Koppens', 'koenkoppens@proton.me'), - Contributor('Emmanouil Papavergis', null), - Contributor('kha84', 'khalukhin@gmail.com'), - Contributor('gallegonovato', 'fran-carro@hotmail.es'), - Contributor('Havokdan', 'havokdan@yahoo.com.br'), - Contributor('Jean Mareilles', 'waged1266@tutanota.com'), - Contributor('이정희', 'daemul72@gmail.com'), - Contributor('Translator-3000', 'weblate.m1d0h@8shield.net'), - Contributor('Ralea Adrian Vicențiu', 'ralea.adrian@gmail.com'), - Contributor('Igor Sorocean', 'sorocean.igor@gmail.com'), - Contributor('JY3', 'GeeyunJY3@gmail.com'), - Contributor('Gediminas Murauskas', 'muziejusinfo@gmail.com'), - Contributor('Oğuz Ersen', 'oguz@ersen.moe'), - Contributor('Allan Nordhøy', 'epost@anotheragency.no'), - Contributor('pemibe', 'pemibe4634@dmonies.com'), - Contributor('Linerly', 'linerly@protonmail.com'), - Contributor('Skrripy', 'rozihrash.ya6w7@simplelogin.com'), - Contributor('vesp', 'vesp@post.cz'), - Contributor('Dan', 'denqwerta@gmail.com'), - Contributor('Tijolinho', 'pedrohenrique29.alfenas@gmail.com'), - Contributor('Piotr K', '1337.kelt@gmail.com'), - Contributor('rehork', 'cooky@e.email'), - Contributor('Eric', 'hamburger2048@users.noreply.hosted.weblate.org'), - Contributor('Aitor Salaberria', 'trslbrr@gmail.com'), - Contributor('Felipe Nogueira', 'contato.fnog@gmail.com'), - Contributor('kaajjo', 'claymanoff@gmail.com'), - Contributor('Eduardo Malaspina', 'vaio0@swismail.com'), - // Contributor('SAMIRAH AIL', 'samiratalzahrani@gmail.com'), // Arabic - // Contributor('Salih Ail', 'rrrfff444@gmail.com'), // Arabic - // Contributor('امیر جهانگرد', 'ijahangard.a@gmail.com'), // Persian - // Contributor('slasb37', 'p84haghi@gmail.com'), // Persian - // Contributor('tryvseu', 'tryvseu@tuta.io'), // Nynorsk - // Contributor('Nattapong K', 'mixer5056@gmail.com'), // Thai - // Contributor('Idj', 'joneltmp+goahn@gmail.com'), // Hebrew - // Contributor('Martin Frandel', 'martinko.fr@gmail.com'), // Slovak - // Contributor('GoRaN', 'gorangharib.909@gmail.com'), // Kurdish (Central) - // Contributor('Rohit Burman', 'rohitburman31p@rediffmail.com'), // Hindi - }; - @override Widget build(BuildContext context) { return Padding( @@ -72,7 +21,7 @@ class AboutTranslators extends StatelessWidget { AboutSectionTitle(text: context.l10n.aboutTranslatorsSectionTitle), const SizedBox(height: 8), _RandomTextSpanHighlighter( - spans: translators.map((v) => v.name).toList(), + spans: Contributors.translators.map((v) => v.name).toList(), color: Theme.of(context).colorScheme.onPrimary, ), const SizedBox(height: 16), @@ -163,10 +112,3 @@ class _RandomTextSpanHighlighterState extends State<_RandomTextSpanHighlighter> ); } } - -class Contributor { - final String name; - final String? weblateEmail; - - const Contributor(this.name, this.weblateEmail); -} diff --git a/lib/widgets/collection/collection_grid.dart b/lib/widgets/collection/collection_grid.dart index eb9e1c88a..28350f70c 100644 --- a/lib/widgets/collection/collection_grid.dart +++ b/lib/widgets/collection/collection_grid.dart @@ -1,6 +1,7 @@ import 'dart:async'; import 'package:aves/app_mode.dart'; +import 'package:aves/model/app/permissions.dart'; import 'package:aves/model/entry/entry.dart'; import 'package:aves/model/favourites.dart'; import 'package:aves/model/filters/favourite.dart'; @@ -14,7 +15,6 @@ import 'package:aves/model/source/section_keys.dart'; import 'package:aves/ref/mime_types.dart'; import 'package:aves/theme/durations.dart'; import 'package:aves/theme/icons.dart'; -import 'package:aves/utils/constants.dart'; import 'package:aves/widgets/collection/app_bar.dart'; import 'package:aves/widgets/collection/draggable_thumb_label.dart'; import 'package:aves/widgets/collection/grid/list_details_theme.dart'; @@ -716,5 +716,5 @@ class _CollectionScrollViewState extends State<_CollectionScrollView> with Widge return crumbs; } - Future get _isStoragePermissionGranted => Future.wait(Constants.storagePermissions.map((v) => v.status)).then((v) => v.any((status) => status.isGranted)); + Future get _isStoragePermissionGranted => Future.wait(Permissions.storage.map((v) => v.status)).then((v) => v.any((status) => status.isGranted)); } diff --git a/lib/widgets/common/action_controls/quick_choosers/rate_chooser.dart b/lib/widgets/common/action_controls/quick_choosers/rate_chooser.dart index b028f680a..4551e2575 100644 --- a/lib/widgets/common/action_controls/quick_choosers/rate_chooser.dart +++ b/lib/widgets/common/action_controls/quick_choosers/rate_chooser.dart @@ -1,5 +1,6 @@ import 'dart:async'; +import 'package:aves/theme/colors.dart'; import 'package:aves/theme/icons.dart'; import 'package:aves/widgets/common/action_controls/quick_choosers/common/quick_chooser.dart'; import 'package:flutter/material.dart'; @@ -72,7 +73,7 @@ class _RateQuickChooserState extends State { padding: const EdgeInsets.all(4), child: Icon( _rating < thisRating ? AIcons.rating : AIcons.ratingFull, - color: _rating < thisRating ? Colors.grey : Colors.amber, + color: _rating < thisRating ? AColors.starDisabled : AColors.starEnabled, ), ); }).toList(), diff --git a/lib/widgets/common/basic/color_indicator.dart b/lib/widgets/common/basic/color_indicator.dart new file mode 100644 index 000000000..34f31bcd4 --- /dev/null +++ b/lib/widgets/common/basic/color_indicator.dart @@ -0,0 +1,30 @@ +import 'package:aves/widgets/common/fx/borders.dart'; +import 'package:flutter/widgets.dart'; + +class ColorIndicator extends StatelessWidget { + final Color? value; + final Widget? child; + + static const double radius = 16; + + const ColorIndicator({ + super.key, + required this.value, + this.child, + }); + + @override + Widget build(BuildContext context) { + const dimension = radius * 2; + return Container( + height: dimension, + width: dimension, + decoration: BoxDecoration( + color: value, + border: AvesBorder.border(context), + shape: BoxShape.circle, + ), + child: child, + ); + } +} diff --git a/lib/widgets/common/basic/list_tiles/color.dart b/lib/widgets/common/basic/list_tiles/color.dart index b33196a67..93d2e2ade 100644 --- a/lib/widgets/common/basic/list_tiles/color.dart +++ b/lib/widgets/common/basic/list_tiles/color.dart @@ -1,9 +1,8 @@ import 'package:aves/model/settings/settings.dart'; -import 'package:aves/utils/constants.dart'; +import 'package:aves/widgets/common/basic/color_indicator.dart'; import 'package:aves/widgets/common/extensions/build_context.dart'; -import 'package:aves/widgets/common/fx/borders.dart'; import 'package:aves/widgets/dialogs/aves_dialog.dart'; -import 'package:flex_color_picker/flex_color_picker.dart'; +import 'package:flex_color_picker/flex_color_picker.dart' show ColorPicker, ColorPickerType; import 'package:flutter/material.dart'; class ColorListTile extends StatelessWidget { @@ -11,8 +10,6 @@ class ColorListTile extends StatelessWidget { final Color value; final ValueSetter onChanged; - static const radius = Constants.colorPickerRadius; - const ColorListTile({ super.key, required this.title, @@ -24,16 +21,10 @@ class ColorListTile extends StatelessWidget { Widget build(BuildContext context) { return ListTile( title: Text(title), - trailing: Container( - height: radius * 2, - width: radius * 2, - decoration: BoxDecoration( - color: value, - border: AvesBorder.border(context), - shape: BoxShape.circle, - ), + trailing: ColorIndicator( + value: value, ), - contentPadding: const EdgeInsetsDirectional.only(start: 16, end: 36 - radius), + contentPadding: const EdgeInsetsDirectional.only(start: 16, end: 36 - ColorIndicator.radius), onTap: () async { final color = await showDialog( context: context, diff --git a/lib/widgets/dialogs/entry_editors/edit_rating_dialog.dart b/lib/widgets/dialogs/entry_editors/edit_rating_dialog.dart index c118cbb8f..8004d5e1c 100644 --- a/lib/widgets/dialogs/entry_editors/edit_rating_dialog.dart +++ b/lib/widgets/dialogs/entry_editors/edit_rating_dialog.dart @@ -1,4 +1,5 @@ import 'package:aves/model/entry/entry.dart'; +import 'package:aves/theme/colors.dart'; import 'package:aves/theme/icons.dart'; import 'package:aves/widgets/common/extensions/build_context.dart'; import 'package:aves/widgets/common/providers/media_query_data_provider.dart'; @@ -73,7 +74,7 @@ class _EditEntryRatingDialogState extends State { padding: const EdgeInsets.all(4), child: Icon( _rating < thisRating ? AIcons.rating : AIcons.ratingFull, - color: _rating < thisRating ? Colors.grey : Colors.amber, + color: _rating < thisRating ? AColors.starDisabled : AColors.starEnabled, ), ), ); diff --git a/lib/widgets/dialogs/filter_editors/cover_selection_dialog.dart b/lib/widgets/dialogs/filter_editors/cover_selection_dialog.dart index 30aee7b04..0f5d75766 100644 --- a/lib/widgets/dialogs/filter_editors/cover_selection_dialog.dart +++ b/lib/widgets/dialogs/filter_editors/cover_selection_dialog.dart @@ -9,7 +9,7 @@ import 'package:aves/model/settings/settings.dart'; import 'package:aves/model/source/collection_lens.dart'; import 'package:aves/model/source/collection_source.dart'; import 'package:aves/theme/icons.dart'; -import 'package:aves/utils/constants.dart'; +import 'package:aves/widgets/common/basic/color_indicator.dart'; import 'package:aves/widgets/common/basic/list_tiles/color.dart'; import 'package:aves/widgets/common/extensions/build_context.dart'; import 'package:aves/widgets/common/fx/borders.dart'; @@ -56,7 +56,6 @@ class _CoverSelectionDialogState extends State { static const double itemPickerExtent = 46; static const double appPickerExtent = 32; - static const double colorPickerRadius = Constants.colorPickerRadius; double tabBarHeight(BuildContext context) => 64 * max(1, MediaQuery.textScaleFactorOf(context)); @@ -323,14 +322,8 @@ class _CoverSelectionDialogState extends State { if (_customColor != null) GestureDetector( onTap: _pickColor, - child: Container( - height: colorPickerRadius * 2, - width: colorPickerRadius * 2, - decoration: BoxDecoration( - color: _customColor, - border: AvesBorder.border(context), - shape: BoxShape.circle, - ), + child: ColorIndicator( + value: _customColor, ), ), ], diff --git a/lib/widgets/home_page.dart b/lib/widgets/home_page.dart index 52ba45a4e..a7e8d4b18 100644 --- a/lib/widgets/home_page.dart +++ b/lib/widgets/home_page.dart @@ -1,6 +1,7 @@ import 'dart:async'; import 'package:aves/app_mode.dart'; +import 'package:aves/model/app/permissions.dart'; import 'package:aves/model/entry/entry.dart'; import 'package:aves/model/entry/extensions/catalog.dart'; import 'package:aves/model/filters/album.dart'; @@ -17,7 +18,6 @@ import 'package:aves/services/global_search.dart'; import 'package:aves/services/intent_service.dart'; import 'package:aves/services/widget_service.dart'; import 'package:aves/utils/android_file_utils.dart'; -import 'package:aves/utils/constants.dart'; import 'package:aves/widgets/collection/collection_page.dart'; import 'package:aves/widgets/common/basic/scaffold.dart'; import 'package:aves/widgets/common/behaviour/routes.dart'; @@ -97,11 +97,7 @@ class _HomePageState extends State { if (await windowService.isActivity()) { // do not check whether permission was granted, because some app stores // hide in some countries apps that force quit on permission denial - await [ - ...Constants.storagePermissions, - // to access media with unredacted metadata with scoped storage (Android >=10) - Permission.accessMediaLocation, - ].request(); + await Permissions.mediaAccess.request(); } var appMode = AppMode.main; diff --git a/lib/widgets/home_widget.dart b/lib/widgets/home_widget.dart index 69f8c61b1..5f80880a2 100644 --- a/lib/widgets/home_widget.dart +++ b/lib/widgets/home_widget.dart @@ -6,7 +6,7 @@ import 'package:aves/model/entry/entry.dart'; import 'package:aves/model/entry/extensions/images.dart'; import 'package:aves/model/settings/enums/enums.dart'; import 'package:aves/model/settings/enums/widget_shape.dart'; -import 'package:aves/utils/constants.dart'; +import 'package:aves/theme/colors.dart'; import 'package:aves/widgets/common/identity/aves_filter_chip.dart'; import 'package:flutter/material.dart'; @@ -17,7 +17,7 @@ class HomeWidgetPainter { static const backgroundGradient = LinearGradient( begin: Alignment.bottomLeft, end: Alignment.topRight, - colors: Constants.boraBoraGradientColors, + colors: AColors.boraBoraGradient, ); HomeWidgetPainter({ diff --git a/lib/widgets/settings/common/tile_leading.dart b/lib/widgets/settings/common/tile_leading.dart index 55152617a..1fe84bac9 100644 --- a/lib/widgets/settings/common/tile_leading.dart +++ b/lib/widgets/settings/common/tile_leading.dart @@ -1,5 +1,5 @@ import 'package:aves/theme/durations.dart'; -import 'package:aves/utils/constants.dart'; +import 'package:aves/theme/styles.dart'; import 'package:aves/widgets/common/identity/aves_filter_chip.dart'; import 'package:decorated_icon/decorated_icon.dart'; import 'package:flutter/material.dart'; @@ -30,7 +30,7 @@ class SettingsTileLeading extends StatelessWidget { icon, size: 18, color: DefaultTextStyle.of(context).style.color, - shadows: Theme.of(context).brightness == Brightness.dark ? Constants.embossShadows : null, + shadows: Theme.of(context).brightness == Brightness.dark ? AStyles.embossShadows : null, ), ); } diff --git a/lib/widgets/settings/home_widget_settings_page.dart b/lib/widgets/settings/home_widget_settings_page.dart index 8be4d42c8..c68cadded 100644 --- a/lib/widgets/settings/home_widget_settings_page.dart +++ b/lib/widgets/settings/home_widget_settings_page.dart @@ -6,10 +6,9 @@ import 'package:aves/model/settings/settings.dart'; import 'package:aves/services/widget_service.dart'; import 'package:aves/theme/durations.dart'; import 'package:aves/theme/icons.dart'; -import 'package:aves/utils/constants.dart'; +import 'package:aves/widgets/common/basic/color_indicator.dart'; import 'package:aves/widgets/common/basic/scaffold.dart'; import 'package:aves/widgets/common/extensions/build_context.dart'; -import 'package:aves/widgets/common/fx/borders.dart'; import 'package:aves/widgets/common/identity/buttons/outlined_button.dart'; import 'package:aves/widgets/home_widget.dart'; import 'package:aves/widgets/settings/common/collection_tile.dart'; @@ -218,7 +217,6 @@ class HomeWidgetOutlineSelector extends StatefulWidget { } class _HomeWidgetOutlineSelectorState extends State { - static const radius = Constants.colorPickerRadius; static const List options = [ null, Colors.black, @@ -243,14 +241,8 @@ class _HomeWidgetOutlineSelectorState extends State { return options.map((selected) { return DropdownMenuItem( value: selected, - child: Container( - height: radius * 2, - width: radius * 2, - decoration: BoxDecoration( - color: selected, - border: AvesBorder.border(context), - shape: BoxShape.circle, - ), + child: ColorIndicator( + value: selected, child: selected == null ? const Icon(AIcons.clear) : null, ), ); diff --git a/lib/widgets/settings/video/subtitle_sample.dart b/lib/widgets/settings/video/subtitle_sample.dart index c8ae248e4..a2a0b2fe9 100644 --- a/lib/widgets/settings/video/subtitle_sample.dart +++ b/lib/widgets/settings/video/subtitle_sample.dart @@ -1,6 +1,6 @@ import 'package:aves/model/settings/enums/enums.dart'; import 'package:aves/model/settings/settings.dart'; -import 'package:aves/utils/constants.dart'; +import 'package:aves/theme/colors.dart'; import 'package:aves/widgets/common/basic/text/background_painter.dart'; import 'package:aves/widgets/common/basic/text/outlined.dart'; import 'package:aves/widgets/common/extensions/build_context.dart'; @@ -35,7 +35,7 @@ class SubtitleSample extends StatelessWidget { gradient: const LinearGradient( begin: Alignment.bottomLeft, end: Alignment.topRight, - colors: Constants.boraBoraGradientColors, + colors: AColors.boraBoraGradient, ), border: AvesBorder.border(context), borderRadius: const BorderRadius.all(Radius.circular(24)), diff --git a/lib/widgets/settings/viewer/entry_background.dart b/lib/widgets/settings/viewer/entry_background.dart index 9dd6f826c..533df381d 100644 --- a/lib/widgets/settings/viewer/entry_background.dart +++ b/lib/widgets/settings/viewer/entry_background.dart @@ -1,7 +1,6 @@ import 'package:aves/model/settings/enums/entry_background.dart'; import 'package:aves/model/settings/enums/enums.dart'; -import 'package:aves/utils/constants.dart'; -import 'package:aves/widgets/common/fx/borders.dart'; +import 'package:aves/widgets/common/basic/color_indicator.dart'; import 'package:aves/widgets/common/fx/checkered_decoration.dart'; import 'package:flutter/material.dart'; @@ -20,8 +19,6 @@ class EntryBackgroundSelector extends StatefulWidget { } class _EntryBackgroundSelectorState extends State { - static const radius = Constants.colorPickerRadius; - @override Widget build(BuildContext context) { return DropdownButtonHideUnderline( @@ -46,19 +43,13 @@ class _EntryBackgroundSelectorState extends State { ].map((selected) { return DropdownMenuItem( value: selected, - child: Container( - height: radius * 2, - width: radius * 2, - decoration: BoxDecoration( - color: selected.isColor ? selected.color : null, - border: AvesBorder.border(context), - shape: BoxShape.circle, - ), + child: ColorIndicator( + value: selected.isColor ? selected.color : null, child: selected == EntryBackground.checkered ? ClipOval( child: CustomPaint( painter: CheckeredPainter( - checkSize: radius, + checkSize: ColorIndicator.radius, ), ), ) diff --git a/lib/widgets/stats/percent_text.dart b/lib/widgets/stats/percent_text.dart index 44681e02e..1ead911d5 100644 --- a/lib/widgets/stats/percent_text.dart +++ b/lib/widgets/stats/percent_text.dart @@ -1,4 +1,4 @@ -import 'package:aves/utils/constants.dart'; +import 'package:aves/theme/styles.dart'; import 'package:aves/widgets/common/basic/text/outlined.dart'; import 'package:flutter/material.dart'; import 'package:intl/intl.dart'; @@ -20,7 +20,7 @@ class LinearPercentIndicatorText extends StatelessWidget { TextSpan( text: percentFormat.format(percent), style: TextStyle( - shadows: theme.brightness == Brightness.dark ? Constants.embossShadows : null, + shadows: theme.brightness == Brightness.dark ? AStyles.embossShadows : null, ), ) ], diff --git a/lib/widgets/viewer/debug/metadata.dart b/lib/widgets/viewer/debug/metadata.dart index 0be209013..ccf4eb7d5 100644 --- a/lib/widgets/viewer/debug/metadata.dart +++ b/lib/widgets/viewer/debug/metadata.dart @@ -7,7 +7,6 @@ import 'package:aves/model/settings/settings.dart'; import 'package:aves/ref/mime_types.dart'; import 'package:aves/services/android_debug_service.dart'; import 'package:aves/services/geocoding_service.dart'; -import 'package:aves/utils/constants.dart'; import 'package:aves/widgets/common/identity/aves_expansion_tile.dart'; import 'package:aves/widgets/viewer/info/common.dart'; import 'package:flutter/material.dart'; @@ -101,10 +100,7 @@ class _MetadataTabState extends State { if (data.isNotEmpty) Padding( padding: const EdgeInsets.only(left: 8, right: 8, bottom: 8), - child: InfoRowGroup( - info: data, - maxValueLength: Constants.infoGroupMaxValueLength, - ), + child: InfoRowGroup(info: data), ) ], ); diff --git a/lib/widgets/viewer/info/common.dart b/lib/widgets/viewer/info/common.dart index db1d815ea..6d4981c57 100644 --- a/lib/widgets/viewer/info/common.dart +++ b/lib/widgets/viewer/info/common.dart @@ -45,8 +45,9 @@ class InfoRowGroup extends StatefulWidget { final int maxValueLength; final Map spanBuilders; - static const keyValuePadding = 16; - static const fontSize = 13.0; + static const int defaultMaxValueLength = 140; + static const double keyValuePadding = 16; + static const double fontSize = 13; static const valueStyle = TextStyle(fontSize: fontSize); static final _keyStyle = valueStyle.copyWith(height: 2.0); @@ -55,7 +56,7 @@ class InfoRowGroup extends StatefulWidget { const InfoRowGroup({ super.key, required this.info, - this.maxValueLength = 0, + this.maxValueLength = defaultMaxValueLength, Map? spanBuilders, }) : spanBuilders = spanBuilders ?? const {}; diff --git a/lib/widgets/viewer/info/metadata/metadata_dir_tile.dart b/lib/widgets/viewer/info/metadata/metadata_dir_tile.dart index c353eb785..b999e44ce 100644 --- a/lib/widgets/viewer/info/metadata/metadata_dir_tile.dart +++ b/lib/widgets/viewer/info/metadata/metadata_dir_tile.dart @@ -4,7 +4,6 @@ import 'package:aves/model/entry/entry.dart'; import 'package:aves/ref/brand_colors.dart'; import 'package:aves/services/metadata/svg_metadata_service.dart'; import 'package:aves/theme/colors.dart'; -import 'package:aves/utils/constants.dart'; import 'package:aves/widgets/common/extensions/build_context.dart'; import 'package:aves/widgets/common/identity/aves_expansion_tile.dart'; import 'package:aves/widgets/viewer/info/common.dart'; @@ -117,7 +116,6 @@ class MetadataDirTileBody extends StatelessWidget { padding: const EdgeInsets.only(left: 8, right: 8, bottom: 8), child: InfoRowGroup( info: tags, - maxValueLength: Constants.infoGroupMaxValueLength, spanBuilders: linkHandlers, ), ), diff --git a/lib/widgets/viewer/info/metadata/xmp_card.dart b/lib/widgets/viewer/info/metadata/xmp_card.dart index 840a46983..a7185fb1b 100644 --- a/lib/widgets/viewer/info/metadata/xmp_card.dart +++ b/lib/widgets/viewer/info/metadata/xmp_card.dart @@ -2,7 +2,6 @@ import 'dart:math'; import 'package:aves/theme/durations.dart'; import 'package:aves/theme/icons.dart'; -import 'package:aves/utils/constants.dart'; import 'package:aves/widgets/common/basic/multi_cross_fader.dart'; import 'package:aves/widgets/common/extensions/build_context.dart'; import 'package:aves/widgets/common/identity/highlight_title.dart'; @@ -127,7 +126,6 @@ class _XmpCardState extends State { padding: const EdgeInsets.only(left: 8, right: 8, bottom: 8), child: InfoRowGroup( info: Map.fromEntries(props.map((prop) => MapEntry(prop.displayKey, widget.formatValue(prop)))), - maxValueLength: Constants.infoGroupMaxValueLength, spanBuilders: widget.spanBuilders?.call(_isIndexed ? index + 1 : null), ), ), diff --git a/lib/widgets/viewer/info/metadata/xmp_namespaces.dart b/lib/widgets/viewer/info/metadata/xmp_namespaces.dart index b15aba839..568bf3baa 100644 --- a/lib/widgets/viewer/info/metadata/xmp_namespaces.dart +++ b/lib/widgets/viewer/info/metadata/xmp_namespaces.dart @@ -1,6 +1,5 @@ import 'package:aves/ref/brand_colors.dart'; import 'package:aves/theme/colors.dart'; -import 'package:aves/utils/constants.dart'; import 'package:aves/utils/string_utils.dart'; import 'package:aves/utils/xmp_utils.dart'; import 'package:aves/widgets/common/identity/highlight_title.dart'; @@ -103,7 +102,6 @@ class XmpNamespace extends Equatable { if (props.isNotEmpty) InfoRowGroup( info: Map.fromEntries(props.map((v) => MapEntry(v.displayKey, formatValue(v)))), - maxValueLength: Constants.infoGroupMaxValueLength, spanBuilders: linkifyValues(props), ), ...cards.where((v) => !v.isEmpty).map((card) { diff --git a/lib/widgets/viewer/overlay/details/details.dart b/lib/widgets/viewer/overlay/details/details.dart index 3b10442c1..c7b4bba56 100644 --- a/lib/widgets/viewer/overlay/details/details.dart +++ b/lib/widgets/viewer/overlay/details/details.dart @@ -5,7 +5,7 @@ import 'package:aves/model/metadata/overlay.dart'; import 'package:aves/model/settings/settings.dart'; import 'package:aves/services/common/services.dart'; import 'package:aves/theme/durations.dart'; -import 'package:aves/utils/constants.dart'; +import 'package:aves/theme/styles.dart'; import 'package:aves/widgets/viewer/multipage/controller.dart'; import 'package:aves/widgets/viewer/overlay/details/date.dart'; import 'package:aves/widgets/viewer/overlay/details/description.dart'; @@ -135,7 +135,7 @@ class ViewerDetailOverlayContent extends StatelessWidget { static const double iconPadding = 8.0; static const double iconSize = 16.0; - static List? shadows(BuildContext context) => Theme.of(context).brightness == Brightness.dark ? Constants.embossShadows : null; + static List? shadows(BuildContext context) => Theme.of(context).brightness == Brightness.dark ? AStyles.embossShadows : null; const ViewerDetailOverlayContent({ super.key, diff --git a/lib/widgets/viewer/overlay/video/progress_bar.dart b/lib/widgets/viewer/overlay/video/progress_bar.dart index f8e4f27ba..62a21c974 100644 --- a/lib/widgets/viewer/overlay/video/progress_bar.dart +++ b/lib/widgets/viewer/overlay/video/progress_bar.dart @@ -3,8 +3,8 @@ import 'dart:async'; import 'package:aves/model/settings/settings.dart'; import 'package:aves/theme/format.dart'; import 'package:aves/theme/icons.dart'; +import 'package:aves/theme/styles.dart'; import 'package:aves/theme/themes.dart'; -import 'package:aves/utils/constants.dart'; import 'package:aves/widgets/common/fx/blurred.dart'; import 'package:aves/widgets/common/fx/borders.dart'; import 'package:aves_video/aves_video.dart'; @@ -42,7 +42,7 @@ class _VideoProgressBarState extends State { final blurred = settings.enableBlurEffect; final brightness = Theme.of(context).brightness; final textStyle = TextStyle( - shadows: brightness == Brightness.dark ? Constants.embossShadows : null, + shadows: brightness == Brightness.dark ? AStyles.embossShadows : null, ); return SizeTransition( sizeFactor: widget.scale, diff --git a/lib/widgets/viewer/visual/video/subtitle/ass_parser.dart b/lib/widgets/viewer/visual/video/subtitle/ass_parser.dart index d440b043c..e6b78b844 100644 --- a/lib/widgets/viewer/visual/video/subtitle/ass_parser.dart +++ b/lib/widgets/viewer/visual/video/subtitle/ass_parser.dart @@ -388,7 +388,7 @@ class AssParser { ); } - static String _replaceChars(String text) => text.replaceAll(r'\h', Unicode.noBreakSpace).replaceAll(r'\N', '\n').trim(); + static String _replaceChars(String text) => text.replaceAll(r'\h', UniChars.noBreakSpace).replaceAll(r'\N', '\n').trim(); static int? _parseAlpha(String param) { final match = alphaPattern.firstMatch(param);