コード例 #1
0
        internal void uploadAlbum(LocalAlbum aAlbum, Int32? catId)
        {
            Boolean rc;
            Int32 IdNewAlbum = 0;
            String strMsgInfo = String.Empty;
            rc = PwgServiceProvider.Instance.PwgAlbumsService.AddAlbum(aAlbum.Name, catId, ref  IdNewAlbum, ref strMsgInfo);

            if (rc == true)
            {
                aAlbum.Id = IdNewAlbum;

                foreach (LocalImage Img in aAlbum.LocalImages)
                {
                    if (aAlbum.Id.HasValue)
                    {
                        Img.UpperCatId = aAlbum.Id.Value;
                    }
                    uploadImage(Img);
                }

                foreach (LocalAlbum Alb in aAlbum.SubAlbums)
                {
                    uploadAlbum(Alb, null);
                }
            }
            else
            {
                throw new ApplicationException("uploadlabum error");
            }
        }
コード例 #2
0
            public ModelManagerBase()
            {
                lstCat = new SelectedPwgAlbumList();
                lstAlbumLocaux = new LocalAlbumList();
                isConnected = false;

                AlbumEdited = new LocalAlbum();
                ImageEdited = new LocalImage();
                UploadOption = new PwgUploadOption();

                LstConfidentLevel = Com.Piwigo.Lib.DTO.Helper.PwgEnumHelper<PwgConfidentLevelEnum>.buildChoiceList();
            }
コード例 #3
0
 public static void DeleteAlbum(ref LocalAlbum alb)
 {
     //on vire les images
     alb.LocalImages.Clear();
     foreach (LocalAlbum subAlb in alb.SubAlbums)
     {
         LocalAlbum subAlbtoDel = subAlb;
         // on boucle sur les sous-albums
         DeleteAlbum(ref subAlbtoDel);
     }
     // on vide les sous-album
     alb.SubAlbums.Clear();
 }
コード例 #4
0
 public static void DeleteInTree(LocalAlbum alb)
 {
     //si l'album depend de la racine
     LocalAlbum treeAlb = ModelManager.Instance.lstAlbumLocaux.FirstOrDefault(a => a.LocalDir == alb.LocalDir);
     if (treeAlb != default(LocalAlbum))
     {
         DeleteAlbum(ref treeAlb);
         ModelManager.Instance.lstAlbumLocaux.Remove(treeAlb);
     }
     else
     {
         LocalAlbumList lal = ModelManager.Instance.lstAlbumLocaux;
         DeleteWhenFoundInTree(alb,ref lal);
     }
 }
コード例 #5
0
        public static void DeleteWhenFoundInTree(LocalAlbum alb, ref LocalAlbumList lstAlbum)
        {
            LocalAlbum treeAlb = null;

            for (int i = 0; i < lstAlbum.Count; i += 1)
            {
                treeAlb = lstAlbum.FirstOrDefault(a => a.LocalDir == alb.LocalDir);
                if (treeAlb != default(LocalAlbum))
                {
                    DeleteAlbum(ref treeAlb);
                    lstAlbum.RemoveAt(i);
                    return;
                }
            }
            for (int i = 0; i < lstAlbum.Count; i += 1)
            {
                LocalAlbumList FoundInLstAlb = lstAlbum[i].SubAlbums;
                DeleteWhenFoundInTree(alb, ref FoundInLstAlb);
            }
        }
コード例 #6
0
        internal static System.Windows.Forms.TreeNode buildAlbumToNode(LocalAlbum aAlbum)
        {
            System.Windows.Forms.TreeNode aNode = new System.Windows.Forms.TreeNode(aAlbum.Name,1,1);
            aNode.ToolTipText = aAlbum.LocalDir;
            aNode.Tag = aAlbum;

            foreach (LocalImage Img in aAlbum.LocalImages)
            {
                System.Windows.Forms.TreeNode imgNode = new System.Windows.Forms.TreeNode(Img.Name, 2, 2);
                imgNode.ToolTipText = Img.LocalFile;
                imgNode.Tag = Img;
                aNode.Nodes.Add(imgNode);
            }

            foreach (LocalAlbum Alb in aAlbum.SubAlbums)
            {
                aNode.Nodes.Add(buildAlbumToNode(Alb));
            }

            return aNode;
        }
コード例 #7
0
        public bool MatchReleaseWithLocalAlbum(Release release, LocalAlbum localAlbum)
        {
            if (release.JoinedAlbumArtists != localAlbum.AlbumArtist)
            {
                return(false);
            }
            if (release.Title != localAlbum.Title)
            {
                return(false);
            }

            if (localAlbum.Year != 0 && release.ReleaseDate.Date.Year != localAlbum.Year)
            {
                return(false);
            }
            if (localAlbum.Year == 0 && release.ReleaseDate.IsValid)
            {
                return(false);
            }

            if (release.Genre != localAlbum.Genre)
            {
                return(false);
            }
            if (release.DiscCount != localAlbum.DiscCount)
            {
                return(false);
            }

            if (!MatchReleaseTracklistWithLocalAlbum(release, localAlbum))
            {
                return(false);
            }

            return(true);
        }
コード例 #8
0
        public bool MatchReleaseTracklistWithLocalAlbum(Release release, LocalAlbum localAlbum)
        {
            List <Track> tracks = this.GenerateTracklistForLocalAlbum(this.collectionManager, localAlbum, null);

            for (int i = 0; i < tracks.Count; ++i)
            {
                Track track      = release.Tracklist[i];
                Track localTrack = tracks[i];

                if (track.RelativeFilename != localTrack.RelativeFilename)
                {
                    return(false);
                }
                if (track.Title != localTrack.Title)
                {
                    return(false);
                }
                if (track.JoinedArtists != localTrack.JoinedArtists)
                {
                    return(false);
                }
                if (track.Disc != localTrack.Disc)
                {
                    return(false);
                }
                if (track.Position != localTrack.Position)
                {
                    return(false);
                }
            }

            foreach (LocalDisc disc in localAlbum.Discs)
            {
                foreach (TrackInfoCache track in disc.Tracks)
                {
                    if (track.Year != 0 && track.Year != release.ReleaseDate.Date.Year)
                    {
                        return(false);
                    }
                    if (track.Year == 0 && release.ReleaseDate.IsValid)
                    {
                        return(false);
                    }
                    if (track.RelativeFilename != track.RelativeFilename)
                    {
                        return(false);
                    }

                    if (track.Genre != release.Genre)
                    {
                        return(false);
                    }
                    if (track.DiscCount != release.DiscCount)
                    {
                        return(false);
                    }
                    if (track.AlbumArtist != release.JoinedAlbumArtists)
                    {
                        return(false);
                    }
                    if (track.Album != release.Title)
                    {
                        return(false);
                    }
                }
            }

            return(true);
        }
コード例 #9
0
 public Release GetReleaseByLocalAlbumName(LocalAlbum localAlbum)
 {
     return(this.collectionManager.Releases
            .Where(r => r.Title == localAlbum.Title && r.JoinedAlbumArtists == localAlbum.AlbumArtist)
            .FirstOrDefault());
 }
コード例 #10
0
        public List <Track> GenerateTracklistForLocalAlbum(ICollectionManager collectionManager, LocalAlbum album, Release release)
        {
            List <Track> list = new List <Track>();

            foreach (LocalDisc disc in album.Discs)
            {
                bool hasTrackArtists = disc.Tracks.Any(t => t.Artist != disc.Tracks[0].Artist);

                foreach (TrackInfoCache localTrack in disc.Tracks)
                {
                    Track track = new Track()
                    {
                        Disc             = localTrack.Disc,
                        Position         = localTrack.Track,
                        Title            = localTrack.Title,
                        RelativeFilename = localTrack.RelativeFilename
                    };
                    if (hasTrackArtists)
                    {
                        track.Artists.Add(new TrackArtist()
                        {
                            Artist = collectionManager.GetOrCreateArtist(localTrack.Artist),
                        });
                        track.JoinedArtists = localTrack.Artist;
                    }

                    list.Add(track);
                }
            }
            return(list);
        }
コード例 #11
0
        private LocalAlbum loadDirectory(String dirName, Int32? rootAlbumId)
        {
            DirectoryInfo dir = new DirectoryInfo(dirName);
            LocalAlbum album = new LocalAlbum() { LocalDir = dir.FullName, Name = dir.Name };

            Int32 parentAlbumId =  (rootAlbumId.HasValue ? rootAlbumId.Value : PwgAlbum.RootAlbumId);

            album.MessageInfo = "";
            album.UpperCatId = parentAlbumId;

            // loading image data in album
            album.LocalImages = new LocalImageList();
            foreach (string strfile in Directory.EnumerateFiles(dir.FullName, "*.*", SearchOption.TopDirectoryOnly)
                .Where(s => extensions.Any(ext => ext == Path.GetExtension(s))))
            {
                album.LocalImages.Add(loadFile(strfile));
            }

            album.SubAlbums = new LocalAlbumList();
            foreach (string strdir in Directory.EnumerateDirectories(dir.FullName))
            {
                album.SubAlbums.Add(loadDirectory(strdir, null));
            }

            return album;
        }
コード例 #12
0
        public void runService()
        {
            if (File.Exists(ModelManager.Instance.directoryName))
            {
                if (extensions.Contains<String>(Path.GetExtension(ModelManager.Instance.directoryName)))
                {
                    FileInfo file = new FileInfo(ModelManager.Instance.directoryName);
                    LocalAlbum album;
                    album = ModelManager.Instance.lstAlbumLocaux.SingleOrDefault(a => a.Name == file.Directory.Name);

                    if (album == null)
                    {
                        album = new LocalAlbum() { LocalDir = file.Directory.FullName, Name = file.Directory.Name };
                        album.MessageInfo = "auto created for photo input.";
                        album.UpperCatId = 0;
                        album.LocalImages = new LocalImageList();
                        album.SubAlbums = new LocalAlbumList();

                        ModelManager.Instance.lstAlbumLocaux.Add(album);
                    }

                    if (album.LocalImages.Count(a => a.Name == file.Name) < 1)
                    {
                        album.LocalImages.Add(loadFile(file.FullName));
                    }
                }
            }
            else if (Directory.Exists(ModelManager.Instance.directoryName))
            {
                Int32 RootAlbumId = PwgAlbum.RootAlbumId;
                LocalAlbum rootAlbum = null;

                if (ModelManager.Instance.SelectedNode != null)
                {
                    if (ModelManager.Instance.SelectedNode.Tag != null)
                    {
                        if (ModelManager.Instance.SelectedNode.Tag is LocalAlbum)
                        {
                            rootAlbum = (LocalAlbum)ModelManager.Instance.SelectedNode.Tag;
                            RootAlbumId = (rootAlbum.Id.HasValue ? rootAlbum.Id.Value : PwgAlbum.RootAlbumId);
                        }
                        else if (ModelManager.Instance.SelectedNode.Tag is PwgImage)
                        {
                            rootAlbum = (LocalAlbum)ModelManager.Instance.SelectedNode.Parent.Tag;
                            RootAlbumId = (rootAlbum.Id.HasValue ? rootAlbum.Id.Value : PwgAlbum.RootAlbumId);
                        }
                    }
                }

                if (rootAlbum != null)
                {
                    rootAlbum.SubAlbums.Add(
                        loadDirectory(ModelManager.Instance.directoryName,
                        RootAlbumId)
                        );
                }
                else
                {
                    ModelManager.Instance.lstAlbumLocaux.Add(
                        loadDirectory(ModelManager.Instance.directoryName,
                        PwgAlbum.RootAlbumId)
                        );
                }
            }
        }