public HighlightCollection <HighlightItem> Read() { HighlightCollection <HighlightItem> highlights = new HighlightCollection <HighlightItem>(); DbConnection.Open(); using (DbTransaction trans = DbConnection.BeginTransaction(System.Data.IsolationLevel.Serializable)) { using (DbDataAdapter adpt = Factory.CreateDataAdapter()) { using (DbCommand cmd = DbConnection.CreateCommand()) { cmd.Transaction = trans; cmd.CommandText = Constants.HIGHTLIGHTITEMS_SELECT_ALL; cmd.ExecuteNonQuery(); adpt.SelectCommand = cmd; using (DbCommandBuilder bld = Factory.CreateCommandBuilder()) { bld.DataAdapter = adpt; using (DataTable tbl = new DataTable()) { adpt.Fill(tbl); foreach (DataRow row in tbl.Rows) { HighlightItem item = new HighlightItem() { ID = int.Parse(row[0].ToString()), Pattern = row[1].ToString(), Order = int.Parse(row[2].ToString()), }; //HACK: System.Drawing.Color allows storing of the colour as one integer, gonna use this to populate DB and re-hydrate back in code. Easier! System.Drawing.Color tempCol = System.Drawing.Color.FromArgb(int.Parse(row[3].ToString())); Color tempCol2 = Color.FromArgb(tempCol.A, tempCol.R, tempCol.G, tempCol.B); item.ForeColour = tempCol2; tempCol = System.Drawing.Color.FromArgb(int.Parse(row[4].ToString())); tempCol2 = Color.FromArgb(tempCol.A, tempCol.R, tempCol.G, tempCol.B); item.BackColour = tempCol2; tempCol = System.Drawing.Color.FromArgb(int.Parse(row[5].ToString())); tempCol2 = Color.FromArgb(tempCol.A, tempCol.R, tempCol.G, tempCol.B); item.BorderColour = tempCol2; highlights.Add(item); } } } } } } DbConnection.Close(); return(highlights); }
private void BtnHighlight_Click(object sender, ButtonStateChangingEventArgs args) { HighlightCollection highlights = viewModel.Manager.Source.Highlights; Highlight firstOpenHighlight = highlights.OrderByBegin().FirstOrDefault(h => !h.IsHighlightClosed()); if (firstOpenHighlight != null) { firstOpenHighlight.End = mps.MediaPosition; } else { highlights.Add(new Highlight(mps.MediaPosition)); } args.NewValue = MediaPositionSlider.GetHighlightState(highlights, mps.MediaPosition); }
public HighlightCollection<HighlightItem> Read() { HighlightCollection<HighlightItem> highlights = new HighlightCollection<HighlightItem>(); DbConnection.Open(); using (DbTransaction trans = DbConnection.BeginTransaction(System.Data.IsolationLevel.Serializable)) { using (DbDataAdapter adpt = Factory.CreateDataAdapter()) { using (DbCommand cmd = DbConnection.CreateCommand()) { cmd.Transaction = trans; cmd.CommandText = Constants.HIGHTLIGHTITEMS_SELECT_ALL; cmd.ExecuteNonQuery(); adpt.SelectCommand = cmd; using (DbCommandBuilder bld = Factory.CreateCommandBuilder()) { bld.DataAdapter = adpt; using (DataTable tbl = new DataTable()) { adpt.Fill(tbl); foreach (DataRow row in tbl.Rows) { HighlightItem item = new HighlightItem() { ID = int.Parse(row[0].ToString()), Pattern = row[1].ToString(), Order = int.Parse(row[2].ToString()), }; //HACK: System.Drawing.Color allows storing of the colour as one integer, gonna use this to populate DB and re-hydrate back in code. Easier! System.Drawing.Color tempCol = System.Drawing.Color.FromArgb(int.Parse(row[3].ToString())); Color tempCol2 = Color.FromArgb(tempCol.A, tempCol.R, tempCol.G, tempCol.B); item.ForeColour = tempCol2; tempCol = System.Drawing.Color.FromArgb(int.Parse(row[4].ToString())); tempCol2 = Color.FromArgb(tempCol.A, tempCol.R, tempCol.G, tempCol.B); item.BackColour = tempCol2; tempCol = System.Drawing.Color.FromArgb(int.Parse(row[5].ToString())); tempCol2 = Color.FromArgb(tempCol.A, tempCol.R, tempCol.G, tempCol.B); item.BorderColour = tempCol2; highlights.Add(item); } } } } } } DbConnection.Close(); return highlights; }