careerControllerUI.py (4094B)
1 #Embedded file name: C:\BuildAgent\work\20d73f1b24eed06e\eve\release\V24.01\eve\client\script\ui\shared\careerPortal\careerControllerUI.py 2 from carbonui.uicore import uicore 3 import eve.client.script.ui.shared.careerPortal.careerConst as careerConst 4 import eve.client.script.ui.shared.careerPortal.uiSettings as careerSettings 5 from careergoals.client.feature_flag import is_air_career_program_enabled 6 from careergoals.client.signal import on_air_career_program_availability_changed 7 from eve.client.script.ui.shared.careerPortal.cpSignals import on_cp_goal_tracking_added, on_cp_goal_tracking_removed 8 from careergoals.client.career_goal_svc import get_career_goals_svc 9 from eve.client.script.ui.shared.subtitles import GetSubtitlePathForVideo 10 from eve.client.script.ui.shared.videowindow import VideoPlayerWindow 11 _instance = None 12 13 def get_career_portal_controller_svc(): 14 global _instance 15 if _instance is None: 16 _instance = _CareerControllerUI() 17 return _instance 18 19 20 class _CareerControllerUI(object): 21 __notifyevents__ = ['OnCharacterSessionChanged', 'OnSessionReset'] 22 23 def __init__(self): 24 self._reset_for_character() 25 on_air_career_program_availability_changed.connect(self._on_air_career_program_availability_changed) 26 sm.RegisterNotify(self) 27 28 def __del__(self): 29 on_air_career_program_availability_changed.disconnect(self._on_air_career_program_availability_changed) 30 31 def OnCharacterSessionChanged(self, _oldCharacterID, _newCharacterID): 32 if _newCharacterID is not None: 33 self._reset_for_character() 34 35 def OnSessionReset(self): 36 self._reset_for_character() 37 38 def _reset_for_character(self): 39 self._tracked_goal_ids = careerSettings.GetTrackedGoalsFromSettings(set()) 40 41 def select_career(self, career_path_id, goal_id): 42 careerConst.SELECTED_CAREER_PATH_SETTING.set(career_path_id) 43 careerConst.CAREER_WINDOW_STATE_SETTING.set(careerConst.CareerWindowState.ACTIVITIES_VIEW) 44 get_career_goals_svc().emit_career_selected(goal_id) 45 46 def select_activity(self, activity_id, activity_name, career_path_id): 47 careerConst.SELECTED_ACTIVITY_SETTING.set(activity_id) 48 careerConst.CAREER_WINDOW_STATE_SETTING.set(careerConst.CareerWindowState.GOALS_VIEW) 49 get_career_goals_svc().emit_group_selected(activity_name, careerConst.GetCareerPathName(career_path_id)) 50 51 def select_goal(self, goal_id): 52 careerConst.SELECTED_GOAL_SETTING.set(goal_id) 53 if goal_id: 54 get_career_goals_svc().emit_goal_selected(goal_id) 55 56 def is_goal_tracked(self, goal_id): 57 return goal_id in self._tracked_goal_ids 58 59 def track_goal(self, goal_id): 60 self._tracked_goal_ids.clear() 61 self._tracked_goal_ids.add(goal_id) 62 careerSettings.StoreTrackedGoalsInSettings(self._tracked_goal_ids) 63 get_career_goals_svc().emit_goal_tracked(goal_id) 64 on_cp_goal_tracking_added(goal_id) 65 66 def untrack_goal(self, goal_id): 67 self._tracked_goal_ids.clear() 68 self._tracked_goal_ids.discard(goal_id) 69 careerSettings.StoreTrackedGoalsInSettings(self._tracked_goal_ids) 70 on_cp_goal_tracking_removed(goal_id) 71 72 def get_tracked_goals(self): 73 return self._tracked_goal_ids 74 75 def _on_air_career_program_availability_changed(self, *args): 76 if not is_air_career_program_enabled(): 77 tracked_goals = [ g for g in self._tracked_goal_ids ] 78 for g in tracked_goals: 79 self.untrack_goal(g) 80 81 def play_video(self, video_path): 82 if not video_path: 83 return 84 self._video_wnd = VideoPlayerWindow.Open(isMinimizable=False) 85 self._video_wnd.SetSize(uicore.desktop.width / 2, uicore.desktop.height / 2) 86 self._video_wnd.SetVideoPath(video_path, subtitles=GetSubtitlePathForVideo(video_path, session.languageID)) 87 self._video_wnd.SetVideoFinishedCallback(self._on_video_finished) 88 self._video_wnd.ShowModal() 89 90 def _on_video_finished(self): 91 if self._video_wnd: 92 self._video_wnd.Close()