diff --git a/data/media/SauceNAO_ico.png b/data/media/SauceNAO_ico.png new file mode 100644 index 0000000..d5700a7 Binary files /dev/null and b/data/media/SauceNAO_ico.png differ diff --git a/data/media/SauceNao_banner.png b/data/media/SauceNao_banner.png new file mode 100644 index 0000000..dad0a18 Binary files /dev/null and b/data/media/SauceNao_banner.png differ diff --git a/lib/main.dart b/lib/main.dart index 15365e4..bfd7f80 100644 --- a/lib/main.dart +++ b/lib/main.dart @@ -1,29 +1,18 @@ -import 'package:fludex/login/home_page_animator.dart'; -import 'package:fludex/utils.dart'; +import 'package:fludex/services/controllers/animation_controllers/home_page_anim_controller.dart'; +import 'package:fludex/utils/utils.dart'; import 'package:flutter/material.dart'; void main() { runApp(MainPage()); } -Future getLightModeSetting() async { - try { - var settings = await FludexUtils().getSettings(); - return settings.lightMode; - } on Exception { - await FludexUtils().saveSettings(true, false); - var settings = await FludexUtils().getSettings(); - return settings.lightMode; - } -} - class MainPage extends StatelessWidget { const MainPage({Key? key}) : super(key: key); @override Widget build(BuildContext context) { return FutureBuilder( - future: getLightModeSetting(), + future: FludexUtils().getLightModeSetting(), builder: (context, AsyncSnapshot lightMode) { return MaterialApp( debugShowCheckedModeBanner: false, diff --git a/lib/info/aboutFludex.dart b/lib/pages/about/aboutFludex.dart similarity index 100% rename from lib/info/aboutFludex.dart rename to lib/pages/about/aboutFludex.dart diff --git a/lib/mangaReader/aboutManga.dart b/lib/pages/about_manga/aboutManga.dart similarity index 98% rename from lib/mangaReader/aboutManga.dart rename to lib/pages/about_manga/aboutManga.dart index 3e270a1..73a0106 100644 --- a/lib/mangaReader/aboutManga.dart +++ b/lib/pages/about_manga/aboutManga.dart @@ -884,22 +884,27 @@ class _AboutMangaState extends State { 'Chapter ' + chapterData.data!.data[index].attributes.chapter, style: TextStyle(fontSize: 17), ), - subtitle: Padding( - padding: const EdgeInsets.all(8.0), - child: Row( - children: [ - Text( - 'Volume ' + chapterData.data!.data[index].attributes.volume, - style: TextStyle(), + subtitle: Column( + mainAxisSize: MainAxisSize.min, + children: [ + Padding( + padding: const EdgeInsets.all(8.0), + child: Row( + children: [ + Text( + 'Volume ' + chapterData.data!.data[index].attributes.volume, + style: TextStyle(), + ), + SizedBox( + width: 10, + ), + Text( + 'Language: ' + chapterData.data!.data[index].attributes.translatedLanguage, + ), + ], ), - SizedBox( - width: 10, - ), - Text( - 'Language: ' + chapterData.data!.data[index].attributes.translatedLanguage, - ), - ], - ), + ), + ], ), trailing: PopupMenuButton( itemBuilder: (context) => [ diff --git a/lib/library/library.dart b/lib/pages/library/library.dart similarity index 95% rename from lib/library/library.dart rename to lib/pages/library/library.dart index 4722072..347fa2a 100644 --- a/lib/library/library.dart +++ b/lib/pages/library/library.dart @@ -1,13 +1,14 @@ import 'dart:convert'; import 'dart:io'; +import 'package:fludex/utils/utils.dart'; +import 'package:fludex/pages/saucenao/saucenao_page.dart'; import 'package:flutter/material.dart'; -import 'package:fludex/info/aboutFludex.dart'; -import 'package:fludex/search/searchScreen.dart'; -import 'package:fludex/settings/settingsPage.dart'; -import 'package:fludex/search/searchResultHolder.dart'; -import 'package:fludex/utils.dart'; -import 'package:fludex/login/home_page_animator.dart'; +import 'package:fludex/pages/about/aboutFludex.dart'; +import 'package:fludex/pages/search/search_page.dart'; +import 'package:fludex/pages/settings/settings_page.dart'; +import 'package:fludex/pages/search/widgets/search_result_holder_widget.dart'; +import 'package:fludex/services/controllers/animation_controllers/home_page_anim_controller.dart'; import 'package:mangadex_library/mangadexServerException.dart'; import 'package:mangadex_library/mangadex_library.dart' as lib; @@ -30,6 +31,7 @@ class _Library extends State { int gridCount = 2; int resultOffset = 0; bool gridView = false; + bool lightMode = true; List dropDownMenuItems = [ 'All', 'Reading', @@ -58,6 +60,7 @@ class _Library extends State { } userDetails = _getLoggedUserDetails(widget.token); token = widget.token; + FludexUtils().getLightModeSetting().then((value) => {lightMode = value}); } Future _getLoggedUserDetails(Token? _token) async { @@ -277,6 +280,9 @@ class _Library extends State { ), title: Text( 'Library', + style: TextStyle( + fontSize: 16, + ), ), onTap: () { Navigator.pop(context); @@ -289,6 +295,7 @@ class _Library extends State { ), title: Text( 'Search Manga', + style: TextStyle(fontSize: 16), ), onTap: () { Navigator.pop(context); @@ -301,12 +308,31 @@ class _Library extends State { ); }, ), + ListTile( + leading: SizedBox( + height: 24, + width: 24, + child: Image( + image: AssetImage('data/media/SauceNAO_ico.png'), + color: lightMode ? Colors.grey : Colors.white, + ), + ), + title: Text('SauceNAO'), + onTap: () { + Navigator.pop(context); + Navigator.push( + context, + MaterialPageRoute(builder: (context) => SaucenaoSearch()), + ); + }, + ), ListTile( leading: Icon( Icons.logout, ), title: Text( 'Logout', + style: TextStyle(fontSize: 16), ), onTap: () async { Navigator.pop(context); @@ -325,6 +351,7 @@ class _Library extends State { ), title: Text( 'About Fludex', + style: TextStyle(fontSize: 16), ), onTap: () { Navigator.pop(context); @@ -413,7 +440,7 @@ class _Library extends State { ), ), style: ElevatedButton.styleFrom( - primary: + backgroundColor: Color.fromARGB(18, 255, 255, 255)), ) ], diff --git a/lib/login/home_page.dart b/lib/pages/login/home_page.dart similarity index 99% rename from lib/login/home_page.dart rename to lib/pages/login/home_page.dart index 16a8db7..ba74b60 100644 --- a/lib/login/home_page.dart +++ b/lib/pages/login/home_page.dart @@ -1,4 +1,4 @@ -import 'package:fludex/library/library.dart'; +import 'package:fludex/pages/library/library.dart'; import 'package:fludex/utils.dart'; import 'package:flutter/material.dart'; import 'package:mangadex_library/mangadex_library.dart' as lib; diff --git a/lib/login/home_page_enter_animation.dart b/lib/pages/login/home_page_enter_animation.dart similarity index 100% rename from lib/login/home_page_enter_animation.dart rename to lib/pages/login/home_page_enter_animation.dart diff --git a/lib/mangaReader/mangaReader.dart b/lib/pages/mangaReader/mangaReader.dart similarity index 100% rename from lib/mangaReader/mangaReader.dart rename to lib/pages/mangaReader/mangaReader.dart diff --git a/lib/pages/saucenao/saucenao_page.dart b/lib/pages/saucenao/saucenao_page.dart new file mode 100644 index 0000000..e9d84d7 --- /dev/null +++ b/lib/pages/saucenao/saucenao_page.dart @@ -0,0 +1,57 @@ +import 'package:flutter/material.dart'; + +class SaucenaoSearch extends StatefulWidget { + const SaucenaoSearch({Key? key}) : super(key: key); + + @override + State createState() => _SaucenaoSearchState(); +} + +class _SaucenaoSearchState extends State { + @override + Widget build(BuildContext context) { + return Scaffold( + appBar: AppBar(), + body: Column( + crossAxisAlignment: CrossAxisAlignment.center, + mainAxisSize: MainAxisSize.min, + children: [ + Center( + child: Padding( + padding: const EdgeInsets.all(50.0), + child: Image( + image: AssetImage('data/media/SauceNAO_banner.png'), + color: Colors.black, + ), + ), + ), + SizedBox( + height: 500, + width: 500, + child: Card( + child: PageView( + children: [ + Padding( + padding: const EdgeInsets.all(20.0), + child: Column( + crossAxisAlignment: CrossAxisAlignment.center, + children: [ + Center( + child: Text( + "Has it ever occured to you that you find a manga page and you don't know from which manga it was?"), + ), + Center( + child: Text( + "Well, now you can find them all! It's easy! Just "), + ), + ], + ), + ), + ], + ), + )), + ], + ), + ); + } +} diff --git a/lib/search/searchScreen.dart b/lib/pages/search/search_page.dart similarity index 98% rename from lib/search/searchScreen.dart rename to lib/pages/search/search_page.dart index ad49f46..d4809d5 100644 --- a/lib/search/searchScreen.dart +++ b/lib/pages/search/search_page.dart @@ -1,6 +1,6 @@ import 'package:flutter/material.dart'; import 'package:mangadex_library/models/login/Login.dart'; -import 'searchReplyScreen.dart'; +import 'widgets/search_reply_widget.dart'; class SearchPage extends StatefulWidget { final Token? token; diff --git a/lib/search/searchReplyScreen.dart b/lib/pages/search/widgets/search_reply_widget.dart similarity index 98% rename from lib/search/searchReplyScreen.dart rename to lib/pages/search/widgets/search_reply_widget.dart index b3f0c43..c970630 100644 --- a/lib/search/searchReplyScreen.dart +++ b/lib/pages/search/widgets/search_reply_widget.dart @@ -5,7 +5,7 @@ import 'package:mangadex_library/mangadexServerException.dart'; import 'package:mangadex_library/mangadex_library.dart' as lib; import 'package:mangadex_library/models/login/Login.dart'; import 'package:mangadex_library/models/search/Search.dart'; -import 'searchResultHolder.dart'; +import 'search_result_holder_widget.dart'; class SearchReplyScreen extends StatefulWidget { final bool dataSaver; diff --git a/lib/search/searchResultHolder.dart b/lib/pages/search/widgets/search_result_holder_widget.dart similarity index 94% rename from lib/search/searchResultHolder.dart rename to lib/pages/search/widgets/search_result_holder_widget.dart index 6c7ceac..6367592 100644 --- a/lib/search/searchResultHolder.dart +++ b/lib/pages/search/widgets/search_result_holder_widget.dart @@ -127,15 +127,19 @@ class _SearchResultHolder extends State { ], begin: Alignment.bottomCenter, end: Alignment.topCenter)), - height: 40, + height: 60, child: Center( - child: Text( - widget.mangaData.attributes.title - .en, - overflow: TextOverflow.ellipsis, - maxLines: 1, - style: TextStyle( - color: Colors.white), + child: Container( + margin: EdgeInsets.all(5), + child: Text( + widget.mangaData.attributes + .title.en, + overflow: TextOverflow.ellipsis, + maxLines: 2, + style: TextStyle( + color: Colors.white), + textScaleFactor: 1.15, + ), ), ), ), diff --git a/lib/settings/settingsPage.dart b/lib/pages/settings/settings_page.dart similarity index 96% rename from lib/settings/settingsPage.dart rename to lib/pages/settings/settings_page.dart index cf9b216..9aefe75 100644 --- a/lib/settings/settingsPage.dart +++ b/lib/pages/settings/settings_page.dart @@ -1,5 +1,5 @@ -import 'package:fludex/saveDataModels/settings.dart'; -import 'package:fludex/utils.dart'; +import 'package:fludex/services/data_models/settings_data/settings.dart'; +import 'package:fludex/utils/utils.dart'; import 'package:flutter/material.dart'; class SettingsPage extends StatefulWidget { diff --git a/lib/login/home_page_animator.dart b/lib/services/controllers/animation_controllers/home_page_anim_controller.dart similarity index 100% rename from lib/login/home_page_animator.dart rename to lib/services/controllers/animation_controllers/home_page_anim_controller.dart diff --git a/lib/saveDataModels/settings.dart b/lib/services/data_models/settings_data/settings.dart similarity index 100% rename from lib/saveDataModels/settings.dart rename to lib/services/data_models/settings_data/settings.dart diff --git a/lib/saveDataModels/loginData.dart b/lib/services/data_models/user_data/login_data.dart similarity index 100% rename from lib/saveDataModels/loginData.dart rename to lib/services/data_models/user_data/login_data.dart diff --git a/lib/constants.dart b/lib/utils/constants.dart similarity index 100% rename from lib/constants.dart rename to lib/utils/constants.dart diff --git a/lib/utils.dart b/lib/utils/utils.dart similarity index 96% rename from lib/utils.dart rename to lib/utils/utils.dart index 28f32ec..161617c 100644 --- a/lib/utils.dart +++ b/lib/utils/utils.dart @@ -1,10 +1,10 @@ import 'dart:convert'; import 'dart:io'; -import 'package:fludex/saveDataModels/settings.dart'; +import 'package:fludex/services/data_models/settings_data/settings.dart'; import 'package:mangadex_library/models/common/reading_status.dart'; import 'package:mangadex_library/models/login/Login.dart' as l; import 'package:mangadex_library/mangadex_library.dart'; -import 'package:fludex/saveDataModels/loginData.dart'; +import 'package:fludex/services/data_models/user_data/login_data.dart'; import 'package:http/http.dart' as http; import 'package:flutter/material.dart'; @@ -38,6 +38,17 @@ class FludexUtils { return jsonData; } + Future getLightModeSetting() async { + try { + var settings = await getSettings(); + return settings.lightMode; + } on Exception { + await FludexUtils().saveSettings(true, false); + var settings = await getSettings(); + return settings.lightMode; + } + } + void saveLoginData(String session, String refresh) async { var user = LoginData(session, refresh); var encodedJson = jsonEncode(user); diff --git a/sampleAppData/sampleData.json b/sampleAppData/sampleData.json deleted file mode 100644 index 2cb849d..0000000 --- a/sampleAppData/sampleData.json +++ /dev/null @@ -1,4 +0,0 @@ -{ - "lightMode": true, - "dataSaver": false -} \ No newline at end of file