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); }
/// <summary> /// 特定のLogicFolderInformationを含むか、あるいは自身かを調べます /// </summary> /// <param name="info">対象</param> /// <returns></returns> public bool ContainAsChildrenOrSelf(LogicFolderInfomation info) { if (info == null) { return(false); } return(ContainAsChildrenOrSelf(this, info)); }
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) }); }
private static void RemoveRelation(LogicFolderInfomation info) { if (info.parent != null) { info.parent.ChildrenList.Remove(info); info.parent = null; } info.disposed = true; }
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) }); }
private List <LogicFolderInfomation> GetFromFolder(LogicFolderInfomation info) { if (info.IsFolder) { return(GetInfos(info.ChildIDs, info)); } else { return(new List <LogicFolderInfomation>()); } }
private void Remove(LogicFolderInfomation info) { if (info == null || info.Name == PPDDatabase.LogicFolderRoot) { return; } if (StaticBeforeRemove != null) { StaticBeforeRemove.Invoke(info, EventArgs.Empty); } Remove(info, true); }
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); }
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); }
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); } }
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); }
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); }
private static LogicFolderInfomation AddScore(LogicFolderInfomation parent, SongInformation si) { return(AddScore(parent, si, si.DirectoryName)); }
static void SongInformation_Updated(object sender, EventArgs e) { SongInformation.Updated -= SongInformation_Updated; root = null; }