184 lines
6.4 KiB
C#
184 lines
6.4 KiB
C#
|
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);
|
||
|
}
|
||
|
}
|
||
|
}
|