Exemple #1
0
 private static void Remove(LogicFolderInfomation info, bool updateParent)
 {
     if (info.IsFolder)
     {
         foreach (LogicFolderInfomation childinfo in info.Children)
         {
             Remove(childinfo, false);
         }
         Delete(info);
     }
     else
     {
         Delete(info);
     }
     if (updateParent)
     {
         var list = PPDDatabase.ParseStringToList(info.Parent.ChildIDs);
         if (list.Contains(info.ID))
         {
             list.Remove(info.ID);
         }
         info.parent.ChildIDs = PPDDatabase.ConverListToString(list);
         UpdateChildIDs(info.Parent.ChildIDs, info.Parent.ID);
     }
     RemoveRelation(info);
 }
Exemple #2
0
 /// <summary>
 /// 特定のLogicFolderInformationを含むか、あるいは自身かを調べます
 /// </summary>
 /// <param name="info">対象</param>
 /// <returns></returns>
 public bool ContainAsChildrenOrSelf(LogicFolderInfomation info)
 {
     if (info == null)
     {
         return(false);
     }
     return(ContainAsChildrenOrSelf(this, info));
 }
Exemple #3
0
 private static void Rename(LogicFolderInfomation info, string newName)
 {
     info.Name = newName;
     PPDDatabase.DB.ExecuteDataTable("update LogicFolder set name = @name where folderid = @folderid;", new SQLiteParameter[] {
         new SQLiteParameter("@name", newName),
         new SQLiteParameter("@folderid", info.ID)
     });
 }
Exemple #4
0
 private static void RemoveRelation(LogicFolderInfomation info)
 {
     if (info.parent != null)
     {
         info.parent.ChildrenList.Remove(info);
         info.parent = null;
     }
     info.disposed = true;
 }
Exemple #5
0
 private static void Delete(LogicFolderInfomation info)
 {
     if (info == null)
     {
         return;
     }
     PPDDatabase.DB.ExecuteDataTable("delete from LogicFolder where folderid == @folderid;", new SQLiteParameter[] {
         new SQLiteParameter("@folderid", info.ID)
     });
 }
Exemple #6
0
 private List <LogicFolderInfomation> GetFromFolder(LogicFolderInfomation info)
 {
     if (info.IsFolder)
     {
         return(GetInfos(info.ChildIDs, info));
     }
     else
     {
         return(new List <LogicFolderInfomation>());
     }
 }
Exemple #7
0
 private void Remove(LogicFolderInfomation info)
 {
     if (info == null || info.Name == PPDDatabase.LogicFolderRoot)
     {
         return;
     }
     if (StaticBeforeRemove != null)
     {
         StaticBeforeRemove.Invoke(info, EventArgs.Empty);
     }
     Remove(info, true);
 }
Exemple #8
0
        private static List <LogicFolderInfomation> GetInfos(string ids, LogicFolderInfomation parent)
        {
            if (string.IsNullOrEmpty(ids))
            {
                return(new List <LogicFolderInfomation>());
            }

            var orderList = PPDDatabase.ParseStringToList(ids);

            ids = ids.Replace('|', ',');
            var list = new List <LogicFolderInfomation>();

            /*            using (SQLiteDataReader reader = PPDDatabase.ExecuteReader("select * from LogicFolder where folderid in (@ids);", new SQLiteParameter[] {
             *              new SQLiteParameter("@ids",ids)}))
             *          {*/
            using (var reader = PPDDatabase.DB.ExecuteReader(String.Format("select * from LogicFolder where folderid in ({0}) order by folderid;", ids), new SQLiteParameter[0]))
            {
                while (reader.Reader.Read())
                {
                    var info = new LogicFolderInfomation
                    {
                        ID       = reader.Reader.GetInt32(0),
                        IsFolder = reader.Reader.GetInt32(2) == 1,
                        Name     = reader.Reader.GetString(3)
                    };
                    if (info.IsFolder)
                    {
                        info.ChildIDs = reader.Reader.GetString(4);
                    }
                    else
                    {
                        info.ScoreID = reader.Reader.GetInt32(1);
                    }
                    info.DateTime = DateTime.Parse(reader.Reader.GetString(5), CultureInfo.InvariantCulture);
                    info.parent   = parent;
                    info.Depth    = parent.Depth + 1;
                    list.Add(info);
                }
            }
            list.Sort(new LogicFolderInformationComparer(orderList));

            return(list);
        }
Exemple #9
0
        private static void ChangeIndex(LogicFolderInfomation info, int index)
        {
            if (StaticBeforeChangeIndex != null)
            {
                StaticBeforeChangeIndex.Invoke(info, EventArgs.Empty);
            }
            var currentIndex = Array.IndexOf(info.Parent.Children, info);
            LogicFolderInfomation tempParent = info.Parent;

            info.Parent.children.Remove(info);
            info.Parent.children.Insert(index, info);
            var temp = info.Parent.Children[0].ID.ToString();

            for (int i = 1; i < info.Parent.ChildrenCount; i++)
            {
                temp += String.Format("|{0}", info.Parent.Children[i].ID);
            }
            info.Parent.ChildIDs = temp;
            UpdateChildIDs(info.Parent.ChildIDs, info.Parent.ID);
        }
Exemple #10
0
 private static bool ContainAsChildrenOrSelf(LogicFolderInfomation parent, LogicFolderInfomation info)
 {
     if (parent == info)
     {
         return(true);
     }
     else
     {
         foreach (LogicFolderInfomation child in parent.Children)
         {
             if (child == info)
             {
                 return(true);
             }
             if (child.IsFolder && ContainAsChildrenOrSelf(child, info))
             {
                 return(true);
             }
         }
         return(false);
     }
 }
Exemple #11
0
        private static LogicFolderInfomation AddScore(LogicFolderInfomation parent, SongInformation si, string linkName)
        {
            if (parent == null || si == null || !parent.IsFolder || !si.IsPPDSong)
            {
                return(null);
            }
            PPDDatabase.DB.ExecuteDataTable("insert into LogicFolder(scoreid,isfolder,name,date) values(@scoreid,@isfolder,@name,@date);", new SQLiteParameter[] {
                new SQLiteParameter("@scoreid", si.ID), new SQLiteParameter("@isfolder", "0"), new SQLiteParameter("@name", linkName), new SQLiteParameter("@date", DateTime.Now.ToString(CultureInfo.InvariantCulture))
            });
            var newscore = new LogicFolderInfomation();

            using (var reader = PPDDatabase.DB.ExecuteReader("select * from LogicFolder where ROWID = last_insert_rowid();", null))
            {
                while (reader.Reader.Read())
                {
                    newscore.ID       = reader.Reader.GetInt32(0);
                    newscore.IsFolder = reader.Reader.GetInt32(2) == 1;
                    newscore.Name     = reader.Reader.GetString(3);
                    newscore.ScoreID  = reader.Reader.GetInt32(1);
                    newscore.DateTime = DateTime.Parse(reader.Reader.GetString(5), CultureInfo.InvariantCulture);
                    newscore.parent   = parent;
                    newscore.Depth    = parent.Depth + 1;
                    parent.ChildrenList.Add(newscore);
                    break;
                }
            }
            if (newscore != null)
            {
                var ids = PPDDatabase.ParseStringToList(parent.ChildIDs);
                ids.Add(newscore.ID);
                parent.ChildIDs = PPDDatabase.ConverListToString(ids);
                UpdateChildIDs(parent.ChildIDs, parent.ID);
            }
            StaticAfterAdd?.Invoke(newscore, EventArgs.Empty);
            return(newscore);
        }
Exemple #12
0
        private static LogicFolderInfomation AddFolder(LogicFolderInfomation parent, string name)
        {
            if (parent == null || !parent.IsFolder)
            {
                return(null);
            }
            PPDDatabase.DB.ExecuteDataTable("insert into LogicFolder(isfolder,name,childids,date) values(@isfolder,@name,@childids,@date);", new SQLiteParameter[] {
                new SQLiteParameter("@isfolder", 1), new SQLiteParameter("@name", name), new SQLiteParameter("@childids", string.Empty), new SQLiteParameter("@date", DateTime.Now.ToString(CultureInfo.InvariantCulture))
            });
            var newfolder = new LogicFolderInfomation();

            using (var reader = PPDDatabase.DB.ExecuteReader("select * from LogicFolder where ROWID = last_insert_rowid();", null))
            {
                while (reader.Reader.Read())
                {
                    newfolder.ID       = reader.Reader.GetInt32(0);
                    newfolder.IsFolder = reader.Reader.GetInt32(2) == 1;
                    newfolder.Name     = reader.Reader.GetString(3);
                    newfolder.ChildIDs = reader.Reader.GetString(4);
                    newfolder.DateTime = DateTime.Parse(reader.Reader.GetString(5), CultureInfo.InvariantCulture);
                    newfolder.parent   = parent;
                    newfolder.Depth    = parent.Depth + 1;
                    parent.ChildrenList.Add(newfolder);
                    break;
                }
            }
            if (newfolder != null)
            {
                var ids = PPDDatabase.ParseStringToList(parent.ChildIDs);
                ids.Add(newfolder.ID);
                parent.ChildIDs = PPDDatabase.ConverListToString(ids);
                UpdateChildIDs(parent.ChildIDs, parent.ID);
            }
            StaticAfterAdd?.Invoke(newfolder, EventArgs.Empty);
            return(newfolder);
        }
Exemple #13
0
 private static LogicFolderInfomation AddScore(LogicFolderInfomation parent, SongInformation si)
 {
     return(AddScore(parent, si, si.DirectoryName));
 }
Exemple #14
0
 static void SongInformation_Updated(object sender, EventArgs e)
 {
     SongInformation.Updated -= SongInformation_Updated;
     root = null;
 }