Inheritance: BaseViewModel
コード例 #1
1
ファイル: RoomViewModel.cs プロジェクト: Nowsoud/TCPChat
        public RoomViewModel(MainViewModel mainViewModel, Room room, IList<User> users)
            : base(true)
        {
            Description = room;
              MainViewModel = mainViewModel;
              Messages = new ObservableCollection<MessageViewModel>();
              allInRoom = new UserViewModel(new User("Все в комнате", Color.Black), this);
              messageIds = new HashSet<long>();
              Users = new ObservableCollection<UserViewModel>(users == null
            ? Enumerable.Empty<UserViewModel>()
            : room.Users.Select(user => new UserViewModel(users.Single(u => u.Equals(user)), this)));

              SendMessageCommand = new Command(SendMessage, Obj => ClientModel.Client != null);
              PastReturnCommand = new Command(PastReturn);
              AddFileCommand = new Command(AddFile, Obj => ClientModel.Client != null);
              InviteInRoomCommand = new Command(InviteInRoom, Obj => ClientModel.Client != null);
              KickFromRoomCommand = new Command(KickFromRoom, Obj => ClientModel.Client != null);
              ClearSelectedMessageCommand = new Command(ClearSelectedMessage, Obj => ClientModel.Client != null);

              MainViewModel.AllUsers.CollectionChanged += AllUsersCollectionChanged;
              NotifierContext.ReceiveMessage += ClientReceiveMessage;
              NotifierContext.RoomRefreshed += ClientRoomRefreshed;
        }
コード例 #2
0
ファイル: RoomViewModel.cs プロジェクト: Nirklav/TCPChat
        public RoomViewModel(MainViewModel main)
            : base(main, true)
        {
            Init(main, null);

              Name = ServerModel.MainRoomName;
              Type = RoomType.Chat;
              Enabled = true;
        }
コード例 #3
0
ファイル: RoomViewModel.cs プロジェクト: Nirklav/TCPChat
        public RoomViewModel(MainViewModel main, string roomName, IList<string> usersNicks)
            : base(main, true)
        {
            Init(main, usersNicks);

              using (var client = ClientModel.Get())
              {
            Room room;
            if (!client.Rooms.TryGetValue(roomName, out room))
              throw new ArgumentException("roomName");

            Name = room.Name;
            Type = room.Type;
            Enabled = room.Enabled;

            FillMessages(client);
            RefreshReceivers(client);
              }
        }
コード例 #4
0
ファイル: RoomViewModel.cs プロジェクト: Nirklav/TCPChat
        private void Init(MainViewModel main, IList<string> usersNicks)
        {
            mainViewModel = main;
              Messages = new ObservableCollection<MessageViewModel>();
              SelectedReceiver = allInRoom = new UserViewModel(AllInRoomKey, null, this);
              recivers = new List<UserViewModel>();
              messageIds = new HashSet<long>();

              var userViewModels = usersNicks == null
            ? Enumerable.Empty<UserViewModel>()
            : usersNicks.Select(user => new UserViewModel(user, this));
              Users = new ObservableCollection<UserViewModel>(userViewModels);

              SendMessageCommand = new Command(SendMessage, _ => ClientModel.Api != null && ClientModel.Client.IsConnected);
              PastReturnCommand = new Command(PastReturn);
              AddFileCommand = new Command(AddFile, _ => ClientModel.Api != null);
              InviteInRoomCommand = new Command(InviteInRoom, _ => ClientModel.Api != null);
              KickFromRoomCommand = new Command(KickFromRoom, _ => ClientModel.Api != null);
              ClearSelectedMessageCommand = new Command(ClearSelectedMessage);
              EnableVoiceCommand = new Command(EnableVoice, _ => Type == RoomType.Voice && !Enabled);
              DisableVoiceCommand = new Command(DisableVoice, _ => Type == RoomType.Voice && Enabled);

              NotifierContext.ReceiveMessage += CreateSubscriber<ReceiveMessageEventArgs>(ClientReceiveMessage);
              NotifierContext.RoomOpened += CreateSubscriber<RoomEventArgs>(ClientRoomOpened);
              NotifierContext.RoomRefreshed += CreateSubscriber<RoomEventArgs>(ClientRoomRefreshed);
        }