def __init__(self, parent, main, calendarEntry=None): super(CalendarEntryRecurrenceEdit, self).__init__(parent) self.parent = parent self.setupUi(self) locale = main.locale shortDay = lambda day : locale.standaloneDayName(day, QLocale.ShortFormat) longDay = lambda day : locale.standaloneDayName(day) longMonth = lambda day : locale.standaloneMonthName(day) # Use longer format for date pickers self.startDate.setDisplayFormat(main.locale.dateFormat(QLocale.ShortFormat).replace("yy", "yyyy")) self.endDate.setDisplayFormat(main.locale.dateFormat(QLocale.ShortFormat).replace("yy", "yyyy")) # Translate Ui self.mondayBox.setText(shortDay(1)) self.tuesdayBox.setText(shortDay(2)) self.wednesdayBox.setText(shortDay(3)) self.thursdayBox.setText(shortDay(4)) self.fridayBox.setText(shortDay(5)) self.saturdayBox.setText(shortDay(6)) self.sundayBox.setText(shortDay(7)) for day in xrange(1, 32): self.monthlyDayInMonthBox.addItem(unicode(OrdinalNumberFormatter.toString(day)), QVariant(day)) for week in xrange(1, 6): self.monthlyWeekInMonthBox.addItem(unicode(OrdinalNumberFormatter.toString(week)), QVariant(week)) self.yearlyWeekInMonthBox.addItem(unicode(OrdinalNumberFormatter.toString(week)), QVariant(week)) for day in xrange(1, 8): self.monthlyDayInWeekBox.addItem(longDay(day), QVariant(day)) self.yearlyDayInWeekBox.addItem(longDay(day), QVariant(day)) for month in xrange(1, 13): self.yearlyMonthInYearBox_ByDate.addItem(longMonth(month), QVariant(month)) self.yearlyMonthInYearBox_ByDay.addItem(longMonth(month), QVariant(month)) if not parent.calendarEntry: self.endDate.setDateTime(QDateTime(parent.date.addYears(3), QTime(0, 0))) self.lastType = "" self.lastDays = "" self.lastExceptions = "" self.lastStart = QDateTime() self.lastEnd = QDateTime() self.lastInterval = 1 self.connect(self, SIGNAL("accepted()"), self.recurrenceAccepted) self.connect(self, SIGNAL("rejected()"), self.resetRecurrence) self.connect(self.dailyButton, SIGNAL("clicked()"), lambda : self.ruleWidget.setCurrentWidget(self.dailyWidget)) self.connect(self.weeklyButton, SIGNAL("clicked()"), lambda : self.ruleWidget.setCurrentWidget(self.weeklyWidget)) self.connect(self.monthlyButton, SIGNAL("clicked()"), lambda : self.ruleWidget.setCurrentWidget(self.monthlyWidget)) self.connect(self.yearlyButton, SIGNAL("clicked()"), lambda : self.ruleWidget.setCurrentWidget(self.yearlyWidget)) self.connect(self.exceptionAddButton, SIGNAL("clicked()"), self.addException) self.connect(self.exceptionDeleteButton, SIGNAL("clicked()"), self.deleteException)
def calendarEntryRecurrenceToString(self, type, days, exceptions, start, end, interval): days = CalendarEntry.recurrenceParsedDays(type, days) recurrence = self.tr("No recurrence") if type == "daily": if interval == 1: recurrence = self.tr("Recurs daily") else: recurrence = self.tr("Recurs every %n day(s)", "", interval) elif type == "weekly": weekdays = unicode(self.tr(", ", "join string for weekdays")).join( [unicode(self.main.locale.standaloneDayName(int(day)+1, QLocale.ShortFormat)) for day in days] ) if interval == 1: recurrence = self.tr("Recurs weekly on %1").arg(weekdays) else: recurrence = self.tr("Recurs every %n week(s) on %1", "", interval).arg(weekdays) elif type == "monthly_by_dates": datesinmonth = unicode(self.tr(", ", "join string for dates in month")).join( [unicode(OrdinalNumberFormatter.toString(int(day)+1)) for day in days] ) if interval == 1: recurrence = self.tr("Recurs monthly on the %1 day").arg(datesinmonth) else: recurrence = self.tr("Recurs every %n month(s) on the %1 day", "", interval).arg(datesinmonth) elif type == "monthly_by_days": locstring = list() for day in days: locstring.append(unicode(OrdinalNumberFormatter.toString(int(day['week'])+1) + ' ' + self.main.locale.standaloneDayName(int(day['day'])+1)) ) daysinmonth = unicode(self.tr(" and ", "join string for days in month")).join(locstring) if interval == 1: recurrence = self.tr("Recurs every month on the %1").arg(daysinmonth) else: recurrence = self.tr("Recurs every %n month(s) on the %1", "", interval).arg(daysinmonth) elif type == "yearly_by_date": arg = self.tr("%1 %2", "month day{ordinal number}").arg(self.main.locale.monthName(start.date().month()), OrdinalNumberFormatter.toString(start.date().day())) if interval == 1: recurrence = self.tr("Recurs yearly on %1").arg(arg) else: recurrence = self.tr("Recurs every %n years(s) on %1", "", interval).arg(arg) elif type == "yearly_by_day": arg = self.tr("the %1 %2 of %3", "the day{ordinal number} {weekday} of month").arg(OrdinalNumberFormatter.toString(days['week']+1), self.main.locale.dayName(days['day']+1), self.main.locale.monthName(days['month']+1)) if interval == 1: recurrence = self.tr("Recurs every year on %1").arg(arg) else: recurrence = self.tr("Recurs every %n years(s) on %1", "", interval).arg(arg) if recurrence and end and end.isValid(): recurrence = self.tr("%1 until %2", "Recurs ... until").arg(recurrence, self.main.locale.toString(end.date(), QLocale.ShortFormat)) return recurrence
def calendarEntryRecurrenceToString(self, type, days, exceptions, start, end, interval): days = CalendarEntry.recurrenceParsedDays(type, days) recurrence = self.tr("No recurrence") if type == "daily": if interval == 1: recurrence = self.tr("Recurs daily") else: recurrence = self.tr("Recurs every %n day(s)", "", interval) elif type == "weekly": weekdays = unicode(self.tr(", ", "join string for weekdays")).join( [ unicode( self.main.locale.standaloneDayName( int(day) + 1, QLocale.ShortFormat)) for day in days ]) if interval == 1: recurrence = self.tr("Recurs weekly on %1").arg(weekdays) else: recurrence = self.tr("Recurs every %n week(s) on %1", "", interval).arg(weekdays) elif type == "monthly_by_dates": datesinmonth = unicode( self.tr(", ", "join string for dates in month")).join([ unicode(OrdinalNumberFormatter.toString(int(day) + 1)) for day in days ]) if interval == 1: recurrence = self.tr("Recurs monthly on the %1 day").arg( datesinmonth) else: recurrence = self.tr("Recurs every %n month(s) on the %1 day", "", interval).arg(datesinmonth) elif type == "monthly_by_days": locstring = list() for day in days: locstring.append( unicode( OrdinalNumberFormatter.toString(int(day['week']) + 1) + ' ' + self.main.locale.standaloneDayName( int(day['day']) + 1))) daysinmonth = unicode( self.tr(" and ", "join string for days in month")).join(locstring) if interval == 1: recurrence = self.tr("Recurs every month on the %1").arg( daysinmonth) else: recurrence = self.tr("Recurs every %n month(s) on the %1", "", interval).arg(daysinmonth) elif type == "yearly_by_date": arg = self.tr("%1 %2", "month day{ordinal number}").arg( self.main.locale.monthName(start.date().month()), OrdinalNumberFormatter.toString(start.date().day())) if interval == 1: recurrence = self.tr("Recurs yearly on %1").arg(arg) else: recurrence = self.tr("Recurs every %n years(s) on %1", "", interval).arg(arg) elif type == "yearly_by_day": arg = self.tr("the %1 %2 of %3", "the day{ordinal number} {weekday} of month").arg( OrdinalNumberFormatter.toString(days['week'] + 1), self.main.locale.dayName(days['day'] + 1), self.main.locale.monthName(days['month'] + 1)) if interval == 1: recurrence = self.tr("Recurs every year on %1").arg(arg) else: recurrence = self.tr("Recurs every %n years(s) on %1", "", interval).arg(arg) if recurrence and end and end.isValid(): recurrence = self.tr("%1 until %2", "Recurs ... until").arg( recurrence, self.main.locale.toString(end.date(), QLocale.ShortFormat)) return recurrence