using System;
using System.Collections.Generic;
using System.Text;
using System.Runtime.InteropServices;
using System.Windows.Forms;
using System.IO;
using System.Net.Sockets;
using Microsoft.Win32;
using Microsoft.VisualBasic.Devices;
using System.Collections;
namespace Mp3Player
{
class Player
{
//Global Variables And Importing winmm.DLL
#region Global Değişken Ve DLL
[DllImport("winmm.dll")]
private static extern long mciSendString(string strKomut, StringBuilder strDonenDeger, int mediaUzunluk, IntPtr hwndCallback);
Random sayi = new Random();
public Form mp3 = new Form();
string komut;
bool selected;
int saniye, dakika;
StringBuilder donendeger = new StringBuilder();
public string artist = null;
public string album = null;
public string year = null;
public bool siraalindi = false;
public ArrayList siralical = new ArrayList();
public int sirasi=0;
public int calsirasi = 0;
public ToolStripMenuItem rastgelech = new ToolStripMenuItem();
public ToolStripMenuItem snrakisarki = new ToolStripMenuItem();
public ToolStripMenuItem srkitkrr = new ToolStripMenuItem();
public ToolStripMenuItem lstetkrr = new ToolStripMenuItem();
public ListView lst;
public Timer tck = new Timer();
public bool play;
public int yer = 0;
public OpenFileDialog op;
public int sira;
public int sonraki;
public TrackBar trcsarkiyer2;
public int onceki;
public Label lblcalan;
#endregion
//Time Functions
#region Zaman
public string Saniye_Dakika(int milisaniye)
{
saniye = milisaniye / 1000;
dakika = saniye / 60;
return String.Format("{0}", (float)dakika) + ":" + String.Format("{0}", (float)(saniye % 60));
}
public string SarkiuzunlukYaz()
{
komut = "status Sarki length";
mciSendString(komut, donendeger, donendeger.Capacity, IntPtr.Zero);
return string.Format(Saniye_Dakika(Convert.ToInt32(donendeger.ToString())));
}
public int SarkiUzunlukMiliSaniye(int sira)
{
Open(lst.Items[sira].SubItems[1].Text);
komut = "status Sarki length";
mciSendString(komut, donendeger, donendeger.Capacity, IntPtr.Zero);
return Convert.ToInt32(donendeger.ToString());
}
public int CalinanSaniye()
{
komut = "status Sarki position";
mciSendString(komut, donendeger, donendeger.Capacity, IntPtr.Zero);
return Convert.ToInt32(donendeger.ToString());
}
public bool Sonkontrol(int sira)
{
Open(lst.Items[sira].SubItems[1].Text);
if (Saniye_Dakika(CalinanSaniye()) == SarkiuzunlukYaz() && sonraki != lst.Items.Count)
{
Stop();
if (rastgelech.Checked == true)
{
sonraki = Rastgele();
}
if (snrakisarki.Checked == true)
{
Play(sonraki);
lblcalan.Text = lst.Items[sonraki].Text;
mp3.Text = lst.Items[sonraki].Text;
sonraki++;
onceki++;
}
if (srkitkrr.Checked == true)
{
Play(sira);
lblcalan.Text = lst.Items[sira].Text;
mp3.Text = lst.Items[sira].Text;
}
return true;
}
else if (lstetkrr.Checked == true && sonraki == lst.Items.Count && Saniye_Dakika(CalinanSaniye()) == SarkiuzunlukYaz())
{
sonraki = 0;
Stop();
Play(sonraki);
lblcalan.Text = lst.Items[sonraki].Text;
mp3.Text = lst.Items[sonraki].Text;
sonraki++;
onceki++;
return true;
}
else
{
return false;
}
}
public string ToplamZaman()
{
int tplmsure = 0;
for (int i = 0; i < lst.Items.Count; i++)
{
tplmsure = tplmsure + SarkiUzunlukMiliSaniye(i);
}
return string.Format(Saniye_Dakika(tplmsure));
}
public int KalanSaniye()
{
int calnn = CalinanSaniye();
int tmmi = SarkiUzunlukMiliSaniye(sira);
return tmmi - calnn;
}
#endregion
//Buttons
#region Butonlar
public void Play(int sira)
{
Stop();
Open(lst.Items[sira].SubItems[1].Text);
trcsarkiyer2.Maximum = SarkiUzunlukMiliSaniye(sira);
komut = "play Sarki";
mciSendString(komut, null, 0, IntPtr.Zero);
play = true;
}
public void PlayScroll()
{
komut = "play Sarki";
mciSendString(komut, null, 0, IntPtr.Zero);
play = true;
}
public void Cal()
{
if (sira < lst.Items.Count)
{
if (Caliyomu(sira))
{
Stop();
}
for (int i = 0; i < lst.Items.Count; i++)
{
if (lst.Items[i].Selected == true)
{
sira = i;
onceki = i - 1;
sonraki = i + 1;
lblcalan.Text = lst.Items[i].Text;
mp3.Text = lst.Items[i].Text;
selected = true;
}
}
if (selected == false)
{
MessageBox.Show("Şarkı Seçmediniz.");
}
else
{
Play(sira);
}
tck.Start();
}
else
MessageBox.Show("LISTE BOS");
}
public void Stop()
{
komut = "close Sarki";
mciSendString(komut, null, 0, IntPtr.Zero);
play = false;
}
public void Pause()
{
komut = "pause Sarki";
mciSendString(komut, null, 0, IntPtr.Zero);
play = false;
}
public void Resume(int sira)
{
komut = "resume Sarki";
mciSendString(komut, null, 0, IntPtr.Zero);
play = true;
}
public void Open(string Yol)
{
komut = "open \"" + Yol + "\" type mpegvideo alias Sarki";
mciSendString(komut, null, 0, IntPtr.Zero);
}
public void Onceki()
{
if (onceki > 0)
{
if (Caliyomu(sira))
{
Stop();
}
if (rastgelech.Checked == true)
{
onceki = Rastgele();
}
Play(onceki);
lblcalan.Text = lst.Items[onceki].Text;
mp3.Text = lst.Items[onceki].Text;
onceki--;
sonraki--;
tck.Start();
}
else
{
MessageBox.Show("Zaten Liste Başındasınız.");
}
}
public void Sonraki()
{
if (sonraki != lst.Items.Count)
{
if (Caliyomu(sira))
{
Stop();
}
if (rastgelech.Checked == true)
{
sonraki = Rastgele();
}
}
else
{
if (lstetkrr.Checked == true)
{
Stop();
sonraki = 0;
}
else
{
MessageBox.Show("LISTE SONU");
goto son;
}
}
lblcalan.Text = lst.Items[sonraki].Text;
mp3.Text = lst.Items[sonraki].Text;
Play(sonraki);
sonraki++;
onceki++;
tck.Start();
son:
return;
}
#endregion
//Sound IsPlaying Etc. Functions
#region Ses Ve ŞarkıÖzellik
public void SesAyarla(int Ses)
{
if (Ses >= 0 && Ses <= 1000)
{
komut = "setaudio Sarki volume to " + Ses.ToString();
mciSendString(komut, null, 0, IntPtr.Zero);
}
}
public void SarkiYeriniAyarla(int milisaniye)
{
komut = "seek Sarki to " + milisaniye.ToString();
mciSendString(komut, null, 0, IntPtr.Zero);
}
public bool Caliyomu(int a)
{
Open(lst.Items[a].SubItems[1].Text);
komut = "status Sarki mode";
mciSendString(komut, donendeger, 128, IntPtr.Zero);
if (donendeger.Length == 7 && donendeger.ToString().Substring(0, 7) == "playing")
{
return true;
}
else
{
return false;
}
}
public int Rastgele()
{
int a = sayi.Next(0, lst.Items.Count);
return a;
}
#endregion
//File And Directory Process Functions
#region Dizin Ve Dosya Islem
public void Dizini_Liste_Ekle(string yol)
{
string[] dosyalar = Directory.GetFiles(yol);
for (int i = 0; i < dosyalar.Length; i++)
{
FileInfo fl = new FileInfo(dosyalar[i]);
lst.Items.Add(fl.Name);
lst.Items[yer].SubItems.Add(fl.FullName);
yer++;
}
}
public void Dosya_Ekle()
{
lst.Items.Add(op.SafeFileName);
lst.Items[yer].SubItems.Add(op.FileName);
yer++;
}
public void Dialog()
{
DialogResult result = new DialogResult();
result = op.ShowDialog();
if (op.FileName != "" && result == DialogResult.OK)
{
Dosya_Ekle();
}
}
#endregion
//Let's Get Mp3 Tags
#region Mp3 ID3V1
public void Mp3Oku(string yol)
{
FileInfo fi = new FileInfo(yol);
FileStream fs;
fs = File.OpenRead(yol);
if (fs.Length > 128)
{
char[] buffer = new char[128];
fs.Seek(fs.Length - 128, SeekOrigin.Begin);
for (int i = 0; i < 128; i++)
buffer[i] = (char)fs.ReadByte();
String tag = new String(buffer);
if (tag.Substring(0, 3).Equals("TAG"))
{
artist = tag.Substring(33, 30).Trim();
album = tag.Substring(63, 30).Trim();
year = tag.Substring(93, 4).Trim();
}
}
fs.Close();
}
#endregion
//Check Internet Connection
#region InternetBaglanti
public bool Bagkontrol()
{
bool snc=false;
try
{
TcpClient kontrol = new TcpClient("www.google.com",80);
kontrol.Client.Close();
snc=true;
}
catch
{
snc=false;
}
if (snc == true)
{
return true;
}
else
return false;
}
#endregion
//On Form Load Enter Registry Entries
#region Registry
public void RegisterMpl()
{
RegistryKey kokdizin = Registry.ClassesRoot;
RegistryKey dosyatipi = kokdizin.OpenSubKey(".mpl");
string yol = Application.StartupPath + "\\Mp3Player.exe";
if (dosyatipi==null)
{
RegistryKey yni;
yni = kokdizin.CreateSubKey(".mpl");
yni.SetValue("","mpl.info");
RegistryKey acklama = kokdizin.CreateSubKey("mpl.info");
acklama.SetValue("","MP3 Player Dosyası");
RegistryKey shell = acklama.CreateSubKey("shell"); ;//Open,Run vb İşlemler..
RegistryKey open = shell.CreateSubKey("open");
open.SetValue("","&Open Mp3 Player");
yni = open.CreateSubKey("command");
yni.SetValue("",yol+" %1");
yni = acklama.CreateSubKey("DefaultIcon");
yni.SetValue("", yol+",0");
}
}
public void RegiserRdy()
{
RegistryKey kokdizin = Registry.ClassesRoot;
RegistryKey dosyatipi = kokdizin.OpenSubKey(".rdy");
string yol = Application.StartupPath + "\\Mp3Player.exe";
if (dosyatipi == null)
{
RegistryKey yni;
yni = kokdizin.CreateSubKey(".rdy");
yni.SetValue("", "rdy.info");
RegistryKey acklama = kokdizin.CreateSubKey("rdy.info");
acklama.SetValue("", "Mp3 Player Radyo Dosyası");
RegistryKey shell = acklama.CreateSubKey("shell"); ;//Open,Run vb İşlemler..
RegistryKey open = shell.CreateSubKey("open");
open.SetValue("", "&Open Mp3 Player");
yni = open.CreateSubKey("command");
yni.SetValue("", yol + " %1");
yni = acklama.CreateSubKey("DefaultIcon");
yni.SetValue("", yol + ",0");
}
}
#endregion
//Functions To Listen Media Files in a row
#region Siraya Koy
public void SiraAl(int secilenindex)
{
if (SiraIcindeYok(secilenindex))
{
siralical.Add(secilenindex);
sirasi++;
lst.Items[secilenindex].Text = lst.Items[secilenindex].Text + " " + "(" + (sirasi) + ")";
siraalindi = true;
}
else
{
siraalindi = false;
return;
}
}
public void SiraTemizle()
{
for (int i = 0; i < siralical.Count; i++)
{
FileInfo fi = new FileInfo(lst.Items[(int)siralical[i]].SubItems[1].Text);
lst.Items[(int)siralical[i]].Text = fi.Name;
}
siralical.Clear();
}
public void CalmaBasla()
{
if (calsirasi!=siralical.Count)
{
if (Caliyomu((int)siralical[calsirasi]))
{
Stop();
}
lst.Items[(int)siralical[calsirasi]].Selected = true;
lblcalan.Text = lst.Items[(int)siralical[calsirasi]].Text;
mp3.Text = lst.Items[(int)siralical[calsirasi]].Text;
Play((int)siralical[calsirasi]);
}
}
public bool SiraliCalSonKontrol()
{
if (calsirasi != siralical.Count)
{
Open(lst.Items[(int)siralical[calsirasi]].SubItems[1].Text);
if (Saniye_Dakika(CalinanSaniye()) == SarkiuzunlukYaz() && (int)siralical[calsirasi] != lst.Items.Count)
{
Stop();
calsirasi++;
CalmaBasla();
return true;
}
else return false;
}
else
{
return true;
}
}
public bool SiraIcindeYok(int secilenindex2)
{
for (int i = 0; i < siralical.Count; i++)
{
if (secilenindex2==(int)siralical[i])
{
return false;
}
}
return true ;
}
#endregion
}
}