119
119
void createCalendarExtender()
121
if (!q->extender()->hasItem("calendar")) {
122
Plasma::ExtenderItem *eItem = new Plasma::ExtenderItem(q->extender());
123
eItem->setName("calendar");
124
q->initExtenderItem(eItem);
130
QString tmpStr = "isHoliday" + QString(':') + calendarWidget->holidaysRegions().join(QString(','))
131
+ QString(':') + QDate::currentDate().toString(Qt::ISODate);
132
bool isHoliday = q->dataEngine("calendar")->query(tmpStr).value(tmpStr).toBool();
134
Plasma::ExtenderItem *todayExtender = q->extender()->item("today");
136
if (!todayExtender && isHoliday) {
137
Plasma::ExtenderItem *eItem = new Plasma::ExtenderItem(q->extender());
138
eItem->setName("today");
139
q->initExtenderItem(eItem);
140
} else if (todayExtender && !isHoliday) {
141
todayExtender->destroy();
121
const bool hasExtender = q->extender()->hasItem("calendar");
123
if (q->config().readEntry("ShowCalendarPopup", true)) {
125
Plasma::ExtenderItem *eItem = new Plasma::ExtenderItem(q->extender());
126
eItem->setName("calendar");
127
q->initExtenderItem(eItem);
130
q->extender()->deleteLater();
320
310
void ClockApplet::updateClockApplet(const Plasma::DataEngine::Data &data)
322
bool updateSelectedDate = (d->calendarWidget->currentDate() == d->calendarWidget->date());
323
d->calendarWidget->setCurrentDate(data["Date"].toDate());
312
if (d->calendarWidget) {
313
bool updateSelectedDate = (d->calendarWidget->currentDate() == d->calendarWidget->date());
314
d->calendarWidget->setCurrentDate(data["Date"].toDate());
325
if (updateSelectedDate){
326
d->calendarWidget->setDate(d->calendarWidget->currentDate());
316
if (updateSelectedDate){
317
d->calendarWidget->setDate(d->calendarWidget->currentDate());
329
321
const QTime t = d->lastTimeSeen;
357
349
parent->addPage(generalWidget, i18nc("General configuration page", "General"), Applet::icon());
358
350
d->generalUi.interval->setValue(d->announceInterval);
360
d->calendarWidget->createConfigurationInterface(parent);
352
if (d->calendarWidget) {
353
d->calendarWidget->createConfigurationInterface(parent);
362
356
QWidget *widget = new QWidget();
363
357
d->timezonesUi.setupUi(widget);
412
408
if (isUserConfiguring()) {
413
409
constraintsEvent(Plasma::SizeConstraint);
411
} else if (d->calendarWidget) {
416
412
// d->calendarWidget->configAccepted(cg); is called in configAccepted(),
417
413
// as is setCurrentTimezone
418
414
// so we only need to do this in the case where the user hasn't been
446
442
setCurrentTimezone(d->defaultTimezone);
447
443
changeEngineTimezone(cur, d->defaultTimezone);
449
d->calendarWidget->configAccepted(cg);
445
if (d->calendarWidget) {
446
d->calendarWidget->configAccepted(cg);
451
449
cg.writeEntry("announceInterval", d->generalUi.interval->value());
569
567
void ClockApplet::initExtenderItem(Plasma::ExtenderItem *item)
571
569
if (item->name() == "calendar") {
570
if (!d->calendarWidget) {
571
d->calendarWidget = new Plasma::Calendar();
572
d->calendarWidget->setAutomaticUpdateEnabled(false);
573
d->calendarWidget->setMinimumSize(QSize(230, 220));
572
576
item->setTitle(i18n("Calendar"));
573
577
item->setIcon("view-pim-calendar");
574
578
item->setWidget(d->calendarWidget);
575
} else if (item->name() == "today") {
576
item->setTitle(i18n("Today"));
577
item->setIcon("view-pim-calendar");
578
d->label = new Plasma::Label();
579
item->setWidget(d->label);
583
582
void ClockApplet::init()
585
585
Plasma::ToolTipManager::self()->registerWidget(this);
587
d->calendarWidget = new Plasma::Calendar();
588
d->calendarWidget->setAutomaticUpdateEnabled(false);
589
d->calendarWidget->setMinimumSize(QSize(230, 220));
590
d->createCalendarExtender();
595
QTimer::singleShot(0, this, SLOT(createToday()));
598
588
void ClockApplet::focusInEvent(QFocusEvent* event)
601
d->calendarWidget->setFlag(QGraphicsItem::ItemIsFocusable);
602
d->calendarWidget->setFocus();
591
if (d->calendarWidget) {
592
d->calendarWidget->setFlag(QGraphicsItem::ItemIsFocusable);
593
d->calendarWidget->setFocus();
605
597
void ClockApplet::popupEvent(bool show)
599
if (show && d->calendarWidget) {
600
Plasma::DataEngine::Data data = dataEngine("time")->query(currentTimezone());
601
d->calendarWidget->setDate(data["Date"].toDate());
611
Plasma::DataEngine::Data data = dataEngine("time")->query(currentTimezone());
612
d->calendarWidget->setDate(data["Date"].toDate());
615
605
void ClockApplet::constraintsEvent(Plasma::Constraints constraints)
633
623
d->forceTzDisplay = d->timezone != d->defaultTimezone;
634
624
d->setPrettyTimezone();
636
Plasma::DataEngine::Data data = dataEngine("time")->query(d->timezone);
637
d->calendarWidget->setDate(data["Date"].toDate());
626
if (d->calendarWidget) {
627
Plasma::DataEngine::Data data = dataEngine("time")->query(d->timezone);
628
d->calendarWidget->setDate(data["Date"].toDate());
639
631
KConfigGroup cg = config();
640
632
cg.writeEntry("timezone", d->timezone);
697
689
d->clipboardMenu->addAction(sep1);
699
691
KLocale tempLocale(*KGlobal::locale());
700
tempLocale.setCalendar(calendar()->calendarType());
692
tempLocale.setCalendarSystem(calendar()->calendarSystem());
701
693
d->clipboardMenu->addAction(tempLocale.formatDateTime(dateTime, KLocale::LongDate));
702
694
d->clipboardMenu->addAction(tempLocale.formatDateTime(dateTime, KLocale::LongDate, true));
703
695
d->clipboardMenu->addAction(tempLocale.formatDateTime(dateTime, KLocale::ShortDate));
713
705
d->clipboardMenu->addAction(sep2);
715
707
QMenu *calendarMenu = d->clipboardMenu->addMenu( i18nc( "@item:inmenu Submenu for alternative calendar dates", "Other Calendars" ) );
716
QStringList calendars = KCalendarSystem::calendarSystems();
717
foreach ( const QString &cal, calendars ) {
718
if (cal != calendar()->calendarType()) {
708
QList<KLocale::CalendarSystem> calendars = KCalendarSystem::calendarSystemsList();
709
foreach (const KLocale::CalendarSystem &cal, calendars) {
710
if (cal != calendar()->calendarSystem()) {
719
711
KCalendarSystem *tempCal = KCalendarSystem::create(cal);
720
712
QString text = tempCal->formatDate(dateTime.date(), KLocale::LongDate) + " (" + KCalendarSystem::calendarLabel(cal) + ')';
721
713
calendarMenu->addAction(text);
737
729
const KCalendarSystem *ClockApplet::calendar() const
739
return d->calendarWidget->calendar();
731
if (d->calendarWidget) {
732
return d->calendarWidget->calendar();
734
return KGlobal::locale()->calendar();
742
738
#include "clockapplet.moc"