tytd-mobile/TYTD.Mobile/MainActivity.cs

184 lines
6.4 KiB
C#
Raw Permalink Normal View History

2022-10-04 10:44:09 +00:00
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<Toolbar>(Resource.Id.toolbar);
if(toolbar != null)
SetSupportActionBar(toolbar);
FloatingActionButton? fab = FindViewById<FloatingActionButton>(Resource.Id.fab);
if(fab != null)
fab.Click += FabOnClick;
DrawerLayout? drawer = FindViewById<DrawerLayout>(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<NavigationView>(Resource.Id.nav_view);
if(navigationView != null)
navigationView.SetNavigationItemSelectedListener(this);
TYTDCommon.StartBootCache<ProgressDialog>(()=>{
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<DrawerLayout>(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<ITYTDBase,IDownloader>(async (e2)=>{
await e2.AddItemAsync(id,Resolution.PreMuxed);
});
}).Wait(0);
}
}
});
var res=builder.Show();
if(res!= null)
{
video_id=res.FindViewById<EditText>(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<DrawerLayout>(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);
}
}
}