async Task ExecuteLoadChaptersCommand()
        {
            if (IsBusy)
            {
                return;
            }

            IsBusy = true;

            try
            {
                Chapters.Clear();
                var chapters = await DataStore.GetItemsAsync(true);

                Chapters.ReplaceRange(chapters);
            }
            catch (Exception ex)
            {
                Debug.WriteLine(ex);
                MessagingCenter.Send(new MessagingCenterAlert
                {
                    Title   = "Error",
                    Message = "Unable to load chapters.",
                    Cancel  = "OK"
                }, "message");
            }
            finally
            {
                IsBusy = false;
            }
        }
        /// <summary>
        /// Reset all info (always call before playing next file)
        /// </summary>
        public void ResetInfo()
        {
            AudioCodec = string.Empty;
            VideoCodec = string.Empty;

            // VideoInfo
            HasVideo    = true;
            VideoWidth  = 0;
            VideoHeight = 0;

            Id3Tags = new Id3Tag
            {
                AlbumArtist = string.Empty,
                Encoder     = string.Empty,
                Artist      = string.Empty,
                Genre       = string.Empty,
                Track       = string.Empty,
                Disc        = 0,
                Title       = string.Empty,
                Album       = string.Empty,
                Date        = string.Empty,
                Comment     = string.Empty,
                Description = string.Empty,

                AlbumArtTag = null
            };

            IdInfos.Clear();

            // Tracks
            Subs.Clear();
            Chapters.Clear();
            AudioTracks.Clear();
        }
Esempio n. 3
0
 public ChapterSelectorViewModel(IManga manga, List <IChapter> selectedMangaChapters)
 {
     Manga = manga;
     Chapters.Clear();
     foreach (var chapter in selectedMangaChapters)
     {
         Chapters.Add(chapter);
     }
 }
Esempio n. 4
0
 private void Reset()
 {
     Position     = 0;
     _currentTags = null;
     Chapters?.Clear();
     _length = 0;
     NotifyChanged(nameof(Position));
     NotifyChanged(nameof(CurrentTags));
     NotifyChanged(nameof(Chapters));
     NotifyChanged(nameof(Length));
 }
Esempio n. 5
0
 /// <summary>
 /// Replaces all chapters of the audiobook with the given ones. If the parameter is null
 /// all current chapters are cleared.
 /// </summary>
 /// <param name="chapters">new chapters</param>
 public void SetChapters(ICollection <Chapter> chapters)
 {
     if (chapters != null)
     {
         Chapters = new ObservableCollection <Chapter>(chapters);
     }
     else
     {
         Chapters.Clear();
     }
 }
Esempio n. 6
0
 public override void RemoveAllReferences()
 {
     Chapters.Clear();
     Components.Clear();
     Documentations.Clear();
     Experiences.Clear();
     Files.Clear();
     Maintenances.Clear();
     OrderConfirmations.Clear();
     Safeties.Clear();
     ServiceLogs.Clear();
     SubProjects.Clear();
 }
Esempio n. 7
0
        private void CreateChapters()
        {
            Chapters.Clear();
            int i = 0;

            foreach (var group in _data)
            {
                if (group.IsSelected)   // expand
                {
                    Chapters.Add(group);
                }
                else                    // collapse
                {
                    Chapters.Add(new ChapterGroup(group.GroupName, group.GroupPath));
                }
                i++;
            }
        }
Esempio n. 8
0
        public override void BuildChapters()
        {
            Chapters.Clear();
            string ncxPath = GetNcxPath();

            if (!string.IsNullOrEmpty(ncxPath))
            {
                string     path        = _opfPath + ncxPath;
                XDocument  xmlDocument = _zip.GetFileStream((_opfPath) + ncxPath, true, true).GetXmlDocument(true);
                XNamespace ns          = XNamespace.Get("http://www.daisy.org/z3986/2005/ncx/");
                XElement   root        = xmlDocument.Root;
                if (root != null)
                {
                    XElement navMap = root.Element(ns + "navMap");
                    ParseItems(navMap, 0, ns, path);
                }
            }
        }
Esempio n. 9
0
        /// <inheritdoc />
        public void Load(string fileName)
        {
            _networkstream = ExtensionProvider.IsNetworkStream(fileName);

            Log.Info("Loading file: {0}", fileName);

            if (_decodeChannel != 0 || _mixerChannel != 0)
            {
                Stop();
            }

            try { Bass.StreamFree(_decodeChannel); }
            catch (Exception ex) { Debug.WriteLine(ex); }

            if (string.IsNullOrEmpty(fileName))
            {
                Log.Error("Filename was null or empty. Aborted load");
                return;
            }

            var sourceflags = BassFlags.Decode | BassFlags.Loop | BassFlags.Float | BassFlags.Prescan;
            var mixerflags  = BassFlags.MixerDownMix | BassFlags.MixerPositionEx | BassFlags.AutoFree;

            if (_networkstream)
            {
                int r;
                lock (Lock)
                {
                    // make sure only 1 thread at a time can do the following
                    // increment the request counter for this request
                    r = ++_req;
                }
                var netFlags = BassFlags.StreamDownloadBlocks | sourceflags;
                Bass.NetProxy  = ""; //os default proxy
                _decodeChannel = Bass.CreateStream(fileName, 0, netFlags, _streamDloadProc, new IntPtr(r));
                lock (Lock)
                {
                    if (r != _req)
                    {
                        if (_decodeChannel != 0)
                        {
                            Bass.StreamFree(_decodeChannel);
                        }
                        return;
                    }
                }
                _netadress = fileName;
            }
            else
            {
                if (ExtensionProvider.IsCdStream(fileName))
                {
                    var cd = new CDTrackInfo(fileName);
                    _decodeChannel = BassCd.CreateStream(cd.Drive, cd.Track, sourceflags);
                    Log.Info("Geting track metadata...");
                    UpdateCDTags(cd.Drive, cd.Track);
                }
                else
                {
                    _decodeChannel = Bass.CreateStream(fileName, 0, 0, sourceflags);
                    Log.Info("Geting track metadata...");
                    UpdateFileTags(fileName);
                }
            }

            if (_decodeChannel == 0)
            {
                Log.Error("Decode chanel creation failed: {0}", Bass.LastError);
                return;
            }

            var channelInfo = Bass.ChannelGetInfo(_decodeChannel);

            _mixerChannel = BassMix.CreateMixerStream(channelInfo.Frequency, channelInfo.Channels, mixerflags);
            if (_mixerChannel == 0)
            {
                Log.Error("Mixer chanel creation failed: {0}", Bass.LastError);
                return;
            }
            if (!BassMix.MixerAddChannel(_mixerChannel, _decodeChannel, BassFlags.MixerDownMix))
            {
                Log.Error("Failed to route decoded stream to mixer: {0}", Bass.LastError);
                return;
            }

            if (!_networkstream)
            {
                Log.Info("Getting track length...");
                var len = Bass.ChannelGetLength(_decodeChannel, PositionFlags.Bytes);
                _length = Bass.ChannelBytes2Seconds(_decodeChannel, len);
                NotifyChanged(nameof(Length));

                Log.Info("Getting Chapters...");
                Chapters.Clear();
                Chapters.AddRange(ChapterFactory.GetChapters(fileName, _length));
            }

            Volume = _LastVolume;
            Bass.ChannelSetAttribute(_mixerChannel, ChannelAttribute.Volume, Volume);
            Log.Info("Loaded file {0}", fileName);
        }
Esempio n. 10
0
        static void ReadMetaData()
        {
            lock (MediaTracks)
            {
                MediaTracks.Clear();
                string path = get_property_string("path");

                if (File.Exists(path))
                {
                    using (MediaInfo mi = new MediaInfo(path))
                    {
                        int count = mi.GetCount(MediaInfoStreamKind.Video);

                        for (int i = 0; i < count; i++)
                        {
                            MediaTrack track = new MediaTrack();
                            Add(track, mi.GetVideo(i, "Format"));
                            Add(track, mi.GetVideo(i, "Format_Profile"));
                            Add(track, mi.GetVideo(i, "Width") + "x" + mi.GetVideo(i, "Height"));
                            Add(track, mi.GetVideo(i, "FrameRate") + " FPS");
                            Add(track, mi.GetVideo(i, "Language/String"));
                            Add(track, mi.GetVideo(i, "Forced") == "Yes" ? "Forced" : "");
                            Add(track, mi.GetVideo(i, "Default") == "Yes" ? "Default" : "");
                            Add(track, mi.GetVideo(i, "Title"));
                            track.Text = "V: " + track.Text.Trim(' ', ',');
                            track.Type = "v";
                            track.ID   = i + 1;
                            MediaTracks.Add(track);
                        }

                        count = mi.GetCount(MediaInfoStreamKind.Audio);

                        for (int i = 0; i < count; i++)
                        {
                            MediaTrack track = new MediaTrack();
                            Add(track, mi.GetAudio(i, "Language/String"));
                            Add(track, mi.GetAudio(i, "Format"));
                            Add(track, mi.GetAudio(i, "Format_Profile"));
                            Add(track, mi.GetAudio(i, "BitRate/String"));
                            Add(track, mi.GetAudio(i, "Channel(s)/String"));
                            Add(track, mi.GetAudio(i, "SamplingRate/String"));
                            Add(track, mi.GetAudio(i, "Forced") == "Yes" ? "Forced" : "");
                            Add(track, mi.GetAudio(i, "Default") == "Yes" ? "Default" : "");
                            Add(track, mi.GetAudio(i, "Title"));
                            track.Text = "A: " + track.Text.Trim(' ', ',');
                            track.Type = "a";
                            track.ID   = i + 1;
                            MediaTracks.Add(track);
                        }

                        count = mi.GetCount(MediaInfoStreamKind.Text);

                        for (int i = 0; i < count; i++)
                        {
                            MediaTrack track = new MediaTrack();
                            Add(track, mi.GetText(i, "Language/String"));
                            Add(track, mi.GetText(i, "Format"));
                            Add(track, mi.GetText(i, "Format_Profile"));
                            Add(track, mi.GetText(i, "Forced") == "Yes" ? "Forced" : "");
                            Add(track, mi.GetText(i, "Default") == "Yes" ? "Default" : "");
                            Add(track, mi.GetText(i, "Title"));
                            track.Text = "S: " + track.Text.Trim(' ', ',');
                            track.Type = "s";
                            track.ID   = i + 1;
                            MediaTracks.Add(track);
                        }

                        count = get_property_int("edition-list/count");

                        for (int i = 0; i < count; i++)
                        {
                            MediaTrack track = new MediaTrack();
                            track.Text = "E: " + get_property_string($"edition-list/{i}/title");
                            track.Type = "e";
                            track.ID   = i;
                            MediaTracks.Add(track);
                        }

                        void Add(MediaTrack track, string val)
                        {
                            if (!string.IsNullOrEmpty(val) && !(track.Text != null && track.Text.Contains(val)))
                            {
                                track.Text += " " + val + ",";
                            }
                        }
                    }
                }
            }

            lock (Chapters)
            {
                Chapters.Clear();
                int count = get_property_int("chapter-list/count");

                for (int x = 0; x < count; x++)
                {
                    string text = get_property_string($"chapter-list/{x}/title");
                    double time = get_property_number($"chapter-list/{x}/time");
                    Chapters.Add(new KeyValuePair <string, double>(text, time));
                }
            }
        }
Esempio n. 11
0
 public override ITokenParser GetTokenParser()
 {
     Chapters.Clear();
     Anchors.Clear();
     return(new Fb2TokenParser(_ns, _root, GetCss(), Chapters, Anchors));
 }
 public void SetChapters(EpubBookExt book, IList <EpubChapter> chapters)
 {
     Book = book;
     Chapters.Clear();
     SetChaptersHelper(chapters, 1);
 }