import 'package:flutter/material.dart';
import 'package:url_launcher/url_launcher_string.dart';
import 'package:voyagehandbook/views/downloads.dart';
import 'package:voyagehandbook/views/home.dart';

import 'package:flutter_gen/gen_l10n/app_localizations.dart';
import '../views/search.dart';

/*
        Voyage Handbook - The open-source WikiVoyage reader
        Copyright (C) 2023 Matyáš Caras

        This program is free software: you can redistribute it and/or modify
        it under the terms of the GNU General Public License version 3 as published by
        the Free Software Foundation.

        This program is distributed in the hope that it will be useful,
        but WITHOUT ANY WARRANTY; without even the implied warranty of
        MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
        GNU General Public License for more details.

        You should have received a copy of the GNU General Public License
        along with this program.  If not, see <https://www.gnu.org/licenses/>.
*/

/// Used to generate the drawer
///
/// Use `0` in `page` if you don't want any tile selected
Drawer genDrawer(int page, BuildContext context) => Drawer(
      child: ListView(
        children: [
          DrawerHeader(
            child: Column(
              children: [
                const Text(
                  "Voyage Handbook",
                  style: TextStyle(fontWeight: FontWeight.bold),
                ),
                Text(AppLocalizations.of(context)!.creditsCreatedBy),
                Text(AppLocalizations.of(context)!.creditsAffiliation)
              ],
            ),
          ),
          ListTile(
            selected: page == 1,
            title: Text(AppLocalizations.of(context)!.home),
            leading: const Icon(Icons.home),
            onTap: () => page == 1
                ? Navigator.of(context).pop()
                : Navigator.of(context).push(
                    MaterialPageRoute(
                      builder: (_) => const HomeView(),
                    ),
                  ),
          ),
          ListTile(
            selected: page == 2,
            title: Text(AppLocalizations.of(context)!.search),
            leading: const Icon(Icons.search),
            onTap: () => page == 2
                ? Navigator.of(context).pop()
                : Navigator.of(context).push(
                    MaterialPageRoute(
                      builder: (_) => const SearchView(),
                    ),
                  ),
          ),
          ListTile(
            selected: page == 3,
            title: Text(AppLocalizations.of(context)!.downloadsTitle),
            leading: const Icon(Icons.download),
            onTap: () => page == 3
                ? Navigator.of(context).pop()
                : Navigator.of(context).push(
                    MaterialPageRoute(
                      builder: (_) => const DownloadsView(),
                    ),
                  ),
          ),
          ListTile(
            selected: page == 99,
            title: Text(AppLocalizations.of(context)!.about),
            leading: const Icon(Icons.info_outline),
            onTap: () => page == 99
                ? Navigator.of(context).pop()
                : Navigator.of(context).push(
                    MaterialPageRoute(
                      builder: (_) => const LicensePage(
                        applicationName: "Voyage Handbook",
                        applicationLegalese:
                            "Copyright ©️ 2023 Matyáš Caras,\nReleased under the GNU GPL version 3",
                      ),
                    ),
                  ),
          ),
          ListTile(
            selected: page == 99,
            title: Text(AppLocalizations.of(context)!.sourceCode),
            leading: const Icon(Icons.code),
            onTap: () => page == 99
                ? Navigator.of(context).pop()
                : launchUrlString("https://git.mnau.xyz/hernik/voyagehandbook",
                    mode: LaunchMode.externalApplication),
          ),
        ],
      ),
    );
