00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
#include "holiday.h"
00012
#include <klocale.h>
00013
00014
bool Holiday::CholP;
00015
bool Holiday::OmerP;
00016
bool Holiday::ParshaP;
00017
00018
QStringList Holiday::holidays;
00019
int Holiday::HolidayFlags;
00020
00021 Holiday::Holiday()
00022 {
00023
00024 }
00025
00026 Holiday::~Holiday()
00027 {
00028 }
00029
00030
00031
00032
00033
00034
00035
00036
00037
QStringList
00038 Holiday::FindHoliday(
int month,
int day,
int weekday,
int kvia,
00039
bool leap_year_p,
bool israel_p,
00040
int day_number,
int year)
00041 {
00042
00043
enum
00044 { Sunday = 1, Monday, Tuesday, Wednesday, Thursday, Friday, Saturday
00045 };
00046
00047 holidays.clear();
00048
bool shabbat_p = (weekday == Saturday);
00049
00050
00051
if ((month == 12) && !leap_year_p)
00052 month = 13;
00053
switch (month)
00054 {
00055
case 1:
00056
switch (day)
00057 {
00058
case 1:
00059
if (shabbat_p)
00060 holidays <<
00061 i18n
00062 (
"These are Jewish holidays and mostly do not have translations. They may have different spellings in your language; otherwise, just translate the sound to your characters",
00063
"Sh. HaHodesh");
00064
break;
00065
case 14:
00066
if (!shabbat_p)
00067
00068
00069 holidays << i18n(
"Erev Pesach");
00070
00071
case 8:
00072
case 9:
00073
case 10:
00074
case 11:
00075
case 12:
00076
case 13:
00077
00078
if (shabbat_p)
00079 holidays << i18n(
"Sh. HaGadol");
00080
break;
00081
case 15:
00082
case 16:
00083
case 21:
00084
case 22:
00085
if (!israel_p || (day == 15) || (day == 21))
00086 {
00087 holidays << i18n(
"Pesach");
00088
break;
00089 }
00090
else if (day == 22)
00091
break;
00092
00093
case 17:
00094
case 18:
00095
case 19:
00096
case 20:
00097
if (CholP)
00098 holidays << i18n(
"Chol Hamoed");
00099
break;
00100
case 27:
00101
00102
if (year > 1948 + 3760)
00103 holidays << i18n(
"Yom HaShoah");
00104
break;
00105 }
00106
if ((day > 15) && OmerP)
00107
00108 holidays << Sfirah(day - 15);
00109
break;
00110
00111
case 2:
00112
switch (day)
00113 {
00114
case 2:
00115
case 3:
00116
case 4:
00117
case 5:
00118
00119
00120
00121
if (year >= 1948 + 3760)
00122 {
00123
switch (weekday)
00124 {
00125
case Wednesday:
00126
if (day == 5)
00127 holidays << i18n(
"Yom HaAtzmaut");
00128
else
00129 holidays << i18n(
"Yom HaZikaron");
00130
break;
00131
case Thursday:
00132
00133 holidays << i18n(
"Yom HaAtzmaut");
00134
break;
00135
case Friday:
00136
case Saturday:
00137
00138
break;
00139
default:
00140
00141
if (day == 4)
00142 holidays << i18n(
"Yom HaZikaron");
00143
else if (day == 5)
00144 holidays << i18n(
"Yom HaAtzmaut");
00145 }
00146 }
00147
break;
00148
case 28:
00149
00150
if (year > 1967 + 3760)
00151 holidays << i18n(
"Yom Yerushalayim");
00152
break;
00153
case 18:
00154 holidays << i18n(
"Lag BaOmer");
00155
break;
00156 }
00157
if ((day != 18) && OmerP)
00158
00159 holidays << Sfirah(day + 15);
00160
00161
break;
00162
00163
case 3:
00164
switch (day)
00165 {
00166
case 1:
00167
case 2:
00168
case 3:
00169
case 4:
00170
00171
if (OmerP)
00172 holidays << Sfirah(day + 44);
00173
break;
00174
case 5:
00175
00176
00177
if (OmerP && !shabbat_p)
00178 holidays << Sfirah(49);
00179 holidays << i18n(
"Erev Shavuot");
00180
break;
00181
case 6:
00182
case 7:
00183
if (!israel_p || (day == 6))
00184 holidays << i18n(
"Shavuot");
00185
break;
00186 }
00187
break;
00188
00189
case 4:
00190
00191
if ((!shabbat_p && (day == 17))
00192 || ((weekday == 1) && (day == 18)))
00193 holidays << i18n(
"Tzom Tammuz");
00194
break;
00195
00196
case 5:
00197
if (shabbat_p && (3 <= day) && (day <= 16))
00198
00199
if (day <= 9)
00200 holidays << i18n(
"Sh. Hazon");
00201
else
00202 holidays << i18n(
"Sh. Nahamu");
00203
else if ((!shabbat_p && (day == 9))
00204 || ((weekday == 1) && (day == 10)))
00205
00206 holidays << i18n(
"Tisha B'Av");
00207
break;
00208
00209
case 6:
00210
if ((day >= 20) && (day <= 26) && shabbat_p)
00211 holidays << i18n(
"S'lichot");
00212
else if (day == 29)
00213 holidays << i18n(
"Erev R.H.");
00214
break;
00215
00216
case 7:
00217
switch (day)
00218 {
00219
case 1:
00220
case 2:
00221 holidays << i18n(
"Rosh Hashana");
00222
break;
00223
case 3:
00224
if (shabbat_p)
00225 holidays << i18n(
"Sh. Shuvah");
00226
else
00227 holidays << i18n(
"Tzom Gedalia");
00228
break;
00229
case 4:
00230
if (weekday == 1)
00231 holidays << i18n(
"Tzom Gedalia");
00232
00233
case 5:
00234
case 6:
00235
case 7:
00236
case 8:
00237
if (shabbat_p)
00238 holidays << i18n(
"Sh. Shuvah");
00239
break;
00240
case 9:
00241 holidays << i18n(
"Erev Y.K.");
00242
break;
00243
case 10:
00244 holidays << i18n(
"Yom Kippur");
00245
break;
00246
case 14:
00247 holidays << i18n(
"Erev Sukkot");
00248
break;
00249
case 15:
00250
case 16:
00251
if (!israel_p || (day == 15))
00252 {
00253 holidays << i18n(
"Sukkot");
00254
break;
00255 }
00256
00257
case 17:
00258
case 18:
00259
case 19:
00260
case 20:
00261
if (CholP)
00262 holidays << i18n(
"Chol Hamoed");
00263
break;
00264
case 21:
00265 holidays << i18n(
"Hoshana Rabah");
00266
break;
00267
case 22:
00268 holidays << i18n(
"Shmini Atzeret");
00269
break;
00270
case 23:
00271
if (!israel_p)
00272 holidays << i18n(
"Simchat Torah");
00273
break;
00274 }
00275
break;
00276
case 8:
00277
break;
00278
00279
case 9:
00280
if (day == 24)
00281 holidays << i18n(
"Erev Hanukah");
00282
else if (day >= 25)
00283 holidays << i18n(
"Hanukah");
00284
break;
00285
00286
case 10:
00287
if (day <= (kvia == 0 ? 3 : 2))
00288
00289 holidays << i18n(
"Hanukah");
00290
else if (((day == 10) && !shabbat_p)
00291 || ((day == 11) && (weekday == 1)))
00292
00293 holidays << i18n(
"Tzom Tevet");
00294
break;
00295
00296
case 11:
00297
switch (day)
00298 {
00299
00300
00301
00302
case 10:
00303
if ((kvia != 0) && shabbat_p)
00304 holidays << i18n(
"Sh. Shirah");
00305
break;
00306
case 11:
00307
case 12:
00308
case 13:
00309
case 14:
00310
case 16:
00311
if (shabbat_p)
00312 holidays << i18n(
"Sh. Shirah");
00313
break;
00314
case 15:
00315
if (shabbat_p)
00316 holidays << i18n(
"Sh. Shirah");
00317 holidays << i18n(
"Tu B'Shvat");
00318
case 17:
00319
if ((kvia == 0) && shabbat_p)
00320 holidays << i18n(
"Sh. Shirah");
00321
break;
00322
case 25:
00323
case 26:
00324
case 27:
00325
case 28:
00326
case 29:
00327
case 30:
00328
00329
if (shabbat_p && !leap_year_p)
00330 holidays << i18n(
"Sh. Shekalim");
00331
break;
00332 }
00333
break;
00334
00335
case 12:
00336
if (day == 14)
00337
00338 holidays << i18n(
"Purim Katan");
00339
else if ((day >= 25) && shabbat_p)
00340
00341 holidays << i18n(
"Sh. Shekalim");
00342
break;
00343
00344
case 13:
00345
switch (day)
00346 {
00347
case 1:
00348
if (shabbat_p)
00349 holidays << i18n(
"Sh. Shekalim");
00350
break;
00351
case 11:
00352
case 12:
00353
00354
00355
if (weekday == Thursday)
00356 holidays << i18n(
"Ta'anit Ester");
00357
00358
case 7:
00359
case 8:
00360
case 9:
00361
case 10:
00362
00363
if (shabbat_p)
00364 holidays << i18n(
"Sh. Zachor");
00365
break;
00366
case 13:
00367
if (shabbat_p)
00368 holidays << i18n(
"Sh. Zachor");
00369
else
00370 holidays << i18n(
"Erev Purim");
00371
00372
if (weekday < Friday)
00373 holidays << i18n(
"Ta'anit Ester");
00374
break;
00375
case 14:
00376 holidays << i18n(
"Purim");
00377
break;
00378
case 15:
00379
if (!shabbat_p)
00380 holidays << i18n(
"Shushan Purim");
00381
break;
00382
case 16:
00383
if (weekday == 1)
00384 holidays << i18n(
"Shushan Purim");
00385
break;
00386
case 17:
00387
case 18:
00388
case 19:
00389
case 20:
00390
case 21:
00391
case 22:
00392
case 23:
00393
if (shabbat_p)
00394 holidays << i18n(
"Sh. Parah");
00395
break;
00396
case 24:
00397
case 25:
00398
case 26:
00399
case 27:
00400
case 28:
00401
case 29:
00402
if (shabbat_p)
00403 holidays << i18n(
"Sh. HaHodesh");
00404
break;
00405 }
00406
break;
00407 }
00408
if (shabbat_p && ParshaP)
00409
00410 holidays << Parsha::FindParshaName(day_number, kvia, leap_year_p,
00411 israel_p);
00412
return holidays;
00413 }
00414
00415
00416
QString Holiday::Sfirah(
int day)
00417 {
00418
00419
00420
00421
00422
00423
00424
00425
QString buffer;
00426
00427 buffer.setNum(day);
00428 buffer + i18n(
" Omer");
00429
return buffer;
00430
00431 }