Example #1
0
        async Task addNewOrFromMru(StorageFile sf)
        {
            var sz = (await sf.GetBasicPropertiesAsync()).Size;

            if (sz > 10000) // 500,000 <== a typical pod.anons is 200k ==> anything below 10k is corrupt.
            {
                var fsMid = new MediaInfoDto(sf);
                var liMid = LibLst.FirstOrDefault(r => r.FileOnly.Equals(fsMid.FileOnly, StringComparison.OrdinalIgnoreCase));
                if (liMid != null) // already in the Lib list
                {
                    return;
                }

                var mrMid = MruLst.FirstOrDefault(r => r.FileOnly.Equals(fsMid.FileOnly, StringComparison.OrdinalIgnoreCase));
                if (mrMid != null)
                {
                    await mrMid.SetThumbnail(sf);

                    LibLst.Add(mrMid);
                }
                else
                {
                    await fsMid.SetThumbnail(sf);

                    LibLst.Add(fsMid);
                }
            }
            else
            {
                Debug.WriteLine($"{sf.DisplayName}\t Too tiny to add: {(sz * .001):N0} kb ");
            }
        }
Example #2
0
        async Task setNext(MediaInfoDto mid)
        {
            await addToMruListIfNotThere(mid);

            //SlctPLs = PLsLst.FirstOrDefault(r => r.FileOnly.Equals(mid.FileOnly, StringComparison.OrdinalIgnoreCase));
            SlctMru = MruLst.FirstOrDefault(r => r.FileOnly.Equals(mid.FileOnly, StringComparison.OrdinalIgnoreCase));
            SlctLib = LibLst.FirstOrDefault(r => r.FileOnly.Equals(mid.FileOnly, StringComparison.OrdinalIgnoreCase));
        }
Example #3
0
        async Task addToMruListIfNotThere(MediaInfoDto nxtPLt)
        {
            if (!MruLst.Any(r => r.FileOnly.Equals(nxtPLt.FileOnly, StringComparison.OrdinalIgnoreCase)))
            {
                await nxtPLt.SetThumbnail(/*sf*/); //sep13

                MruLst.Add(nxtPLt);
            }
        }
 void mruFindAdd(string fileonly)
 {
     if (MruLst.Any(r => fileonly.Equals(r.FileOnly, StringComparison.OrdinalIgnoreCase)))
     {
         Cur = MruLst.First(r => fileonly.Equals(r.FileOnly, StringComparison.OrdinalIgnoreCase));
     }
     else
     {
         //?? _mru.Add((_cur = new MediaInfoDto(fileonly) { LastUsed = DateTime.Now }));
     }
 }
        public async void ReadFromSettingsMRU()
        {
            var jsn = AppSettingsHelper.ReadVal(AppSetConst.Mru4Roam);

            if (jsn != null && jsn is string)
            {
                var mru = JsonHelper.FromJson <ObservableCollection <MediaInfoDto> >((string)jsn);

                MruLst.Clear();
                mru.OrderByDescending(r => r.LastUsed).ToList().ForEach(MruLst.Add);
                await checkIfLocal();
            }
        }
        async Task <MediaInfoDto> existingTopMru()
        {
            if (!MruLst.Any())
            {
                return(null);
            }

            foreach (var mu in MruLst.OrderByDescending(r => r.LastUsed))
            {
                if (await MidExists(mu))
                {
                    return(mu);
                }
            }

            return(null);
        }
        public void Mru_FindAdd_MakeCur(StorageFile sf)
        {
            if (MruLst.Any(r => sf.Name.Equals(r.FileOnly, StringComparison.OrdinalIgnoreCase)))
            {
                Cur = MruLst.First(r => sf.Name.Equals(r.FileOnly, StringComparison.OrdinalIgnoreCase));

                if (!Cur.PathFile.Equals(sf.Path, StringComparison.OrdinalIgnoreCase)) // if from another PC: update path to this one.
                {
                    Cur.PathFile = sf.Path;
                }
            }
            else
            {
                MruLst.Add((Cur = new MediaInfoDto(sf)
                {
                    LastUsed = DateTime.Now
                }));
            }
        }
Example #8
0
        async Task <Tuple <bool, string> > trySetNextFromMru(MediaInfoDto mid)
        {
            if (MruLst.Count <= 1)
            {
                return(Tuple.Create(false, "Nothing to play in the MRU list"));
            }

            var nxtFromMru = MruLst.FirstOrDefault(r => !r.FileOnly.Equals(mid.FileOnly, StringComparison.OrdinalIgnoreCase));

            if (nxtFromMru == null)
            {
                return(Tuple.Create(false, "This is the last file in the MRU list."));
            }
            else
            {
                await setNext(nxtFromMru);

                return(Tuple.Create(true, ""));
            }
        }
        async void updateSaveSettings()
        {
            try
            {
                if (Cur == null)
                {
                    return;
                }

                try
                {
                    var cur = MruLst.FirstOrDefault(r => r.FileOnly.Equals(Cur.FileOnly, StringComparison.OrdinalIgnoreCase));
                    if (cur == null)
                    {
                        return;
                    }

                    if (!Cur.Equals(cur))
                    {
                        Cur = cur;
                    }

                    if (
                        Cur.PlayPosn == mp_Xm.PlaybackSession.Position &&
                        Cur.PlayLeng == mp_Xm.PlaybackSession.NaturalDuration &&
                        Cur.LastPcNm == DevOp.MachineName)
                    {
                        return;
                    }

                    Cur.PlayPosn = mp_Xm.PlaybackSession.Position;
                    Cur.PlayLeng = mp_Xm.PlaybackSession.NaturalDuration;
                    Cur.LastPcNm = DevOp.MachineName;
                    Cur.LastUsed = DateTime.Now;

                    //AppSettingsHelper.RemoVal(AppSetConst.Mru4Roam);
                    AppSettingsHelper.SaveVal(AppSetConst.Mru4Roam, JsonHelper.ToJson(MruLst));
                    AppSettingsHelper.SaveVal(AppSetConst.PagesTtl, PagesTtl);
                    AppSettingsHelper.SaveVal(AppSetConst.PlayRate, mp_Xm.PlaybackSession.PlaybackRate);

                    tbDbg3.Text = tbInfo.Text += ".";
                }
                catch (COMException ex)
                {
                    Debug.WriteLine($"$#~>{ex.Message}");
                    var min = MruLst.Min(x => x.LastUsed);
                    if (MruLst.Any(r => r.LastUsed == min))
                    {
                        var mru = MruLst.FirstOrDefault(r => r.LastUsed == min);
                        MruLst.Remove(mru);
                        await Speak($"Max limit exceeded. Removing {mru.FileOnly}");

                        updateSaveSettings();
                    }
                    else
                    {
                        await Speak($"the history has {MruLst.Count} files. i.e.: nothing to remove.");
                    }
                }
                catch (Exception ex) { Debug.WriteLine($"$#~>{ex.Message}"); if (Debugger.IsAttached)
                                       {
                                           Debugger.Break();
                                       }
                                       else
                                       {
                                           await popEx(ex, "updateStngs");
                                       } }
            }
            finally { Debug.WriteLine("--- UpdtStng "); }
        }
 void onDeleteCurSel(object sender, RoutedEventArgs e)
 {
     MruLst.Remove(Cur);
 }
Example #11
0
 void onRemoveThisMid(object mid)
 {
     MruLst.Remove((MediaInfoDto)mid); CanElimi = false;
 }
Example #12
0
 void onRemoveCurSlct()
 {
     MruLst.Remove(SlctMru); CanElimi = false;
 }
Example #13
0
 public void RemoveFromMruOnly(MediaInfoDto mid)
 {
     MruLst.Remove(mid);
 }
Example #14
0
        async void updateSaveSettings(string s)
        {
            try
            {
                if (SlctMru == null)
                {
                    return;
                }

                try
                {
                    if (mp_Vm.PlaybackSession.NaturalDuration == TimeSpan.Zero || (
                            SlctMru.PlayPosn.TotalSeconds >= mp_Vm.PlaybackSession.Position.TotalSeconds &&
                            SlctMru.PlayLeng == mp_Vm.PlaybackSession.NaturalDuration &&
                            SlctMru.LastPcNm == DevOp.MachineName))
                    {
                        return;
                    }

                    if (SlctMru.PlayPosn < mp_Vm.PlaybackSession.Position)
                    {
                        SlctMru.PlayPosn = mp_Vm.PlaybackSession.Position;
                    }
                    SlctMru.PlayLeng = mp_Vm.PlaybackSession.NaturalDuration;
                    SlctMru.LastPcNm = DevOp.MachineName;
                    SlctMru.LastUsed = DateTime.Now;

                    AppSettingsHelper.SaveStr(AppSetConst.Mru4Roam, JsonHelper.ToJson(MruLst));
                    AppSettingsHelper.SaveVal(AppSetConst.PagesTtl, PagesTtl);
                    AppSettingsHelper.SaveVal(AppSetConst.PlayRate, mp_Vm.PlaybackSession.PlaybackRate);

                    if (Dispatcher.HasThreadAccess)
                    {
                        TbInfo += $"{s}";
                    }
                    else
                    {
                        await Dispatcher.RunAsync(CoreDispatcherPriority.Normal, () => TbInfo += $"{s}°");
                    }
                }
                catch (COMException ex)
                {
                    Debug.WriteLine($"$#~>{ex.Message}");
                    var min = MruLst.Min(x => x.LastUsed);
                    if (MruLst.Any(r => r.LastUsed == min))
                    {
                        var mru = MruLst.FirstOrDefault(r => r.LastUsed == min);
                        await Speak($"Max limit exceeded. Removing {mru.FileOnly}");

                        MruLst.Remove(mru);
                        updateSaveSettings("x");
                    }
                    else
                    {
                        await Speak($"the history has {MruLst.Count} files. i.e.: nothing to remove.");
                    }
                }
                catch (Exception ex) { Debug.WriteLine($"$#~>{ex.Message}"); if (Debugger.IsAttached)
                                       {
                                           Debugger.Break();
                                       }
                                       else
                                       {
                                           await popEx(ex, GetType().FullName);
                                       } }
            }
            finally { Debug.WriteLine($"{s}·"); }
        }