| 4640 | else if (tokens.size() >= 3 && tokens[1] == "SUBTITLES") |
| 4641 | { |
| 4642 | bool ok = false; |
| 4643 | int track = tokens[2].toInt(&ok); |
| 4644 | |
| 4645 | if(!ok) |
| 4646 | return; |
| 4647 | |
| 4648 | if (track == 0) |
| 4649 | { |
| 4650 | ctx->player->SetCaptionsEnabled(false,true); |
| 4651 | } |
| 4652 | else |
| 4653 | { |
| 4654 | uint start = 1; |
| 4655 | QStringList subs = ctx->player->GetTracks(kTrackTypeSubtitle); |
| 4656 | uint finish = start + subs.size(); |
| 4657 | if ( track >= start && track < finish ) |
| 4658 | { |
| 4659 | ctx->player->SetTrack(kTrackTypeSubtitle,track-start); |
| 4660 | ctx->player->EnableCaptions(kDisplayAVSubtitle); |
| 4661 | return; |
| 4662 | } |
| 4663 | |
| 4664 | start = finish + 1; |
| 4665 | subs = ctx->player->GetTracks(kTrackTypeCC708); |
| 4666 | finish = start + subs.size(); |
| 4667 | if ( track >= start && track < finish ) |
| 4668 | { |
| 4669 | ctx->player->SetTrack(kTrackTypeCC708,track-start); |
| 4670 | ctx->player->EnableCaptions(kDisplayCC708); |
| 4671 | return; |
| 4672 | } |
| 4673 | |
| 4674 | start = finish + 1; |
| 4675 | subs = ctx->player->GetTracks(kTrackTypeCC608); |
| 4676 | finish = start + subs.size(); |
| 4677 | if ( track >= start && track < finish ) |
| 4678 | { |
| 4679 | ctx->player->SetTrack(kTrackTypeCC608,track-start); |
| 4680 | ctx->player->EnableCaptions(kDisplayCC608); |
| 4681 | return; |
| 4682 | } |
| 4683 | |
| 4684 | start = finish + 1; |
| 4685 | subs = ctx->player->GetTracks(kTrackTypeTeletextCaptions); |
| 4686 | finish = start + subs.size(); |
| 4687 | if ( track >= start && track < finish ) |
| 4688 | { |
| 4689 | ctx->player->SetTrack(kTrackTypeTeletextCaptions,track-start); |
| 4690 | ctx->player->EnableCaptions(kDisplayTeletextCaptions); |
| 4691 | return; |
| 4692 | } |
| 4693 | |
| 4694 | start = finish + 1; |
| 4695 | subs = ctx->player->GetTracks(kTrackTypeTeletextMenu); |
| 4696 | finish = start + subs.size(); |
| 4697 | if ( track >= start && track < finish ) |
| 4698 | { |
| 4699 | ctx->player->SetTrack(kTrackTypeTeletextMenu,track-start); |
| 4700 | ctx->player->EnableCaptions(kDisplayTeletextMenu); |
| 4701 | return; |
| 4702 | } |
| 4703 | |
| 4704 | start = finish + 1; |
| 4705 | subs = ctx->player->GetTracks(kTrackTypeRawText); |
| 4706 | finish = start + subs.size(); |
| 4707 | if ( track >= start && track < finish ) |
| 4708 | { |
| 4709 | ctx->player->SetTrack(kTrackTypeRawText,track-start); |
| 4710 | ctx->player->EnableCaptions(kDisplayRawTextSubtitle); |
| 4711 | return; |
| 4712 | } |
| 4713 | } |
| 4714 | } |
| 4835 | infoStr += QString(" Subtitles:"); |
| 4836 | |
| 4837 | uint subtype = ctx->player->GetCaptionMode(); |
| 4838 | |
| 4839 | if(subtype == kDisplayNone) |
| 4840 | infoStr += QString(" *0:[None]*"); |
| 4841 | else |
| 4842 | infoStr += QString(" 0:[None]"); |
| 4843 | |
| 4844 | uint n = 1; |
| 4845 | |
| 4846 | QStringList subs = ctx->player->GetTracks(kTrackTypeSubtitle); |
| 4847 | for (uint i = 0; i < (uint)subs.size(); i++) |
| 4848 | { |
| 4849 | if ((subtype & kDisplayAVSubtitle) |
| 4850 | && ctx->player->GetTrack(kTrackTypeSubtitle) == (int)i) |
| 4851 | infoStr += QString(" *%1:[%2]*") |
| 4852 | .arg(n) |
| 4853 | .arg(subs[i]); |
| 4854 | else |
| 4855 | infoStr += QString(" %1:[%2]") |
| 4856 | .arg(n) |
| 4857 | .arg(subs[i]); |
| 4858 | n++; |
| 4859 | } |
| 4860 | |
| 4861 | subs = ctx->player->GetTracks(kTrackTypeCC708); |
| 4862 | for (uint i = 0; i < (uint)subs.size(); i++) |
| 4863 | { |
| 4864 | if ((subtype & kDisplayCC708) |
| 4865 | && ctx->player->GetTrack(kTrackTypeCC708) == (int)i) |
| 4866 | infoStr += QString(" *%1:[%2]*") |
| 4867 | .arg(n) |
| 4868 | .arg(subs[i]); |
| 4869 | else |
| 4870 | infoStr += QString(" %1:[%2]") |
| 4871 | .arg(n) |
| 4872 | .arg(subs[i]); |
| 4873 | n++; |
| 4874 | } |
| 4875 | |
| 4876 | subs = ctx->player->GetTracks(kTrackTypeCC608); |
| 4877 | for (uint i = 0; i < (uint)subs.size(); i++) |
| 4878 | { |
| 4879 | if ((subtype & kDisplayCC608) |
| 4880 | && ctx->player->GetTrack(kTrackTypeCC608) == (int)i) |
| 4881 | infoStr += QString(" *%1:[%2]*") |
| 4882 | .arg(n) |
| 4883 | .arg(subs[i]); |
| 4884 | else |
| 4885 | infoStr += QString(" %1:[%2]") |
| 4886 | .arg(n) |
| 4887 | .arg(subs[i]); |
| 4888 | n++; |
| 4889 | } |
| 4890 | |
| 4891 | subs = ctx->player->GetTracks(kTrackTypeTeletextCaptions); |
| 4892 | for (uint i = 0; i < (uint)subs.size(); i++) |
| 4893 | { |
| 4894 | if ((subtype & kDisplayTeletextCaptions) |
| 4895 | && ctx->player->GetTrack(kTrackTypeTeletextCaptions) == (int)i) |
| 4896 | infoStr += QString(" *%1:[%2]*") |
| 4897 | .arg(n) |
| 4898 | .arg(subs[i]); |
| 4899 | else |
| 4900 | infoStr += QString(" %1:[%2]") |
| 4901 | .arg(n) |
| 4902 | .arg(subs[i]); |
| 4903 | n++; |
| 4904 | } |
| 4905 | |
| 4906 | subs = ctx->player->GetTracks(kTrackTypeTeletextMenu); |
| 4907 | for (uint i = 0; i < (uint)subs.size(); i++) |
| 4908 | { |
| 4909 | if ((subtype & kDisplayTeletextMenu) |
| 4910 | && ctx->player->GetTrack(kTrackTypeTeletextMenu) == (int)i) |
| 4911 | infoStr += QString(" *%1:[%2]*") |
| 4912 | .arg(n) |
| 4913 | .arg(subs[i]); |
| 4914 | else |
| 4915 | infoStr += QString(" %1:[%2]") |
| 4916 | .arg(n) |
| 4917 | .arg(subs[i]); |
| 4918 | n++; |
| 4919 | } |
| 4920 | |
| 4921 | subs = ctx->player->GetTracks(kTrackTypeRawText); |
| 4922 | for (uint i = 0; i < (uint)subs.size(); i++) |
| 4923 | { |
| 4924 | if ((subtype & kDisplayRawTextSubtitle) |
| 4925 | && ctx->player->GetTrack(kTrackTypeRawText) == (int)i) |
| 4926 | infoStr += QString(" *%1:[%2]*") |
| 4927 | .arg(n) |
| 4928 | .arg(subs[i]); |
| 4929 | else |
| 4930 | infoStr += QString(" %1:[%2]") |
| 4931 | .arg(n) |
| 4932 | .arg(subs[i]); |
| 4933 | n++; |
| 4934 | } |
| 4935 | |