clone_state_indicator.py (3735B)
1 #Embedded file name: C:\BuildAgent\work\20d73f1b24eed06e\eve\release\V24.01\eve\client\script\ui\omega\upsell\components\clone_state_indicator.py 2 import carbonui 3 import carbonui.text.styles 4 import datetimeutils 5 import uthread2 6 from carbonui import Align, TextColor 7 from carbonui.primitives.layoutGrid import LayoutGrid 8 from eve.client.script.ui import eveColor 9 import omega.client.signal as omega_signals 10 from eve.common.lib import appConst 11 from localization import GetByLabel, formatters 12 from localization.formatters import timeIntervalFormatters 13 from omega.client.clone_grade_svc import get_clone_grade_svc 14 15 class CloneStateIndicator(LayoutGrid): 16 default_columns = 1 17 default_cellSpacing = (0, 2) 18 19 def __init__(self, **kw): 20 super(CloneStateIndicator, self).__init__(**kw) 21 self.state_label = carbonui.text.styles.TextBody(parent=self, align=Align.CENTERTOP) 22 self.time_left_label = carbonui.text.styles.TextDetail(parent=self, align=Align.CENTERTOP, color=TextColor.SECONDARY) 23 uthread2.start_tasklet(self.update) 24 omega_signals.on_omega_license_expired.connect(self._on_subscription_changed) 25 omega_signals.on_omega_license_changed.connect(self._on_subscription_changed) 26 omega_signals.on_omega_license_acquired.connect(self._on_subscription_changed) 27 omega_signals.on_omega_recurring_changed.connect(self._on_subscription_changed) 28 omega_signals.on_cache_invalidated.connect(self._on_subscription_changed) 29 30 def Close(self): 31 try: 32 omega_signals.on_omega_license_expired.disconnect(self._on_subscription_changed) 33 omega_signals.on_omega_license_changed.disconnect(self._on_subscription_changed) 34 omega_signals.on_omega_license_acquired.disconnect(self._on_subscription_changed) 35 omega_signals.on_omega_recurring_changed.disconnect(self._on_subscription_changed) 36 omega_signals.on_cache_invalidated.disconnect(self._on_subscription_changed) 37 finally: 38 super(CloneStateIndicator, self).Close() 39 40 def _on_subscription_changed(self, *args): 41 self.update() 42 43 def update(self): 44 svc = get_clone_grade_svc() 45 is_omega = svc.is_omega_without_grace_period() 46 if is_omega: 47 current_state = 'UI/CloneState/Omega' 48 color = eveColor.OMEGA_YELLOW 49 else: 50 current_state = 'UI/CloneState/Alpha' 51 color = TextColor.HIGHLIGHT 52 self.state_label.text = GetByLabel('UI/OmegaUpsell/CurrentCloneState', current_state=GetByLabel(current_state)) 53 self.state_label.color = color 54 if is_omega: 55 self.time_left_label.display = True 56 self.time_left_label.text = self.get_expiry_date_text() 57 else: 58 self.time_left_label.display = False 59 60 def get_expiry_date_text(self): 61 svc = get_clone_grade_svc() 62 if svc.is_omega_subscription_recurring(): 63 return GetByLabel('UI/OmegaUpsell/RecurringSubscription') 64 else: 65 omega_license = svc.get_omega_license_without_grace_period() 66 expiry_date = datetimeutils.datetime_to_filetime(omega_license.expiry_date) 67 expiry_date = formatters.dateTimeFormatters.FormatDateTime(expiry_date, timeFormat=None) 68 return GetByLabel('UI/OmegaUpsell/ActiveUntil', expiry_date=expiry_date, color=eveColor.OMEGA_YELLOW_HEX) 69 70 def get_time_left_formatted_text(self, duration): 71 if duration > appConst.DAY: 72 showTo = 'day' 73 elif duration > appConst.HOUR: 74 showTo = 'hour' 75 else: 76 showTo = 'minute' 77 return timeIntervalFormatters.FormatTimeIntervalWritten(duration, showFrom='day', showTo=showTo)