// // // Copyright (C) Microsoft. All rights reserved. // // using System; using System.Collections.Generic; using System.ComponentModel; using System.Linq; using System.Text; namespace ChatObjectModel { public class ObjectModel : INotifyPropertyChanged { private string m_userName = ""; public string UserName { get { return m_userName; } set { if (m_userName != value) { m_userName = value; RaisePropertyChanged("UserName"); } } } private bool m_connected; public ObjectModel() { //This Initialize method is needed to link to Windows Server references that are not GACed Microsoft.WindowsServerSolutions.Common.WindowsServerSolutionsEnvironment.Initialize(); m_backend = new ObjectModelImplementation(this); } public bool Connected { get { return m_connected; } internal set { if (m_connected != value) { m_connected = value; RaisePropertyChanged("Connected"); } } } private ObjectModelImplementation m_backend; public void Connect(string userName) { m_userName = userName; m_backend.Connect(m_userName); } public void SendChat(string text) { m_backend.SendChat(text); } public EventHandler ResponseReceived; private void RaiseResponseReceived(string user, string text) { EventHandler changed = ResponseReceived; if (changed != null) changed(this, new ChatReceivedEventArgs(user, text)); } public event PropertyChangedEventHandler PropertyChanged; private void RaisePropertyChanged(string propertyName) { PropertyChangedEventHandler changed = PropertyChanged; if (changed != null) changed(this, new PropertyChangedEventArgs(propertyName)); } internal void ReceiveResponse(string user, string text) { RaiseResponseReceived(user, text); } internal void ConnectionCompleted() { Connected = true; } internal void Disconnected() { Connected = false; } } }