private static void EventItemCollectionChanged(object sender, NotifyCollectionChangedEventArgs e)
{
DatabaseHandler dbh = DatabaseHandler.GetInstance();
switch (e.Action) {
case NotifyCollectionChangedAction.Add:
IList newItems = e.NewItems;
string query = "INSERT INTO `Item`(`Type`, `RoomID`, `X`, `Y`) VALUES ";
int c = 0;
foreach (Item item in newItems) {
item.Changed += EventItemChanged;
if (item.IsLoaded) continue;
query += string.Format("('{0}', {1}, {2}, {3}){4}", item.Type.ToString(), item.RoomID, item.X, item.Y,
(item != newItems[newItems.Count - 1] ? "," : ""));
c++;
}
if (c > 0) {
long setID = dbh.Sql(query);
foreach (Item item in newItems) {
if (item.IsLoaded) continue;
item.ID = (uint)setID++;
}
}
break;
case NotifyCollectionChangedAction.Remove:
IList oldItems = e.OldItems;
foreach (Item item in oldItems) {
item.Changed -= EventItemChanged;
dbh.Sql(string.Format("DELETE FROM `Item` WHERE `ID`={0}", item.ID));
}
break;
}
}