Exemple #1
0
 private static string AddWndAssistDeskToCache(int hwnd)
 {
     if (!_hwndDesc.ContainsKey(hwnd))
     {
         WndAssist wndAssist = WndAssist.AssistBag.FirstOrDefault(k => k.Desk.Hwnd.Handle == hwnd);
         string    value;
         if (wndAssist != null)
         {
             value = string.Format("WndAssist({0},{1:x})", wndAssist.Desk.Seller, hwnd);
         }
         else
         {
             var desk = ChatDesk.DeskSet.FirstOrDefault(k => k.Hwnd.Handle == hwnd);
             if (desk != null)
             {
                 value = string.Format("Desk({0},{1:x})", desk.Seller, hwnd);
             }
             else
             {
                 value = hwnd.ToString("x");
             }
         }
         _hwndDesc[hwnd] = value;
     }
     return(_hwndDesc[hwnd]);
 }
Exemple #2
0
 public void Init(WndAssist wnd)
 {
     if (this._wndDontUse == null)
     {
         this.Wnd = wnd;
         this.ctlAnswer.Init(wnd);
         this.InitUI();
     }
 }
Exemple #3
0
        //public RuleEditor RuleEditor { get; private set; }

        public CtlRobotQA(WndAssist wnd)
        {
            this._isInit = false;
            this._wnd    = wnd;
            this.InitializeComponent();
            this.tvMain.xSetRightClickSelectTreeviewItem();
            this.Init();
            Loaded      += this.CtlRobotQA_Loaded;
            SizeChanged += this.CtlRobotQA_Loaded;
        }
Exemple #4
0
 private static void SyncFinished(string err = null)
 {
     WndAssist.UpdateAllBuyerNote();
     if (EvSynFinished != null)
     {
         EvSynFinished(null, new SynFinishedEventArgs
         {
             Error = err
         });
     }
 }
Exemple #5
0
 public static void Dispatch(IntPtr op)
 {
     try
     {
         WndAssist wndAssist = WndAssist.GetTopWindow();
         if (wndAssist != null)
         {
             wndAssist.ctlBottomPanel.MonitorHotKey((HotKeyHelper.HotOp)((int)op));
         }
     }
     catch (Exception ex)
     {
         Log.Exception(ex);
         MsgBox.ShowErrTip(ex.Message, null);
     }
 }
Exemple #6
0
        public void Save(string seller)
        {
            Params.Robot.CancelAutoOnReset = cboxCancelAutoOnReset.IsChecked.HasValue && cboxCancelAutoOnReset.IsChecked.Value;
            Params.Robot.SetAutoModeNoAnswerTip(seller, tboxNoAnswerTip.Text);
            Params.Robot.SetAutoModeReplyDelaySec(_seller, ConvertEx.ToInt32Safe(tboxAutoDelay.Text.Trim(), 0));
            Params.Robot.SetSendModeReplyDelaySec(_seller, ConvertEx.ToInt32Safe(tboxSendDelay.Text.Trim(), 0));
            Params.Robot.SetQuoteModeSendAnswerWhenFullMatch(_seller, cboxAlwaysSend.IsChecked.HasValue && cboxAlwaysSend.IsChecked.Value);

            bool ruleIncludeExcept = Params.Robot.GetRuleIncludeExcept(_sellerMain);

            if (ruleIncludeExcept != (cboxKeyExclude.IsChecked.HasValue && cboxKeyExclude.IsChecked.Value))
            {
                Params.Robot.SetRuleIncludeExcept(_sellerMain, cboxKeyExclude.IsChecked.HasValue && cboxKeyExclude.IsChecked.Value);
                var wndAssist = WndAssist.FindWndAssist(_seller);
                if (wndAssist != null)
                {
                    wndAssist.ctlRightPanel.UpdateRobotTab();
                }
            }
        }
Exemple #7
0
 public void Init(WndAssist wnd)
 {
     if (_wndDontUse == null)
     {
         Wnd = wnd;
         lblSeller.Content = Wnd.Desk.Seller;
         string   seller = Wnd.Desk.Seller;
         string[] tabs   = new string[] { "话术" /*, "机器人"*/ };
         foreach (string tabName in tabs)
         {
             TabTypeEnum tabType = GetTabType(tabName);
             TabItem     tabItem = CreateTabItem(tabType);
             if (tabItem != null)
             {
                 AddTabItem(tabItem, tabType);
             }
         }
         tabControl.SelectionChanged -= tabControl_SelectionChanged;
         tabControl.SelectionChanged += tabControl_SelectionChanged;
     }
 }
Exemple #8
0
        public static void MyShow(string seller, WndAssist owner = null, OptionEnum showPage = OptionEnum.Unknown, Action uiCallback = null)
        {
            Util.Assert(!string.IsNullOrEmpty(seller));
            var wndOp = EtWindow.ShowSameNickOneInstance <WndOption>(seller, () => {
                return(new WndOption(seller));
            }, owner, true);

            if (uiCallback != null)
            {
                wndOp.Closed += (s, e) => {
                    if (uiCallback != null)
                    {
                        uiCallback();
                    }
                };
            }
            if (showPage > OptionEnum.Unknown)
            {
                wndOp.ShowPage(showPage);
            }
        }
Exemple #9
0
        private static void Start(string nick, int delayMs)
        {
            if (delayMs > 0)
            {
                Thread.Sleep(delayMs);
            }
            var    loginedSeller = QnHelper.Detected.GetSellerFromCache(nick);
            string arg;
            var    desk = ChatDesk.Create(loginedSeller, nick, out arg);

            if (desk != null)
            {
                DispatcherEx.xInvoke(() =>
                {
                    WndAssist.CreateAndAttachToDesk(desk);
                });
                //写入登录数据
            }
            else
            {
                MsgBox.ShowErrDialog(string.Format("无法为{0}创建辅助面板,原因是{1}", nick, arg));
            }
        }
Exemple #10
0
 private void ShowEditorErrorTipIfNeed(string tip)
 {
     if (this._ShowEditorErrorTipTime.xIsTimeElapseMoreThanSecond(10))
     {
         try
         {
             this._ShowEditorErrorTipTime = DateTime.Now;
             WndAssist assistWindow = this._desk.AssistWindow;
             if (assistWindow != null)
             {
                 BottomPanel.Tipper theTipper = assistWindow.ctlBottomPanel.TheTipper;
                 if (theTipper != null)
                 {
                     theTipper.ShowTip(tip);
                 }
             }
             Log.Info(string.Format("ShowEditorError:IsGroupChat={0},IsSingleChat={1}", this._desk.IsGroupChat, this._desk.IsSingleChat));
         }
         catch (Exception e)
         {
             Log.Exception(e);
         }
     }
 }
Exemple #11
0
 public void Init(WndAssist wnd)
 {
     _desk   = wnd.Desk;
     _tipper = wnd.ctlBottomPanel.TheTipper;
     _wnd    = wnd;
 }
Exemple #12
0
        private void UpdateShortcutUI()
        {
            var wndAssist = WndAssist.FindWndAssist(_seller);

            wndAssist.ctlRightPanel.UpdateShortcutUI();
        }
Exemple #13
0
        private ChatDesk(LoginedSeller loginedSeller, string seller)
        {
            _isBuyerRegionVisibleCacheTime          = DateTime.MinValue;
            _foregroundChangedTime                  = DateTime.MaxValue;
            _isSingleChatcloseButtonEnableCacheTime = DateTime.MinValue;
            _assistWindow               = null;
            _isGroupChatCheckTime       = DateTime.MinValue;
            _isGroupChat                = null;
            _isEvShowFinished           = true;
            _isEvHideFinished           = true;
            _preLogGroupChatNullTime    = DateTime.MinValue;
            _logGroupChatNullCount      = 0;
            _getVisiblePercentCacheTime = DateTime.MinValue;
            _getVisiblePercentCache     = 0.0;
            _isForeground               = false;
            _isVisible = true;
            _synObj    = new object();
            _preCheckCloseBuyerTime = DateTime.MinValue;
            _sameBuyerCount         = 0;
            preUpdateRectAndWindowStateIfNeedTime = DateTime.MinValue;
            _preCheckForegroundWindowTime         = DateTime.MinValue;
            _preUpdateLocationTime = DateTime.MinValue;
            _isEditorTextChanged   = false;
            _isLocationChanged     = false;
            _isAlive = true;
            Log.Info("Begin Create ChatDesk,seller=" + seller);
            Hwnd   = new HwndInfo(loginedSeller.SellerHwnd, "ChatDesk");
            Seller = seller;
            _args  = new ChatDeskEventArgs
            {
                Desk = this
            };
            Automator        = ChatDeskAutomatorFactory.Create(Hwnd, Seller);
            chatRecordChrome = ChromeDebugerCreator.Create(this);
            //chatRecordChrome.EvChromeConnected += chatRecordChrome_EvChromeConnected;
            //chatRecordChrome.EvChromeDetached += chatRecordChrome_EvChromeDetached;
            //chatRecordChrome.EvRecieveNewMessage += chatRecordChrome_EvRecieveNewMessage;
            //chatRecordChrome.EvBuyerSwitched += Contact_EvBuyerSwitched;

            //_buyerReader = new TaskWindowBuyerNameReader(this);
            //_buyerReader.EvBuyerChanged += Contact_EvBuyerChanged;

            _buyerReader = new BuyerInfoWindowNameReader(this);
            _buyerReader.EvBuyerSwitched += Contact_EvBuyerSwitched;

            Editor      = new DeskEditor(Automator.SingleChatEditorHwnd, this);
            _qnThreadId = WinApi.GetWindowThreadProcessId(loginedSeller.SellerHwnd, out _processId);

            EnterpriseHwnd                      = new HwndInfo(loginedSeller.EpHwnd, "EnterpriseRootDesk");
            _winEventHooker                     = new WinEventHooker(_qnThreadId, loginedSeller.SellerHwnd);
            _winEventHooker.EvFocused          += WinEventHooker_EvFocused;
            _winEventHooker.EvLocationChanged  += WinEventHooker_EvLocationChanged;
            _winEventHooker.EvTextChanged      += WinEventHooker_EvTextChanged;
            WinEventHooker.EvForegroundChanged += WinEventHooker_EvForegroundChanged;
            IsForeground = WinApi.IsForeground(Hwnd.Handle);
            IsVisible    = WinApi.IsVisible(Hwnd.Handle);
            UpdateRectAndWindowState();
            _timer       = new NoReEnterTimer(Loop, 100, 0);
            _sugguestion = new DeskSuggestion(this);
            DeskSet      = new HashSet <ChatDesk>(DeskSet)
            {
                this
            };
            Log.Info("ChatDesk Created.seller=" + seller);
        }