public void AddCard(Card card) { QslCard = card; double left = (this.Width - card.DisplayWidth) / 2; double top = (this.Height - card.DisplayHeight) / 2; cardView = new CardView(QslCard); Canvas.SetLeft(cardView, left); Canvas.SetTop(cardView, top); this.Children.Add(cardView); }
/// <summary> /// Create a deep clone of this card /// </summary> /// <returns>Card that is a deep clone of this one</returns> public Card Clone() { Card card = new Card(); card.BackImage = new BackgroundImage(); card.CopyCardProperties(this); card.BackImage = new BackgroundImage(); card.BackImage.CopyImageProperties(card, BackImage); foreach(SecondaryImage si in SecondaryImages) { SecondaryImage si2 = new SecondaryImage(); si2.CopyImageProperties(card, si); card.SecondaryImages.Add(si2); } foreach(TextItem ti in TextItems) { TextItem ti2 = new TextItem(); ti2.CopyTextItem(card, ti); card.TextItems.Add(ti2); } if(QsosBox != null) { card.QsosBox = new QsosBox(); card.QsosBox.CopyQsosBoxProperties(card, QsosBox); } return card; }
/// <summary> /// Helper method that copies card specific properties /// </summary> /// <param name="card">card whose properties are to be copied</param> private void CopyCardProperties(Card card) { CopyBaseProperties(this, card); }
/// <summary> /// Deserialize a QslDnP card save as XML /// </summary> /// <param name="fileName">Name of the QslDnP card file</param> /// <returns>Card object described by the XML file</returns> public static Card DeserializeQslDnPCard(string fileName) { XmlDocument doc = new XmlDocument(); Stream fStream = new FileStream(fileName, FileMode.Open); doc.Load(fStream); XmlNode node = doc.DocumentElement; Card card = new Card(); switch(node.Name) { case "LandscapeCard55x425": case "LandscapeCard6x4": case "LandscapeCard15x10": case "LandscapeCard55x35": CultureInfo cardCulture = CultureInfo.InvariantCulture; XmlAttributeCollection attrCollection = node.Attributes; XmlAttribute culture = attrCollection["Culture"]; if(culture != null) { cardCulture = new CultureInfo(culture.Value, false); } XmlNode cNode = XmlProcs.GetFirstChildElement(node); // make sure the node is a Card node, then process it if(cNode != null && cNode.Name.Equals("Card")) { card.LoadCard(cNode, cardCulture); } else { throw new XmlException("Invalid Card file. Node is not a Card node"); } break; default: throw new XmlException("Invalid QslDnP card file"); } return card; }