示例#1
0
 public CharacterViewModels(IChatManager chatManager, ICharacterManager characterManager, IApiManager apiManager, CharacterListProvider characterListProvider)
 {
     this.chatManager           = chatManager;
     this.characterManager      = characterManager;
     this.apiManager            = apiManager;
     this.characterListProvider = characterListProvider;
 }
 public CharacterListsViewModel(CharacterListProvider provider)
 {
     customLists  = new ObservableList <Item>(provider.ReloadCustomLists().Select(x => new Item(x)));
     DefaultLists = provider.ReloadDefaultLists().Select(x => new Item(x.Value, true)
     {
         Name = this["CharacterLists_" + x.Key]
     }).ToList();
     AllLists    = new ConcatenatingObservableList <Item>(DefaultLists, customLists);
     SaveCommand = new MvxCommand(() => {
         provider.DefaultLists = DefaultLists.ToDictionary(x => x.List.Name, x => MapList(x, new CharacterList {
             Name = x.List.Name
         }));
         provider.SaveCustomLists(customLists.ToList().Select(x => {
             var oldList = x.List as CustomCharacterList;
             var list    = MapList(x, new CustomCharacterList(oldList?.Id ?? Guid.NewGuid())
             {
                 Name = x.Name
             });
             if (oldList != null)
             {
                 list.Characters = oldList.Characters;
             }
             return(list);
         }).ToList());
     });
     AddCommand = new MvxCommand(() => customLists.Add(new Item {
         Name = "", SortOrder = 10, TextColor = new MvxColor(0), UnderlineColor = new MvxColor(0)
     }));
 }
        public CharacterViewModel(IChatManager chatManager, ICharacterManager characterManager, IApiManager apiManager, CharacterListProvider characterListProvider)
        {
            this.characterManager      = characterManager;
            this.apiManager            = apiManager;
            this.characterListProvider = characterListProvider;
            ToggleBookmarkCommand      = new MvxCommand(() => apiManager.QueryApi($"bookmark-{(Character.IsBookmarked ? "remove" : "add")}.php?name={Character.Name}"));
            ToggleIgnoreCommand        = new MvxCommand(() => characterManager.SetIgnored(Character, !Character.IsIgnored));
            ShowProfileCommand         = new MvxCommand(() => Navigator.Navigate(this));
            MessageCommand             = new MvxCommand(() => {
                Navigator.Navigate <ChatViewModel, ChatViewModel.InitArgs>(new ChatViewModel.InitArgs {
                    Character = Character.Name
                });
            });

            KickCommand = new MvxCommand(() => {
                chatManager.Send(Helpers.CreateClientCommand(ClientCommandType.KIK, new { character = Character.Name }));
            });
            BanCommand = new MvxCommand(() => {
                chatManager.Send(Helpers.CreateClientCommand(ClientCommandType.ACB, new { character = Character.Name }));
            });
            AddToListCommand      = new MvxCommand <CustomCharacterList>(list => characterListProvider.AddCharacter(list, Character.Name));
            RemoveFromListCommand = new MvxCommand <CustomCharacterList>(list => characterListProvider.RemoveCharacter(list, Character.Name));
            characterListProvider.CustomListsChanged += SetCharacterLists;
        }
示例#4
0
        public ListsViewModel(ICharacterManager characterManager, CharacterViewModels cache, CharacterListProvider characterListProvider)
        {
            var lists = new ObservableList <List>();

            IObservableList <CharacterViewModel> Mapper(IObservableList <Character> l) => new MappingObservableList <Character, CharacterViewModel>(l, cache.GetCharacterViewModel);

            lists.Add(new List(Strings.CharacterLists_Bookmarks, Mapper(new FilteringObservableList <Character, bool>(characterManager.OnlineCharacters, x => x.IsBookmarked, x => x))));
            lists.Add(new List(Strings.CharacterLists_Friends, Mapper(new FilteringObservableList <Character, bool>(characterManager.OnlineCharacters, x => x.IsFriend, x => x))));
            lists.Add(new List(Strings.CharacterLists_ChatOps, Mapper(new FilteringObservableList <Character, bool>(characterManager.OnlineCharacters, x => x.IsChatOp, x => x))));
            lists.InsertRange(characterListProvider.CustomLists.Select(l => new List(l.Name,
                                                                                     Mapper(new FilteringObservableList <Character>(characterManager.OnlineCharacters, x => l.Characters.Contains(x.Name))))), lists.Count);
            Lists = lists;
        }
 internal CharacterViewModel(IChatManager chatManager, ICharacterManager characterManager, IApiManager apiManager, CharacterListProvider provider, Character character) :
     this(chatManager, characterManager, apiManager, provider)
 {
     SetCharacter(character);
 }