Esempio n. 1
0
        /// <summary>スクリプトのルーチンを開始します。</summary>
        public void Start()
        {
            if (IsStarted)
            {
                return;
            }
            IsStarted = true;

            var chatWindowViewModel = new ChatWindowViewModel(
                _chatWindow,
                _mainWindow,
                _setting.ShownCharacterName,
                _setting.ChatWindowText,
                _setting.ChatWindowColor
                );

            new ChatWindow {
                DataContext = chatWindowViewModel
            }.Show();

            var stateStart         = new ReadInitialize(_scriptStateManager);
            var scriptStateMachine = new StateMachine(stateStart);

            Task.Run(() =>
            {
                while (!_scriptStateManager.IsDisposed)
                {
                    scriptStateMachine.Update();
                }
            });
        }
Esempio n. 2
0
        public ChatWindow(TataruModel tataruModel, ChatWindowViewModel chatWindowViewModel)
        {
            InitializeComponent();

            try
            {
                _TataruModel         = tataruModel;
                _ChatWindowViewModel = chatWindowViewModel;

                this.DataContext = _ChatWindowViewModel;

                _WindowResizer = new WindowResizer(this);

                this.ShowInTaskbar = false;

                ChatRtb.AcceptsTab = true;

                ChatRtb.BorderThickness = new Thickness(0);

                ChatRtb.Document.Blocks.Clear();

                ChatRtb.IsUndoEnabled = false;

                _TextArrivedTime = DateTime.UtcNow;

                _KeepWorking = true;
                _AutoHidden  = false;
            }
            catch (Exception e)
            {
                Logger.WriteLog(e);
            }
        }
        public ChatWindowView(SpaceBook myCoolBook)
        {
            ViewModel   = new ChatWindowViewModel(myCoolBook);
            DataContext = ViewModel;

            InitializeComponent();
        }
Esempio n. 4
0
        private async Task AsyncOnViewModelChatWindowsListChanged(AsyncListChangedEventHandler <ChatWindowViewModel> ea)
        {
            await Task.Run(() =>
            {
                try
                {
                    switch (ea.ChangedEventArgs.ListChangedType)
                    {
                    case ListChangedType.ItemAdded:
                        {
                            UiWindow.Window.UIThread(() =>
                            {
                                ChatWindowViewModel newElem = ea.ChangedElemnt;

                                _ChatWindows.Add(new ChatWindow(this, newElem, _MainWindow));
                                _ChatWindows[_ChatWindows.Count - 1].Show();
                            });
                        }
                        break;

                    case ListChangedType.ItemDeleted:
                        {
                        }
                        break;
                    }
                }
                catch (Exception e)
                {
                    Logger.WriteLog(e);
                }
            });
        }
Esempio n. 5
0
        public void CloseChatWindow(ChatWindowViewModel viewModel)
        {
            if (!_chatWindows.ContainsKey(viewModel))
            {
                return;
            }

            var window = _chatWindows[viewModel];

            window.Close();
        }
Esempio n. 6
0
        public ShellViewModel(
            AuthenticationService authenticationService,
            LoginViewModel loginViewModel,
            ChatWindowViewModel chatWindowViewModel)
        {
            _authenticationService = authenticationService;
            _loginViewModel        = loginViewModel;
            _chatWindowViewModel   = chatWindowViewModel;

            Initialize();
        }
Esempio n. 7
0
 public void ShowChatWindow(string organizationName, StreamWriter writer)
 {
     Dispatcher.UIThread.Post(() =>
     {
         var chatWindow                 = new ChatWindow();
         chatWindow.Closing            += ChatWindow_Closing;;
         ChatViewModel                  = chatWindow.DataContext as ChatWindowViewModel;
         ChatViewModel.PipeStreamWriter = writer;
         ChatViewModel.OrganizationName = organizationName;
         App.Current.Run(chatWindow);
     });
 }
Esempio n. 8
0
 public void ShowChatWindow(string organizationName, StreamWriter writer)
 {
     App.Current.Dispatcher.Invoke(() =>
     {
         var chatWindow                 = new ChatWindow();
         chatWindow.Closing            += ChatWindow_Closing;
         ChatViewModel                  = chatWindow.DataContext as ChatWindowViewModel;
         ChatViewModel.PipeStreamWriter = writer;
         ChatViewModel.OrganizationName = organizationName;
         chatWindow.Show();
     });
 }
Esempio n. 9
0
        public ChatWindow(IServiceRegistry serviceRegistry, Conversation conversation)
        {
            this.serviceRegistry = serviceRegistry;
            var chatWindowViewModel = new ChatWindowViewModel(conversation, serviceRegistry);

            viewModel = chatWindowViewModel;
            chatWindowViewModel.OpenUserSettingsWindowRequested += OnOpenUserSettingsWindowRequested;
            InitializeComponent();
            DataContext = chatWindowViewModel;

            chatWindowViewModel.InitialiseChat();
        }
Esempio n. 10
0
        public async void ShowChatWindow(ChatWindowViewModel viewModel)
        {
            if (!_chatWindows.ContainsKey(viewModel) || _chatWindows[viewModel].IsClosed)
            {
                _chatWindows[viewModel] = new ChatWindow();
            }

            var window = _chatWindows[viewModel];

            window.DataContext = viewModel;
            window.Show();
            await Task.Delay(10);

            window.Activate();
        }
Esempio n. 11
0
        public static Window GetChatWindow(string chatPartnerName, string message)
        {
            if (ChatWindowPerContact.ContainsKey(chatPartnerName))
            {
                ChatWindowViewModel ExistchatWindow = ChatWindowPerContact[chatPartnerName].Key;
                return(ChatWindowPerContact[chatPartnerName].Value);
            }

            ChatWindowViewModel chatWindowViewModel = new ChatWindowViewModel(new UserDTO {
                UserName = chatPartnerName
            });

            chatWindowViewModel.MessagesLog += (message != string.Empty) ? ChatMessageFormatter.Format(message, chatPartnerName) : "";
            Window chatWindow = WindowService.ShowWindow(chatWindowViewModel);

            chatWindow.Closing += OnWindowClosing;
            ChatWindowPerContact.Add(chatPartnerName, new KeyValuePair <ChatWindowViewModel, Window>(chatWindowViewModel, chatWindow));
            return(chatWindow);
        }
Esempio n. 12
0
        private async Task AsyncOnViewModelWindowsListChanged(AsyncListChangedEventHandler <ChatWindowViewModel> ea)
        {
            switch (ea.ChangedEventArgs.ListChangedType)
            {
            case ListChangedType.ItemAdded:
            {
                await UiWindow.Window.UIThreadAsync(() =>
                    {
                        ChatWindowViewModel newElem = ea.ChangedElemnt;

                        var reslut = _TataruUIModel.ChatWindows.FirstOrDefault(x => x.WinId == newElem.WinId);
                        if (reslut == null)
                        {
                            var sett = newElem.GetSettings();
                            _TataruUIModel.ChatWindows.Add(sett);

                            var binder = new PropertyBinder(_TataruUIModel.ChatWindows[_TataruUIModel.ChatWindows.Count - 1], newElem);
                            CreateBinderCouples(binder);
                            _PropertyBinders.Add(binder);
                        }
                    });
            }
            break;

            case ListChangedType.ItemDeleted:
            {
                await Task.Run(() =>
                    {
                        SpinWait.SpinUntil(() => !deletingObject);
                        lock (lockObj)
                        {
                            deletingObject = true;
                        }
                    });

                await UiWindow.Window.UIThreadAsync(() =>
                    {
                        try
                        {
                            ChatWindowViewModel deletedElem = ea.ChangedElemnt;

                            ChatWindowViewModelSettings reslut = _TataruUIModel.ChatWindows.FirstOrDefault(x => x.WinId == deletedElem.WinId);

                            if (reslut != null)
                            {
                                _TataruUIModel.ChatWindows.Remove(reslut);

                                RemoveChatWindow(_ChatWindows, reslut.WinId);

                                try
                                {
                                    PropertyBinder binder = _PropertyBinders.FirstOrDefault(x => x.Object1 == reslut && x.Object2 == deletedElem);

                                    if (binder == null)
                                    {
                                        binder = _PropertyBinders.FirstOrDefault(x => x.Object2 == reslut && x.Object1 == deletedElem);
                                    }

                                    if (binder != null)
                                    {
                                        binder.Stop();
                                        _PropertyBinders.Remove(binder);
                                    }
                                }
                                catch (Exception e)
                                {
                                    Logger.WriteLog(e);
                                }
                            }
                        }
                        catch (Exception e)
                        {
                            Logger.WriteLog(e);
                        }
                    });

                deletingObject = false;
            }

            break;
            }
        }
Esempio n. 13
0
        private async Task AsyncOnSettingsWindowsListChanged(AsyncListChangedEventHandler <ChatWindowViewModelSettings> ea)
        {
            switch (ea.ChangedEventArgs.ListChangedType)
            {
            case ListChangedType.ItemAdded:
            {
                await UiWindow.Window.UIThreadAsync(() =>
                    {
                        ChatWindowViewModelSettings newElem = ea.ChangedElemnt;

                        ChatWindowViewModel reslut = null;

                        reslut = _TataruViewModel.ChatWindows.FirstOrDefault(x => x.WinId == newElem.WinId);


                        if (reslut == null)
                        {
                            try
                            {
                                TataruViewModel.AddNewChatWindow(newElem);
                            }
                            catch (Exception e)
                            {
                                Logger.WriteLog(e);
                            }

                            var binder = new PropertyBinder(newElem, _TataruViewModel.ChatWindows[_TataruViewModel.ChatWindows.Count - 1]);
                            CreateBinderCouples(binder);
                            _PropertyBinders.Add(binder);
                        }
                    });
            }
            break;

            case ListChangedType.ItemDeleted:
            {
                await Task.Run(() =>
                    {
                        SpinWait.SpinUntil(() => !deletingObject);
                        lock (lockObj)
                        {
                            deletingObject = true;
                        }
                    });

                await UiWindow.Window.UIThreadAsync(() =>
                    {
                        try
                        {
                            ChatWindowViewModelSettings deletedElem = ea.ChangedElemnt;

                            var elementToDelete = _TataruViewModel.ChatWindows.FirstOrDefault(x => x.WinId == deletedElem.WinId);

                            if (elementToDelete != null)
                            {
                                _TataruViewModel.DeleteChatWindow(_TataruViewModel.ChatWindows.IndexOf(elementToDelete));

                                RemoveChatWindow(_ChatWindows, elementToDelete.WinId);

                                var binder = _PropertyBinders.FirstOrDefault(x => x.Object1 == elementToDelete && x.Object2 == deletedElem);
                                if (binder == null)
                                {
                                    binder = _PropertyBinders.FirstOrDefault(x => x.Object2 == elementToDelete && x.Object1 == deletedElem);
                                }

                                if (binder != null)
                                {
                                    binder.Stop();

                                    _PropertyBinders.Remove(binder);
                                }
                            }
                        }
                        catch (Exception e)
                        {
                            Logger.WriteLog(e);
                        }
                    });

                deletingObject = false;
            }
            break;
            }
        }