⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 repeatentry.cpp

📁 Trolltech公司发布的图形界面操作系统。可在qt-embedded-2.3.10平台上编译为嵌入式图形界面操作系统。
💻 CPP
📖 第 1 页 / 共 2 页
字号:
	    : strEndWeekDay1)	.arg( TimeString::localDayOfWeek( mEvent.start().date(), TIMESTRING_LENGTH ) );    QRadioButton *r1 = new QRadioButton(strDate, monthGroup);    r1 = new QRadioButton(strWeekDay, monthGroup);    r1 = new QRadioButton(strEndWeekDay, monthGroup);    subStack->addWidget(monthGroup, 2);    layout->addWidget(subStack);    //QSpacerItem *si = new QSpacerItem(0, 0, QSizePolicy::Minimum, QSizePolicy::Expanding);    //layout->addItem(si);    // and last but not least, the label.. later.    //QFrame#ifndef QTOPIA_PHONE    QFrame *fr = new QFrame(this);    fr->setMinimumSize(QSize(40, 50));    fr->setSizePolicy(QSizePolicy(QSizePolicy::Minimum, QSizePolicy::Expanding));    fr->setFrameStyle(QFrame::Box | QFrame::Sunken);    subLayout = new QVBoxLayout(fr);    subLayout->setSpacing(1);    subLayout->setMargin(5);    descLabel = new RichLabel(fr);    descLabel->setSizePolicy(QSizePolicy(QSizePolicy::Minimum, QSizePolicy::Expanding));    subLayout->addWidget(descLabel);    layout->addWidget(fr);#endif    // pretend we just changed repeat types.    setRepeatType(currentID(typeSelector));#ifdef QTOPIA_DESKTOP    QHBoxLayout *hb = new QHBoxLayout(layout);    QSpacerItem *s = new QSpacerItem(10,1);    QPushButton *okBtn = new QPushButton(tr("OK"), this);    QPushButton *cancelBtn = new QPushButton(tr("Cancel"), this);    hb->addItem(s);    hb->addWidget(okBtn);    hb->addWidget(cancelBtn);    connect(okBtn, SIGNAL(clicked()), this, SLOT(accept()));    connect(cancelBtn, SIGNAL(clicked()), this, SLOT(reject()));#endif    // Connection time.    connect(typeSelector, SIGNAL(clicked(int)), this, SLOT(setRepeatType(int)));    connect(freqSelector, SIGNAL(valueChanged(int)),	    this, SLOT(setFrequency(int)));    connect(weekGroup, SIGNAL(dayToggled(int,bool)),	    this, SLOT(setRepeatOnWeekDay(int,bool)));    connect(monthGroup, SIGNAL(clicked(int)),	    this, SLOT(setSubRepeatType(int)));#ifndef QTOPIA_PHONE    resize(100,100);#endif}RepeatEntry::~RepeatEntry(){}QString RepeatEntry::trSmallOrdinal(int n) const{    if ( n == 1 ) return tr("first","eg. first Friday of month");    else if ( n == 2 ) return tr("second");    else if ( n == 3 ) return tr("third");    else if ( n == 4 ) return tr("fourth");    else if ( n == 5 ) return tr("fifth");    else return QString::number(n);}void RepeatEntry::refreshLabels(){    QString type;    switch (mEvent.repeatType())    {	case PimEvent::NoRepeat:#ifndef QTOPIA_PHONE	    descLabel->setText(tr("Don't repeat."));#endif	    break;	case PimEvent::Daily:#ifndef QTOPIA_PHONE	    if (mEvent.frequency() == 1)		descLabel->setText(tr("Repeat every day."));	    else		descLabel->setText(tr("Repeat every %1 days.").arg(mEvent.frequency()));#endif	    type = tr("Every %1 day(s)");	    break;	case PimEvent::Weekly:	    {		type = tr("Every %1 week(s)");#ifndef QTOPIA_PHONE		// first work out how many items in the list of weeks		int i;		int count = 0;		int dow = mEvent.start().date().dayOfWeek();		int firstday = dow;		int lastday = dow;		for (i = 0; i < 7; i++) {		    if (mEvent.repeatOnWeekDay(dow)) {			count++;			lastday = dow;		    }		    dow++;		    if (dow > 7) dow = 1;		}		// pick a string		QString buf;		if (mEvent.frequency() == 1) {		    switch(count) {			default:			case 1:			    buf = tr("Repeat every week on %1.", "e.g. %1 = Monday" );			    break;			case 2:			    buf = tr("Repeat every week on %1 and %2.", "e.g. %1 = Monday, %2 = Wednesday..." );			    break;			case 3:			    buf = tr("Repeat every week on %1, %2 and %3.", "e.g. %1 = Monday, %2 = Wednesday..." );			    break;			case 4:			    buf = tr("Repeat every week on %1, %2, %3 and %4.", "e.g. %1 = Monday, %2 = Wednesday..." );			    break;			case 5:			    buf = tr("Repeat every week on %1, %2, %3, %4 and %5.", "e.g. %1 = Monday, %2 = Wednesday..." );			    break;			case 6:			    buf = tr("Repeat every week on %1, %2, %3, %4, %5 and %6.", "e.g. %1 = Monday, %2 = Wednesday..." );			    break;			case 7:			    buf = tr("Repeat every day.");			    break;		    }		} else {		    switch(count) {			default:			case 1:			    buf = tr("Repeat every %1 weeks on %2.", "e.g. %1 = 3, %2 = Monday" );			    break;			case 2:			    buf = tr("Repeat every %1 weeks on %2 and %3.", "e.g. %1 = 3, %2 = Monday, %3 = Wednesday..." );			    break;			case 3:			    buf = tr("Repeat every %1 weeks on %2, %3 and %4.", "e.g. %1 = 3, %2 = Monday, %3 = Wednesday..." );			    break;			case 4:			    buf = tr("Repeat every %1 weeks on %2, %3, %4 and %5.", "e.g. %1 = 3, %2 = Monday, %3 = Wednesday..." );			    break;			case 5:			    buf = tr("Repeat every %1 weeks on %2, %3, %4, %5 and %6.", "e.g. %1 = 3, %2 = Monday, %3 = Wednesday..." );			    break;			case 6:			    buf = tr("Repeat every %1 weeks on %2, %3, %4, %5, %6 and %7.", "e.g. %1 = 3, %2 = Monday, %3 = Wednesday..." );			    break;			case 7:			    // more complex.... 			    buf = tr("Repeat every %1 weeks from %2 to %3.", 				    "e.g. %1 = 3, %2 = Monday, %3 = Sunday.  "				    "Describes an event that occurs each day of the "				    "week for a full week, starting on %2 and ending on %3, every %1 weeks." );			    break;		    }		    buf = buf.arg(mEvent.frequency());		    if (count == 7) {			// fill in aditional days now.			buf = buf.arg( TimeString::localDayOfWeek(firstday, TimeString::Long ) );			buf = buf.arg( TimeString::localDayOfWeek(lastday, TimeString::Long ) );		    }		}		if (count != 7) {		    dow = mEvent.start().date().dayOfWeek();		    for (i = 0; i < 7; i++) {			if (mEvent.repeatOnWeekDay(dow))			    buf = buf.arg( TimeString::localDayOfWeek(dow, TimeString::Long ) );			dow++;			if (dow > 7) dow = 1;		    }		}		descLabel->setText(buf);#endif	    }	    break;	case PimEvent::MonthlyDate:#ifndef QTOPIA_PHONE	    if (mEvent.frequency() == 1)		descLabel->setText(			tr("Repeat every month on day %1 of the month.","eg. %1 = 3")			.arg(mEvent.start().date().day())			);	    else		descLabel->setText(			tr("Repeat every %1 months on day %2 of the month.", "eg. %1 = 4, %2 = 3rd")			.arg(mEvent.frequency())			.arg(mEvent.start().date().day())			);#endif	    type = tr("Every %1 month(s)");	    break;	case PimEvent::MonthlyDay:#ifndef QTOPIA_PHONE	    if (mEvent.frequency() == 1)		descLabel->setText(tr("Repeat every month on the %1 %2 of the month.", "eg. %1 %2 = 2nd Friday")			.arg(trSmallOrdinal(				Calendar::weekInMonth(mEvent.start().date())))			.arg(TimeString::localDayOfWeek(mEvent.start().date(), TimeString::Long))			);	    else		descLabel->setText(tr("Repeat every %1 months on the %2 %3 of the month.", "eg. %1 = 4, %2 %3 = 2nd Friday")			.arg(mEvent.frequency()) 			.arg(trSmallOrdinal(				Calendar::weekInMonth(mEvent.start().date())))			.arg(TimeString::localDayOfWeek(mEvent.start().date(), TimeString::Long))			);#endif	    type = tr("Every %1 month(s)");	    break;	case PimEvent::MonthlyEndDay:	    {#ifndef QTOPIA_PHONE		int fromEndOfWeek = mEvent.start().date().daysInMonth()		    - mEvent.start().date().day();		fromEndOfWeek = fromEndOfWeek > 0 ? fromEndOfWeek / 7 + 1 : 1;		if (mEvent.frequency() == 1) {		    if (fromEndOfWeek == 1) {			descLabel->setText(				tr("Repeat every month on the last %1 of the month.","eg. %1 = Friday")				.arg(TimeString::localDayOfWeek(mEvent.start().date(), TimeString::Long))				);		    } else {			descLabel->setText(				tr("Repeat every month on %1 last %2 of the month.", "eg. %1 = 2nd, %2 = Friday")				.arg( trSmallOrdinal(fromEndOfWeek) )				.arg(TimeString::localDayOfWeek(mEvent.start().date(), TimeString::Long))				);		    }		} else {		    if (fromEndOfWeek == 1) {			descLabel->setText(				tr("Repeat every %2 months on the last %1 of the month.","eg. %1 = Friday, %2 = 4")				.arg(TimeString::localDayOfWeek(mEvent.start().date(), TimeString::Long))				.arg(mEvent.frequency()) 				);		    } else {			descLabel->setText(				tr("Repeat every %3 months on %1 last %2 of the month.", "eg. %1 = 2nd, %2 = Friday, %3 = 4")				.arg( trSmallOrdinal(fromEndOfWeek) )				.arg(TimeString::localDayOfWeek(mEvent.start().date(), TimeString::Long))				.arg(mEvent.frequency()) 				);		    }		}#endif		type = tr("Every %1 month(s)");	    }	    break;	case PimEvent::Yearly:#ifndef QTOPIA_PHONE	    if (mEvent.frequency() == 1)		descLabel->setText(tr("Repeat every year."));	    else		descLabel->setText(tr("Repeat every %1 years.").arg(mEvent.frequency()));#endif	    type = tr("Every %1 year(s)");	    break;	default:#ifndef QTOPIA_PHONE	    descLabel->setText("Bug <2316>"); // No tr#endif	    break;    }    int spinbox = type.find("%1");    everyLabel->setText(type.left(spinbox));    typeLabel->setText(type.mid(spinbox+2));}PimEvent RepeatEntry::event() const{    return mEvent;}void RepeatEntry::setRepeatType(int t){    int i;    switch (t) {	case 0:	    mEvent.setRepeatType(PimEvent::Daily);	    fStack->raiseWidget(1);	    subStack->raiseWidget(0);	    break;	case 1:	    mEvent.setRepeatType(PimEvent::Weekly);	    fStack->raiseWidget(1);	    subStack->raiseWidget(1);	    for(i = 1; i <= 7; i++)		weekGroup->toggleDay(i, mEvent.repeatOnWeekDay(i));	    break;	case 2:	    // because has sub type, check if we are initializing by	    // if we are already in this tab.  if not, then go the default.	    switch (mEvent.repeatType()) {		case PimEvent::MonthlyDate:		    ((QRadioButton *)monthGroup->find(0))->setChecked(TRUE);		    break;		case PimEvent::MonthlyDay:		    ((QRadioButton *)monthGroup->find(1))->setChecked(TRUE);		    break;		case PimEvent::MonthlyEndDay:		    ((QRadioButton *)monthGroup->find(2))->setChecked(TRUE);		    break;		default:		    ((QRadioButton *)monthGroup->find(0))->setChecked(TRUE);		    mEvent.setRepeatType(PimEvent::MonthlyDate);		    break;	    }	    fStack->raiseWidget(1);	    subStack->raiseWidget(2);	    break;	case 3:	    mEvent.setRepeatType(PimEvent::Yearly);	    fStack->raiseWidget(1);	    subStack->raiseWidget(0);	    break;    }    refreshLabels();}void RepeatEntry::setSubRepeatType(int t){    if (currentID(typeSelector) == 2) {	switch (t) {	    case 0:		mEvent.setRepeatType(PimEvent::MonthlyDate);		break;	    case 1:		mEvent.setRepeatType(PimEvent::MonthlyDay);		break;	    default:		mEvent.setRepeatType(PimEvent::MonthlyEndDay);		break;	}    }    refreshLabels();}void RepeatEntry::setFrequency(int f){    mEvent.setFrequency(f);    refreshLabels();}void RepeatEntry::setRepeatOnWeekDay(int d, bool b){    mEvent.setRepeatOnWeekDay(d, b);    refreshLabels();}void RepeatEntry::setStartOnMonday(bool b){    weekGroup->setStartOnMonday(b);}void RepeatEntry::keyPressEvent( QKeyEvent *e ){    //qDebug( "key %d (up %d, down %d)", e->key(), Key_Up, Key_Down );#ifdef QTOPIA_PHONE    switch ( e->key() ) {	case Key_Left:	    nextButton( (QWidget**)typeBtn, 4, TRUE );	    break;	case Key_Right:	    nextButton( (QWidget**)typeBtn, 4 );	    break;	default:	    QDialog::keyPressEvent( e );	    break;    }#else    QDialog::keyPressEvent( e );#endif}#include "repeatentry.moc"

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -