public bool Join(string webServiceUrl, string userName, string sessionKey, out string message)
        {
            SessionId = sessionKey;
            _seWs     = new SeNetworkService(webServiceUrl);
            Users     = new List <SeNetworkService.SeUser>();
            var joinRequest = new SeNetworkService.JoinRequest()
            {
                SessionId = sessionKey,
                UserName  = userName
            };
            var joinResponse = _seWs.Join(joinRequest);

            message = joinResponse.Message;
            if (joinResponse.Message != "OK")
            {
                return(false);
            }

            Subtitle = new Subtitle();
            var getSubtitleRequest = new SeNetworkService.GetSubtitleRequest
            {
                SessionId = sessionKey
            };
            var getSubtitleResponse = _seWs.GetSubtitle(getSubtitleRequest);

            foreach (var sequence in getSubtitleResponse.Subtitle)
            {
                Subtitle.Paragraphs.Add(new Paragraph(WebUtility.HtmlDecode(sequence.Text).Replace("<br />", Environment.NewLine), sequence.StartMilliseconds, sequence.EndMilliseconds));
            }

            _fileName = getSubtitleResponse.FileName;

            OriginalSubtitle = new Subtitle();
            var getOriginalSubtitleRequest = new SeNetworkService.GetOriginalSubtitleRequest
            {
                SessionId = sessionKey
            };
            var getOriginalSubtitleResponse = _seWs.GetOriginalSubtitle(getOriginalSubtitleRequest);

            if (getOriginalSubtitleResponse.Subtitle != null)
            {
                foreach (var sequence in getOriginalSubtitleResponse.Subtitle)
                {
                    OriginalSubtitle.Paragraphs.Add(new Paragraph(WebUtility.HtmlDecode(sequence.Text).Replace("<br />", Environment.NewLine), sequence.StartMilliseconds, sequence.EndMilliseconds));
                }
            }

            SessionId   = sessionKey;
            CurrentUser = joinResponse.Users.Last();
            foreach (var user in joinResponse.Users)
            {
                Users.Add(user);
            }

            ReloadFromWs();
            _timerWebService.Start();
            return(true);
        }
        public Subtitle ReloadSubtitle()
        {
            Subtitle.Paragraphs.Clear();
            var request = new SeNetworkService.GetSubtitleRequest
            {
                SessionId = SessionId,
            };
            var response = _seWs.GetSubtitle(request);

            _fileName       = response.FileName;
            _seWsLastUpdate = response.UpdateTime;
            if (response.Subtitle != null)
            {
                foreach (var sequence in response.Subtitle)
                {
                    Subtitle.Paragraphs.Add(new Paragraph(WebUtility.HtmlDecode(sequence.Text).Replace("<br />", Environment.NewLine), sequence.StartMilliseconds, sequence.EndMilliseconds));
                }
            }
            return(Subtitle);
        }
        private void ReloadFromWs()
        {
            if (_seWs == null)
            {
                return;
            }

            Subtitle = new Subtitle();
            var request = new SeNetworkService.GetSubtitleRequest
            {
                SessionId = SessionId,
            };
            var response = _seWs.GetSubtitle(request);

            _fileName       = response.FileName;
            _seWsLastUpdate = response.UpdateTime;
            foreach (var sequence in response.Subtitle)
            {
                var p = new Paragraph(WebUtility.HtmlDecode(sequence.Text).Replace("<br />", Environment.NewLine), sequence.StartMilliseconds, sequence.EndMilliseconds);
                Subtitle.Paragraphs.Add(p);
            }
            Subtitle.Renumber();
            LastSubtitle = new Subtitle(Subtitle);
        }