using System; using Android.App; using Android.Content; using Android.OS; using Android.Runtime; using Android.Views; using AndroidX.AppCompat.App; using AndroidX.AppCompat.Widget; using AndroidX.Core.View; using AndroidX.DrawerLayout.Widget; using Google.Android.Material.FloatingActionButton; using Google.Android.Material.Navigation; using Google.Android.Material.Snackbar; using Tesses.YouTubeDownloader; using Tesses.YouTubeDownloader.Droid; using Toolbar = AndroidX.AppCompat.Widget.Toolbar; namespace TYTD.Mobile { [Activity(Label = "@string/app_name", Theme = "@style/AppTheme.NoActionBar", MainLauncher = true)] public class MainActivity : AppCompatActivity, NavigationView.IOnNavigationItemSelectedListener { protected override void OnCreate(Bundle? savedInstanceState) { base.OnCreate(savedInstanceState); Xamarin.Essentials.Platform.Init(this, savedInstanceState); SetContentView(Resource.Layout.activity_main); TYTDCommon.MainActivity = typeof(MainActivity); TYTDCommon.SettingsActivity = typeof(PrefenceActivity); TYTDCommon.Init(this); Toolbar? toolbar = FindViewById(Resource.Id.toolbar); if(toolbar != null) SetSupportActionBar(toolbar); FloatingActionButton? fab = FindViewById(Resource.Id.fab); if(fab != null) fab.Click += FabOnClick; DrawerLayout? drawer = FindViewById(Resource.Id.drawer_layout); if(drawer != null) { ActionBarDrawerToggle toggle = new ActionBarDrawerToggle(this, drawer, toolbar, Resource.String.navigation_drawer_open, Resource.String.navigation_drawer_close); drawer.AddDrawerListener(toggle); toggle.SyncState(); } NavigationView? navigationView = FindViewById(Resource.Id.nav_view); if(navigationView != null) navigationView.SetNavigationItemSelectedListener(this); TYTDCommon.StartBootCache(()=>{ var dlg=new ProgressDialog(this); dlg.SetTitle("TYTD Cache"); dlg.SetMessage("Please wait, caching"); dlg.Show(); return dlg; },(e)=>{ this.RunOnUiThread(()=>{ e.Dismiss(); }); }); } public override void OnBackPressed() { DrawerLayout? drawer = FindViewById(Resource.Id.drawer_layout); if (drawer != null && drawer.IsDrawerOpen(GravityCompat.Start)) { drawer.CloseDrawer(GravityCompat.Start); } else { base.OnBackPressed(); } } public override bool OnCreateOptionsMenu(IMenu? menu) { MenuInflater.Inflate(Resource.Menu.menu_main, menu); return true; } public override bool OnOptionsItemSelected(IMenuItem item) { int id = item.ItemId; if (id == Resource.Id.action_settings) { Intent intent=new Intent(this,typeof(PrefenceActivity)); StartActivity(intent); return true; } if(id == Resource.Id.action_servers) { Intent servers=new Intent(this,typeof(ServersActivity)); StartActivity(servers); return true; } return base.OnOptionsItemSelected(item); } private void FabOnClick(object? sender, EventArgs eventArgs) { /* View? view = (View?)sender; if(view != null) Snackbar.Make(view, "Replace with your own action", Snackbar.LengthLong) .SetAction("Action",(e)=>{}).Show();*/ var builder=new AndroidX.AppCompat.App.AlertDialog.Builder(this); builder.SetView(Resource.Layout.add_item); builder.SetTitle(Resource.String.add_item_text); EditText? video_id = null; //you would put https://www.youtube.com/watch?v=PzUKeGZiEl0 in here builder.SetNegativeButton(Resource.String.cancel_text,(sender0,e)=>{ }); builder.SetPositiveButton(Resource.String.add_text,(sender0,e)=>{ if(video_id!= null) { string? id=video_id.Text; if(TYTDCommon.TYTD != null && !string.IsNullOrWhiteSpace(id)) { Task.Factory.StartNew(async()=>{ await TYTDCommon.TYTD.CastIfAsync(async (e2)=>{ await e2.AddItemAsync(id,Resolution.PreMuxed); }); }).Wait(0); } } }); var res=builder.Show(); if(res!= null) { video_id=res.FindViewById(Resource.Id.video_url); } } public bool OnNavigationItemSelected(IMenuItem item) { int id = item.ItemId; if (id == Resource.Id.nav_camera) { // Handle the camera action } else if (id == Resource.Id.nav_gallery) { } else if (id == Resource.Id.nav_slideshow) { } else if (id == Resource.Id.nav_manage) { } else if (id == Resource.Id.nav_share) { } else if (id == Resource.Id.nav_send) { } DrawerLayout? drawer = FindViewById(Resource.Id.drawer_layout); if(drawer != null) drawer.CloseDrawer(GravityCompat.Start); return true; } public override void OnRequestPermissionsResult(int requestCode, string[] permissions, [GeneratedEnum] Android.Content.PM.Permission[] grantResults) { Xamarin.Essentials.Platform.OnRequestPermissionsResult(requestCode, permissions, grantResults); base.OnRequestPermissionsResult(requestCode, permissions, grantResults); } } }