""" Android app.time 组件 — TimeManager, TimeZoneCapabilities, TimeConfiguration 等 方法签名完全对齐 Android SDK """ from __future__ import annotations import datetime import time as _time from typing import Any, Dict, List, Optional, Set from .._core import Stub, AndroidOnlyError from ..java.lang import RuntimeException IllegalArgumentException = type("IllegalArgumentException", (RuntimeException,), {}) # ═══════════════════════════════════════════════════════════════ # TimeConfiguration # ═══════════════════════════════════════════════════════════════ class TimeConfiguration(Stub): """TimeConfiguration — 时间配置""" def __init__(self): super().__init__() self._override_enabled: bool = False self._override_time_zone_ids: List[str] = [] def setOverrideEnabled(self, enabled: bool): self._override_enabled = enabled def isOverrideEnabled(self) -> bool: return self._override_enabled def getOverrideTimeZoneIds(self) -> List[str]: return list(self._override_time_zone_ids) def setOverrideTimeZoneIds(self, ids: List[str]): self._override_time_zone_ids = list(ids) def toString(self) -> str: return f"TimeConfiguration{{overrideEnabled={self._override_enabled}}}" # ═══════════════════════════════════════════════════════════════ # TimeZoneCapabilities # ═══════════════════════════════════════════════════════════════ class TimeZoneCapabilities(Stub): """TimeZoneCapabilities — 时区能力""" CAPABILITY_NOT_SUPPORTED = 0 CAPABILITY_NOT_ALLOWED = 1 CAPABILITY_ALLOWED = 2 def __init__(self): super().__init__() self._auto_detection_capability: int = self.CAPABILITY_ALLOWED self._manual_detection_capability: int = self.CAPABILITY_ALLOWED self._configure_auto_detection_capability: int = self.CAPABILITY_ALLOWED def getAutoDetectionCapability(self) -> int: return self._auto_detection_capability def getManualDetectionCapability(self) -> int: return self._manual_detection_capability def isAutoDetectionSupported(self) -> bool: return True def isManualDetectionSupported(self) -> bool: return True def toString(self) -> str: return (f"TimeZoneCapabilities{{autoDetection={self._auto_detection_capability}, " f"manualDetection={self._manual_detection_capability}}}") # ═══════════════════════════════════════════════════════════════ # TimeZoneCapabilitiesAndConfig # ═══════════════════════════════════════════════════════════════ class TimeZoneCapabilitiesAndConfig(Stub): """TimeZoneCapabilitiesAndConfig — 时区能力与配置""" def __init__(self): super().__init__() self._capabilities = TimeZoneCapabilities() self._configuration = TimeConfiguration() def getCapabilities(self) -> TimeZoneCapabilities: return self._capabilities def getConfiguration(self) -> TimeConfiguration: return self._configuration def toString(self) -> str: return (f"TimeZoneCapabilitiesAndConfig{{capabilities={self._capabilities}, " f"config={self._configuration}}}") # ═══════════════════════════════════════════════════════════════ # TimeManager # ═══════════════════════════════════════════════════════════════ class TimeManager(Stub): """TimeManager — 时间管理器""" EXTRA_SUGGESTION = "suggestion" EXTRA_RESULT = "result" RESULT_OK = 0 RESULT_ERROR = -1 RESULT_NOT_ALLOWED = -2 RESULT_SKIPPED = -3 def __init__(self): super().__init__() # ── Time zone ── def getTimeZoneCapabilitiesAndConfig(self) -> TimeZoneCapabilitiesAndConfig: return TimeZoneCapabilitiesAndConfig() def getDetectedTimeZoneSource(self) -> int: return 0 def suggestExternalTimeZone(self, suggestion: Any) -> int: return self.RESULT_OK def suggestExternalTime(self, suggestion: Any) -> int: return self.RESULT_OK def confirmTimeChange(self, confirmation: Any) -> int: return self.RESULT_OK # ── Time / Time zone setting ── def isAutoTimeEnabled(self) -> bool: return True def isAutoTimeZoneEnabled(self) -> bool: return True def setAutoTimeEnabled(self, enabled: bool): pass def setAutoTimeZoneEnabled(self, enabled: bool): pass def setTime(self, millis: int): try: dt = datetime.datetime.fromtimestamp(millis / 1000.0) _time.mktime(dt.timetuple()) except (OSError, ValueError): pass def setTimeZone(self, timeZone: str): pass def updateTime(self, time: Any): pass def updateTimeZone(self, timeZone: Any): pass def toString(self) -> str: return f"TimeManager@{hex(id(self))}" # ═══════════════════════════════════════════════════════════════ # __all__ # ═══════════════════════════════════════════════════════════════ __all__ = [ "TimeManager", "TimeZoneCapabilities", "TimeZoneCapabilitiesAndConfig", "TimeConfiguration", ]