2
* This file is part of the chinese-calendar project
3
* Copyright (C) 2013 National University of Defense Technology(NUDT) & Kylin Ltd
5
* This program is free software: you can redistribute it and/or modify
6
* it under the terms of the GNU General Public License version 3 as
7
* published by the Free Software Foundation.
9
* This program is distributed in the hope that it will be useful,
10
* but WITHOUT ANY WARRANTY; without even the implied warranty of
11
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
12
* GNU General Public License for more details.
14
* You should have received a copy of the GNU General Public License
15
* along with this program. If not, see <http://www.gnu.org/licenses/>.
17
* This project is developed by "UbuntuKylin Members" team,
18
* see <https://launchpad.net/~ubuntukylin~members>
19
* Authors: Abel Liu <guiltyritter@gmail.com>
20
* Shine Huang <hostc@163.com>
23
#include "chinesecalendar.h"
25
ChineseCalendar::ChineseCalendar(QWidget *parent)
30
bg = new QPixmap(":/img/chinesecalendarBGyellow.png");
31
icon = QIcon(":/img/chinesecalendar.png");
33
mycalendat->InitConnection(QDir::currentPath ());
34
selectedDate = QDate::currentDate();
35
monthCombo->setCurrentIndex(selectedDate.month() - 1);
36
YearSelect->setDate(selectedDate);
37
connect(monthCombo, SIGNAL(currentIndexChanged(int)), this, SLOT(setMonth(int)));
38
connect(monthCombo, SIGNAL(activated(int)), this, SLOT(setMonth(int)));
39
connect(YearSelect, SIGNAL(dateChanged(QDate)), this, SLOT(setYear(QDate)));
40
connect(this->backtotoday, SIGNAL(clicked()), this, SLOT(backtoday()));
42
this->TbnextMonth->setStyleSheet("QPushButton{background-color:transparent;color:rgb(200,200,150);}QPushButton:hover{color:rgb(255,255,255);}");
43
this->TbnextYear->setStyleSheet("QPushButton{background-color:transparent;color:rgb(200,200,150);}QPushButton:hover{color:rgb(255,255,255);}");
44
this->TbpreviousMonth->setStyleSheet("QPushButton{background-color:transparent;color:rgb(200,200,150);}QPushButton:hover{color:rgb(255,255,255);}");
45
this->TbpreviousYear->setStyleSheet("QPushButton{background-color:transparent;color:rgb(200,200,150);}QPushButton:hover{color:rgb(255,255,255);}");
46
this->backtotoday->setStyleSheet("QPushButton{background-color:transparent;color:rgb(200,200,150);}QPushButton:hover{color:rgb(255,255,255);}");
47
this->YearSelect->setStyleSheet("QDateEdit{border: 2px solid lightgray;border-radius: 5px;}");
48
this->monthCombo->setStyleSheet("QComboBox{border: 2px solid lightgray;border-radius: 5px;font:12pt;}");
49
this->label->setStyleSheet("QLabel{font:12pt;}");
50
this->label_2->setStyleSheet("QLabel{font:12pt;}");
55
dateTime = QDateTime::currentDateTime();
56
if(dateTime.toString("ddd") == "Mon")
58
if(dateTime.toString("ddd") == "Tue")
60
if(dateTime.toString("ddd") == "Wed")
62
if(dateTime.toString("ddd") == "Thu")
64
if(dateTime.toString("ddd") == "Fri")
66
if(dateTime.toString("ddd") == "Sat")
68
if(dateTime.toString("ddd") == "Sun")
70
currentTime = dateTime.toString("yyyy-MM-dd %1").arg(week);
71
QDate day = QDate::currentDate();
72
struct CCalendar datebase;
73
mycalendat->ctcl_solar_to_lunar(day.year(),day.month(),day.day(),&datebase);
74
QString chinesemonth = datebase.cmonth;
75
if (chinesemonth == "一月")
77
if (chinesemonth == "十一月")
79
if (chinesemonth == "十二月")
81
QString chineseday = QString("农历 %1%2").arg(chinesemonth).arg(datebase.cday);
82
QString chineseyear = QString("%1年(%2年)").arg(datebase.ganzhi).arg(datebase.shengxiao);
86
font.setPointSize(48);
88
this->label_10->setFont(font);
89
this->label_10->setText(QString::number(day.day()));
92
this->label_12->setFont(font);
93
this->label_12->setText(currentTime);
94
font.setPointSize(10);
95
this->label_13->setFont(font);
96
this->label_13->setText(chineseday);
97
this->label_14->setFont(font);
98
this->label_14->setText(chineseyear);
99
font.setPointSize(15);
100
this->label_15->setFont(font);
102
pa.setColor(QPalette::WindowText,Qt::white);
103
this->label->setPalette(pa);
104
this->label_2->setPalette(pa);
105
this->label_15->setPalette(pa);
106
this->label_4->setPalette(pa);
107
this->label_5->setPalette(pa);
108
this->label_6->setPalette(pa);
109
this->label_7->setPalette(pa);
110
this->label_8->setPalette(pa);
112
pa.setColor(QPalette::WindowText,QColor(255,255,255));
113
this->label_3->setPalette(pa);
114
this->label_9->setPalette(pa);
116
pa.setColor(QPalette::WindowText,Qt::red);
117
this->label_10->setPalette(pa);
118
this->label_11->setPalette(pa);
119
this->label_12->setPalette(pa);
120
this->label_13->setPalette(pa);
121
this->label_14->setPalette(pa);
123
map = new QMap<QString, DateItem *>();
124
DateItem *dateitem00 = new DateItem(this);
126
map->insert(QString("1-1"), dateitem00 );
127
connect(dateitem00, SIGNAL(clicked(QString)), this, SLOT(resetcalendardate(QString)));
129
DateItem *dateitem01 = new DateItem(this);
131
map->insert(QString("1-2"), dateitem01 );
132
connect(dateitem01, SIGNAL(clicked(QString)), this, SLOT(resetcalendardate(QString)));
134
DateItem *dateitem02 = new DateItem(this);
136
map->insert(QString("1-3"), dateitem02 );
137
connect(dateitem02, SIGNAL(clicked(QString)), this, SLOT(resetcalendardate(QString)));
139
DateItem *dateitem03 = new DateItem(this);
141
map->insert(QString("1-4"), dateitem03 );
142
connect(dateitem03, SIGNAL(clicked(QString)), this, SLOT(resetcalendardate(QString)));
144
DateItem *dateitem04 = new DateItem(this);
146
map->insert(QString("1-5"), dateitem04 );
147
connect(dateitem04, SIGNAL(clicked(QString)), this, SLOT(resetcalendardate(QString)));
149
DateItem *dateitem05 = new DateItem(this);
151
map->insert(QString("1-6"), dateitem05 );
152
connect(dateitem05, SIGNAL(clicked(QString)), this, SLOT(resetcalendardate(QString)));
154
DateItem *dateitem06 = new DateItem(this);
156
map->insert(QString("1-7"), dateitem06 );
157
connect(dateitem06, SIGNAL(clicked(QString)), this, SLOT(resetcalendardate(QString)));
159
DateItem *dateitem10 = new DateItem(this);
161
map->insert(QString("2-1"), dateitem10 );
162
connect(dateitem10, SIGNAL(clicked(QString)), this, SLOT(resetcalendardate(QString)));
164
DateItem *dateitem11 = new DateItem(this);
166
map->insert(QString("2-2"), dateitem11 );
167
connect(dateitem11, SIGNAL(clicked(QString)), this, SLOT(resetcalendardate(QString)));
169
DateItem *dateitem12 = new DateItem(this);
171
map->insert(QString("2-3"), dateitem12 );
172
connect(dateitem12, SIGNAL(clicked(QString)), this, SLOT(resetcalendardate(QString)));
174
DateItem *dateitem13 = new DateItem(this);
176
map->insert(QString("2-4"), dateitem13 );
177
connect(dateitem13, SIGNAL(clicked(QString)), this, SLOT(resetcalendardate(QString)));
179
DateItem *dateitem14 = new DateItem(this);
181
map->insert(QString("2-5"), dateitem14 );
182
connect(dateitem14, SIGNAL(clicked(QString)), this, SLOT(resetcalendardate(QString)));
184
DateItem *dateitem15 = new DateItem(this);
186
map->insert(QString("2-6"), dateitem15 );
187
connect(dateitem15, SIGNAL(clicked(QString)), this, SLOT(resetcalendardate(QString)));
189
DateItem *dateitem16 = new DateItem(this);
191
map->insert(QString("2-7"), dateitem16 );
192
connect(dateitem16, SIGNAL(clicked(QString)), this, SLOT(resetcalendardate(QString)));
194
DateItem *dateitem20 = new DateItem(this);
196
map->insert(QString("3-1"), dateitem20 );
197
connect(dateitem20, SIGNAL(clicked(QString)), this, SLOT(resetcalendardate(QString)));
199
DateItem *dateitem21 = new DateItem(this);
201
map->insert(QString("3-2"), dateitem21 );
202
connect(dateitem21, SIGNAL(clicked(QString)), this, SLOT(resetcalendardate(QString)));
204
DateItem *dateitem22 = new DateItem(this);
206
map->insert(QString("3-3"), dateitem22 );
207
connect(dateitem22, SIGNAL(clicked(QString)), this, SLOT(resetcalendardate(QString)));
209
DateItem *dateitem23 = new DateItem(this);
211
map->insert(QString("3-4"), dateitem23 );
212
connect(dateitem23, SIGNAL(clicked(QString)), this, SLOT(resetcalendardate(QString)));
214
DateItem *dateitem24 = new DateItem(this);
216
map->insert(QString("3-5"), dateitem24 );
217
connect(dateitem24, SIGNAL(clicked(QString)), this, SLOT(resetcalendardate(QString)));
219
DateItem *dateitem25 = new DateItem(this);
221
map->insert(QString("3-6"), dateitem25 );
222
connect(dateitem25, SIGNAL(clicked(QString)), this, SLOT(resetcalendardate(QString)));
224
DateItem *dateitem26 = new DateItem(this);
226
map->insert(QString("3-7"), dateitem26 );
227
connect(dateitem26, SIGNAL(clicked(QString)), this, SLOT(resetcalendardate(QString)));
229
DateItem *dateitem30 = new DateItem(this);
231
map->insert(QString("4-1"), dateitem30 );
232
connect(dateitem30, SIGNAL(clicked(QString)), this, SLOT(resetcalendardate(QString)));
234
DateItem *dateitem31 = new DateItem(this);
236
map->insert(QString("4-2"), dateitem31 );
237
connect(dateitem31, SIGNAL(clicked(QString)), this, SLOT(resetcalendardate(QString)));
239
DateItem *dateitem32 = new DateItem(this);
241
map->insert(QString("4-3"), dateitem32 );
242
connect(dateitem32, SIGNAL(clicked(QString)), this, SLOT(resetcalendardate(QString)));
244
DateItem *dateitem33 = new DateItem(this);
246
map->insert(QString("4-4"), dateitem33 );
247
connect(dateitem33, SIGNAL(clicked(QString)), this, SLOT(resetcalendardate(QString)));
249
DateItem *dateitem34 = new DateItem(this);
251
map->insert(QString("4-5"), dateitem34 );
252
connect(dateitem34, SIGNAL(clicked(QString)), this, SLOT(resetcalendardate(QString)));
254
DateItem *dateitem35 = new DateItem(this);
256
map->insert(QString("4-6"), dateitem35 );
257
connect(dateitem35, SIGNAL(clicked(QString)), this, SLOT(resetcalendardate(QString)));
259
DateItem *dateitem36 = new DateItem(this);
261
map->insert(QString("4-7"), dateitem36 );
262
connect(dateitem36, SIGNAL(clicked(QString)), this, SLOT(resetcalendardate(QString)));
264
DateItem *dateitem40 = new DateItem(this);
266
map->insert(QString("5-1"), dateitem40 );
267
connect(dateitem40, SIGNAL(clicked(QString)), this, SLOT(resetcalendardate(QString)));
269
DateItem *dateitem41 = new DateItem(this);
271
map->insert(QString("5-2"), dateitem41 );
272
connect(dateitem41, SIGNAL(clicked(QString)), this, SLOT(resetcalendardate(QString)));
274
DateItem *dateitem42 = new DateItem(this);
276
map->insert(QString("5-3"), dateitem42 );
277
connect(dateitem42, SIGNAL(clicked(QString)), this, SLOT(resetcalendardate(QString)));
279
DateItem *dateitem43 = new DateItem(this);
281
map->insert(QString("5-4"), dateitem43 );
282
connect(dateitem43, SIGNAL(clicked(QString)), this, SLOT(resetcalendardate(QString)));
284
DateItem *dateitem44 = new DateItem(this);
286
map->insert(QString("5-5"), dateitem44 );
287
connect(dateitem44, SIGNAL(clicked(QString)), this, SLOT(resetcalendardate(QString)));
289
DateItem *dateitem45 = new DateItem(this);
291
map->insert(QString("5-6"), dateitem45 );
292
connect(dateitem45, SIGNAL(clicked(QString)), this, SLOT(resetcalendardate(QString)));
294
DateItem *dateitem46 = new DateItem(this);
296
map->insert(QString("5-7"), dateitem46 );
297
connect(dateitem46, SIGNAL(clicked(QString)), this, SLOT(resetcalendardate(QString)));
299
DateItem *dateitem50 = new DateItem(this);
301
map->insert(QString("6-1"), dateitem50 );
302
connect(dateitem50, SIGNAL(clicked(QString)), this, SLOT(resetcalendardate(QString)));
304
DateItem *dateitem51 = new DateItem(this);
306
map->insert(QString("6-2"), dateitem51 );
307
connect(dateitem51, SIGNAL(clicked(QString)), this, SLOT(resetcalendardate(QString)));
309
DateItem *dateitem52 = new DateItem(this);
311
map->insert(QString("6-3"), dateitem52 );
313
DateItem *dateitem53 = new DateItem(this);
315
map->insert(QString("6-4"), dateitem53 );
317
DateItem *dateitem54 = new DateItem(this);
319
map->insert(QString("6-5"), dateitem54 );
321
DateItem *dateitem55 = new DateItem(this);
323
map->insert(QString("6-6"), dateitem55 );
325
DateItem *dateitem56 = new DateItem(this);
327
map->insert(QString("6-7"), dateitem56 );
332
QTimer *timer = new QTimer(this);
333
timer->setInterval(1000);
334
connect(timer,SIGNAL(timeout()),this,SLOT(setTime()));
337
QBitmap objBitmap(size());
338
QPainter painter(&objBitmap);
339
painter.fillRect(rect(),Qt::white);
340
painter.setBrush(QColor(0,0,0));
341
painter.drawRoundedRect(this->rect(),10,10);
344
// Display *dis = QX11Info::display ();
345
// Atom atom_task = XInternAtom(QX11Info::display (),"_NET_WM_STATE_SKIP_TASKBAR",False);
346
// Atom atom = XInternAtom(dis,"_NET_WM_STATE",False);
347
// XChangeProperty(dis,winId(),atom,XA_ATOM,32,PropModeAppend,(unsigned char *)&atom_task,1);
352
ChineseCalendar::~ChineseCalendar()
357
void ChineseCalendar::createTray()
359
this->actionShow = new QAction(tr("隐藏/显示"), this);
360
connect(actionShow, SIGNAL(triggered()), this, SLOT(showOrHide()));
362
this->actionStaysOnTop = new QAction(tr("总在最前"), this);
363
this->actionStaysOnTop->setCheckable(true);
364
connect(actionStaysOnTop, SIGNAL(triggered()), this, SLOT(setMode()));
366
this->actionStaysOnBottom = new QAction(tr("总在最后"), this);
367
this->actionStaysOnBottom->setCheckable(true);
368
connect(actionStaysOnBottom, SIGNAL(triggered()), this, SLOT(setMode()));
370
this->actionStaysNormal = new QAction(tr("普通模式"), this);
371
this->actionStaysNormal->setCheckable(true);
372
this->actionStaysNormal->setChecked(true);
373
connect(actionStaysNormal, SIGNAL(triggered()), this, SLOT(setMode()));
375
this->ag = new QActionGroup(this);
376
this->ag->addAction(actionStaysOnTop);
377
this->ag->addAction(actionStaysOnBottom);
378
this->ag->addAction(actionStaysNormal);
380
this->actionQuit = new QAction(tr("退出程序"), this);
381
connect(actionQuit, SIGNAL(triggered()), qApp, SLOT(quit()));
383
this->trayMenu = new QMenu(this);
384
this->trayMenu->addAction(actionShow);
385
this->trayMenu->addSeparator();
386
this->trayMenu->addAction(actionStaysOnTop);
387
this->trayMenu->addAction(actionStaysOnBottom);
388
this->trayMenu->addAction(actionStaysNormal);
389
this->trayMenu->addSeparator();
390
this->trayMenu->addAction(actionQuit);
392
this->trayIcon = new QSystemTrayIcon(this);
393
this->trayIcon->setIcon(icon);
394
this->trayIcon->setContextMenu(trayMenu);
395
this->trayIcon->show();
398
void ChineseCalendar::paintEvent(QPaintEvent *)
400
QPainter painter(this);
401
painter.drawPixmap(0,0,width(),height(),*bg);
403
// painter.setPen(Qt::gray);
404
painter.setPen(QColor(255,121,3,100));
409
painter.drawLine(5,108,390,108);
410
painter.drawLine(5,147,390,147);
411
painter.drawLine(5,186,390,186);
412
painter.drawLine(5,225,390,225);
413
painter.drawLine(5,264,390,264);
414
// painter.drawLine(5,303,390,303);
418
painter.drawLine(5,116,390,116);
419
painter.drawLine(5,163,390,163);
420
painter.drawLine(5,210,390,210);
421
painter.drawLine(5,257,390,257);
422
// painter.drawLine(5,304,390,304);
425
painter.drawLine(60,69,60,303);
426
painter.drawLine(115,69,115,303);
427
painter.drawLine(170,69,170,303);
428
painter.drawLine(225,69,225,303);
429
painter.drawLine(280,69,280,303);
430
painter.drawLine(335,69,335,303);
433
void ChineseCalendar::setItemLayout()
437
map->value("1-1")->resizeItem(55,47);
438
map->value("1-2")->resizeItem(55,47);
439
map->value("1-3")->resizeItem(55,47);
440
map->value("1-4")->resizeItem(55,47);
441
map->value("1-5")->resizeItem(55,47);
442
map->value("1-6")->resizeItem(55,47);
443
map->value("1-7")->resizeItem(55,47);
444
map->value("2-1")->resizeItem(55,47);
445
map->value("2-2")->resizeItem(55,47);
446
map->value("2-3")->resizeItem(55,47);
447
map->value("2-4")->resizeItem(55,47);
448
map->value("2-5")->resizeItem(55,47);
449
map->value("2-6")->resizeItem(55,47);
450
map->value("2-7")->resizeItem(55,47);
451
map->value("3-1")->resizeItem(55,47);
452
map->value("3-2")->resizeItem(55,47);
453
map->value("3-3")->resizeItem(55,47);
454
map->value("3-4")->resizeItem(55,47);
455
map->value("3-5")->resizeItem(55,47);
456
map->value("3-6")->resizeItem(55,47);
457
map->value("3-7")->resizeItem(55,47);
458
map->value("4-1")->resizeItem(55,47);
459
map->value("4-2")->resizeItem(55,47);
460
map->value("4-3")->resizeItem(55,47);
461
map->value("4-4")->resizeItem(55,47);
462
map->value("4-5")->resizeItem(55,47);
463
map->value("4-6")->resizeItem(55,47);
464
map->value("4-7")->resizeItem(55,47);
465
map->value("5-1")->resizeItem(55,47);
466
map->value("5-2")->resizeItem(55,47);
467
map->value("5-3")->resizeItem(55,47);
468
map->value("5-4")->resizeItem(55,47);
469
map->value("5-5")->resizeItem(55,47);
470
map->value("5-6")->resizeItem(55,47);
471
map->value("5-7")->resizeItem(55,47);
472
map->value("6-1")->resizeItem(55,47);
473
map->value("6-2")->resizeItem(55,47);
474
map->value("6-3")->resizeItem(55,47);
475
map->value("6-4")->resizeItem(55,47);
476
map->value("6-5")->resizeItem(55,47);
477
map->value("6-6")->resizeItem(55,47);
478
map->value("6-7")->resizeItem(55,47);
481
map->value("1-1")->move(5,69);
482
map->value("1-2")->move(60,69);
483
map->value("1-3")->move(115,69);
484
map->value("1-4")->move(170,69);
485
map->value("1-5")->move(225,69);
486
map->value("1-6")->move(280,69);
487
map->value("1-7")->move(335,69);
488
map->value("2-1")->move(5,116);
489
map->value("2-2")->move(60,116);
490
map->value("2-3")->move(115,116);
491
map->value("2-4")->move(170,116);
492
map->value("2-5")->move(225,116);
493
map->value("2-6")->move(280,116);
494
map->value("2-7")->move(335,116);
495
map->value("3-1")->move(5,163);
496
map->value("3-2")->move(60,163);
497
map->value("3-3")->move(115,163);
498
map->value("3-4")->move(170,163);
499
map->value("3-5")->move(225,163);
500
map->value("3-6")->move(280,163);
501
map->value("3-7")->move(335,163);
502
map->value("4-1")->move(5,210);
503
map->value("4-2")->move(60,210);
504
map->value("4-3")->move(115,210);
505
map->value("4-4")->move(170,210);
506
map->value("4-5")->move(225,210);
507
map->value("4-6")->move(280,210);
508
map->value("4-7")->move(335,210);
509
map->value("5-1")->move(5,257);
510
map->value("5-2")->move(60,257);
511
map->value("5-3")->move(115,257);
512
map->value("5-4")->move(170,257);
513
map->value("5-5")->move(225,257);
514
map->value("5-6")->move(280,257);
515
map->value("5-7")->move(335,257);
516
map->value("6-1")->move(5,304);
517
map->value("6-2")->move(60,304);
518
map->value("6-3")->move(115,304);
519
map->value("6-4")->move(170,304);
520
map->value("6-5")->move(225,304);
521
map->value("6-6")->move(280,304);
522
map->value("6-7")->move(335,304);
525
void ChineseCalendar::resetItemLayout()
527
map->value("1-1")->resizeItem(55,39);
528
map->value("1-2")->resizeItem(55,39);
529
map->value("1-3")->resizeItem(55,39);
530
map->value("1-4")->resizeItem(55,39);
531
map->value("1-5")->resizeItem(55,39);
532
map->value("1-6")->resizeItem(55,39);
533
map->value("1-7")->resizeItem(55,39);
534
map->value("2-1")->resizeItem(55,39);
535
map->value("2-2")->resizeItem(55,39);
536
map->value("2-3")->resizeItem(55,39);
537
map->value("2-4")->resizeItem(55,39);
538
map->value("2-5")->resizeItem(55,39);
539
map->value("2-6")->resizeItem(55,39);
540
map->value("2-7")->resizeItem(55,39);
541
map->value("3-1")->resizeItem(55,39);
542
map->value("3-2")->resizeItem(55,39);
543
map->value("3-3")->resizeItem(55,39);
544
map->value("3-4")->resizeItem(55,39);
545
map->value("3-5")->resizeItem(55,39);
546
map->value("3-6")->resizeItem(55,39);
547
map->value("3-7")->resizeItem(55,39);
548
map->value("4-1")->resizeItem(55,39);
549
map->value("4-2")->resizeItem(55,39);
550
map->value("4-3")->resizeItem(55,39);
551
map->value("4-4")->resizeItem(55,39);
552
map->value("4-5")->resizeItem(55,39);
553
map->value("4-6")->resizeItem(55,39);
554
map->value("4-7")->resizeItem(55,39);
555
map->value("5-1")->resizeItem(55,39);
556
map->value("5-2")->resizeItem(55,39);
557
map->value("5-3")->resizeItem(55,39);
558
map->value("5-4")->resizeItem(55,39);
559
map->value("5-5")->resizeItem(55,39);
560
map->value("5-6")->resizeItem(55,39);
561
map->value("5-7")->resizeItem(55,39);
562
map->value("6-1")->resizeItem(55,39);
563
map->value("6-2")->resizeItem(55,39);
564
map->value("6-3")->resizeItem(55,39);
565
map->value("6-4")->resizeItem(55,39);
566
map->value("6-5")->resizeItem(55,39);
567
map->value("6-6")->resizeItem(55,39);
568
map->value("6-7")->resizeItem(55,39);
571
map->value("1-1")->move(5,69);
572
map->value("1-2")->move(60,69);
573
map->value("1-3")->move(115,69);
574
map->value("1-4")->move(170,69);
575
map->value("1-5")->move(225,69);
576
map->value("1-6")->move(280,69);
577
map->value("1-7")->move(335,69);
578
map->value("2-1")->move(5,108);
579
map->value("2-2")->move(60,108);
580
map->value("2-3")->move(115,108);
581
map->value("2-4")->move(170,108);
582
map->value("2-5")->move(225,108);
583
map->value("2-6")->move(280,108);
584
map->value("2-7")->move(335,108);
585
map->value("3-1")->move(5,147);
586
map->value("3-2")->move(60,147);
587
map->value("3-3")->move(115,147);
588
map->value("3-4")->move(170,147);
589
map->value("3-5")->move(225,147);
590
map->value("3-6")->move(280,147);
591
map->value("3-7")->move(335,147);
592
map->value("4-1")->move(5,186);
593
map->value("4-2")->move(60,186);
594
map->value("4-3")->move(115,186);
595
map->value("4-4")->move(170,186);
596
map->value("4-5")->move(225,186);
597
map->value("4-6")->move(280,186);
598
map->value("4-7")->move(335,186);
599
map->value("5-1")->move(5,225);
600
map->value("5-2")->move(60,225);
601
map->value("5-3")->move(115,225);
602
map->value("5-4")->move(170,225);
603
map->value("5-5")->move(225,225);
604
map->value("5-6")->move(280,225);
605
map->value("5-7")->move(335,225);
606
map->value("6-1")->move(5,264);
607
map->value("6-2")->move(60,264);
608
map->value("6-3")->move(115,264);
609
map->value("6-4")->move(170,264);
610
map->value("6-5")->move(225,264);
611
map->value("6-6")->move(280,264);
612
map->value("6-7")->move(335,264);
615
void ChineseCalendar::setTime()
617
QDateTime dateTime = QDateTime::currentDateTime();
618
this->label_15->setText(dateTime.toString("hh:mm:ss"));
621
void ChineseCalendar::resetcalendardate(QString day)
623
QDate date(this->YearSelect->date().year(),this->monthCombo->currentText().toInt(),day.toInt());
626
if(date.toString("ddd") == "Mon")
628
if(date.toString("ddd") == "Tue")
630
if(date.toString("ddd") == "Wed")
632
if(date.toString("ddd") == "Thu")
634
if(date.toString("ddd") == "Fri")
636
if(date.toString("ddd") == "Sat")
638
if(date.toString("ddd") == "Sun")
640
QString selecttime = date.toString("yyyy-MM-dd %1").arg(weekday);
642
mycalendat->ctcl_solar_to_lunar(date.year(),date.month(),date.day(),&d);
643
QString selectmonth = d.cmonth;
644
if (selectmonth == "一月")
646
if (selectmonth == "十一月")
648
if (selectmonth == "十二月")
650
QString selectday = QString("农历 %1%2").arg(selectmonth).arg(d.cday);
651
QString selectyear = QString("%1年(%2年)").arg(d.ganzhi).arg(d.shengxiao);
652
this->label_10->setText(day);
653
this->label_12->setText(selecttime);
654
this->label_13->setText(selectday);
655
this->label_14->setText(selectyear);
658
void ChineseCalendar::backtoday()
660
QDate today = QDate::currentDate();
661
YearSelect->setDate(today);
662
monthCombo->setCurrentIndex(today.month() - 1);
667
void ChineseCalendar::setCalendar()
671
QDate date(selectedDate.year(), selectedDate.month(), 1);
672
while (date.month() == selectedDate.month()) {
673
int weekDay = date.dayOfWeek();
674
mycalendat->ctcl_solar_to_lunar(selectedDate.year(),selectedDate.month(),date.day(),&c);
677
if(c.sterm.at(0) >=QChar('0') && c.sterm.at(0) <= QChar('9'))
686
int day = date.day();
689
int row = (day + (6 - weekDay) + 7 -1)/7;
690
QString site = QString("%1-%2").arg(row).arg(weekDay+1);
691
map->value(site)->setday(date.day());
692
map->value(site)->setcday(mycday);
693
if(weekDay == 6 || weekDay == 0)
694
map->value(site)->setcolor();
695
date = date.addDays(1);
698
if (!map->value("6-1")->day().isNull())
700
map->value("6-1")->show();
701
map->value("6-2")->show();
702
map->value("6-3")->show();
703
map->value("6-4")->show();
704
map->value("6-5")->show();
705
map->value("6-6")->show();
706
map->value("6-7")->show();
710
QDate today = QDate::currentDate();
711
if(today.year() == selectedDate.year() && today.month() == selectedDate.month())
714
int w = today.dayOfWeek();
717
int r = (d + (6 - w) + 7 -1)/7;
718
QString add = QString("%1-%2").arg(r).arg(w+1);
719
resetcalendardate(QString::number(today.day()));
720
map->value(add)->setToday();
724
void ChineseCalendar::clearbackground()
726
map->value("1-1")->clearstyle();
727
map->value("1-2")->clearstyle();
728
map->value("1-3")->clearstyle();
729
map->value("1-4")->clearstyle();
730
map->value("1-5")->clearstyle();
731
map->value("1-6")->clearstyle();
732
map->value("1-7")->clearstyle();
733
map->value("2-1")->clearstyle();
734
map->value("2-2")->clearstyle();
735
map->value("2-3")->clearstyle();
736
map->value("2-4")->clearstyle();
737
map->value("2-5")->clearstyle();
738
map->value("2-6")->clearstyle();
739
map->value("2-7")->clearstyle();
740
map->value("3-1")->clearstyle();
741
map->value("3-2")->clearstyle();
742
map->value("3-3")->clearstyle();
743
map->value("3-4")->clearstyle();
744
map->value("3-5")->clearstyle();
745
map->value("3-6")->clearstyle();
746
map->value("3-7")->clearstyle();
747
map->value("4-1")->clearstyle();
748
map->value("4-2")->clearstyle();
749
map->value("4-3")->clearstyle();
750
map->value("4-4")->clearstyle();
751
map->value("4-5")->clearstyle();
752
map->value("4-6")->clearstyle();
753
map->value("4-7")->clearstyle();
754
map->value("5-1")->clearstyle();
755
map->value("5-2")->clearstyle();
756
map->value("5-3")->clearstyle();
757
map->value("5-4")->clearstyle();
758
map->value("5-5")->clearstyle();
759
map->value("5-6")->clearstyle();
760
map->value("5-7")->clearstyle();
761
map->value("6-1")->clearstyle();
762
map->value("6-2")->clearstyle();
763
map->value("6-3")->clearstyle();
764
map->value("6-4")->clearstyle();
765
map->value("6-5")->clearstyle();
766
map->value("6-6")->clearstyle();
767
map->value("6-7")->clearstyle();
770
void ChineseCalendar::cleardate()
772
map->value("1-1")->clear();
773
map->value("1-2")->clear();
774
map->value("1-3")->clear();
775
map->value("1-4")->clear();
776
map->value("1-5")->clear();
777
map->value("1-6")->clear();
778
map->value("1-7")->clear();
779
map->value("2-1")->clear();
780
map->value("2-2")->clear();
781
map->value("2-3")->clear();
782
map->value("2-4")->clear();
783
map->value("2-5")->clear();
784
map->value("2-6")->clear();
785
map->value("2-7")->clear();
786
map->value("3-1")->clear();
787
map->value("3-2")->clear();
788
map->value("3-3")->clear();
789
map->value("3-4")->clear();
790
map->value("3-5")->clear();
791
map->value("3-6")->clear();
792
map->value("3-7")->clear();
793
map->value("4-1")->clear();
794
map->value("4-2")->clear();
795
map->value("4-3")->clear();
796
map->value("4-4")->clear();
797
map->value("4-5")->clear();
798
map->value("4-6")->clear();
799
map->value("4-7")->clear();
800
map->value("5-1")->clear();
801
map->value("5-2")->clear();
802
map->value("5-3")->clear();
803
map->value("5-4")->clear();
804
map->value("5-5")->clear();
805
map->value("5-6")->clear();
806
map->value("5-7")->clear();
807
map->value("6-1")->clear();
808
map->value("6-2")->clear();
809
map->value("6-3")->clear();
810
map->value("6-4")->clear();
811
map->value("6-5")->clear();
812
map->value("6-6")->clear();
813
map->value("6-7")->clear();
814
map->value("6-1")->hide();
815
map->value("6-2")->hide();
816
map->value("6-3")->hide();
817
map->value("6-4")->hide();
818
map->value("6-5")->hide();
819
map->value("6-6")->hide();
820
map->value("6-7")->hide();
824
void ChineseCalendar::mousePressEvent(QMouseEvent *event)
826
if (event->button() == Qt::LeftButton)
828
if (map->value("6-1")->isHidden())
830
if (event->x()>5 && event->x()<390 && event->y()>69 && event->y()<304)
832
else moveable = true;
836
if (event->x()>5 && event->x()<390 && event->y()>69 && event->y()<304)
838
else moveable = true;
840
dragPos = event->globalPos() - frameGeometry().topLeft();
846
void ChineseCalendar::mouseMoveEvent(QMouseEvent *event)
848
if (event->buttons() & Qt::LeftButton && moveable == true )
850
if (map->value("6-1")->isHidden())
852
if (event->x()>5 && event->x()<390 && event->y()>69 && event->y()<304)
854
else move(event->globalPos() - dragPos);
858
if (event->x()>5 && event->x()<390 && event->y()>69 && event->y()<304)
860
else move(event->globalPos() - dragPos);
862
setWindowOpacity(0.5);
868
void ChineseCalendar::mouseReleaseEvent(QMouseEvent *event)
870
if (event->button() == Qt::LeftButton)
877
void ChineseCalendar::setMonth(int month)
881
int newmonth = month+1;
885
monthCombo->setCurrentIndex(11);
891
if(newmonth ==1 || newmonth ==3 || newmonth == 5 || newmonth == 7 || newmonth == 8 || newmonth == 10 || newmonth ==12)
895
else if(newmonth ==4 || newmonth==6 || newmonth ==9 || newmonth ==11)
899
if(selectedDate.year()%4 ==0 && selectedDate.year()%100!=0)
903
else if(selectedDate.year()%400 ==0)
911
selectedDate = QDate(selectedDate.year(),newmonth,day);
915
void ChineseCalendar::setYear(QDate date)
917
selectedDate = QDate(date.year(), selectedDate.month(), selectedDate.day());
921
void ChineseCalendar::on_TbpreviousYear_clicked()
923
YearSelect->setDate(selectedDate.addYears(-1));
926
void ChineseCalendar::on_TbpreviousMonth_clicked()
928
if (monthCombo->currentIndex() == 0)
930
YearSelect->setDate(selectedDate.addYears(-1));
931
monthCombo->setCurrentIndex(11);
934
monthCombo->setCurrentIndex(monthCombo->currentIndex()-1);
937
void ChineseCalendar::on_TbnextMonth_clicked()
939
if (monthCombo->currentIndex() == 11)
941
YearSelect->setDate(selectedDate.addYears(1));
942
monthCombo->setCurrentIndex(0);
945
monthCombo->setCurrentIndex(monthCombo->currentIndex()+1);
948
void ChineseCalendar::on_TbnextYear_clicked()
950
YearSelect->setDate(selectedDate.addYears(1));
953
void ChineseCalendar::showOrHide()
962
void ChineseCalendar::setMode()
964
if(this->actionStaysOnTop->isChecked())
966
this->setWindowFlags(Qt::ToolTip | Qt::FramelessWindowHint);
968
} else if(this->actionStaysOnBottom->isChecked())
970
this->setWindowFlags(Qt::WindowStaysOnBottomHint | Qt::FramelessWindowHint);
974
this->setWindowFlags(Qt::FramelessWindowHint);