def __init__(self): super(ClanPersonalInvitesView, self).__init__() self._paginator = ClanPersonalInvitesPaginator(self.webCtrl, getPlayerDatabaseID(), [CLAN_INVITE_STATES.ACTIVE]) self._cooldown = CooldownHelper([WebRequestDataType.ACCEPT_APPLICATION, WebRequestDataType.ACCEPT_INVITE, WebRequestDataType.DECLINE_APPLICATION, WebRequestDataType.DECLINE_INVITE, WebRequestDataType.DECLINE_INVITES, WebRequestDataType.CLANS_INFO, WebRequestDataType.CLAN_RATINGS, WebRequestDataType.ACCOUNT_INVITES], self._onCooldownHandle, CoolDownEvent.WGCG)
def __init__(self): super(ClanPersonalInvitesView, self).__init__() self._paginator = ClanPersonalInvitesPaginator( self.clansCtrl, getPlayerDatabaseID(), [CLAN_INVITE_STATES.ACTIVE]) self._cooldown = CooldownHelper([ CLAN_REQUESTED_DATA_TYPE.ACCEPT_APPLICATION, CLAN_REQUESTED_DATA_TYPE.ACCEPT_INVITE, CLAN_REQUESTED_DATA_TYPE.DECLINE_APPLICATION, CLAN_REQUESTED_DATA_TYPE.DECLINE_INVITE, CLAN_REQUESTED_DATA_TYPE.DECLINE_INVITES, CLAN_REQUESTED_DATA_TYPE.CLANS_INFO, CLAN_REQUESTED_DATA_TYPE.CLAN_RATINGS, CLAN_REQUESTED_DATA_TYPE.ACCOUNT_INVITES ], self._onCooldownHandle, CoolDownEvent.CLAN)
def __init__(self): super(ClanPersonalInvitesView, self).__init__() self._paginator = ClanPersonalInvitesPaginator(g_clanCtrl, getPlayerDatabaseID(), [CLAN_INVITE_STATES.ACTIVE]) self._cooldown = CooldownHelper([CLAN_REQUESTED_DATA_TYPE.ACCEPT_APPLICATION, CLAN_REQUESTED_DATA_TYPE.ACCEPT_INVITE, CLAN_REQUESTED_DATA_TYPE.DECLINE_APPLICATION, CLAN_REQUESTED_DATA_TYPE.DECLINE_INVITE, CLAN_REQUESTED_DATA_TYPE.DECLINE_INVITES, CLAN_REQUESTED_DATA_TYPE.CLANS_INFO, CLAN_REQUESTED_DATA_TYPE.CLAN_RATINGS, CLAN_REQUESTED_DATA_TYPE.ACCOUNT_INVITES], self._onCooldownHandle, CoolDownEvent.CLAN)
def __init__(self): super(ClanPersonalInvitesView, self).__init__() self._paginator = ClanPersonalInvitesPaginator(g_clanCtrl, getPlayerDatabaseID(), [CLAN_INVITE_STATES.ACTIVE]) self._cooldown = CooldownHelper(self.__coolDownRequests, self._onCooldownHandle, CoolDownEvent.CLAN)
class ClanPersonalInvitesView(ClanPersonalInvitesViewMeta, ClanListener): __coolDownRequests = [CLAN_REQUESTED_DATA_TYPE.ACCEPT_APPLICATION, CLAN_REQUESTED_DATA_TYPE.ACCEPT_INVITE, CLAN_REQUESTED_DATA_TYPE.DECLINE_APPLICATION, CLAN_REQUESTED_DATA_TYPE.DECLINE_INVITE, CLAN_REQUESTED_DATA_TYPE.DECLINE_INVITES] def __init__(self): super(ClanPersonalInvitesView, self).__init__() self._paginator = ClanPersonalInvitesPaginator(g_clanCtrl, getPlayerDatabaseID(), [CLAN_INVITE_STATES.ACTIVE]) self._cooldown = CooldownHelper(self.__coolDownRequests, self._onCooldownHandle, CoolDownEvent.CLAN) def declineAllSelectedInvites(self): self._paginator.declineList(self.dataProvider.getCheckedIDs()) def acceptInvite(self, dbID): self._paginator.accept(int(dbID)) def declineInvite(self, dbID): self._paginator.decline(int(dbID)) def showMore(self): if not self._paginator.isInProgress(): self.showWaiting(True) self._paginator.right() def setSelectAllInvitesCheckBoxSelected(self, checked): self.dataProvider.setSelectAll(checked) self._updateDeclineSelectedGroup() def setInviteSelected(self, dbID, checked): self.dataProvider.setCheckedID(dbID, checked) self._updateDeclineSelectedGroup() def onSortChanged(self, dataProvider, sort): order = sort[0][1] secondSort = tuple(((item, order) for item in self._getSecondSortFields())) if not self._paginator.isInProgress(): self.showWaiting(True) self._paginator.sort(sort + secondSort) def onAccountInvitesReceived(self, invites): super(ClanPersonalInvitesView, self).onAccountInvitesReceived(invites) self._enableRefreshBtn(True) def showWaiting(self, show): if show: self._parentWnd.as_showWaitingS(CLANS.CLANPERSONALINVITESWINDOW_LOADING, {}) elif not self._paginator.isInProgress(): self._parentWnd.as_hideWaitingS() def refreshTable(self): self._enableRefreshBtn(False) self.showWaiting(True) self._paginator.refresh() def _createSearchDP(self): return PersonalInvitesDataProvider(self) def _onAttachedToWindow(self): super(ClanPersonalInvitesView, self)._onAttachedToWindow() self.showWaiting(True) self.setSelectAllInvitesCheckBoxSelected(False) self._updateDeclineSelectedText(0) self._cooldown.start() self._paginator.onListUpdated += self._onListUpdated self._paginator.onListItemsUpdated += self._onListItemsUpdated self._paginator.reset() def _populate(self): super(ClanPersonalInvitesView, self)._populate() self.startClanListening() def _dispose(self): self._paginator.onListUpdated -= self._onListUpdated self._paginator.onListItemsUpdated -= self._onListItemsUpdated self._cooldown.stop() self._cooldown = None self.stopClanListening() g_clanCtrl.clearClanCommonDataCache() super(ClanPersonalInvitesView, self)._dispose() return def _onCooldownHandle(self, isInCooldown): self.showWaiting(isInCooldown) def _onListUpdated(self, selectedID, isFullUpdate, isReqInCoolDown, result): self._updateSortField(self._paginator.getLastSort()) status, data = result if status is True: self._enableRefreshBtn(False) if len(data) == 0: self.as_showDummyS(CLANS_ALIASES.INVITE_WINDOW_DUMMY_NO_PERSONAL_INVITES) self.dataProvider.rebuildList(None, False) else: g_clanCtrl.updateClanCommonDataCache([ ClanCommonData.fromClanPersonalInviteWrapper(item) for item in data ]) self.dataProvider.rebuildList(data, self._paginator.canMoveRight()) self.as_hideDummyS() else: self._enableRefreshBtn(True, toolTip=CLANS.CLANINVITESWINDOW_TOOLTIPS_REFRESHBUTTON_ENABLEDTRYTOREFRESH) self.as_showDummyS(CLANS_ALIASES.INVITE_WINDOW_DUMMY_SERVER_ERROR) self._updateDeclineSelectedGroup() self.showWaiting(False) return def _onListItemsUpdated(self, paginator, items): self.dataProvider.refreshItems(items) self._updateDeclineSelectedGroup() if not self._paginator.isInProgress(): self.showWaiting(False) def _updateDeclineSelectedGroup(self): hasInvites = self.dataProvider.itemsCount() > 0 self._updateDeclineSelectedText(self.dataProvider.selectedCount()) self.as_setSelectAllCheckboxStateS(self.dataProvider.areAllSelected(), hasInvites) def _updateDeclineSelectedText(self, count): self.as_setDeclineAllSelectedInvitesStateS(_ms(CLANS.CLANPERSONALINVITESWINDOW_DECLINESELECTED, count=count), False if count == 0 or self._paginator.isInProgress() else True) def _getSecondSortFields(self): return ('createdAt',) def _makeHeaders(self): return [self._packHeaderColumnData('clanName', CLANS.CLANPERSONALINVITESWINDOW_TABLE_CLANNAME, 233, CLANS.CLANPERSONALINVITESWINDOW_TOOLTIPS_TABLE_INVITES_CLANNAME, textAlign='left', enabled=True), self._packHeaderColumnData('message', '', 73, CLANS.CLANPERSONALINVITESWINDOW_TOOLTIPS_TABLE_INVITES_MESSAGE, RES_ICONS.MAPS_ICONS_CLANS_INVITESWINDOW_ICON_STATISTICS_CLAN_INVITE_098, enabled=True), self._packHeaderColumnData('personalRating', '', 98, CLANS.CLANPERSONALINVITESWINDOW_TOOLTIPS_TABLE_INVITES_RATING, RES_ICONS.MAPS_ICONS_STATISTIC_RATING24, enabled=True), self._packHeaderColumnData('battlesCount', '', 98, CLANS.CLANPERSONALINVITESWINDOW_TOOLTIPS_TABLE_INVITES_BATTLESCOUNT, RES_ICONS.MAPS_ICONS_STATISTIC_BATTLES24, enabled=True), self._packHeaderColumnData('wins', '', 98, CLANS.CLANPERSONALINVITESWINDOW_TOOLTIPS_TABLE_INVITES_WINS, RES_ICONS.MAPS_ICONS_STATISTIC_WINS24, enabled=True), self._packHeaderColumnData('awgExp', '', 98, CLANS.CLANPERSONALINVITESWINDOW_TOOLTIPS_TABLE_INVITES_AWGEXP, RES_ICONS.MAPS_ICONS_STATISTIC_AVGEXP24, enabled=True), self._packHeaderColumnData('status', CLANS.CLANPERSONALINVITESWINDOW_TABLE_STATUS, 160, CLANS.CLANPERSONALINVITESWINDOW_TOOLTIPS_TABLE_INVITES_STATUS, enabled=True), self._packHeaderColumnData('actions', CLANS.CLANPERSONALINVITESWINDOW_TABLE_ACTIONS, 132, CLANS.CLANPERSONALINVITESWINDOW_TOOLTIPS_TABLE_REQUESTS_ACTIONS, enabled=False)] def _makeTexts(self): texts = super(ClanPersonalInvitesView, self)._makeTexts() texts.append({'alias': CLANS_ALIASES.INVITE_WINDOW_DUMMY_NO_PERSONAL_INVITES, 'title': CLANS.CLANPERSONALINVITESWINDOW_NOINVITES}) return texts def _enableRefreshBtn(self, enable, toolTip = None): if enable: self.as_updateButtonRefreshStateS(True, makeTooltip(body=_ms(toolTip or CLANS.CLANPERSONALINVITESWINDOW_TOOLTIPS_REFRESHBUTTON_ENABLED))) else: self.as_updateButtonRefreshStateS(False, makeTooltip(body=_ms(toolTip or CLANS.CLANPERSONALINVITESWINDOW_TOOLTIPS_REFRESHBUTTON_DISABLED)))
class ClanPersonalInvitesView(ClanPersonalInvitesViewMeta, ClanListener): def __init__(self): super(ClanPersonalInvitesView, self).__init__() self._paginator = ClanPersonalInvitesPaginator( self.clansCtrl, getPlayerDatabaseID(), [CLAN_INVITE_STATES.ACTIVE]) self._cooldown = CooldownHelper([ CLAN_REQUESTED_DATA_TYPE.ACCEPT_APPLICATION, CLAN_REQUESTED_DATA_TYPE.ACCEPT_INVITE, CLAN_REQUESTED_DATA_TYPE.DECLINE_APPLICATION, CLAN_REQUESTED_DATA_TYPE.DECLINE_INVITE, CLAN_REQUESTED_DATA_TYPE.DECLINE_INVITES, CLAN_REQUESTED_DATA_TYPE.CLANS_INFO, CLAN_REQUESTED_DATA_TYPE.CLAN_RATINGS, CLAN_REQUESTED_DATA_TYPE.ACCOUNT_INVITES ], self._onCooldownHandle, CoolDownEvent.CLAN) def declineAllSelectedInvites(self): self._paginator.declineList(self.dataProvider.getCheckedIDs()) def acceptInvite(self, dbID): self._paginator.accept(int(dbID)) def declineInvite(self, dbID): self._paginator.decline(int(dbID)) def showMore(self): if not self._paginator.isInProgress(): self.showWaiting(True) self._paginator.right() def setSelectAllInvitesCheckBoxSelected(self, checked): self.dataProvider.setSelectAll(checked) self._updateDeclineSelectedGroup() def setInviteSelected(self, dbID, checked): self.dataProvider.setCheckedID(dbID, checked) self._updateDeclineSelectedGroup() def onSortChanged(self, dataProvider, sort): order = sort[0][1] secondSort = tuple( ((item, order) for item in self._getSecondSortFields())) if not self._paginator.isInProgress(): self.showWaiting(True) self._paginator.sort(sort + secondSort) def onAccountInvitesReceived(self, invites): super(ClanPersonalInvitesView, self).onAccountInvitesReceived(invites) self._enableRefreshBtn(True) def showWaiting(self, show): if show: self._parentWnd.as_showWaitingS( CLANS.CLANPERSONALINVITESWINDOW_LOADING, {}) elif not self._paginator.isInProgress(): self._parentWnd.as_hideWaitingS() def refreshTable(self): self._enableRefreshBtn(False) self.showWaiting(True) self._paginator.refresh() def _createSearchDP(self): return PersonalInvitesDataProvider(self) def _onAttachedToWindow(self): super(ClanPersonalInvitesView, self)._onAttachedToWindow() self.showWaiting(True) self.setSelectAllInvitesCheckBoxSelected(False) self._updateDeclineSelectedText(0) self._cooldown.start() self._paginator.onListUpdated += self._onListUpdated self._paginator.onListItemsUpdated += self._onListItemsUpdated self._paginator.reset() def _populate(self): super(ClanPersonalInvitesView, self)._populate() self.startClanListening() def _dispose(self): self._paginator.onListUpdated -= self._onListUpdated self._paginator.onListItemsUpdated -= self._onListItemsUpdated self._cooldown.stop() self._cooldown = None self.stopClanListening() self.clansCtrl.clearClanCommonDataCache() super(ClanPersonalInvitesView, self)._dispose() return def _onCooldownHandle(self, isInCooldown): self.dataProvider.allowActions(not isInCooldown) def _onListUpdated(self, selectedID, isFullUpdate, isReqInCoolDown, result): self._updateSortField(self._paginator.getLastSort()) status, data = result if status is True: self._enableRefreshBtn(False) if not data: self._showDummy(CLANS.CLANPERSONALINVITESWINDOW_NOINVITES) self.dataProvider.rebuildList(None, False) else: self.clansCtrl.updateClanCommonDataCache([ ClanCommonData.fromClanPersonalInviteWrapper(item) for item in data ]) self.dataProvider.rebuildList(data, self._paginator.canMoveRight()) self.as_hideDummyS() else: self._enableRefreshBtn( True, toolTip=CLANS. CLANINVITESWINDOW_TOOLTIPS_REFRESHBUTTON_ENABLEDTRYTOREFRESH) self._showDummy(CLANS.CLANINVITESWINDOW_DUMMY_SERVERERROR_TITLE, CLANS.CLANINVITESWINDOW_DUMMY_SERVERERROR_TEXT, RES_ICONS.MAPS_ICONS_LIBRARY_ALERTBIGICON, alignCenter=False) self._updateDeclineSelectedGroup() self.showWaiting(False) return def _onListItemsUpdated(self, paginator, items): self.dataProvider.refreshItems(items) self._updateDeclineSelectedGroup() if not self._paginator.isInProgress(): self.showWaiting(False) def _updateDeclineSelectedGroup(self): hasInvites = self.dataProvider.itemsCount() > 0 self._updateDeclineSelectedText(self.dataProvider.selectedCount()) self.as_setSelectAllCheckboxStateS(self.dataProvider.areAllSelected(), hasInvites) def _updateDeclineSelectedText(self, count): self.as_setDeclineAllSelectedInvitesStateS( _ms(CLANS.CLANPERSONALINVITESWINDOW_DECLINESELECTED, count=count), False if count == 0 or self._paginator.isInProgress() else True) def _getSecondSortFields(self): return ('createdAt', ) def _makeHeaders(self): return [ self._packHeaderColumnData( 'clanName', CLANS.CLANPERSONALINVITESWINDOW_TABLE_CLANNAME, 233, CLANS. CLANPERSONALINVITESWINDOW_TOOLTIPS_TABLE_INVITES_CLANNAME, textAlign='left', enabled=True, defaultSortDirection='ascending'), self._packHeaderColumnData( 'message', '', 73, CLANS.CLANPERSONALINVITESWINDOW_TOOLTIPS_TABLE_INVITES_MESSAGE, RES_ICONS. MAPS_ICONS_CLANS_INVITESWINDOW_ICON_STATISTICS_CLAN_INVITE_098, enabled=True), self._packHeaderColumnData( 'personalRating', '', 98, CLANS.CLANPERSONALINVITESWINDOW_TOOLTIPS_TABLE_INVITES_RATING, RES_ICONS.MAPS_ICONS_STATISTIC_RATING24, enabled=True), self._packHeaderColumnData( 'battlesCount', '', 98, CLANS. CLANPERSONALINVITESWINDOW_TOOLTIPS_TABLE_INVITES_BATTLESCOUNT, RES_ICONS.MAPS_ICONS_STATISTIC_BATTLES24, enabled=True), self._packHeaderColumnData( 'wins', '', 98, CLANS.CLANPERSONALINVITESWINDOW_TOOLTIPS_TABLE_INVITES_WINS, RES_ICONS.MAPS_ICONS_STATISTIC_WINS24, enabled=True), self._packHeaderColumnData( 'awgExp', '', 98, CLANS.CLANPERSONALINVITESWINDOW_TOOLTIPS_TABLE_INVITES_AWGEXP, RES_ICONS.MAPS_ICONS_STATISTIC_AVGEXP24, enabled=True), self._packHeaderColumnData( 'status', CLANS.CLANPERSONALINVITESWINDOW_TABLE_STATUS, 160, CLANS.CLANPERSONALINVITESWINDOW_TOOLTIPS_TABLE_INVITES_STATUS, enabled=True), self._packHeaderColumnData( 'actions', CLANS.CLANPERSONALINVITESWINDOW_TABLE_ACTIONS, 132, CLANS. CLANPERSONALINVITESWINDOW_TOOLTIPS_TABLE_REQUESTS_ACTIONS, enabled=False) ] def _enableRefreshBtn(self, enable, toolTip=None): if enable: self.as_updateButtonRefreshStateS( True, makeTooltip(body=_ms( toolTip or CLANS. CLANPERSONALINVITESWINDOW_TOOLTIPS_REFRESHBUTTON_ENABLED))) else: self.as_updateButtonRefreshStateS( False, makeTooltip(body=_ms( toolTip or CLANS. CLANPERSONALINVITESWINDOW_TOOLTIPS_REFRESHBUTTON_DISABLED)) )