示例#1
0
        private static void EnqueueCoverRequest(AudioAlbum target)
        {
            lock (_syncRoot)
            {
                if (_requestQueue.ContainsKey(target.Id))
                {
                    if (_requestQueue[target.Id].All(t => t != target))
                    {
                        _requestQueue[target.Id].Add(target);
                    }
                }
                else
                {
                    _requestQueue.Add(target.Id, new List <AudioAlbum>()
                    {
                        target
                    });
                }
            }

            if (!_isQueueWorking)
            {
                Task.Run(() => StartQueueProcessing()); //вся обработка очереди производится в 1 потоке
            }
        }
示例#2
0
        private void ProcessInputParameters()
        {
            AudioAlbum pickedAlbum = ParametersRepository.GetParameterForIdAndReset("PickedAlbum") as AudioAlbum;

            if (pickedAlbum == null || !this.IsInMultiSelectMode)
            {
                return;
            }
            List <AudioHeader> headersToMove = this.GetSelectedAudioHeaders();

            this.IsInMultiSelectMode = false;
            this.ViewModel.MoveTracksToAlbum(headersToMove, pickedAlbum, (Action <bool>)(result => Execute.ExecuteOnUIThread((Action)(() =>
            {
                if (!result)
                {
                    ExtendedMessageBox.ShowSafe(CommonResources.GenericErrorText);
                }
                else
                {
                    if (MessageBox.Show(UIStringFormatterHelper.FormatNumberOfSomething(headersToMove.Count, AudioResources.OneAudioMovedFrm, AudioResources.TwoFourAudiosMovedFrm, AudioResources.FiveAudiosMovedFrm, true, pickedAlbum.title, false), AudioResources.MoveAudios, MessageBoxButton.OKCancel) != MessageBoxResult.OK)
                    {
                        return;
                    }
                    Navigator.Current.NavigateToAudio(0, this.CommonParameters.UserOrGroupId, this.CommonParameters.IsGroup, pickedAlbum.album_id, 0, pickedAlbum.title);
                }
            }))));
        }
 internal void MoveTracksToAlbum(List <AudioHeader> headersToMove, AudioAlbum pickedAlbum, Action <bool> callback)
 {
     AudioService.Instance.MoveToAlbum((List <long>)Enumerable.ToList <long>(Enumerable.Select <AudioHeader, long>(headersToMove, (Func <AudioHeader, long>)(h => h.Track.aid))), pickedAlbum.album_id, (Action <BackendResult <object, ResultCode> >)(res =>
     {
         if (res.ResultCode == ResultCode.Succeeded)
         {
             callback(true);
         }
         else
         {
             callback(false);
         }
     }));
 }
示例#4
0
 public AudioAlbum GetAccountAudioAlbumByTitle(int account, string title)
 {
     AudioAlbum result;
     try
     {
         AudioAlbum audioAlbum = this.db.AudioAlbums.Single((AudioAlbum a) => a.ArtistId == (int?)account && a.Title == title);
         result = audioAlbum;
     }
     catch
     {
         result = new AudioAlbum
         {
             AudioAlbumId = -1
         };
     }
     return result;
 }
示例#5
0
        private void ShowEditAlbum(AudioAlbum album)
        {
            DialogService dc = new DialogService();

            dc.SetStatusBarBackground = true;
            dc.HideOnNavigation       = false;
            EditAlbumUC editAlbum = new EditAlbumUC();

            editAlbum.textBlockCaption.Text = (album.album_id == 0L ? AudioResources.CreateAlbum : AudioResources.EditAlbum);
            dc.Child = (FrameworkElement)editAlbum;
            ((UIElement)editAlbum.buttonSave).Tap += ((EventHandler <System.Windows.Input.GestureEventArgs>)((s, e) =>
            {
                album.title = editAlbum.textBoxText.Text;
                this.ViewModel.AllAlbumsVM.CreateEditAlbum(album);
                dc.Hide();
            }));
            dc.Show((UIElement)this.mainPivot);
        }
示例#6
0
        private bool UpdateAlbum(AudioAlbum cachedAlbum, AudioAlbum updatedAlbum)
        {
            bool changed = false;

            if (cachedAlbum.Title != updatedAlbum.Title)
            {
                cachedAlbum.Title = updatedAlbum.Title;
                changed           = true;
            }

            if (cachedAlbum.Artist != updatedAlbum.Artist)
            {
                cachedAlbum.Artist = updatedAlbum.Artist;
                changed            = true;
            }

            if (cachedAlbum.ArtistId != updatedAlbum.ArtistId)
            {
                cachedAlbum.ArtistId = updatedAlbum.ArtistId;
                changed = true;
            }

            if (cachedAlbum.CoverPath != updatedAlbum.CoverPath)
            {
                cachedAlbum.CoverPath = updatedAlbum.CoverPath;
                changed = true;
            }

            if (cachedAlbum.Year != updatedAlbum.Year)
            {
                cachedAlbum.Year = updatedAlbum.Year;
                changed          = true;
            }

            return(changed);
        }
示例#7
0
 public ActionResult Processupload(string uploads)
 {
     string[] array = uploads.Split(new char[]
     {
         ';'
     });
     new AudioRepository(new yslDataContext());
     Request.Cookies.Get("ysl");
     int account = 1;
     string title = DateTime.Now.ToString("MMMM dd, yyyy");
     IAudioAlbumRepository audioAlbumRepository = new AudioAlbumRepository(new yslDataContext());
     new AudioAlbumItemRepository(new yslDataContext());
     AudioAlbum audioAlbum;
     if (audioAlbumRepository.AccountAudioAlbumExists(account, title))
     {
         audioAlbum = audioAlbumRepository.GetAccountAudioAlbumByTitle(account, title);
     }
     else
     {
         AudioAlbum a = new AudioAlbum
         {
             Created = DateTime.Now,
             Description = "",
             ArtistId = new int?(1),
             Title = DateTime.Now.ToString("MMMM dd, yyyy"),
             PhotoId = new int?(2),
             IsSingle = false,
             IsFeatured = false
         };
         int audioAlbumId = audioAlbumRepository.addAudioAlbum(a);
         audioAlbum = audioAlbumRepository.getAudioAlbum(audioAlbumId);
     }
     for (int i = 0; i < array.Length; i++)
     {
         if (!string.IsNullOrWhiteSpace(array[i]))
         {
             string[] array2 = array[i].Split(new char[]
             {
                 ','
             });
             string text = array2[0];
             text = text.Replace("/temp", "");
             string text2 = HostingEnvironment.MapPath(array2[0]);
             string destFileName = text2.Replace("\\temp", "");
             try
             {
              System.IO.File.Move(text2, destFileName);
                 Audio audio = new Audio
                 {
                     AccountId = 5,
                     Title = array2[1],
                     Description = "",
                     Location = text
                 };
                 EntitySet<AudioAlbumItem> arg_213_0 = audioAlbum.AudioAlbumItems;
                 AudioAlbumItem audioAlbumItem = new AudioAlbumItem();
                 audioAlbumItem.Audio = audio;
                 audioAlbumItem.Created = DateTime.Now;
                 audioAlbumItem.AudioAlbumId = audioAlbum.AudioAlbumId;
                 audioAlbumItem.Track = Math.Min(audioAlbum.AudioAlbumItems.Count + 1, audioAlbum.AudioAlbumItems.AsEnumerable<AudioAlbumItem>().Max((AudioAlbumItem s) => s.Track) + 1);
                 arg_213_0.Add(audioAlbumItem);
                 audioAlbumRepository.updateAudioAlbum(audioAlbum);
             }
             catch
             {
             }
         }
     }
     return base.RedirectToAction("ViewAlbum", new RouteValueDictionary(new
     {
         controller = "AudioController",
         action = "ViewAlbum",
         aid = audioAlbum.AudioAlbumId
     }));
 }
示例#8
0
        public ActionResult Processsingle(string meta, string uploads)
        {
            string[] array = uploads.Split(new char[]
            {
                ';'
            });
            string[] array2 = meta.Split(new char[]
            {
                '~'
            });
            new AudioRepository(new yslDataContext());
            base.Request.Cookies.Get("ysl");
            int value = 1;
            DateTime.Now.ToString("MMMM dd, yyyy");
            IAudioAlbumRepository audioAlbumRepository = new AudioAlbumRepository(new yslDataContext());
            new AudioAlbumItemRepository(new yslDataContext());
            IPhotoRepository photoRepository = new PhotoRepository(new yslDataContext());
            string text = array2[2];
            text = text.Replace("/temp", "");
            string text2 = HostingEnvironment.MapPath(array2[2]);
            string destFileName = text2.Replace("\\temp", "");
            int value2 = 0;
            try
            {
             System.IO.File.Move(text2, destFileName);
                value2 = photoRepository.addPhoto(new Photo
                {
                    AccountId = 5,
                    Location = text,
                    Title = "",
                    Description = ""
                });
            }
            catch
            {
            }
            AudioAlbum audioAlbum = new AudioAlbum
            {
                ArtistId = new int?(value),
                Title = array2[0],
                Description = array2[1],
                PhotoId = new int?(value2),
                IsSingle = true,
                IsFeatured = bool.Parse(array2[3])

            };
            int audioAlbumId = audioAlbumRepository.addAudioAlbum(audioAlbum);
            AudioAlbum audioAlbum2 = audioAlbumRepository.getAudioAlbum(audioAlbumId);
            string[] array3 = array;
            for (int i = 0; i < array3.Length; i++)
            {
                string text3 = array3[i];
                if (!string.IsNullOrWhiteSpace(text3))
                {
                    string[] array4 = text3.Split(new char[]
                    {
                        ','
                    });
                    text = array4[0];
                    text = text.Replace("/temp", "");
                    text2 = HostingEnvironment.MapPath(array4[0]);
                    destFileName = text2.Replace("\\temp", "");
                    var dLink = text;
                    if (!array2[4].Trim().Equals("autoGen"))
                        dLink = array2[4].Trim();
                    try
                    {
                     System.IO.File.Move(text2, destFileName);
                        Audio audio = new Audio
                        {
                            AccountId = 5,
                            Title = array2[0],
                            Description = array2[1],
                            Location = text
                        };
                        audioAlbum2.AudioAlbumItems.Add(new AudioAlbumItem
                        {
                            Audio = audio,
                            Track = audioAlbum.AudioAlbumItems.Count + 1,
                            AudioAlbum = audioAlbum,
                            DownloadLink = dLink
                        });
                    }
                    catch
                    {
                    }
                }
            }
            audioAlbumRepository.updateAudioAlbum(audioAlbum2);
            return base.RedirectToAction("Index");
        }
示例#9
0
 public AudioAlbumHeader(AudioAlbum album)
 {
     this._album = album;
     this.CreateMenuItems();
 }
示例#10
0
        private async Task LoadSelectedArtist()
        {
            if (SelectedArtist == null)
            {
                return;
            }

            OnTaskStarted("artists");

            try
            {
                if (Albums.IsNullOrEmpty())
                {
                    await LoadAlbums();
                }

                var albums = await ServiceLocator.LocalMusicService.GetArtistAlbums(SelectedArtist.Id);

                if (!albums.IsNullOrEmpty())
                {
                    foreach (var album in albums)
                    {
                        var tracks = await ServiceLocator.LocalMusicService.GetAlbumTracks(album.Id);

                        if (!tracks.IsNullOrEmpty())
                        {
                            album.Tracks = tracks.Cast <Audio>().ToList();
                        }
                    }
                }
                else
                {
                    albums = new List <AudioAlbum>();
                }

                if (SelectedArtist == null)
                {
                    return;
                }

                var unsortedTracks = await ServiceLocator.LocalMusicService.GetArtistUnsortedTracks(SelectedArtist.Id);

                if (!unsortedTracks.IsNullOrEmpty())
                {
                    var unsortedAlbum = new AudioAlbum()
                    {
                        Tracks = unsortedTracks.OfType <Audio>().ToList()
                    };
                    albums.Insert(0, unsortedAlbum);
                }

                SelectedArtistAlbums = albums;
                SelectedArtistTracks = albums.SelectMany(a => a.Tracks).Cast <LocalAudio>().ToList();
            }
            catch (Exception ex)
            {
                OnTaskError("artists", ErrorResources.LoadArtistsErrorCommon);

                LoggingService.Log(ex);
            }

            OnTaskFinished("artists");
        }
示例#11
0
 public AudioAlbum getAudioAlbum(int audioAlbumId)
 {
     AudioAlbum result;
     try
     {
         AudioAlbum audioAlbum = this.db.AudioAlbums.Single((AudioAlbum a) => a.AudioAlbumId == audioAlbumId);
         result = audioAlbum;
     }
     catch
     {
         result = new AudioAlbum
         {
             AudioAlbumId = -1
         };
     }
     return result;
 }
示例#12
0
 public int addAudioAlbum(AudioAlbum album)
 {
     this.db.AudioAlbums.InsertOnSubmit(album);
     this.db.SubmitChanges();
     return album.AudioAlbumId;
 }
示例#13
0
 public bool updateAudioAlbum(AudioAlbum aAlbum)
 {
     AudioAlbum audioAlbum = this.db.AudioAlbums.Single((AudioAlbum a) => a.AudioAlbumId == aAlbum.AudioAlbumId);
     if (audioAlbum.AudioAlbumId > 0)
     {
         audioAlbum.Title = aAlbum.Title;
         audioAlbum.Description = aAlbum.Description;
         audioAlbum.Updated = new DateTime?(DateTime.Now);
         audioAlbum.PhotoId = aAlbum.PhotoId;
         audioAlbum.AudioAlbumItems = aAlbum.AudioAlbumItems;
         audioAlbum.ArtistId = aAlbum.ArtistId;
         this.db.SubmitChanges();
         return true;
     }
     return false;
 }
示例#14
0
 /// <summary>
 /// Получить обложку
 /// </summary>
 /// <param name="target"></param>
 public static Task <ImageSource> GetCover(AudioAlbum target)
 {
     return(GetImage(target.CoverPath));
 }
示例#15
0
 /// <summary>
 /// Ставит трек в очередь на получение обложки. Когда очередь подойдет, треку будет присвоена обложка.
 /// </summary>
 /// <param name="target"></param>
 public static void RequestCover(AudioAlbum target)
 {
     //ставим трек в очередь и сразу возвращаем null
     EnqueueCoverRequest(target);
 }
示例#16
0
文件: AudioTypes.cs 项目: CrackHD/vk9
 /// <summary>
 /// You can specify album by ID. Title value will not be set, of course.
 /// </summary>
 /// <param name="owner">Owner page unique identifier</param>
 /// <param name="localID">Local album id</param>
 public static AudioAlbum FromID(VK.UID owner, uint localID)
 {
     var album = new AudioAlbum();
     album.ID = new DualID(owner, localID);
     return album;
 }