From a6f4f3d1d27cb4f377acba137cffaf7da6329a58 Mon Sep 17 00:00:00 2001 From: gregor herrmann Date: Sun, 24 Jul 2011 11:41:14 +0000 Subject: [PATCH] Add today button to date navigator. TODO: date is not centered between prev/next arrows anymore. Cf. #29 --- NEWS | 2 ++ src/gui/daynavigatorwidget.cpp | 49 +++++++++++++++++++-------------- src/gui/daynavigatorwidget.h | 2 ++ src/gui/daynavigatorwidget.ui | 19 ++++++++++++- src/icons.qrc | 1 + src/icons/today.png | Bin 0 -> 1741 bytes 6 files changed, 51 insertions(+), 22 deletions(-) create mode 100644 src/icons/today.png diff --git a/NEWS b/NEWS index 086f7a6..c64f986 100644 --- a/NEWS +++ b/NEWS @@ -3,6 +3,8 @@ fosdem-schedule; cf. docs/fosdem-schedule for the historic documentation. Version 0.5.3 //! TODO +* Add "jump to today" button to date navigator. + Thanks to Michael Schutte for the patch. Version 0.5.2, 2011-07-23 * Show close button in conference dialog also if there are no conferences diff --git a/src/gui/daynavigatorwidget.cpp b/src/gui/daynavigatorwidget.cpp index 07d13bc..bf1f17a 100644 --- a/src/gui/daynavigatorwidget.cpp +++ b/src/gui/daynavigatorwidget.cpp @@ -34,6 +34,7 @@ DayNavigatorWidget::DayNavigatorWidget(QWidget *aParent) setupUi(this); connect(prevDayButton, SIGNAL(clicked()), SLOT(prevDayButtonClicked())); connect(nextDayButton, SIGNAL(clicked()), SLOT(nextDayButtonClicked())); + connect(todayButton, SIGNAL(clicked()), SLOT(todayButtonClicked())); mFontMetrics = new QFontMetrics(QLabel().font()); } @@ -63,22 +64,26 @@ void DayNavigatorWidget::setDates(const QDate &aStartDate, const QDate &aEndDate } } +void DayNavigatorWidget::configureNavigation() +{ + // check start date + if(mCurDate==mStartDate || mStartDate==mEndDate) + prevDayButton->setDisabled(true); + else + prevDayButton->setDisabled(false); + // check end date + if(mCurDate==mEndDate || mStartDate==mEndDate) + nextDayButton->setDisabled(true); + else + nextDayButton->setDisabled(false); +} + void DayNavigatorWidget::prevDayButtonClicked() { if(mCurDate>mStartDate) { mCurDate = mCurDate.addDays(-1); - // check start date - if(mCurDate==mStartDate || mStartDate==mEndDate) - prevDayButton->setDisabled(true); - else - prevDayButton->setDisabled(false); - // check end date - if(mCurDate==mEndDate || mStartDate==mEndDate) - nextDayButton->setDisabled(true); - else - nextDayButton->setDisabled(false); - + configureNavigation(); emit(dateChanged(mCurDate)); selectedDate->update(); } @@ -89,17 +94,19 @@ void DayNavigatorWidget::nextDayButtonClicked() if(mCurDatesetDisabled(true); - else - prevDayButton->setDisabled(false); - // check end date - if(mCurDate==mEndDate || mStartDate==mEndDate) - nextDayButton->setDisabled(true); - else - nextDayButton->setDisabled(false); + configureNavigation(); + emit(dateChanged(mCurDate)); + selectedDate->update(); + } +} +void DayNavigatorWidget::todayButtonClicked() +{ + QDate targetDate = QDate::currentDate(); + if (targetDate>mStartDate && targetDateupdate(); } diff --git a/src/gui/daynavigatorwidget.h b/src/gui/daynavigatorwidget.h index da5846d..d4ddcea 100644 --- a/src/gui/daynavigatorwidget.h +++ b/src/gui/daynavigatorwidget.h @@ -79,7 +79,9 @@ class DayNavigatorWidget : public QWidget, private Ui::DayNavigatorWidget void setDates(const QDate &aStartDate, const QDate &aEndDate); protected: void paintEvent(QPaintEvent *); + void configureNavigation(); private slots: + void todayButtonClicked(); void prevDayButtonClicked(); void nextDayButtonClicked(); signals: diff --git a/src/gui/daynavigatorwidget.ui b/src/gui/daynavigatorwidget.ui index cd4f9dc..1436100 100644 --- a/src/gui/daynavigatorwidget.ui +++ b/src/gui/daynavigatorwidget.ui @@ -61,14 +61,31 @@ + + + + ... + + + + :/icons/today.png:/icons/today.png + + + true + + + - + + + prevDayButtonClicked() nextDayButtonClicked() + todayButtonClicked() diff --git a/src/icons.qrc b/src/icons.qrc index 8f472ed..193c23f 100644 --- a/src/icons.qrc +++ b/src/icons.qrc @@ -9,5 +9,6 @@ icons/emblem-new.png icons/dialog-warning.png icons/search.png + icons/today.png diff --git a/src/icons/today.png b/src/icons/today.png new file mode 100644 index 0000000000000000000000000000000000000000..cec3de3cdff9f494e9d56a031f48edb013f022d4 GIT binary patch literal 1741 zcmV;;1~U1HP)@ zMt?9d3IvuA`S2rA6G=40_`?umFq()727?KSF^CZo{}_$Y1VWoVMG_I>9jHP2QY)&Ut&@&*wd-%(iVjNRs}G@Sgp9)ajJt#O@{nd-v`w zkQ5w|B-W6y>?6#QUfsQWcj$Jxef#!!V{yl4vLbJ^66TK%#cbNO>)qfzN1(9S*#Fq- zN7rtDVF&Z-dJ`n`&1`ZpQ+d0rylmsn?Jr^F%KE3G3CDZWl7e6$SX){;2WQTnhNh`t zU=3LXZ8Vh6sUW%EQ98Sf&sR^20XFPXP16vI#Sx3fU;+N@31xoUws7^@H5i5$73CFk zr^f)>4)anO868DrI6@IX;S{2t(P$K=X~ME>K1QY~0=U`R+k;!Tx-mF7$d_hJA)0&n zN-G7z#^2pH(bd)2ai_DDsW!GWZMvDTEFb@_telHTBmzm2(Ee9D20|fh+Ponvd_1}b zb+vWq>+2)Af#qCIk(I8m4u4&G*D!2sY|MA5`Jn@!9#DvI{KRn-78c^{A7`+%ZW$IW ze2BcHQe@(Y)OV84H=oD3b7xWP^TFZB!P+$q*tTO^JU`FnJb3V6{EjL3WQ($Sh5NVb z{^FU6EGvk|<8V5iNLUH_HmMM!NF>Y@Cn(oe27`*QsHhmhU;wJyO;M9k;wx~J4;{O~ z&;Hj4?Ayq^N{-T%>#NIGs<-0#4NXFkt{WLY3Wr1Ft(4(;nsamWGGw_?$G$m?=%qsl zb(|VDqvq^gN9|zN2$08*xIJoY7%EE3DwE|$)ZKjpfj}{}x`0gL*7f?Lk zd`=wBn@*IV*U@nefnbn~?FL6eXICfM+OCLmeSRN;BMx{x#tg1wN)$*kt9QG#++e@~ zukICVypUEdUnP`P&8r&ow61ok7*~ir2^AHUV|yhfv&5Jt-J>Hw255dGSCOT9TKYJ< z0YI(Otsyij!|8I13}nkQ=R;q7i5L|qk4#Tb58inFHTbFW)B71UGZaRET9R8c_+D++ z6ny?Nb67SjF&!Qh7R&@;cM9c_;1{=V!z(*?U~AKs6#QDoWO(YhVWZJeTx@N@l|L^+ zRW-0Y51|PqT-T%sjD)ek=~kn`a3W_xb+y1aUB9;}&NSx4$zRdj(oC=`5^Xx|dFz!6 z=%KDD%Q89Q5L~l(F#@4eaJjwFaHwYii8bGr0(ptYYp}j>0%bMxCRDaGWg4DncpOiz zT_c*&(~aw~YQ=Jt`28XR)m4k&qBLH*+yYt3K~?oabpCP@-hv_)4)raWWPl{u%QTPS zY`>+Te)jB19d06j_x%rOCq(cxN#tdM!u{N{>xFXhE}+_on=!OsZNpH6LR-BE@lg|} z$+?=sLT6XUrDY^`I5PrFTIJTftgl0X;Wfs>nXLw%S+_20v89Rkizwwk5*eZvUW6P% zk~?2TVAugwFQ5~oRg-Ff!dC5c>*ybeQo*QMluu4YHtG%DO1146;olEk(~+B#i~Jc* z^brzVgam3()fonSw2>97nkGy1)EJI4TyATnh7%OGpG>`+k37^eAEneN%NhG}YR-XG zRWTnjU1CCx$)ZtN2^;-GCKOuB$#=EGy@sYgB@JNGYSm-Nb}U2l^9SpP!T_7G z8kg#Y8MujURp-z%z?-&F%?plnqzD(x>c$;Q&1Y0W$E808*VThr_Rm@83r`p zEGl}`jHQ68(ra6BsB`L}mNCpr!ZN8ag$7Jef(a<#=*V2h1Y^hNm|)n@Kp#hnF6(Q}e4TW6O*DYV(#7wk`)mN$ jVewm