mirror of
https://github.com/kodjodevf/mangayomi.git
synced 2026-04-20 23:22:07 +00:00
add download settings
This commit is contained in:
parent
92b04a62aa
commit
e2115f0a0a
15 changed files with 731 additions and 119 deletions
|
|
@ -75,6 +75,12 @@ class Settings {
|
|||
|
||||
bool? pureBlackDarkMode;
|
||||
|
||||
bool? downloadOnlyOnWifi;
|
||||
|
||||
bool? saveAsCBZArchive;
|
||||
|
||||
String? downloadLocation;
|
||||
|
||||
Settings(
|
||||
{this.id = 227,
|
||||
this.displayType = DisplayType.compactGrid,
|
||||
|
|
@ -107,7 +113,10 @@ class Settings {
|
|||
this.doubleTapAnimationSpeed = 1,
|
||||
this.showNSFW = true,
|
||||
this.onlyIncludePinnedSources = false,
|
||||
this.pureBlackDarkMode = false});
|
||||
this.pureBlackDarkMode = false,
|
||||
this.downloadOnlyOnWifi = false,
|
||||
this.saveAsCBZArchive = false,
|
||||
this.downloadLocation = ""});
|
||||
}
|
||||
|
||||
enum DisplayType {
|
||||
|
|
|
|||
|
|
@ -80,116 +80,131 @@ const SettingsSchema = CollectionSchema(
|
|||
name: r'doubleTapAnimationSpeed',
|
||||
type: IsarType.long,
|
||||
),
|
||||
r'flexColorSchemeBlendLevel': PropertySchema(
|
||||
r'downloadLocation': PropertySchema(
|
||||
id: 11,
|
||||
name: r'downloadLocation',
|
||||
type: IsarType.string,
|
||||
),
|
||||
r'downloadOnlyOnWifi': PropertySchema(
|
||||
id: 12,
|
||||
name: r'downloadOnlyOnWifi',
|
||||
type: IsarType.bool,
|
||||
),
|
||||
r'flexColorSchemeBlendLevel': PropertySchema(
|
||||
id: 13,
|
||||
name: r'flexColorSchemeBlendLevel',
|
||||
type: IsarType.double,
|
||||
),
|
||||
r'flexSchemeColorIndex': PropertySchema(
|
||||
id: 12,
|
||||
id: 14,
|
||||
name: r'flexSchemeColorIndex',
|
||||
type: IsarType.long,
|
||||
),
|
||||
r'incognitoMode': PropertySchema(
|
||||
id: 13,
|
||||
id: 15,
|
||||
name: r'incognitoMode',
|
||||
type: IsarType.bool,
|
||||
),
|
||||
r'libraryDownloadedChapters': PropertySchema(
|
||||
id: 14,
|
||||
id: 16,
|
||||
name: r'libraryDownloadedChapters',
|
||||
type: IsarType.bool,
|
||||
),
|
||||
r'libraryFilterMangasBookMarkedType': PropertySchema(
|
||||
id: 15,
|
||||
id: 17,
|
||||
name: r'libraryFilterMangasBookMarkedType',
|
||||
type: IsarType.long,
|
||||
),
|
||||
r'libraryFilterMangasDownloadType': PropertySchema(
|
||||
id: 16,
|
||||
id: 18,
|
||||
name: r'libraryFilterMangasDownloadType',
|
||||
type: IsarType.long,
|
||||
),
|
||||
r'libraryFilterMangasStartedType': PropertySchema(
|
||||
id: 17,
|
||||
id: 19,
|
||||
name: r'libraryFilterMangasStartedType',
|
||||
type: IsarType.long,
|
||||
),
|
||||
r'libraryFilterMangasUnreadType': PropertySchema(
|
||||
id: 18,
|
||||
id: 20,
|
||||
name: r'libraryFilterMangasUnreadType',
|
||||
type: IsarType.long,
|
||||
),
|
||||
r'libraryShowCategoryTabs': PropertySchema(
|
||||
id: 19,
|
||||
id: 21,
|
||||
name: r'libraryShowCategoryTabs',
|
||||
type: IsarType.bool,
|
||||
),
|
||||
r'libraryShowContinueReadingButton': PropertySchema(
|
||||
id: 20,
|
||||
id: 22,
|
||||
name: r'libraryShowContinueReadingButton',
|
||||
type: IsarType.bool,
|
||||
),
|
||||
r'libraryShowLanguage': PropertySchema(
|
||||
id: 21,
|
||||
id: 23,
|
||||
name: r'libraryShowLanguage',
|
||||
type: IsarType.bool,
|
||||
),
|
||||
r'libraryShowNumbersOfItems': PropertySchema(
|
||||
id: 22,
|
||||
id: 24,
|
||||
name: r'libraryShowNumbersOfItems',
|
||||
type: IsarType.bool,
|
||||
),
|
||||
r'onlyIncludePinnedSources': PropertySchema(
|
||||
id: 23,
|
||||
id: 25,
|
||||
name: r'onlyIncludePinnedSources',
|
||||
type: IsarType.bool,
|
||||
),
|
||||
r'personalReaderModeList': PropertySchema(
|
||||
id: 24,
|
||||
id: 26,
|
||||
name: r'personalReaderModeList',
|
||||
type: IsarType.objectList,
|
||||
target: r'PersonalReaderMode',
|
||||
),
|
||||
r'pureBlackDarkMode': PropertySchema(
|
||||
id: 25,
|
||||
id: 27,
|
||||
name: r'pureBlackDarkMode',
|
||||
type: IsarType.bool,
|
||||
),
|
||||
r'relativeTimesTamps': PropertySchema(
|
||||
id: 26,
|
||||
id: 28,
|
||||
name: r'relativeTimesTamps',
|
||||
type: IsarType.long,
|
||||
),
|
||||
r'saveAsCBZArchive': PropertySchema(
|
||||
id: 29,
|
||||
name: r'saveAsCBZArchive',
|
||||
type: IsarType.bool,
|
||||
),
|
||||
r'showNSFW': PropertySchema(
|
||||
id: 27,
|
||||
id: 30,
|
||||
name: r'showNSFW',
|
||||
type: IsarType.bool,
|
||||
),
|
||||
r'showPagesNumber': PropertySchema(
|
||||
id: 28,
|
||||
id: 31,
|
||||
name: r'showPagesNumber',
|
||||
type: IsarType.bool,
|
||||
),
|
||||
r'sortChapterList': PropertySchema(
|
||||
id: 29,
|
||||
id: 32,
|
||||
name: r'sortChapterList',
|
||||
type: IsarType.objectList,
|
||||
target: r'SortChapter',
|
||||
),
|
||||
r'sortLibraryManga': PropertySchema(
|
||||
id: 30,
|
||||
id: 33,
|
||||
name: r'sortLibraryManga',
|
||||
type: IsarType.object,
|
||||
target: r'SortLibraryManga',
|
||||
),
|
||||
r'themeIsDark': PropertySchema(
|
||||
id: 31,
|
||||
id: 34,
|
||||
name: r'themeIsDark',
|
||||
type: IsarType.bool,
|
||||
),
|
||||
r'userAgent': PropertySchema(
|
||||
id: 32,
|
||||
id: 35,
|
||||
name: r'userAgent',
|
||||
type: IsarType.string,
|
||||
)
|
||||
|
|
@ -313,6 +328,12 @@ int _settingsEstimateSize(
|
|||
bytesCount += 3 + value.length * 3;
|
||||
}
|
||||
}
|
||||
{
|
||||
final value = object.downloadLocation;
|
||||
if (value != null) {
|
||||
bytesCount += 3 + value.length * 3;
|
||||
}
|
||||
}
|
||||
{
|
||||
final list = object.personalReaderModeList;
|
||||
if (list != null) {
|
||||
|
|
@ -405,43 +426,46 @@ void _settingsSerialize(
|
|||
writer.writeByte(offsets[8], object.defaultReaderMode.index);
|
||||
writer.writeByte(offsets[9], object.displayType.index);
|
||||
writer.writeLong(offsets[10], object.doubleTapAnimationSpeed);
|
||||
writer.writeDouble(offsets[11], object.flexColorSchemeBlendLevel);
|
||||
writer.writeLong(offsets[12], object.flexSchemeColorIndex);
|
||||
writer.writeBool(offsets[13], object.incognitoMode);
|
||||
writer.writeBool(offsets[14], object.libraryDownloadedChapters);
|
||||
writer.writeLong(offsets[15], object.libraryFilterMangasBookMarkedType);
|
||||
writer.writeLong(offsets[16], object.libraryFilterMangasDownloadType);
|
||||
writer.writeLong(offsets[17], object.libraryFilterMangasStartedType);
|
||||
writer.writeLong(offsets[18], object.libraryFilterMangasUnreadType);
|
||||
writer.writeBool(offsets[19], object.libraryShowCategoryTabs);
|
||||
writer.writeBool(offsets[20], object.libraryShowContinueReadingButton);
|
||||
writer.writeBool(offsets[21], object.libraryShowLanguage);
|
||||
writer.writeBool(offsets[22], object.libraryShowNumbersOfItems);
|
||||
writer.writeBool(offsets[23], object.onlyIncludePinnedSources);
|
||||
writer.writeString(offsets[11], object.downloadLocation);
|
||||
writer.writeBool(offsets[12], object.downloadOnlyOnWifi);
|
||||
writer.writeDouble(offsets[13], object.flexColorSchemeBlendLevel);
|
||||
writer.writeLong(offsets[14], object.flexSchemeColorIndex);
|
||||
writer.writeBool(offsets[15], object.incognitoMode);
|
||||
writer.writeBool(offsets[16], object.libraryDownloadedChapters);
|
||||
writer.writeLong(offsets[17], object.libraryFilterMangasBookMarkedType);
|
||||
writer.writeLong(offsets[18], object.libraryFilterMangasDownloadType);
|
||||
writer.writeLong(offsets[19], object.libraryFilterMangasStartedType);
|
||||
writer.writeLong(offsets[20], object.libraryFilterMangasUnreadType);
|
||||
writer.writeBool(offsets[21], object.libraryShowCategoryTabs);
|
||||
writer.writeBool(offsets[22], object.libraryShowContinueReadingButton);
|
||||
writer.writeBool(offsets[23], object.libraryShowLanguage);
|
||||
writer.writeBool(offsets[24], object.libraryShowNumbersOfItems);
|
||||
writer.writeBool(offsets[25], object.onlyIncludePinnedSources);
|
||||
writer.writeObjectList<PersonalReaderMode>(
|
||||
offsets[24],
|
||||
offsets[26],
|
||||
allOffsets,
|
||||
PersonalReaderModeSchema.serialize,
|
||||
object.personalReaderModeList,
|
||||
);
|
||||
writer.writeBool(offsets[25], object.pureBlackDarkMode);
|
||||
writer.writeLong(offsets[26], object.relativeTimesTamps);
|
||||
writer.writeBool(offsets[27], object.showNSFW);
|
||||
writer.writeBool(offsets[28], object.showPagesNumber);
|
||||
writer.writeBool(offsets[27], object.pureBlackDarkMode);
|
||||
writer.writeLong(offsets[28], object.relativeTimesTamps);
|
||||
writer.writeBool(offsets[29], object.saveAsCBZArchive);
|
||||
writer.writeBool(offsets[30], object.showNSFW);
|
||||
writer.writeBool(offsets[31], object.showPagesNumber);
|
||||
writer.writeObjectList<SortChapter>(
|
||||
offsets[29],
|
||||
offsets[32],
|
||||
allOffsets,
|
||||
SortChapterSchema.serialize,
|
||||
object.sortChapterList,
|
||||
);
|
||||
writer.writeObject<SortLibraryManga>(
|
||||
offsets[30],
|
||||
offsets[33],
|
||||
allOffsets,
|
||||
SortLibraryMangaSchema.serialize,
|
||||
object.sortLibraryManga,
|
||||
);
|
||||
writer.writeBool(offsets[31], object.themeIsDark);
|
||||
writer.writeString(offsets[32], object.userAgent);
|
||||
writer.writeBool(offsets[34], object.themeIsDark);
|
||||
writer.writeString(offsets[35], object.userAgent);
|
||||
}
|
||||
|
||||
Settings _settingsDeserialize(
|
||||
|
|
@ -484,43 +508,46 @@ Settings _settingsDeserialize(
|
|||
_SettingsdisplayTypeValueEnumMap[reader.readByteOrNull(offsets[9])] ??
|
||||
DisplayType.compactGrid,
|
||||
doubleTapAnimationSpeed: reader.readLongOrNull(offsets[10]),
|
||||
flexColorSchemeBlendLevel: reader.readDoubleOrNull(offsets[11]),
|
||||
flexSchemeColorIndex: reader.readLongOrNull(offsets[12]),
|
||||
downloadLocation: reader.readStringOrNull(offsets[11]),
|
||||
downloadOnlyOnWifi: reader.readBoolOrNull(offsets[12]),
|
||||
flexColorSchemeBlendLevel: reader.readDoubleOrNull(offsets[13]),
|
||||
flexSchemeColorIndex: reader.readLongOrNull(offsets[14]),
|
||||
id: id,
|
||||
incognitoMode: reader.readBoolOrNull(offsets[13]),
|
||||
libraryDownloadedChapters: reader.readBoolOrNull(offsets[14]),
|
||||
libraryFilterMangasBookMarkedType: reader.readLongOrNull(offsets[15]),
|
||||
libraryFilterMangasDownloadType: reader.readLongOrNull(offsets[16]),
|
||||
libraryFilterMangasStartedType: reader.readLongOrNull(offsets[17]),
|
||||
libraryFilterMangasUnreadType: reader.readLongOrNull(offsets[18]),
|
||||
libraryShowCategoryTabs: reader.readBoolOrNull(offsets[19]),
|
||||
libraryShowContinueReadingButton: reader.readBoolOrNull(offsets[20]),
|
||||
libraryShowLanguage: reader.readBoolOrNull(offsets[21]),
|
||||
libraryShowNumbersOfItems: reader.readBoolOrNull(offsets[22]),
|
||||
onlyIncludePinnedSources: reader.readBoolOrNull(offsets[23]),
|
||||
incognitoMode: reader.readBoolOrNull(offsets[15]),
|
||||
libraryDownloadedChapters: reader.readBoolOrNull(offsets[16]),
|
||||
libraryFilterMangasBookMarkedType: reader.readLongOrNull(offsets[17]),
|
||||
libraryFilterMangasDownloadType: reader.readLongOrNull(offsets[18]),
|
||||
libraryFilterMangasStartedType: reader.readLongOrNull(offsets[19]),
|
||||
libraryFilterMangasUnreadType: reader.readLongOrNull(offsets[20]),
|
||||
libraryShowCategoryTabs: reader.readBoolOrNull(offsets[21]),
|
||||
libraryShowContinueReadingButton: reader.readBoolOrNull(offsets[22]),
|
||||
libraryShowLanguage: reader.readBoolOrNull(offsets[23]),
|
||||
libraryShowNumbersOfItems: reader.readBoolOrNull(offsets[24]),
|
||||
onlyIncludePinnedSources: reader.readBoolOrNull(offsets[25]),
|
||||
personalReaderModeList: reader.readObjectList<PersonalReaderMode>(
|
||||
offsets[24],
|
||||
offsets[26],
|
||||
PersonalReaderModeSchema.deserialize,
|
||||
allOffsets,
|
||||
PersonalReaderMode(),
|
||||
),
|
||||
pureBlackDarkMode: reader.readBoolOrNull(offsets[25]),
|
||||
relativeTimesTamps: reader.readLongOrNull(offsets[26]),
|
||||
showNSFW: reader.readBoolOrNull(offsets[27]),
|
||||
showPagesNumber: reader.readBoolOrNull(offsets[28]),
|
||||
pureBlackDarkMode: reader.readBoolOrNull(offsets[27]),
|
||||
relativeTimesTamps: reader.readLongOrNull(offsets[28]),
|
||||
saveAsCBZArchive: reader.readBoolOrNull(offsets[29]),
|
||||
showNSFW: reader.readBoolOrNull(offsets[30]),
|
||||
showPagesNumber: reader.readBoolOrNull(offsets[31]),
|
||||
sortChapterList: reader.readObjectList<SortChapter>(
|
||||
offsets[29],
|
||||
offsets[32],
|
||||
SortChapterSchema.deserialize,
|
||||
allOffsets,
|
||||
SortChapter(),
|
||||
),
|
||||
sortLibraryManga: reader.readObjectOrNull<SortLibraryManga>(
|
||||
offsets[30],
|
||||
offsets[33],
|
||||
SortLibraryMangaSchema.deserialize,
|
||||
allOffsets,
|
||||
),
|
||||
themeIsDark: reader.readBoolOrNull(offsets[31]),
|
||||
userAgent: reader.readStringOrNull(offsets[32]),
|
||||
themeIsDark: reader.readBoolOrNull(offsets[34]),
|
||||
userAgent: reader.readStringOrNull(offsets[35]),
|
||||
);
|
||||
object.chapterFilterBookmarkedList =
|
||||
reader.readObjectList<ChapterFilterBookmarked>(
|
||||
|
|
@ -601,25 +628,25 @@ P _settingsDeserializeProp<P>(
|
|||
case 10:
|
||||
return (reader.readLongOrNull(offset)) as P;
|
||||
case 11:
|
||||
return (reader.readDoubleOrNull(offset)) as P;
|
||||
return (reader.readStringOrNull(offset)) as P;
|
||||
case 12:
|
||||
return (reader.readLongOrNull(offset)) as P;
|
||||
return (reader.readBoolOrNull(offset)) as P;
|
||||
case 13:
|
||||
return (reader.readBoolOrNull(offset)) as P;
|
||||
return (reader.readDoubleOrNull(offset)) as P;
|
||||
case 14:
|
||||
return (reader.readBoolOrNull(offset)) as P;
|
||||
return (reader.readLongOrNull(offset)) as P;
|
||||
case 15:
|
||||
return (reader.readLongOrNull(offset)) as P;
|
||||
return (reader.readBoolOrNull(offset)) as P;
|
||||
case 16:
|
||||
return (reader.readLongOrNull(offset)) as P;
|
||||
return (reader.readBoolOrNull(offset)) as P;
|
||||
case 17:
|
||||
return (reader.readLongOrNull(offset)) as P;
|
||||
case 18:
|
||||
return (reader.readLongOrNull(offset)) as P;
|
||||
case 19:
|
||||
return (reader.readBoolOrNull(offset)) as P;
|
||||
return (reader.readLongOrNull(offset)) as P;
|
||||
case 20:
|
||||
return (reader.readBoolOrNull(offset)) as P;
|
||||
return (reader.readLongOrNull(offset)) as P;
|
||||
case 21:
|
||||
return (reader.readBoolOrNull(offset)) as P;
|
||||
case 22:
|
||||
|
|
@ -627,36 +654,42 @@ P _settingsDeserializeProp<P>(
|
|||
case 23:
|
||||
return (reader.readBoolOrNull(offset)) as P;
|
||||
case 24:
|
||||
return (reader.readBoolOrNull(offset)) as P;
|
||||
case 25:
|
||||
return (reader.readBoolOrNull(offset)) as P;
|
||||
case 26:
|
||||
return (reader.readObjectList<PersonalReaderMode>(
|
||||
offset,
|
||||
PersonalReaderModeSchema.deserialize,
|
||||
allOffsets,
|
||||
PersonalReaderMode(),
|
||||
)) as P;
|
||||
case 25:
|
||||
return (reader.readBoolOrNull(offset)) as P;
|
||||
case 26:
|
||||
return (reader.readLongOrNull(offset)) as P;
|
||||
case 27:
|
||||
return (reader.readBoolOrNull(offset)) as P;
|
||||
case 28:
|
||||
return (reader.readBoolOrNull(offset)) as P;
|
||||
return (reader.readLongOrNull(offset)) as P;
|
||||
case 29:
|
||||
return (reader.readBoolOrNull(offset)) as P;
|
||||
case 30:
|
||||
return (reader.readBoolOrNull(offset)) as P;
|
||||
case 31:
|
||||
return (reader.readBoolOrNull(offset)) as P;
|
||||
case 32:
|
||||
return (reader.readObjectList<SortChapter>(
|
||||
offset,
|
||||
SortChapterSchema.deserialize,
|
||||
allOffsets,
|
||||
SortChapter(),
|
||||
)) as P;
|
||||
case 30:
|
||||
case 33:
|
||||
return (reader.readObjectOrNull<SortLibraryManga>(
|
||||
offset,
|
||||
SortLibraryMangaSchema.deserialize,
|
||||
allOffsets,
|
||||
)) as P;
|
||||
case 31:
|
||||
case 34:
|
||||
return (reader.readBoolOrNull(offset)) as P;
|
||||
case 32:
|
||||
case 35:
|
||||
return (reader.readStringOrNull(offset)) as P;
|
||||
default:
|
||||
throw IsarError('Unknown property with id $propertyId');
|
||||
|
|
@ -1779,6 +1812,188 @@ extension SettingsQueryFilter
|
|||
});
|
||||
}
|
||||
|
||||
QueryBuilder<Settings, Settings, QAfterFilterCondition>
|
||||
downloadLocationIsNull() {
|
||||
return QueryBuilder.apply(this, (query) {
|
||||
return query.addFilterCondition(const FilterCondition.isNull(
|
||||
property: r'downloadLocation',
|
||||
));
|
||||
});
|
||||
}
|
||||
|
||||
QueryBuilder<Settings, Settings, QAfterFilterCondition>
|
||||
downloadLocationIsNotNull() {
|
||||
return QueryBuilder.apply(this, (query) {
|
||||
return query.addFilterCondition(const FilterCondition.isNotNull(
|
||||
property: r'downloadLocation',
|
||||
));
|
||||
});
|
||||
}
|
||||
|
||||
QueryBuilder<Settings, Settings, QAfterFilterCondition>
|
||||
downloadLocationEqualTo(
|
||||
String? value, {
|
||||
bool caseSensitive = true,
|
||||
}) {
|
||||
return QueryBuilder.apply(this, (query) {
|
||||
return query.addFilterCondition(FilterCondition.equalTo(
|
||||
property: r'downloadLocation',
|
||||
value: value,
|
||||
caseSensitive: caseSensitive,
|
||||
));
|
||||
});
|
||||
}
|
||||
|
||||
QueryBuilder<Settings, Settings, QAfterFilterCondition>
|
||||
downloadLocationGreaterThan(
|
||||
String? value, {
|
||||
bool include = false,
|
||||
bool caseSensitive = true,
|
||||
}) {
|
||||
return QueryBuilder.apply(this, (query) {
|
||||
return query.addFilterCondition(FilterCondition.greaterThan(
|
||||
include: include,
|
||||
property: r'downloadLocation',
|
||||
value: value,
|
||||
caseSensitive: caseSensitive,
|
||||
));
|
||||
});
|
||||
}
|
||||
|
||||
QueryBuilder<Settings, Settings, QAfterFilterCondition>
|
||||
downloadLocationLessThan(
|
||||
String? value, {
|
||||
bool include = false,
|
||||
bool caseSensitive = true,
|
||||
}) {
|
||||
return QueryBuilder.apply(this, (query) {
|
||||
return query.addFilterCondition(FilterCondition.lessThan(
|
||||
include: include,
|
||||
property: r'downloadLocation',
|
||||
value: value,
|
||||
caseSensitive: caseSensitive,
|
||||
));
|
||||
});
|
||||
}
|
||||
|
||||
QueryBuilder<Settings, Settings, QAfterFilterCondition>
|
||||
downloadLocationBetween(
|
||||
String? lower,
|
||||
String? upper, {
|
||||
bool includeLower = true,
|
||||
bool includeUpper = true,
|
||||
bool caseSensitive = true,
|
||||
}) {
|
||||
return QueryBuilder.apply(this, (query) {
|
||||
return query.addFilterCondition(FilterCondition.between(
|
||||
property: r'downloadLocation',
|
||||
lower: lower,
|
||||
includeLower: includeLower,
|
||||
upper: upper,
|
||||
includeUpper: includeUpper,
|
||||
caseSensitive: caseSensitive,
|
||||
));
|
||||
});
|
||||
}
|
||||
|
||||
QueryBuilder<Settings, Settings, QAfterFilterCondition>
|
||||
downloadLocationStartsWith(
|
||||
String value, {
|
||||
bool caseSensitive = true,
|
||||
}) {
|
||||
return QueryBuilder.apply(this, (query) {
|
||||
return query.addFilterCondition(FilterCondition.startsWith(
|
||||
property: r'downloadLocation',
|
||||
value: value,
|
||||
caseSensitive: caseSensitive,
|
||||
));
|
||||
});
|
||||
}
|
||||
|
||||
QueryBuilder<Settings, Settings, QAfterFilterCondition>
|
||||
downloadLocationEndsWith(
|
||||
String value, {
|
||||
bool caseSensitive = true,
|
||||
}) {
|
||||
return QueryBuilder.apply(this, (query) {
|
||||
return query.addFilterCondition(FilterCondition.endsWith(
|
||||
property: r'downloadLocation',
|
||||
value: value,
|
||||
caseSensitive: caseSensitive,
|
||||
));
|
||||
});
|
||||
}
|
||||
|
||||
QueryBuilder<Settings, Settings, QAfterFilterCondition>
|
||||
downloadLocationContains(String value, {bool caseSensitive = true}) {
|
||||
return QueryBuilder.apply(this, (query) {
|
||||
return query.addFilterCondition(FilterCondition.contains(
|
||||
property: r'downloadLocation',
|
||||
value: value,
|
||||
caseSensitive: caseSensitive,
|
||||
));
|
||||
});
|
||||
}
|
||||
|
||||
QueryBuilder<Settings, Settings, QAfterFilterCondition>
|
||||
downloadLocationMatches(String pattern, {bool caseSensitive = true}) {
|
||||
return QueryBuilder.apply(this, (query) {
|
||||
return query.addFilterCondition(FilterCondition.matches(
|
||||
property: r'downloadLocation',
|
||||
wildcard: pattern,
|
||||
caseSensitive: caseSensitive,
|
||||
));
|
||||
});
|
||||
}
|
||||
|
||||
QueryBuilder<Settings, Settings, QAfterFilterCondition>
|
||||
downloadLocationIsEmpty() {
|
||||
return QueryBuilder.apply(this, (query) {
|
||||
return query.addFilterCondition(FilterCondition.equalTo(
|
||||
property: r'downloadLocation',
|
||||
value: '',
|
||||
));
|
||||
});
|
||||
}
|
||||
|
||||
QueryBuilder<Settings, Settings, QAfterFilterCondition>
|
||||
downloadLocationIsNotEmpty() {
|
||||
return QueryBuilder.apply(this, (query) {
|
||||
return query.addFilterCondition(FilterCondition.greaterThan(
|
||||
property: r'downloadLocation',
|
||||
value: '',
|
||||
));
|
||||
});
|
||||
}
|
||||
|
||||
QueryBuilder<Settings, Settings, QAfterFilterCondition>
|
||||
downloadOnlyOnWifiIsNull() {
|
||||
return QueryBuilder.apply(this, (query) {
|
||||
return query.addFilterCondition(const FilterCondition.isNull(
|
||||
property: r'downloadOnlyOnWifi',
|
||||
));
|
||||
});
|
||||
}
|
||||
|
||||
QueryBuilder<Settings, Settings, QAfterFilterCondition>
|
||||
downloadOnlyOnWifiIsNotNull() {
|
||||
return QueryBuilder.apply(this, (query) {
|
||||
return query.addFilterCondition(const FilterCondition.isNotNull(
|
||||
property: r'downloadOnlyOnWifi',
|
||||
));
|
||||
});
|
||||
}
|
||||
|
||||
QueryBuilder<Settings, Settings, QAfterFilterCondition>
|
||||
downloadOnlyOnWifiEqualTo(bool? value) {
|
||||
return QueryBuilder.apply(this, (query) {
|
||||
return query.addFilterCondition(FilterCondition.equalTo(
|
||||
property: r'downloadOnlyOnWifi',
|
||||
value: value,
|
||||
));
|
||||
});
|
||||
}
|
||||
|
||||
QueryBuilder<Settings, Settings, QAfterFilterCondition>
|
||||
flexColorSchemeBlendLevelIsNull() {
|
||||
return QueryBuilder.apply(this, (query) {
|
||||
|
|
@ -2706,6 +2921,34 @@ extension SettingsQueryFilter
|
|||
});
|
||||
}
|
||||
|
||||
QueryBuilder<Settings, Settings, QAfterFilterCondition>
|
||||
saveAsCBZArchiveIsNull() {
|
||||
return QueryBuilder.apply(this, (query) {
|
||||
return query.addFilterCondition(const FilterCondition.isNull(
|
||||
property: r'saveAsCBZArchive',
|
||||
));
|
||||
});
|
||||
}
|
||||
|
||||
QueryBuilder<Settings, Settings, QAfterFilterCondition>
|
||||
saveAsCBZArchiveIsNotNull() {
|
||||
return QueryBuilder.apply(this, (query) {
|
||||
return query.addFilterCondition(const FilterCondition.isNotNull(
|
||||
property: r'saveAsCBZArchive',
|
||||
));
|
||||
});
|
||||
}
|
||||
|
||||
QueryBuilder<Settings, Settings, QAfterFilterCondition>
|
||||
saveAsCBZArchiveEqualTo(bool? value) {
|
||||
return QueryBuilder.apply(this, (query) {
|
||||
return query.addFilterCondition(FilterCondition.equalTo(
|
||||
property: r'saveAsCBZArchive',
|
||||
value: value,
|
||||
));
|
||||
});
|
||||
}
|
||||
|
||||
QueryBuilder<Settings, Settings, QAfterFilterCondition> showNSFWIsNull() {
|
||||
return QueryBuilder.apply(this, (query) {
|
||||
return query.addFilterCondition(const FilterCondition.isNull(
|
||||
|
|
@ -3196,6 +3439,31 @@ extension SettingsQuerySortBy on QueryBuilder<Settings, Settings, QSortBy> {
|
|||
});
|
||||
}
|
||||
|
||||
QueryBuilder<Settings, Settings, QAfterSortBy> sortByDownloadLocation() {
|
||||
return QueryBuilder.apply(this, (query) {
|
||||
return query.addSortBy(r'downloadLocation', Sort.asc);
|
||||
});
|
||||
}
|
||||
|
||||
QueryBuilder<Settings, Settings, QAfterSortBy> sortByDownloadLocationDesc() {
|
||||
return QueryBuilder.apply(this, (query) {
|
||||
return query.addSortBy(r'downloadLocation', Sort.desc);
|
||||
});
|
||||
}
|
||||
|
||||
QueryBuilder<Settings, Settings, QAfterSortBy> sortByDownloadOnlyOnWifi() {
|
||||
return QueryBuilder.apply(this, (query) {
|
||||
return query.addSortBy(r'downloadOnlyOnWifi', Sort.asc);
|
||||
});
|
||||
}
|
||||
|
||||
QueryBuilder<Settings, Settings, QAfterSortBy>
|
||||
sortByDownloadOnlyOnWifiDesc() {
|
||||
return QueryBuilder.apply(this, (query) {
|
||||
return query.addSortBy(r'downloadOnlyOnWifi', Sort.desc);
|
||||
});
|
||||
}
|
||||
|
||||
QueryBuilder<Settings, Settings, QAfterSortBy>
|
||||
sortByFlexColorSchemeBlendLevel() {
|
||||
return QueryBuilder.apply(this, (query) {
|
||||
|
|
@ -3399,6 +3667,18 @@ extension SettingsQuerySortBy on QueryBuilder<Settings, Settings, QSortBy> {
|
|||
});
|
||||
}
|
||||
|
||||
QueryBuilder<Settings, Settings, QAfterSortBy> sortBySaveAsCBZArchive() {
|
||||
return QueryBuilder.apply(this, (query) {
|
||||
return query.addSortBy(r'saveAsCBZArchive', Sort.asc);
|
||||
});
|
||||
}
|
||||
|
||||
QueryBuilder<Settings, Settings, QAfterSortBy> sortBySaveAsCBZArchiveDesc() {
|
||||
return QueryBuilder.apply(this, (query) {
|
||||
return query.addSortBy(r'saveAsCBZArchive', Sort.desc);
|
||||
});
|
||||
}
|
||||
|
||||
QueryBuilder<Settings, Settings, QAfterSortBy> sortByShowNSFW() {
|
||||
return QueryBuilder.apply(this, (query) {
|
||||
return query.addSortBy(r'showNSFW', Sort.asc);
|
||||
|
|
@ -3514,6 +3794,31 @@ extension SettingsQuerySortThenBy
|
|||
});
|
||||
}
|
||||
|
||||
QueryBuilder<Settings, Settings, QAfterSortBy> thenByDownloadLocation() {
|
||||
return QueryBuilder.apply(this, (query) {
|
||||
return query.addSortBy(r'downloadLocation', Sort.asc);
|
||||
});
|
||||
}
|
||||
|
||||
QueryBuilder<Settings, Settings, QAfterSortBy> thenByDownloadLocationDesc() {
|
||||
return QueryBuilder.apply(this, (query) {
|
||||
return query.addSortBy(r'downloadLocation', Sort.desc);
|
||||
});
|
||||
}
|
||||
|
||||
QueryBuilder<Settings, Settings, QAfterSortBy> thenByDownloadOnlyOnWifi() {
|
||||
return QueryBuilder.apply(this, (query) {
|
||||
return query.addSortBy(r'downloadOnlyOnWifi', Sort.asc);
|
||||
});
|
||||
}
|
||||
|
||||
QueryBuilder<Settings, Settings, QAfterSortBy>
|
||||
thenByDownloadOnlyOnWifiDesc() {
|
||||
return QueryBuilder.apply(this, (query) {
|
||||
return query.addSortBy(r'downloadOnlyOnWifi', Sort.desc);
|
||||
});
|
||||
}
|
||||
|
||||
QueryBuilder<Settings, Settings, QAfterSortBy>
|
||||
thenByFlexColorSchemeBlendLevel() {
|
||||
return QueryBuilder.apply(this, (query) {
|
||||
|
|
@ -3729,6 +4034,18 @@ extension SettingsQuerySortThenBy
|
|||
});
|
||||
}
|
||||
|
||||
QueryBuilder<Settings, Settings, QAfterSortBy> thenBySaveAsCBZArchive() {
|
||||
return QueryBuilder.apply(this, (query) {
|
||||
return query.addSortBy(r'saveAsCBZArchive', Sort.asc);
|
||||
});
|
||||
}
|
||||
|
||||
QueryBuilder<Settings, Settings, QAfterSortBy> thenBySaveAsCBZArchiveDesc() {
|
||||
return QueryBuilder.apply(this, (query) {
|
||||
return query.addSortBy(r'saveAsCBZArchive', Sort.desc);
|
||||
});
|
||||
}
|
||||
|
||||
QueryBuilder<Settings, Settings, QAfterSortBy> thenByShowNSFW() {
|
||||
return QueryBuilder.apply(this, (query) {
|
||||
return query.addSortBy(r'showNSFW', Sort.asc);
|
||||
|
|
@ -3813,6 +4130,20 @@ extension SettingsQueryWhereDistinct
|
|||
});
|
||||
}
|
||||
|
||||
QueryBuilder<Settings, Settings, QDistinct> distinctByDownloadLocation(
|
||||
{bool caseSensitive = true}) {
|
||||
return QueryBuilder.apply(this, (query) {
|
||||
return query.addDistinctBy(r'downloadLocation',
|
||||
caseSensitive: caseSensitive);
|
||||
});
|
||||
}
|
||||
|
||||
QueryBuilder<Settings, Settings, QDistinct> distinctByDownloadOnlyOnWifi() {
|
||||
return QueryBuilder.apply(this, (query) {
|
||||
return query.addDistinctBy(r'downloadOnlyOnWifi');
|
||||
});
|
||||
}
|
||||
|
||||
QueryBuilder<Settings, Settings, QDistinct>
|
||||
distinctByFlexColorSchemeBlendLevel() {
|
||||
return QueryBuilder.apply(this, (query) {
|
||||
|
|
@ -3913,6 +4244,12 @@ extension SettingsQueryWhereDistinct
|
|||
});
|
||||
}
|
||||
|
||||
QueryBuilder<Settings, Settings, QDistinct> distinctBySaveAsCBZArchive() {
|
||||
return QueryBuilder.apply(this, (query) {
|
||||
return query.addDistinctBy(r'saveAsCBZArchive');
|
||||
});
|
||||
}
|
||||
|
||||
QueryBuilder<Settings, Settings, QDistinct> distinctByShowNSFW() {
|
||||
return QueryBuilder.apply(this, (query) {
|
||||
return query.addDistinctBy(r'showNSFW');
|
||||
|
|
@ -4022,6 +4359,18 @@ extension SettingsQueryProperty
|
|||
});
|
||||
}
|
||||
|
||||
QueryBuilder<Settings, String?, QQueryOperations> downloadLocationProperty() {
|
||||
return QueryBuilder.apply(this, (query) {
|
||||
return query.addPropertyName(r'downloadLocation');
|
||||
});
|
||||
}
|
||||
|
||||
QueryBuilder<Settings, bool?, QQueryOperations> downloadOnlyOnWifiProperty() {
|
||||
return QueryBuilder.apply(this, (query) {
|
||||
return query.addPropertyName(r'downloadOnlyOnWifi');
|
||||
});
|
||||
}
|
||||
|
||||
QueryBuilder<Settings, double?, QQueryOperations>
|
||||
flexColorSchemeBlendLevelProperty() {
|
||||
return QueryBuilder.apply(this, (query) {
|
||||
|
|
@ -4131,6 +4480,12 @@ extension SettingsQueryProperty
|
|||
});
|
||||
}
|
||||
|
||||
QueryBuilder<Settings, bool?, QQueryOperations> saveAsCBZArchiveProperty() {
|
||||
return QueryBuilder.apply(this, (query) {
|
||||
return query.addPropertyName(r'saveAsCBZArchive');
|
||||
});
|
||||
}
|
||||
|
||||
QueryBuilder<Settings, bool?, QQueryOperations> showNSFWProperty() {
|
||||
return QueryBuilder.apply(this, (query) {
|
||||
return query.addPropertyName(r'showNSFW');
|
||||
|
|
|
|||
|
|
@ -201,9 +201,8 @@ class LibraryGridViewWidget extends StatelessWidget {
|
|||
)),
|
||||
],
|
||||
),
|
||||
if (!isComfortableGrid)
|
||||
if (!isCoverOnlyGrid)
|
||||
BottomTextWidget(text: entriesManga[index].name!),
|
||||
if (!isComfortableGrid && !isCoverOnlyGrid)
|
||||
BottomTextWidget(text: entriesManga[index].name!),
|
||||
if (continueReaderBtn)
|
||||
Positioned(
|
||||
bottom: 0,
|
||||
|
|
|
|||
|
|
@ -1,4 +1,3 @@
|
|||
import 'dart:developer';
|
||||
import 'dart:io';
|
||||
import 'package:background_downloader/background_downloader.dart';
|
||||
import 'package:isar/isar.dart';
|
||||
|
|
@ -32,7 +31,6 @@ Future<List<String>> downloadChapter(
|
|||
final finalPath =
|
||||
"downloads/${manga.source} (${manga.lang!.toUpperCase()})/${manga.name!.replaceAll(regExp, '_')}/$scanlator${chapter.name!.replaceAll(regExp, '_')}";
|
||||
path = Directory("${path1!.path}$finalPath/");
|
||||
log(scanlator);
|
||||
ref
|
||||
.read(getChapterUrlProvider(
|
||||
chapter: chapter,
|
||||
|
|
|
|||
|
|
@ -6,7 +6,7 @@ part of 'download_provider.dart';
|
|||
// RiverpodGenerator
|
||||
// **************************************************************************
|
||||
|
||||
String _$downloadChapterHash() => r'b702505f8ee75ab0a51eb53c0e0631e703aa6517';
|
||||
String _$downloadChapterHash() => r'abdb9aa7362e0cc436ec56de57521fea203d3041';
|
||||
|
||||
/// Copied from Dart SDK
|
||||
class _SystemHash {
|
||||
|
|
|
|||
|
|
@ -42,10 +42,7 @@ class AppearanceScreen extends ConsumerWidget {
|
|||
Padding(
|
||||
padding: const EdgeInsets.symmetric(vertical: 10),
|
||||
child: SwitchListTile(
|
||||
title: const Text(
|
||||
"Pure black dark mode",
|
||||
style: TextStyle(fontWeight: FontWeight.bold),
|
||||
),
|
||||
title: const Text("Pure black dark mode"),
|
||||
value: pureBlackDarkMode,
|
||||
onChanged: (value) {
|
||||
ref
|
||||
|
|
@ -126,10 +123,7 @@ class AppearanceScreen extends ConsumerWidget {
|
|||
);
|
||||
});
|
||||
},
|
||||
title: const Text(
|
||||
"Relative timestamps",
|
||||
style: TextStyle(fontWeight: FontWeight.bold),
|
||||
),
|
||||
title: const Text("Relative timestamps"),
|
||||
subtitle: Text(
|
||||
relativeTimestampsList[relativeTimestamps],
|
||||
style:
|
||||
|
|
@ -191,10 +185,7 @@ class AppearanceScreen extends ConsumerWidget {
|
|||
);
|
||||
});
|
||||
},
|
||||
title: const Text(
|
||||
"Date format",
|
||||
style: TextStyle(fontWeight: FontWeight.bold),
|
||||
),
|
||||
title: const Text("Date format"),
|
||||
subtitle: Text(
|
||||
"$dateFormatState (${dateFormat(DateTime.now().millisecondsSinceEpoch.toString(), useRelativeTimesTamps: false, dateFormat: dateFormatState, ref: ref)})",
|
||||
style:
|
||||
|
|
|
|||
|
|
@ -25,10 +25,7 @@ class _DarkModeButtonState extends ConsumerState<DarkModeButton> {
|
|||
ref.read(themeModeStateProvider.notifier).setLightTheme();
|
||||
}
|
||||
},
|
||||
title: const Text(
|
||||
"Dark mode",
|
||||
style: TextStyle(fontWeight: FontWeight.bold),
|
||||
),
|
||||
title: const Text("Dark mode"),
|
||||
subtitle: Text(
|
||||
!isDark ? 'Off' : 'On',
|
||||
style: TextStyle(fontSize: 11, color: secondaryColor(context)),
|
||||
|
|
|
|||
|
|
@ -33,7 +33,7 @@ class BrowseSScreen extends ConsumerWidget {
|
|||
),
|
||||
SwitchListTile(
|
||||
value: onlyIncludePinnedSource,
|
||||
title: const Text("Only inclued pinned sources"),
|
||||
title: const Text("Only include pinned sources"),
|
||||
onChanged: (value) {
|
||||
ref
|
||||
.read(onlyIncludePinnedSourceStateProvider.notifier)
|
||||
|
|
|
|||
131
lib/modules/more/settings/downloads/downloads_screen.dart
Normal file
131
lib/modules/more/settings/downloads/downloads_screen.dart
Normal file
|
|
@ -0,0 +1,131 @@
|
|||
import 'package:file_picker/file_picker.dart';
|
||||
import 'package:flutter/material.dart';
|
||||
import 'package:flutter_riverpod/flutter_riverpod.dart';
|
||||
import 'package:mangayomi/modules/more/settings/downloads/providers/downloads_state_provider.dart';
|
||||
import 'package:mangayomi/utils/colors.dart';
|
||||
import 'package:mangayomi/utils/media_query.dart';
|
||||
|
||||
class DownloadsScreen extends ConsumerStatefulWidget {
|
||||
const DownloadsScreen({super.key});
|
||||
|
||||
@override
|
||||
ConsumerState<DownloadsScreen> createState() => _DownloadsScreenState();
|
||||
}
|
||||
|
||||
class _DownloadsScreenState extends ConsumerState<DownloadsScreen> {
|
||||
@override
|
||||
Widget build(
|
||||
BuildContext context,
|
||||
) {
|
||||
final saveAsCBZArchiveState = ref.watch(saveAsCBZArchiveStateProvider);
|
||||
final onlyOnWifiState = ref.watch(onlyOnWifiStateProvider);
|
||||
final downloadLocationState = ref.watch(downloadLocationStateProvider);
|
||||
ref.read(downloadLocationStateProvider.notifier).refresh();
|
||||
return Scaffold(
|
||||
appBar: AppBar(
|
||||
title: const Text("Downloads"),
|
||||
),
|
||||
body: Column(
|
||||
children: [
|
||||
ListTile(
|
||||
onTap: () {
|
||||
showDialog(
|
||||
context: context,
|
||||
builder: (context) {
|
||||
return AlertDialog(
|
||||
title: const Text(
|
||||
"Download location",
|
||||
),
|
||||
content: SizedBox(
|
||||
width: mediaWidth(context, 0.8),
|
||||
child: ListView(
|
||||
shrinkWrap: true,
|
||||
children: [
|
||||
RadioListTile(
|
||||
dense: true,
|
||||
contentPadding: const EdgeInsets.all(0),
|
||||
value: downloadLocationState.$2.isEmpty
|
||||
? downloadLocationState.$1
|
||||
: downloadLocationState.$2,
|
||||
groupValue: downloadLocationState.$1,
|
||||
onChanged: (value) {
|
||||
ref
|
||||
.read(downloadLocationStateProvider
|
||||
.notifier)
|
||||
.set("");
|
||||
Navigator.pop(context);
|
||||
},
|
||||
title: Row(
|
||||
children: [Text(downloadLocationState.$1)],
|
||||
),
|
||||
),
|
||||
RadioListTile(
|
||||
dense: true,
|
||||
contentPadding: const EdgeInsets.all(0),
|
||||
value: downloadLocationState.$2.isEmpty
|
||||
? downloadLocationState.$1
|
||||
: downloadLocationState.$2,
|
||||
groupValue: downloadLocationState.$2,
|
||||
onChanged: (value) async {
|
||||
String? result = await FilePicker.platform
|
||||
.getDirectoryPath();
|
||||
|
||||
if (result != null) {
|
||||
ref
|
||||
.read(downloadLocationStateProvider
|
||||
.notifier)
|
||||
.set(result);
|
||||
} else {}
|
||||
if (!mounted) return;
|
||||
Navigator.pop(context);
|
||||
},
|
||||
title: const Row(
|
||||
children: [Text("Custom location")],
|
||||
),
|
||||
),
|
||||
],
|
||||
)),
|
||||
actions: [
|
||||
Row(
|
||||
mainAxisAlignment: MainAxisAlignment.end,
|
||||
children: [
|
||||
TextButton(
|
||||
onPressed: () async {
|
||||
Navigator.pop(context);
|
||||
},
|
||||
child: Text(
|
||||
"Cancel",
|
||||
style:
|
||||
TextStyle(color: primaryColor(context)),
|
||||
)),
|
||||
],
|
||||
)
|
||||
],
|
||||
);
|
||||
});
|
||||
},
|
||||
title: const Text("Download location"),
|
||||
subtitle: Text(
|
||||
downloadLocationState.$2.isEmpty
|
||||
? downloadLocationState.$1
|
||||
: downloadLocationState.$2,
|
||||
style: TextStyle(fontSize: 11, color: secondaryColor(context)),
|
||||
),
|
||||
),
|
||||
SwitchListTile(
|
||||
value: onlyOnWifiState,
|
||||
title: const Text("Only on wifi"),
|
||||
onChanged: (value) {
|
||||
ref.read(onlyOnWifiStateProvider.notifier).set(value);
|
||||
}),
|
||||
SwitchListTile(
|
||||
value: saveAsCBZArchiveState,
|
||||
title: const Text("Save as CBZ archive"),
|
||||
onChanged: (value) {
|
||||
ref.read(saveAsCBZArchiveStateProvider.notifier).set(value);
|
||||
}),
|
||||
],
|
||||
),
|
||||
);
|
||||
}
|
||||
}
|
||||
|
|
@ -0,0 +1,63 @@
|
|||
import 'dart:io';
|
||||
|
||||
import 'package:mangayomi/main.dart';
|
||||
import 'package:mangayomi/models/settings.dart';
|
||||
import 'package:mangayomi/providers/storage_provider.dart';
|
||||
import 'package:riverpod_annotation/riverpod_annotation.dart';
|
||||
part 'downloads_state_provider.g.dart';
|
||||
|
||||
@riverpod
|
||||
class OnlyOnWifiState extends _$OnlyOnWifiState {
|
||||
@override
|
||||
bool build() {
|
||||
return isar.settings.getSync(227)!.downloadOnlyOnWifi ?? false;
|
||||
}
|
||||
|
||||
void set(bool value) {
|
||||
final settings = isar.settings.getSync(227);
|
||||
state = value;
|
||||
isar.writeTxnSync(
|
||||
() => isar.settings.putSync(settings!..downloadOnlyOnWifi = value));
|
||||
}
|
||||
}
|
||||
|
||||
@riverpod
|
||||
class SaveAsCBZArchiveState extends _$SaveAsCBZArchiveState {
|
||||
@override
|
||||
bool build() {
|
||||
return isar.settings.getSync(227)!.saveAsCBZArchive ?? false;
|
||||
}
|
||||
|
||||
void set(bool value) {
|
||||
final settings = isar.settings.getSync(227);
|
||||
state = value;
|
||||
isar.writeTxnSync(
|
||||
() => isar.settings.putSync(settings!..saveAsCBZArchive = value));
|
||||
}
|
||||
}
|
||||
|
||||
@riverpod
|
||||
class DownloadLocationState extends _$DownloadLocationState {
|
||||
@override
|
||||
(String, String) build() {
|
||||
return ("", isar.settings.getSync(227)!.downloadLocation ?? "");
|
||||
}
|
||||
|
||||
void set(String location) {
|
||||
final settings = isar.settings.getSync(227);
|
||||
state = ("${_storageProvider!.path}downloads", location);
|
||||
isar.writeTxnSync(
|
||||
() => isar.settings.putSync(settings!..downloadLocation = location));
|
||||
}
|
||||
|
||||
Directory? _storageProvider;
|
||||
|
||||
Future refresh() async {
|
||||
_storageProvider = await StorageProvider().getDirectory();
|
||||
final settings = isar.settings.getSync(227);
|
||||
state = (
|
||||
"${_storageProvider!.path}downloads",
|
||||
settings!.downloadLocation ?? ""
|
||||
);
|
||||
}
|
||||
}
|
||||
|
|
@ -0,0 +1,59 @@
|
|||
// GENERATED CODE - DO NOT MODIFY BY HAND
|
||||
|
||||
part of 'downloads_state_provider.dart';
|
||||
|
||||
// **************************************************************************
|
||||
// RiverpodGenerator
|
||||
// **************************************************************************
|
||||
|
||||
String _$onlyOnWifiStateHash() => r'613d0fd2a72fdfeb0c8da05dc8ed4144cc8df6f5';
|
||||
|
||||
/// See also [OnlyOnWifiState].
|
||||
@ProviderFor(OnlyOnWifiState)
|
||||
final onlyOnWifiStateProvider =
|
||||
AutoDisposeNotifierProvider<OnlyOnWifiState, bool>.internal(
|
||||
OnlyOnWifiState.new,
|
||||
name: r'onlyOnWifiStateProvider',
|
||||
debugGetCreateSourceHash: const bool.fromEnvironment('dart.vm.product')
|
||||
? null
|
||||
: _$onlyOnWifiStateHash,
|
||||
dependencies: null,
|
||||
allTransitiveDependencies: null,
|
||||
);
|
||||
|
||||
typedef _$OnlyOnWifiState = AutoDisposeNotifier<bool>;
|
||||
String _$saveAsCBZArchiveStateHash() =>
|
||||
r'81c4d07dc96f0fae33274f2067911e5b94ac6161';
|
||||
|
||||
/// See also [SaveAsCBZArchiveState].
|
||||
@ProviderFor(SaveAsCBZArchiveState)
|
||||
final saveAsCBZArchiveStateProvider =
|
||||
AutoDisposeNotifierProvider<SaveAsCBZArchiveState, bool>.internal(
|
||||
SaveAsCBZArchiveState.new,
|
||||
name: r'saveAsCBZArchiveStateProvider',
|
||||
debugGetCreateSourceHash: const bool.fromEnvironment('dart.vm.product')
|
||||
? null
|
||||
: _$saveAsCBZArchiveStateHash,
|
||||
dependencies: null,
|
||||
allTransitiveDependencies: null,
|
||||
);
|
||||
|
||||
typedef _$SaveAsCBZArchiveState = AutoDisposeNotifier<bool>;
|
||||
String _$downloadLocationStateHash() =>
|
||||
r'92db9558ed1275edfb1a6f8dca3d87905e985f95';
|
||||
|
||||
/// See also [DownloadLocationState].
|
||||
@ProviderFor(DownloadLocationState)
|
||||
final downloadLocationStateProvider = AutoDisposeNotifierProvider<
|
||||
DownloadLocationState, (String, String)>.internal(
|
||||
DownloadLocationState.new,
|
||||
name: r'downloadLocationStateProvider',
|
||||
debugGetCreateSourceHash: const bool.fromEnvironment('dart.vm.product')
|
||||
? null
|
||||
: _$downloadLocationStateHash,
|
||||
dependencies: null,
|
||||
allTransitiveDependencies: null,
|
||||
);
|
||||
|
||||
typedef _$DownloadLocationState = AutoDisposeNotifier<(String, String)>;
|
||||
// ignore_for_file: unnecessary_raw_strings, subtype_of_sealed_class, invalid_use_of_internal_member, do_not_use_environment, prefer_const_constructors, public_member_api_docs, avoid_private_typedef_functions
|
||||
|
|
@ -62,10 +62,7 @@ class GeneralScreen extends ConsumerWidget {
|
|||
);
|
||||
});
|
||||
},
|
||||
title: const Text(
|
||||
"App language",
|
||||
style: TextStyle(),
|
||||
),
|
||||
title: const Text("App language"),
|
||||
subtitle: Text(
|
||||
"English",
|
||||
style: TextStyle(fontSize: 11, color: secondaryColor(context)),
|
||||
|
|
|
|||
|
|
@ -76,10 +76,7 @@ class ReaderScreen extends ConsumerWidget {
|
|||
);
|
||||
});
|
||||
},
|
||||
title: const Text(
|
||||
"Default reading mode",
|
||||
style: TextStyle(),
|
||||
),
|
||||
title: const Text("Default reading mode"),
|
||||
subtitle: Text(
|
||||
getReaderModeName(defaultReadingMode),
|
||||
style: TextStyle(fontSize: 11, color: secondaryColor(context)),
|
||||
|
|
@ -139,10 +136,7 @@ class ReaderScreen extends ConsumerWidget {
|
|||
);
|
||||
});
|
||||
},
|
||||
title: const Text(
|
||||
"Double tap animation speed",
|
||||
style: TextStyle(),
|
||||
),
|
||||
title: const Text("Double tap animation speed"),
|
||||
subtitle: Text(
|
||||
getAnimationSpeedName(doubleTapAnimationSpeed),
|
||||
style: TextStyle(fontSize: 11, color: secondaryColor(context)),
|
||||
|
|
|
|||
|
|
@ -21,7 +21,7 @@ class SettingsScreen extends StatelessWidget {
|
|||
onTap: () => context.push('/general')),
|
||||
ListTileWidget(
|
||||
title: 'Appearance',
|
||||
subtitle: 'Theme',
|
||||
subtitle: 'Theme, date & time format',
|
||||
icon: Icons.color_lens_rounded,
|
||||
onTap: () => context.push('/appearance')),
|
||||
// ListTileWidget(
|
||||
|
|
@ -34,6 +34,11 @@ class SettingsScreen extends StatelessWidget {
|
|||
subtitle: 'Reading mode, display, navigation',
|
||||
icon: Icons.chrome_reader_mode_rounded,
|
||||
onTap: () => context.push('/readerMode')),
|
||||
ListTileWidget(
|
||||
title: 'Downloads',
|
||||
subtitle: 'Downloads settings',
|
||||
icon: Icons.download_outlined,
|
||||
onTap: () => context.push('/downloads')),
|
||||
ListTileWidget(
|
||||
title: 'Browse',
|
||||
subtitle: 'Sources, global search',
|
||||
|
|
|
|||
|
|
@ -6,6 +6,7 @@ import 'package:mangayomi/models/manga_type.dart';
|
|||
import 'package:mangayomi/modules/local_reader/local_reader_screen.dart';
|
||||
import 'package:mangayomi/modules/local_reader/models/models.dart';
|
||||
import 'package:mangayomi/modules/local_reader/reader/local_reader_reader_view.dart';
|
||||
import 'package:mangayomi/modules/more/settings/downloads/downloads_screen.dart';
|
||||
import 'package:mangayomi/modules/webview/webview.dart';
|
||||
import 'package:mangayomi/modules/browse/browse_screen.dart';
|
||||
import 'package:mangayomi/modules/browse/extension/extension_lang.dart';
|
||||
|
|
@ -321,6 +322,19 @@ class AsyncRouterNotifier extends ChangeNotifier {
|
|||
);
|
||||
},
|
||||
),
|
||||
GoRoute(
|
||||
path: "/downloads",
|
||||
name: "downloads",
|
||||
builder: (context, state) {
|
||||
return const DownloadsScreen();
|
||||
},
|
||||
pageBuilder: (context, state) {
|
||||
return CustomTransition(
|
||||
key: state.pageKey,
|
||||
child: const DownloadsScreen(),
|
||||
);
|
||||
},
|
||||
),
|
||||
GoRoute(
|
||||
path: "/localReaderReaderView",
|
||||
name: "localReaderReaderView",
|
||||
|
|
|
|||
Loading…
Reference in a new issue