Esempio n. 1
0
        /// <summary>
        /// データベースカラムに対する関連トラックのリストを作る
        /// </summary>
        /// <param name="col"></param>
        /// <returns></returns>
        private TreeNode CreateTagBasedTree(Library.Column col)
        {
            // 再生中のトラックのタグの値をMultipleValuesで取得する
            var tagValues = Controller.FetchColumnValueMultipleValue(col.Name, "file_name='" + Controller.Current.Filename.EscapeSingleQuotSQL() + "'").Where(_ => !string.IsNullOrEmpty(_.Key));

            if (tagValues.Count() == 0)
            {
                return(null);
            }

            var level1Node = CreateTreeNode(
                text: col.LocalText,
                imageIndex: ImageIndexes.FOLDER,
                expand: true,
                children: tagValues.Select(tagValue =>
            {
                var tracks = FetchFromDBAsTuple4("SELECT file_name, tagTitle, tagArtist, tagAlbum FROM list WHERE any(" + col.Name + ", '" + tagValue.Key.EscapeSingleQuotSQL() + "');");
                return(CreateTreeNode(
                           text: tagValue.Key + " (" + tracks.Count() + ")",
                           imageIndex: ImageIndexes.MULTIPLE_FILE,
                           tag: new VirtualPlaylistEntry("SELECT * FROM list WHERE any(" + col.Name + ", '" + tagValue.Key.EscapeSingleQuotSQL() + "');", -1, -0),
                           children: tracks.GroupBy(_ => _.Item4).Select(group => CreateTreeNode(
                                                                             text: group.Key + " (" + group.Count() + ")",
                                                                             imageIndex: ImageIndexes.ALBUM_DISC,
                                                                             children: group.Select(leafItem => CreateTreeNode(
                                                                                                        text: leafItem.Item2 + " - " + leafItem.Item3,
                                                                                                        imageIndex: ImageIndexes.SINGLE_FILE,
                                                                                                        tag: "SELECT * FROM list WHERE file_name = '" + leafItem.Item1.EscapeSingleQuotSQL() + "');"
                                                                                                        ))
                                                                             ))
                           ));
            })
                );

            ConnectionPool.Release();
            return(level1Node);
        }
Esempio n. 2
0
 public static String MetaData(Library.Column col)
 {
     return(MetaData(GetColumnIndexByName(col.Name)));
 }