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)
Пример #2
0
 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)))
Пример #6
0
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))
            )