Stránka 1 z 1

Díl šestý - ovládáme zvuky

Napsal: 15 lis 2008 17:51
od sutrus
Po delším čase přicházím s dalším dílem do našeho seriálu. Dnes se budeme věnovat ovládání a přehrávání zvuků.
QIP Infium nám umožnuje jak přehrávání vlastních zvuků tak zvuků externích ve formátu wav.

Pokud tedy chceme přehrát zvuk pošleme zprávu PM_PLUGIN_PLAY_WAV_SND
Parametrem WParam ve zprávě určujeme jaký zvuk se bude přehrávat.

Kód: Vybrat vše

Vlastní externí zvuk      = 0;
QIP_SND_ID_STARTUP        = 1;
QIP_SND_ID_INC_MSG        = 2;
QIP_SND_ID_MSG_SENT       = 3;
QIP_SND_ID_ONLINE_ALERT   = 4;
QIP_SND_ID_STATUS_NOTIFY  = 5;
QIP_SND_ID_TRAY_NOTIFY    = 6;
QIP_SND_ID_AUTH_REQUEST   = 7;
QIP_SND_ID_AUTH_DENIED    = 8;
QIP_SND_ID_AUTH_GRANTED   = 9;
QIP_SND_ID_ADDED          = 10;
QIP_SND_ID_INC_FILE       = 11;
QIP_SND_ID_FT_COMPLETE    = 12;
QIP_SND_ID_SERVER_MSG     = 13;
QIP_SND_ID_EMAIL_MSG      = 14;
Parametrem LParam předáme cestu k externímu wav souboru
Parametrem NParam předáme informaci jesli chceme přehrát zvuk vždy nebo podle nastavení Infia.
True - přehraje zvuk vždy
False - pokud to QIP Infium umožní. Zvuky mohou být uživatelem vypnuté

Celá zpráva pak bude vypadat takto:
Přehrání vlastního externího zvuku

Kód: Vybrat vše

  PlugMsg1.Msg := PM_PLUGIN_PLAY_WAV_SND;

  //Nastavíme 0 protoze budeme prehravat vlastni zvuk
  PlugMsg1.WParam := 0;

  //Zadame cestu k nasemu souboru 
  wPath := IncludeTrailingPathDelimiter(ExtractFilePath(FDllPath)) + 'example.wav';

  //Cestu predame do parametru zpravy
  PlugMsg1.LParam := LongInt(PWideChar(wPath));

  //Zvuk budeme prehravat vzdy i pokud v Infiu zvuk vypnuty
  PlugMsg1.NParam := Byte(True);

  //Odesleme zpravu
  PlugMsg1.DllHandle := FDllHandle;
  FPluginSvc.OnPluginMessage(PlugMsg1);
Přehrání interních zvuků

Kód: Vybrat vše

  PlugMsg1.Msg := PM_PLUGIN_PLAY_WAV_SND;

  //Nastavíme ID interniho zvuku který chceme prehrat
  PlugMsg1.WParam := QIP_SND_ID_INC_MSG;

  //Prevezmeme nastaveni zvuku 
  PlugMsg1.NParam := Byte(False);

  //Odesleme zpravu
  PlugMsg1.DllHandle := FDllHandle;
  FPluginSvc.OnPluginMessage(PlugMsg1);
Další zprávou kterou můžeme poslat je zjištění stavu. Tedy jestli jsou zvuky zapnuty nebo vypnuty.
Do kódu je také přidán příklad programového vypnutí nebo zapnutí zvuků.

Kód: Vybrat vše

  {Zjisteni zapnuti/vypnuti zvuku}
  PlugMsg.Msg := PM_PLUGIN_SOUND_GET;
  PlugMsg.DllHandle := FPluginInfo.DllHandle;

  FPluginSvc.OnPluginMessage(PlugMsg);

  {Vyhodnoceni stavu - pokud jsou zvuky zapnuty provedeme vypnutí  }
  if Boolean(PlugMsg.WParam) then
  begin
    PlugMsg.Msg       := PM_PLUGIN_SOUND_SET;
    PlugMsg.WParam    := Integer(False); // False - vypne zvuky, True - zapne zvuky
    PlugMsg.DllHandle := FPluginInfo.DllHandle;

    FPluginSvc.OnPluginMessage(PlugMsg);
  end;
Poslední možností kterou můžeme v pluginu využít je reakce na změnu zvuku uživatelem.
Tuto zprávu nám Infium pošle a můžete ji zachytit v proceduře TQipPlugin.OnQipMessage

Kód: Vybrat vše

PM_PLUGIN_SOUND_CHANGED   : QipSoundChanged(PlugMsg);
Příklad těla procedury která vyhodnotí příchozí zprávu s výsledkem nastavení zvuků:

Kód: Vybrat vše

procedure TQipPlugin.QipSoundChanged(PlugMsg: TPluginMessage);
var str : string;
begin
  if Boolean(PlugMsg.WParam) then str := 'Zvuky zapnuty' else str := 'Zvuky vypnuty';
end;
Takto můžeme tedy ovládat a přehrávat zvuky. Dnešní díl budete programovat sami a bude bez příkladu ke stažení. V příštím dílu vše napravím a kód doplní.
Také se budeme věnovat zjištení informací o otevřeném kontaktu. Budeme tedy načítat detaily kontaktu.