Staňte se programátorem: Napište si vlastní GOM Player II.

Minule jste si s námi mohli naprogramovat jednoduchý multimediální přehrávač v jazyku C#, dnes jeho funkce rozšíříme o paměť a možnost vytvoření jednoduchého playlistu.
Staňte se programátorem: Napište si vlastní GOM Player II.

V předchozí části našeho programátorského seriálu jsme si ukázali, jak využít komponentu AxWindowsMediaPlayer, která představuje přehrávací část Windows Media Playeru. Ukázali jsme si, jak přehrávat a pozastavovat nahrávky, jak nastavovat jejich hlasitost a jak vykreslit průběh přehrávání pomocí metod třídy System.Drawing.Graphics. V dnešním díle se dozvíte, jak si uložit historii nahrávek do jednoduchého souboru a jak nastavit režim celé obrazovky při stisku klávesy Enter. Esc nám pak pro změnu poslouží k návratu do okenního režimu.

Náš aktualizovaný přehrávač bude disponovat také bohatší nabídkou ovládacích tlačítek, procentuálně zobrazí pozici, ve které se přehrávaný film, internetová televize nebo písnička nachází a dokonce budete moci využít i jednoduchý editor seznamu skladeb včetně podpory pro shuffle – náhodné přehrávání.

Klepněte pro větší obrázek  Klepněte pro větší obrázek
Vylepšený přehrávač a editor skladeb k přehrání

Ukládání historie do XML souboru

Pro ukládání historie je vhodné zvolit XML formát právě díky jeho jednoduchosti. Formát XML souboru bude mít následující podobu:

<?xml version="1.0" encoding="utf-8"?>
<nahravky>
  <nahravka1>D:\beatles – Hey Jude</nahravka1>
  <nahravka2>C:\Program Files\Shared\Overseer – Horndog.mp3</nahravka2>
  *
  *
  *
</nahravky>

Klepněte pro větší obrázek
Historie přehrávání, která se načetla z XML souboru

V kořenovém uzlu nahrávky budou uloženy poduzly obsahující jednotlivé cesty k již dříve přehrávaným nahrávkám. Pro manipulaci s XML dokumentem nám pomůže třída System.Xml.XmlDocument, která načtený XML dokument uchovává celou dobu v paměti – díky tomu je použití této třídy vhodné pro malé XML dokumenty. Pro získání nahrávek, jež jsou uloženy v kořenovém uzlu nahrávky použijeme metodu SelectNodes, která jako argument očekává výraz XPath, což je jednoduchý dotazovací jazyk s podobným použitím jako SQL u databází. Více o tomto jazyce najdete zde. Metoda SelectNodes vrací pole typu XmlNodeList, což je kolekce obsahující instance třídy XmlNode představující jednotlivé uzly vybrané na základě dotazu Xpath. Pro získání textové hodnoty uložené v tomto uzlu slouží vlastnost InnerText.

public static string[] NahrajNahravky()
{
  List<string> list = new List<string>();
  XmlDocument xml = new XmlDocument();
  xml.Load(Application.StartupPath + @"\history.xml");
  XmlNodeList nody = xml.SelectNodes(@"/nahravky/*");
  for (int x = nody.Count - 1; x >= 0; x--)
  {
    XmlNode nod = nody[x];
    if (nod.InnerText != "")
    {
      list.Add(nod.InnerText.Replace(Environment.NewLine,""));
    }
  }
  return list.ToArray();
}

Pro vytvoření nového uzlu použijeme instanci třídy XmlElement, které pomocí vlastnosti InnerText přiřadíme textovou hodnotu, jež bude uložena v tomto uzlu. Pro přiřazení tohoto uzlu k jeho rodiči slouží metoda AppendChild rodičovského uzlu. Nově upravený XML dokument je nutné uložit pomocí metody Save třídy XmlDocument.

public static void UlozNahravku(string cesta)
{
  XmlDocument xml = new XmlDocument();
  xml.Load(Application.StartupPath + @"\history.xml");
  XmlNode nod = xml.SelectSingleNode(@"/nahravky");
  XmlElement el = xml.CreateElement("nahravka" + (nod.ChildNodes.Count+1).ToString());
  el.InnerText = cesta;
  nod.AppendChild(el);
  xml.Save(Application.StartupPath + @"\history.xml");
}

Přepínání režimů obrazovky

Pro zapnutí režimu obrazovky při stisku klávesy enter, musíme danému formuláři registrovat událost OnKeyPress, která bude zavolána vždy při stisku jakékoli klávesy. Pro identifikaci konkrétní klávesy použijeme vlastnost KeyChar instance třídy KeyPressEventArgs, která je argumentem této události. Vlastnost KeyChar vrací typ char obsahující stisknutý znak v kódové sadě Unicode. Klávesa enter má v Unicode index 13.

private void Form1_KeyPress(object sender, KeyPressEventArgs e)
{
  if (((int)e.KeyChar) == 13) // enter
  {
    // Odstraní okraje formuláře
    this.FormBorderStyle = FormBorderStyle.None;
    // Maximalizuje okno
    this.WindowState = FormWindowState.Maximized;
    // Skryje nabídku a panel hlasitosti
    panel1.Visible = false;
    this.menuStrip1.Visible = false;
  }

Pro zachycení stisku klávesy escape použijeme index číslo 27 v kódovací sadě unicode:

  else if (((int)e.KeyChar) == 27) // escape
  {
    this.FormBorderStyle = FormBorderStyle.Sizable;
    this.WindowState = FormWindowState.Normal;
    panel1.Visible = true;
    this.menuStrip1.Visible = true;
  }
}

S přehrávačem ještě nekončíme

Stávající přehrávač jsem obohatil nejen o výše popsané funkce, navíc jsem přidal okno pro vytváření seznamu přehrávaných nahrávek, tj. playlist. Jeho popis by však byl dosti šložitý a určitě by vyšel na další článek, který bych rád věnoval rozšíření přehrávače o manipulaci s CD mechanikou, titulky, nastavování atributů CD nahrávek. Případně o další vaše nápady.

Pokud si chcete podrobněji prostudovat kód přehrávače, můžete si samozřejmě jako vždy stáhnout kompletní zdrojové kódy včetně projektu pro bezplatné vývojové prostředí Microsoft Visual C# 2008 Express Edition a pokud jazyku C# nevládnete, můžete si stáhnout přeložený EXE program pro operační systém Windows s nainstalovanou platformou Microsoft .NET Framework novější verze.

Diskuze (1) Další článek: Vyšla nová verze linuxové distribuce CentOS

Témata článku: Software, Programování, Hudba, filmy, seriály, Unicode, Escape, Náhodný znak, Předchozí část, Beatles, Nápis, VLA, Vylepšený přehrávač, Programátor, Přehrávaný film, Jednoduchá cesta, Playlist, Stisknutý znak, Application h


Určitě si přečtěte

Kvantový internet se blíží. Oproti tomu klasickému bude mnohem bezpečnější

Kvantový internet se blíží. Oproti tomu klasickému bude mnohem bezpečnější

** Jednotlivé bloky kvantového internetu už se pomalu vyvíjí a testují ** Kvantová síť už bude mít své uplatnění dříve, než bude všude dostupný kvantový internet ** Nejdříve půjde o doplněk ke klasickému internetu

Karel Javůrek | 15

Jak funguje největší akumulátor v Česku: podívejte se do elektrárny Dlouhé Stráně

Jak funguje největší akumulátor v Česku: podívejte se do elektrárny Dlouhé Stráně

** Přečerpávací vodní elektrárna Dlouhé stráně je obdivuhodné technické dílo ** Stejná turbína vyrábí elektřinu i tlačí vodu zpět do horního jezera ** Strojovna elektrárny je zabudována v podzemí

David Polesný | 35

Užitečné funkce ve Windows 10, o kterých možná ani nevíte

Užitečné funkce ve Windows 10, o kterých možná ani nevíte

** Operační systém Windows 10 nabízí spoustu užitečných drobností ** O některých funkcích mnoho uživatelů není ** Ukážeme vám některé užitečné vychytávky

Vladislav Kluska | 83

Nejlepší notebooky do 20 000 Kč: Tipy, co se teď vyplatí koupit

Nejlepší notebooky do 20 000 Kč: Tipy, co se teď vyplatí koupit

** Za dvacet tisíc korun lze pořídit kvalitní pracovní notebook ** Stejně tak může jít o herní notebook s výkonnější grafikou ** Poradíme, jaké notebooky vybrat pro různé druhy použití

Stanislav Janů | 48

Kde se bere elektřina v zásuvce? Poznejte 10 tajemství venkovních stožárů s dráty

Kde se bere elektřina v zásuvce? Poznejte 10 tajemství venkovních stožárů s dráty

Elektřina se vyrábí v elektrárnách, ale do zásuvek v našich domovech to pak má ještě hodně daleko. Dnes se na tuhle dlouhou cestu podíváme.

David Polesný | 85



Aktuální číslo časopisu Computer

Nejlepší programy pro úpravu fotek zdarma

Externí disky pro zálohu dat

Velký test: herní notebooky

Srovnání 12 batohů