From fd4b766c4d28e0a8383454754abbf6f098442009 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Aur=C3=A9lie=20Delhaie?= Date: Sun, 16 Oct 2022 17:36:47 +0200 Subject: [PATCH] Add support of leaves --- pictures.qrc | 4 +- pictures/calendar.png | Bin 8771 -> 0 bytes pictures/clock-8-128.png | Bin 3310 -> 0 bytes pictures/leave.png | Bin 0 -> 4838 bytes pictures/sport.png | Bin 8684 -> 0 bytes sources/mainwindow.cpp | 70 +++++++------------ sources/mainwindow.h | 10 +-- sources/models/day.cpp | 10 ++- sources/models/day.h | 3 +- sources/models/week.cpp | 31 +++++++++ sources/models/week.h | 1 + sources/setdaydialog.cpp | 21 ++++++ sources/setdaydialog.h | 2 + ui/mainwindow.ui | 144 +++++++++++++++++++++++++++++++++------ 14 files changed, 219 insertions(+), 77 deletions(-) delete mode 100644 pictures/calendar.png delete mode 100644 pictures/clock-8-128.png create mode 100644 pictures/leave.png delete mode 100644 pictures/sport.png diff --git a/pictures.qrc b/pictures.qrc index b533b81..809ff95 100644 --- a/pictures.qrc +++ b/pictures.qrc @@ -1,11 +1,9 @@ - pictures/clock-8-128.png - pictures/sport.png - pictures/calendar.png pictures/about.png pictures/banner.png pictures/validate.png pictures/warning.png + pictures/leave.png diff --git a/pictures/calendar.png b/pictures/calendar.png deleted file mode 100644 index f139a228e47617c08487c2862e718f37e7754c06..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 8771 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 Q zGrR9AQ0ND;8y>=`)kWKN1yc8iLOtn3eAv2myV78&Kegx$3Kp|0slV)8XjXVtsI&SGGfME)RqLN0ZZH zi|eEsW1w`+A}s5Pq(gr%TCE1AWfRLsz~AuYAkvHIvy^0gB(eHJJcT42{gTD8e)T5S zDeK8=>D;^FPa!wE(047)5I5``r6|97fAQEkuMxSs<4Tp_wwxUrb00pSk>9Tv9aYeY z{7U6Eo)Tu-jMxG})di-WyH}j16)Gve0H&h3v~Mwf)eN`%0J9AspD6nG)%^8w@C($% zBgvpfPPcfJ;KE;M+D8BrO5PM^=lm+iapsZD_6c~z_A|}u(Duwa%;4W3U3l-W)frM6 z3*yfZOna1tk>m%Nyy22FEMpu_sI-<7%b z)wcx=E*KR??YG7&2wHZ58q+8L`qE_Czrqz-r<$kqc9Vk5RdB|fn* z!6E8nmA{Qv{5iX0SPP9p9oxLwU z$_c`MqMQ_mx*t+b0!QQWCV-^g%X{2Gl-@}!brknJRXI{xUAvi$F&&LFhFcg$gpMZ* zBwal93qC1bb!-oIy#xiXQ*K`eAX@^uR%^YT9G^|sid^Tfe>9q|ZI!Kgvk~QYaB?_r z{IW4|lkBW>3$nVN#hq!6YGH3vlDM*aLvqZ;@@SN`571N%{|lSa1x8ru3SLkx;v52f zhI^wrD}2fC7zdeb8Oep28Yp(^aOr1(A5yZwF40YZZWLa|OS z)o%X!5P-#ZbJiaqKawDfR=zDvEA<)14AwH2xu;~fCK!8`^tObCE}WVDAmu{v`BL&i zUCsDgKGMq6%QuYL(-R*%8R&O-v*xqE{PXPytt`T@^=Nr>%ZX$0$SI6}ZtQmza|Ez! zct(lnfL_R0bp8C;+na*22t4)p`h3wT-(W_lV(+SqTh=6m0S!#8Z9K z-GR^6QeM_KlD#UsR%D{9b$*?FqApq>e{m08FjbVzDUJrMHgA_At7wMQGsFoY*ER){ zACTKoG#e^K@IpNHHzy8(<}0pKpVKyPWrlp@x@&!BF)L!)yN$y6Cx%0>fPCS#;TBMX zrWe-Ju%y)PME7=WS|P#iqMl8|qMwQH0KDeQbA0AWLDE}}FUusPqr^F;L@B_Uh{@N{ zdSLIimcKMhD`e0L$FG3Zb;vT!eELFTb_K??`NLz#e64t(Rz^;cx=O+Chm(%QN#oeE z@t^&5WqV+GN(P*-gg)kw*Uk&8zn)kU*^^_>tW>mbHkFv42(TevnJ?1^O!!!zwi#-W z65g0)J`rwNFt$eoLEi<$f@(rDj5J8EI(PsXrlWFXaJv94W>AfhxzEHA!PQ(9!@Hw6 z-UC96z7)%DB|BDspD^+Rbk?i7%3Qy^+oA}KhbHI#s$j-iBer9=ur21PQuR+znl%Pr zT(H`nEAhQx5jx42ZjCiUxre%!)a$)h;#Q1P2|_7EVdqI2A*n(B$tL=}|u&WOf};S2#lVRd=`Iwxdvig5bym)oC=2pVESx zEc2ExCd5(2je@Z@{FlO@9AW(eKUzG*31%;4oM4-~u&UXQL%&|1fYVXLDJd|0)0Bsz zZ(>>h*tq3oGR+Ml#CNdhNH4(oEy;P@e~@bkVy@}sxnp_jF^dT?KYiM6aw^awNj`yM9?5=Y{OlEN1UQErRok2SM59kq$i244H=%qOgb5FT0*{j6qW+ z@HNGMr3jTn*TN>8KAsqKNAM0m|0D!&?^vCmV}HLGar(hLUg@!idr`Wp(;!~xZfgPtVaGH&`A9oqsD}06m9%&lydso(%c>{*LKkiMM zScg_`ZylXXg67dyH#de_?ni)C2Eh#FJ6~^|QrU#}xWv?N!+5WF0_>Vpe&{)+kIJv* zhzr3^pE#vlf8oT%-J)obj(`S+e5zQAN9*YoE~eQ>%JX%|fv#U%v>{O_O#4DTX%T!S8qfVsRjLgjj53ta1OQ;79OdM+RpjLU z3kd#$0SiLXB$P*`$;U19DrpI1#A3atvbb7)*dWe;*^!9IW`Uq zRY32j4dX_{9!(rmm&i4l8u1F=8Jz_8F)!XqLQj9`p)$e+)Ba)qfsx=}=zfo z#@IwRb}?=ey_fnA9oQ~=PdJ;L(BFP)s_HaWZp^wi;wPrPog70ljuO5>c`(gs>qtOC zn`!O81Mq|vf$&LW)F;o19u!Nji%nA=jiGNzqgt;RAIE<=De*d*ETzDi3na5V&QT&@ zrJuz5i!{_Hknk1HRhJvnduaV(5*d3PA#d*vVHmQ%=0X3QNZu+M3P{IDuP~di-(i9|rSk#L z%wgN_$1rO@!U1oWU5f1R^^PWC64oeF>@MtBmsB}~h|KLnQXH6%VupMiz08jo^`HKe z7l3#J2)p?B9}N}YY~DnLMErL4@D-ql{zF;{p#&ie7hp)d_<$9LpzT0cXz}d@&@X($ zCyl8f``S%gh!6!y_agP(<-a%A#@HtbJ5HLf8W_0u1L$Ja1OtF8SL=J2miNjz{o9ts z2#-6kr~K?04g0d3}~j*kKjvN2#T~8DUBZ`i4lE>NgirDLrkq>%qTjj zG$uIn@54HG=H|}LeB8ax+2@{ne~**gz1LoQoqg6>d+)UZ6-Ck#U?s2uxCXcaSPCo# z`hZ%~PbPpbfid7S;4JVVa2gm6A$(qh+(i>o3*dpItAT!CEwCE60a)hT%_wjJcn^3N zcq@ePk#iq~(~$-ssSj8W{1~_$d&*OA8aN2N3LFd}e3?j&w&@rHkhB=M2iS;B`ogpl zP2&RaI&c7ZDTFYVSe`jiY6Fl|!=Cg9fxCgr(n>UEz5!kVp21dziNx|;l2RIgq(#6M zU@PXxbuz=i)4;PKgs)Qz(@d!hK+;m+G2mg$Tdxvhz&>Cggz#BvVd|8^05YfUao`ug zqQv6l&DX$_z@9QVjY$na(gNTi;8*y6ww0Yx;Mc(KLkQod5+a!aNa_a$v2XTn<^=Fa z2;r?1oi|6raz|31q(R^iy~zjD!68Y5*{iTn3S9vttpoOxE^t$JP6PLc5Z)}R!$MX7 zNed+H2415#`7^Nscumso%s8M=1NVjy-p;Fo++G2aHUV$YoBSBA1m4JWnG3nB0Frh9yGZbr(Zv6N_pxy7DPRQK z>mSSht&z*Ia{|kNtAJ~IG>gqP>KNV#YiIimMxm2lD12_uE4Qgm-Trx!FUH{4_bLp z@soc>(k@BKcM2t~%w#!J;P}gB1d;{{8u&3uncMW3G@j!CMr9PviB`L$R1Jt*g70k=X2wOsjG_K>8?g^eZMnvE?FMr0xPLI$!x(xIFN@`CI< zU?q{XC>vuQ98wV*NV1(OZ_Z2FlDqIFLDH6N%--zITkv)Af0vz=oet_MB=u)w_hejl z<{}q?`y_qfEbx#@5X?!1EQsXo7kr>RoM-t*`cA4S$EC!`9O{$Kx*hZuvR}SS|4G>$ zfF9U=2>BYpxV&DgGOyn=sx_qElRpjFO5piAIIcN-70kM?DCtq`YLf?}z%3z!VW;+H zMbgvQ#m%+|A#8ILXGUcH&=LIZNNf!u?3?L7%xC~IXJW`npbNllMW26{;x-UM!JF^0 zrTYzhZaxkZxurb|9(cuOmBX8p}CZy1hx7pVE7X zPsR2g@N#4uJ*M+ArrQ`U!{&IBW&_w5*#TJcBZp>sG?M9bk3&-z&GF<+$-K=^iHkvh z0(>uo(DvqwH?hlj>aT!CWEW!o1H|m6UI4yRchDPGfc3<0Ks;Zj$*&rjZl8~AW+4q< z1C0i7S7gIr`G0!ki-(RU=el_Xh~e!b_xZb(OvkYqLoQwcWcl`2L^k?j{JNh-;r(fm?N34PenGf7N!hfb!20&NB+LY z{E5~1YM3&B*p#hDB7fgw{>1A127sEZx>oGDzjq>k-(&v7>U^1`B{kx=e(R~&dKAn1 zOiy(;Usl$L|NM(i#nxl~WIB(1@K)5YqKYx}fHw;EvRS zWW?%zqDH(IU-lx;-hryR5&YD--FAr8{g*Z3KPAeZ?Q1Rm=M@$LFG$+%-0pmd)%{qF z_+Y|Sk-yKC5W?rco%md{Zlnh6krm5GvazEbstQv03JDff8x+aN*)9LG>89}`pE|$U0*!siZ2Iq z)Iq4E$jZO|eTFe6eexURj4fLIL90fei)>V?K>Z(CZKPK9f6FrYD;?(PnR=iJ4`0kSeI`*l2Y{OYv7WR@RW%kGRySlPQBWRBLSD#?=%ldq`QGWF+m zsgSj#S0fvjQWZ1K0a<`qSUg!2=E*98-A`Y*q$YS^8GK$$WWWrcNrC zDz+*pr&O`6I;vE%=qjM1l0|2o-Qm!YByG-LHQj-v%}#SN`(aj@wRsdU98vKHBr1pO z>ukhfK8Dm{Ri5^TEb)Lxp~x$NCmh=8cAg-><WnZ#6$|nRbX`Osu z1(G>EUH5e$d#!ppe3H%0y1WJVyi-@_yt*h(Ap6eu`qXP=cM-xbkaQ>q;U$ZHRW@ua z+hg&H@HKNtUS9tk2C`f}Ta>LBQUy1VWE(r)@B2C?YS_Jdd!o^tlm3PI1^_i?NSMX zNU~tgF6Fz_H#4ZRt%fSz2uf@{7ts;Fw>#Xz|TSmf5@Zp+zbFL zScKKO_c+(yjeHE;8$x(HuMTouqBFtQ0EhGJr=lDN*5o<)P{2DngzyP)8z3hD?lT%egDU? z2x4VV1Z8}UMfCP$De00@3InJkyDP8_c$D&2BbzT{z&>Cggb-V&$&FGOKpok+z%AGk znS94Dl3^_2#d5Do;vn0FB7fo81F! z#CGJ$b|~Zmwi9^(cqxPsTaU32I>rDR$(+XZSWe&dqzf#a1`cAmcMq1qshckyX#mYg zx*F)ms)Vk_VhhWhyBWp4+1~@+1>OoFeB|6m;Z(u^S|Mo(=0L6ht^uyV_WBnCeN2ym sOkj1C$FMU4XMm5er+hdou2nhy4_VmT3yCKMzyJUM07*qoM6N<$g4Jd~o&W#< diff --git a/pictures/leave.png b/pictures/leave.png new file mode 100644 index 0000000000000000000000000000000000000000..4e4cd0afe4db38da0c6e1b18748b1587d4930722 GIT binary patch literal 4838 zcmeHLX;c$g77i{58E{un5Xzv8irE)Zk+3BZA_gG@R0N??sX%}%CV>QOXa_-CaibM! z6&poRP(ep%ZI5EZAR>Yb!ngs-xX`qUprX*WZO=Q&1PszAYcL2i zD&#nv@lJPc#r|Xd{$Y74@srJlfuLo#RH%*yQRnx9&i0^Sc{?xmCf8 zmcFcQ{pDz7Pw}rU{bOc&;;pw9cn0oI!CO1e(Bmu6@PHCk)S=@lzvOdYXIL0E&i}2l zb;;FrUADFCf1S0iPmg%0_rBjbi^zF>wrV{5c$z%Bb?&+~XE!z{h8h_)|9*SDYs;n3 z12?;W$qwsm<~yZFl)b=K6H>dj#XG*^XkV9K=YR4cW0LggGwJ>L?LGi6bQ%@n`c3fBEJH|2ef{ZIgIo4tw&R4Uc4TwT*3unRZvpR<^ZO zrW}bFz5d`0acN5F56n%s_qFvVt@Vj_J9eTov^hL%MQUmMlVzS{9HdxYe4|Z6eCytNy(NR|9X*(gi#+{dLO}V5Iuf4qwvP@5Qxgm5<+Ayxb=UM)b zvl|R;1M2!B?|#?QF{)$5n+K*pUhq%UZefsJ^|Q4iv~JA3(5u*+vIp%iT>2)wu}aPG z^mX39_1YgUvnF{t-H+-}Pl-GfZ@FL`3x~7FRPcB~LLTqE^nu{>QnR`KHQtW3Q6Yl4 zrTC=rt1bpbRzUOa7l+RA%@n&;JdW1>V#iSUiz6II-%MZYoE198E+%qD#Au)1k>{K0 zg-wD*Z==Mq6CPBr^19o;x~+0#M#`=dc^!LS+|KNcb>|l+g+5IY;8MG)=lD*fzd9|W zSzLXdIL))2>-8FFFWr@& zr`euP-S@Kgq}RHCltu0fF7NI^TUB|ucQGA{;(v8ZjPBgt7aox1Xi?c(Rht;Fy?;%^ zjOY$wu1$URTSn$rPDZZ->PsVjKjj^Lxx4iA*5)ygC~~%H&01b`q4(`4PCd_5J>B={ zm*1t~q5`z}eHo9MK#!WP0KI6LXfX#>D@lkIRHS3=@H1NOi<}KMlQjO z%K`VMVKM2h^N+K5QD@ZQHTPgB8f)u#6uohnVci$FC2mZPh3K*Ua#Sh z$p(XgWT2DO+88nwhG8;=MyAn-z=EhtR_PHVQKfS+K@4K>F&(N^X!HuT3Nm3LQgx!9 zOCW%G=zV@ljY#wXUZopi0q{XKA{sK4L?J7c0~jcQzvRs zOpt`B^e)38WatNfO`L(%ngrcAi9wrK66iSWR3y}SZrCuTb zNY*F0nP$x83{M2Of5833`hD$YV_+o`arkO9(UhK$&n1}Rb7X2%A>){D87Kpz$=zWh zh9Pny1BKZ{m?1}rOomKKr!iK(WN``V4stM42380ET5OqLd|N z5HTu)LZ?wtDHDc2Mc1k2dIO@xd}2VQpc)_`b2ZQ$GnI2cwKl|JCY~r@Z&N8mDoa9T zaTs(C!`+QS<4`CB@=(EK)2@DBu?P8oIPowW3~K|xZ*UB>7tpQ9AKKLrXC@l|!q?DR z{Dlz!^p_x?#qSrozR>kq41AXH7j=E1>$4d6EaNZg`oGbI|9IfRRNz;T0UT#`_j(w? zQOHsn;K#@PVS4YYJhUB*SZn;3>u|WgO)^~;xZQcCe|g5}g(AV2PWZsh8y-UVQ& zTFCd2_}8`XthTLzYy{oK{ns|rMmR7XSbJve>UiZly8$n<=7&C*^SmQv9qV zubx~PTcK;RsY-B>*5%!^v6&h&qnbcS#ja%?zN;Hmu}u*A%AGk7klyZc=nV`-Jvjvc$!@WMxK5;W(}w5pQ%-|g6b`7x#1vfkDB>?@&N_VT4SA@=g45&H$U z1v$0#%#(+!!}e^cRbM={b#Z;NSN)N1`f^S^ep8ZFU|{2%j=f4YTKG0=T<4$Lu?G}` N6AA+PWxmnr{{;&1I$i(( literal 0 HcmV?d00001 diff --git a/pictures/sport.png b/pictures/sport.png deleted file mode 100644 index b44e06679bf4c0db4543f3394a71ab3d35ffcd57..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 8684 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::double_to_string_time(current_week->getThu()->get_total())); ui->fri_time_label->setText(Tools::double_to_string_time(current_week->getFri()->get_total())); ui->total_time_label->setText(Tools::double_to_string_time(current_week->total())); - updateStartLabel(); - updateBreakLabel(); - updateEndLabel(); + updateLabels(); updateWeekTime(); - updateValidIcon(); - updateWarningIcon(); double late = 0.0; double overtime = 0.0; @@ -199,8 +195,8 @@ void MainWindow::compute_time() { while (i.hasNext()) { Week *w = i.next().value(); if (w->getWeekNumber() <= todayWeekNumber) { - late += (week_template->total() - w->total()) - w->getTimeDeltaInHours(); - overtime += (w->total() - week_template->total()) + w->getTimeDeltaInHours(); + late += (week_template->total() - w->total(week_template)) - w->getTimeDeltaInHours(); + overtime += (w->total() - week_template->total(week_template)) + w->getTimeDeltaInHours(); } } late -= current_week->getTimeDeltaInHours(); @@ -209,25 +205,9 @@ void MainWindow::compute_time() { ui->overtime_time_label->setText(Tools::double_to_string_time((overtime > 0.0) ? overtime : 0.0)); } -void MainWindow::updateValidIcon() { - ui->mondayValidate->setVisible(current_week->getMon()->get_validate()); - ui->tuesdayValidate->setVisible(current_week->getTue()->get_validate()); - ui->wednesdayValidate->setVisible(current_week->getWed()->get_validate()); - ui->thurdayValidate->setVisible(current_week->getThu()->get_validate()); - ui->fridayValidate->setVisible(current_week->getFri()->get_validate()); -} - -void MainWindow::updateWarningIcon() { - ui->mondayWarning->setVisible(current_week->getMon()->has_warning()); - ui->tuesdayWarning->setVisible(current_week->getTue()->has_warning()); - ui->wednesdayWarning->setVisible(current_week->getWed()->has_warning()); - ui->thurdayWarning->setVisible(current_week->getThu()->has_warning()); - ui->fridayWarning->setVisible(current_week->getFri()->has_warning()); -} - void MainWindow::updateWeekTime() { - double t = (current_week->total() + current_week->getTimeDeltaInHours()) - week_template->total(); + double t = (current_week->total(week_template) + current_week->getTimeDeltaInHours()) - week_template->total(); if (t > 0) { ui->overtime_time_label_week->setText(Tools::double_to_string_time(t)); ui->late_time_label_week->setText("0h"); @@ -240,28 +220,30 @@ void MainWindow::updateWeekTime() } } -void MainWindow::updateStartLabel() { - ui->monStartLabel->setText(current_week->getMon()->get_start().toString("HH:mm")); - ui->tueStartLabel->setText(current_week->getTue()->get_start().toString("HH:mm")); - ui->wedStartLabel->setText(current_week->getWed()->get_start().toString("HH:mm")); - ui->thuStartLabel->setText(current_week->getThu()->get_start().toString("HH:mm")); - ui->friStartLabel->setText(current_week->getFri()->get_start().toString("HH:mm")); +void MainWindow::updateLabels() { + updateDayLabels(ui->monStartLabel, ui->monEndLabel, ui->monBreakLabel, ui->mondayValidate, ui->mondayWarning, ui->mondayNotWorking, current_week->getMon()); + updateDayLabels(ui->tueStartLabel, ui->tueEndLabel, ui->tueBreakLabel, ui->tuesdayValidate, ui->tuesdayWarning, ui->tuesdayNotWorking, current_week->getTue()); + updateDayLabels(ui->wedStartLabel, ui->wedEndLabel, ui->wedBreakLabel, ui->wednesdayValidate, ui->wednesdayWarning, ui->wednesdayNotWorking, current_week->getWed()); + updateDayLabels(ui->thuStartLabel, ui->thuEndLabel, ui->thuBreakLabel, ui->thurdayValidate, ui->thurdayWarning, ui->thurdayNotWorking, current_week->getThu()); + updateDayLabels(ui->friStartLabel, ui->friEndLabel, ui->friBreakLabel, ui->fridayValidate, ui->fridayWarning, ui->fridayNotWorking, current_week->getFri()); } -void MainWindow::updateBreakLabel() { - ui->monBreakLabel->setText(QString("%1 min.").arg(current_week->getMon()->get_time_break())); - ui->tueBreakLabel->setText(QString("%1 min.").arg(current_week->getTue()->get_time_break())); - ui->wedBreakLabel->setText(QString("%1 min.").arg(current_week->getWed()->get_time_break())); - ui->thuBreakLabel->setText(QString("%1 min.").arg(current_week->getThu()->get_time_break())); - ui->friBreakLabel->setText(QString("%1 min.").arg(current_week->getFri()->get_time_break())); -} - -void MainWindow::updateEndLabel() { - ui->monEndLabel->setText(current_week->getMon()->get_end().toString("HH:mm")); - ui->tueEndLabel->setText(current_week->getTue()->get_end().toString("HH:mm")); - ui->wedEndLabel->setText(current_week->getWed()->get_end().toString("HH:mm")); - ui->thuEndLabel->setText(current_week->getThu()->get_end().toString("HH:mm")); - ui->friEndLabel->setText(current_week->getFri()->get_end().toString("HH:mm")); +void MainWindow::updateDayLabels(QLabel *start, QLabel *end, QLabel *breaks, QFrame *validate, QFrame *warning, QFrame *not_working, Day *d) +{ + not_working->setVisible(d->not_working()); + if (!d->not_working()) { + start->setText(d->get_start().toString("HH:mm")); + end->setText(d->get_end().toString("HH:mm")); + breaks->setText(QString("%1 min.").arg(d->get_time_break())); + validate->setVisible(d->get_validate()); + warning->setVisible(d->has_warning()); + } else { + start->setText("--:--"); + end->setText("--:--"); + breaks->setText("0 min."); + validate->setVisible(false); + warning->setVisible(false); + } } void MainWindow::edit() { diff --git a/sources/mainwindow.h b/sources/mainwindow.h index 74e0e2e..5244856 100644 --- a/sources/mainwindow.h +++ b/sources/mainwindow.h @@ -4,7 +4,7 @@ #define KEY_TEMPLATE "template" #define KEY_YEARS "years" #define SAVE_FILENAME "data.json" -#define SAVE_FILE_VERSION 3 +#define SAVE_FILE_VERSION 4 #define KEY_SAVE_FILE_VERSION "version" #include @@ -25,7 +25,6 @@ #include "models/week.h" #include "models/year.h" #include "welcome.h" -#include "tools.h" #include "aboutbox.h" #include "weekoption.h" @@ -52,13 +51,10 @@ private: void panic_dialog(QString text); // UI Update - void updateStartLabel(); - void updateBreakLabel(); - void updateEndLabel(); + void updateLabels(); void highlightDayOfWeek(); - void updateValidIcon(); - void updateWarningIcon(); void updateWeekTime(); + void updateDayLabels(QLabel *start, QLabel *end, QLabel *breaks, QFrame *validate, QFrame *warning, QFrame *not_working, Day *d); QString get_save_file_path(); Identifier get_identifier(QString objectName); diff --git a/sources/models/day.cpp b/sources/models/day.cpp index 8ae883a..672e108 100644 --- a/sources/models/day.cpp +++ b/sources/models/day.cpp @@ -7,6 +7,7 @@ Day::Day() BreakPoint *lunch = new BreakPoint(QTime(12, 0, 0, 0), QTime(12, 45, 0, 0)); breaks.append(lunch); validate = false; + notWorking = false; } Day::Day(Day *old) @@ -16,6 +17,7 @@ Day::Day(Day *old) BreakPoint *lunch = new BreakPoint(QTime(12, 0, 0, 0), QTime(12, 45, 0, 0)); breaks.append(lunch); validate = false; + notWorking = false; update(old); } @@ -51,7 +53,7 @@ void Day::set_validate(bool value) { validate = value; } -void Day::set_working(bool value) +void Day::set_not_working(bool value) { this->notWorking = value; } @@ -86,7 +88,8 @@ QJsonObject Day::to_json() {KEY_START, start.toString(Qt::DateFormat::ISODate)}, {KEY_END, end.toString(Qt::DateFormat::ISODate)}, {KEY_BREAKS, arr}, - {KEY_VALIDATE, validate} + {KEY_VALIDATE, validate}, + {KEY_NOT_WORKING, notWorking} }; return obj; @@ -112,7 +115,8 @@ Day* Day::from_json(QJsonObject obj) result->start = QTime::fromString(obj[KEY_START].toString(), Qt::DateFormat::ISODate); result->end = QTime::fromString(obj[KEY_END].toString(), Qt::DateFormat::ISODate); - result->validate = obj[KEY_VALIDATE].toBool(); + result->validate = obj[KEY_VALIDATE].toBool(false); + result->notWorking = obj[KEY_NOT_WORKING].toBool(false); result->breaks.clear(); QJsonArray arr = obj[KEY_BREAKS].toArray(); diff --git a/sources/models/day.h b/sources/models/day.h index a30544e..435d23e 100644 --- a/sources/models/day.h +++ b/sources/models/day.h @@ -5,6 +5,7 @@ #define KEY_END "end" #define KEY_BREAKS "breaks" #define KEY_VALIDATE "validate" +#define KEY_NOT_WORKING "not_working" #include #include @@ -31,7 +32,7 @@ public: void set_start(QTime value); void set_end(QTime value); void set_validate(bool); - void set_working(bool); + void set_not_working(bool); void setBreaks(QVector); QTime get_start(); diff --git a/sources/models/week.cpp b/sources/models/week.cpp index c2531ad..37e948c 100644 --- a/sources/models/week.cpp +++ b/sources/models/week.cpp @@ -61,6 +61,37 @@ double Week::total() { return mon->get_total() + tue->get_total() + wed->get_total() + thu->get_total() + fri->get_total(); } +double Week::total(Week *wtemplate) +{ + double t = 0.0; + if (mon->not_working()) { + t += wtemplate->mon->get_total(); + } else { + t += mon->get_total(); + } + if (tue->not_working()) { + t += wtemplate->tue->get_total(); + } else { + t += tue->get_total(); + } + if (wed->not_working()) { + t += wtemplate->wed->get_total(); + } else { + t += wed->get_total(); + } + if (thu->not_working()) { + t += wtemplate->thu->get_total(); + } else { + t += thu->get_total(); + } + if (fri->not_working()) { + t += wtemplate->fri->get_total(); + } else { + t += fri->get_total(); + } + return t; +} + Day* Week::getMon() { return mon; } diff --git a/sources/models/week.h b/sources/models/week.h index 109b3b9..844e75f 100644 --- a/sources/models/week.h +++ b/sources/models/week.h @@ -19,6 +19,7 @@ public: Week(Week*); ~Week(); double total(); + double total(Week *wtemplate); void setMon(Day*); void setTue(Day*); diff --git a/sources/setdaydialog.cpp b/sources/setdaydialog.cpp index 6bbf703..9f1ceb0 100644 --- a/sources/setdaydialog.cpp +++ b/sources/setdaydialog.cpp @@ -22,6 +22,8 @@ SetDayDialog::~SetDayDialog() void SetDayDialog::init() { ui->start_edit->setTime(copy->get_start()); ui->end_edit->setTime(copy->get_end()); + ui->notWorkingCheckbox->setCheckState((copy->not_working()) ? Qt::CheckState::Checked : Qt::CheckState::Unchecked); + lockControls(copy->not_working()); updateBreakList(); connect(ui->start_edit, &QTimeEdit::timeChanged, this, &SetDayDialog::compute_time); connect(ui->end_edit, &QTimeEdit::timeChanged, this, &SetDayDialog::compute_time); @@ -30,6 +32,7 @@ void SetDayDialog::init() { connect(ui->addBreakButton, &QPushButton::clicked, this, &SetDayDialog::add_break_point); connect(ui->removeBreakButton, &QPushButton::clicked, this, &SetDayDialog::remove_break_point); connect(ui->breakList, &QListWidget::currentRowChanged, this, &SetDayDialog::break_selected); + connect(ui->notWorkingCheckbox, &QCheckBox::stateChanged, this, &SetDayDialog::change_not_working); ui->total_label->setText(Tools::double_to_string_time(d->get_total())); } @@ -41,6 +44,17 @@ void SetDayDialog::updateBreakList() } } +void SetDayDialog::lockControls(bool lock) +{ + ui->addBreakButton->setDisabled(lock); + ui->start_edit->setDisabled(lock); + ui->end_edit->setDisabled(lock); + ui->breakList->setDisabled(lock); + if (ui->breakList->currentRow() != -1) { + ui->removeBreakButton->setDisabled(lock); + } +} + void SetDayDialog::compute_time() { copy->set_validate(false); copy->set_start(ui->start_edit->time()); @@ -91,3 +105,10 @@ void SetDayDialog::break_selected(int i) { ui->removeBreakButton->setEnabled(i > -1); } + +void SetDayDialog::change_not_working(int state) +{ + copy->set_not_working(state != 0); + lockControls(copy->not_working()); + compute_time(); +} diff --git a/sources/setdaydialog.h b/sources/setdaydialog.h index 4e003fc..1bed753 100644 --- a/sources/setdaydialog.h +++ b/sources/setdaydialog.h @@ -28,6 +28,7 @@ private slots: void add_break_point(); void remove_break_point(); void break_selected(int); + void change_not_working(int); private: Ui::SetDayDialog *ui; @@ -37,6 +38,7 @@ private: void init(); void updateBreakList(); + void lockControls(bool); }; #endif // SETDAYDIALOG_H diff --git a/ui/mainwindow.ui b/ui/mainwindow.ui index efd840c..f2c27fb 100644 --- a/ui/mainwindow.ui +++ b/ui/mainwindow.ui @@ -193,6 +193,31 @@ font-size: 22px; + + + + + 16 + 16 + + + + + 16 + 16 + + + + border-image: url(:/clock/pictures/leave.png) 0 0 0 0 stretch stretch; + + + QFrame::StyledPanel + + + QFrame::Raised + + + @@ -266,6 +291,31 @@ font-size: 22px; + + + + + 16 + 16 + + + + + 16 + 16 + + + + border-image: url(:/clock/pictures/leave.png) 0 0 0 0 stretch stretch; + + + QFrame::StyledPanel + + + QFrame::Raised + + + @@ -339,6 +389,31 @@ font-size: 22px; + + + + + 16 + 16 + + + + + 16 + 16 + + + + border-image: url(:/clock/pictures/leave.png) 0 0 0 0 stretch stretch; + + + QFrame::StyledPanel + + + QFrame::Raised + + + @@ -412,6 +487,31 @@ font-size: 22px; + + + + + 16 + 16 + + + + + 16 + 16 + + + + border-image: url(:/clock/pictures/leave.png) 0 0 0 0 stretch stretch; + + + QFrame::StyledPanel + + + QFrame::Raised + + + @@ -485,6 +585,31 @@ font-size: 22px; + + + + + 16 + 16 + + + + + 16 + 16 + + + + border-image: url(:/clock/pictures/leave.png) 0 0 0 0 stretch stretch; + + + QFrame::StyledPanel + + + QFrame::Raised + + + @@ -1774,25 +1899,6 @@ font-weight: bold; label_semaine today_button dateEdit - tuesdayWarning - tueBreakLabel - horizontalSpacer_6 - horizontalSpacer_7 - mondayWarning - horizontalSpacer_8 - horizontalSpacer_9 - wednesdayWarning - wedBreakLabel - horizontalSpacer_10 - horizontalSpacer_11 - thurdayWarning - horizontalSpacer_12 - horizontalSpacer_13 - thuBreakLabel - fridayWarning - horizontalSpacer_14 - horizontalSpacer_15 - friBreakLabel