diff options
author | Timothy Pearson <kb9vqf@pearsoncomputing.net> | 2011-11-06 15:56:40 -0600 |
---|---|---|
committer | Timothy Pearson <kb9vqf@pearsoncomputing.net> | 2011-11-06 15:56:40 -0600 |
commit | e16866e072f94410321d70daedbcb855ea878cac (patch) | |
tree | ee3f52eabde7da1a0e6ca845fb9c2813cf1558cf /kdeui/kdatepicker.cpp | |
parent | a58c20c1a7593631a1b50213c805507ebc16adaf (diff) | |
download | tdelibs-e16866e072f94410321d70daedbcb855ea878cac.tar.gz tdelibs-e16866e072f94410321d70daedbcb855ea878cac.zip |
Actually move the kde files that were renamed in the last commit
Diffstat (limited to 'kdeui/kdatepicker.cpp')
-rw-r--r-- | kdeui/kdatepicker.cpp | 549 |
1 files changed, 0 insertions, 549 deletions
diff --git a/kdeui/kdatepicker.cpp b/kdeui/kdatepicker.cpp deleted file mode 100644 index ab41fec15..000000000 --- a/kdeui/kdatepicker.cpp +++ /dev/null @@ -1,549 +0,0 @@ -/* -*- C++ -*- - This file is part of the KDE libraries - Copyright (C) 1997 Tim D. Gilman (tdgilman@best.org) - (C) 1998-2001 Mirko Boehm (mirko@kde.org) - This library is free software; you can redistribute it and/or - modify it under the terms of the GNU Library General Public - License as published by the Free Software Foundation; either - version 2 of the License, or (at your option) any later version. - - This library is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - Library General Public License for more details. - - You should have received a copy of the GNU Library General Public License - along with this library; see the file COPYING.LIB. If not, write to - the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, - Boston, MA 02110-1301, USA. -*/ - -#include <tqlayout.h> -#include <tqframe.h> -#include <tqpainter.h> -#include <tqdialog.h> -#include <tqstyle.h> -#include <tqtoolbutton.h> -#include <tqcombobox.h> -#include <tqtooltip.h> -#include <tqfont.h> -#include <tqvalidator.h> -#include <tqpopupmenu.h> -#include <tqtimer.h> - -#include "kdatepicker.h" -#include <kglobal.h> -#include <kapplication.h> -#include <kdialog.h> -#include <klocale.h> -#include <kiconloader.h> -#include <ktoolbar.h> -#include <klineedit.h> -#include <kdebug.h> -#include <knotifyclient.h> -#include <kcalendarsystem.h> - -#include "kdatetbl.h" -#include "kdatepicker.moc" - -// Week numbers are defined by ISO 8601 -// See http://www.merlyn.demon.co.uk/weekinfo.htm for details - -class KDatePicker::KDatePickerPrivate -{ -public: - KDatePickerPrivate() : closeButton(0L), selectWeek(0L), todayButton(0), navigationLayout(0) {} - - void fillWeeksCombo(const TQDate &date); - - TQToolButton *closeButton; - TQComboBox *selectWeek; - TQToolButton *todayButton; - TQBoxLayout *navigationLayout; -}; - -void KDatePicker::fillWeeksCombo(const TQDate &date) -{ - // every year can have a different number of weeks - const KCalendarSystem * calendar = KGlobal::locale()->calendar(); - - // it could be that we had 53,1..52 and now 1..53 which is the same number but different - // so always fill with new values - - d->selectWeek->clear(); - - // We show all week numbers for all weeks between first day of year to last day of year - // This of course can be a list like 53,1,2..52 - - TQDate day; - int year = calendar->year(date); - calendar->setYMD(day, year, 1, 1); - int lastMonth = calendar->monthsInYear(day); - TQDate lastDay, firstDayOfLastMonth; - calendar->setYMD(firstDayOfLastMonth, year, lastMonth, 1); - calendar->setYMD(lastDay, year, lastMonth, calendar->daysInMonth(firstDayOfLastMonth)); - - for (; day <= lastDay ; day = calendar->addDays(day, 7 /*calendar->daysOfWeek()*/) ) - { - TQString week = i18n("Week %1").arg(calendar->weekNumber(day, &year)); - if ( year != calendar->year(day) ) week += "*"; // show that this is a week from a different year - d->selectWeek->insertItem(week); - - // make sure that the week of the lastDay is always inserted: in Chinese calendar - // system, this is not always the case - if(day < lastDay && day.daysTo(lastDay) < 7 && calendar->weekNumber(day) != calendar->weekNumber(lastDay)) - day = TQT_TQDATE_OBJECT(lastDay.addDays(-7)); - } -} - -KDatePicker::KDatePicker(TQWidget *parent, TQDate dt, const char *name) - : TQFrame(parent,name) -{ - init( dt ); -} - -KDatePicker::KDatePicker(TQWidget *parent, TQDate dt, const char *name, WFlags f) - : TQFrame(parent,name, f) -{ - init( dt ); -} - -KDatePicker::KDatePicker( TQWidget *parent, const char *name ) - : TQFrame(parent,name) -{ - init( TQDate::currentDate() ); -} - -void KDatePicker::init( const TQDate &dt ) -{ - d = new KDatePickerPrivate(); - - TQBoxLayout * topLayout = new TQVBoxLayout(this); - - d->navigationLayout = new TQHBoxLayout(topLayout); - d->navigationLayout->addStretch(); - yearBackward = new TQToolButton(this); - yearBackward->setAutoRaise(true); - d->navigationLayout->addWidget(yearBackward); - monthBackward = new TQToolButton(this); - monthBackward ->setAutoRaise(true); - d->navigationLayout->addWidget(monthBackward); - d->navigationLayout->addSpacing(KDialog::spacingHint()); - - selectMonth = new TQToolButton(this); - selectMonth ->setAutoRaise(true); - d->navigationLayout->addWidget(selectMonth); - selectYear = new TQToolButton(this); - selectYear->setToggleButton(true); - selectYear->setAutoRaise(true); - d->navigationLayout->addWidget(selectYear); - d->navigationLayout->addSpacing(KDialog::spacingHint()); - - monthForward = new TQToolButton(this); - monthForward ->setAutoRaise(true); - d->navigationLayout->addWidget(monthForward); - yearForward = new TQToolButton(this); - yearForward ->setAutoRaise(true); - d->navigationLayout->addWidget(yearForward); - d->navigationLayout->addStretch(); - - line = new KLineEdit(this); - val = new KDateValidator(this); - table = new KDateTable(this); - fontsize = KGlobalSettings::generalFont().pointSize(); - if (fontsize == -1) - fontsize = TQFontInfo(KGlobalSettings::generalFont()).pointSize(); - - fontsize++; // Make a little bigger - - d->selectWeek = new TQComboBox(false, this); // read only week selection - d->todayButton = new TQToolButton(this); - d->todayButton->setIconSet(SmallIconSet("today")); - - TQToolTip::add(yearForward, i18n("Next year")); - TQToolTip::add(yearBackward, i18n("Previous year")); - TQToolTip::add(monthForward, i18n("Next month")); - TQToolTip::add(monthBackward, i18n("Previous month")); - TQToolTip::add(d->selectWeek, i18n("Select a week")); - TQToolTip::add(selectMonth, i18n("Select a month")); - TQToolTip::add(selectYear, i18n("Select a year")); - TQToolTip::add(d->todayButton, i18n("Select the current day")); - - // ----- - setFontSize(fontsize); - line->setValidator(val); - line->installEventFilter( this ); - if ( TQApplication::reverseLayout() ) - { - yearForward->setIconSet(BarIconSet(TQString::tqfromLatin1("2leftarrow"))); - yearBackward->setIconSet(BarIconSet(TQString::tqfromLatin1("2rightarrow"))); - monthForward->setIconSet(BarIconSet(TQString::tqfromLatin1("1leftarrow"))); - monthBackward->setIconSet(BarIconSet(TQString::tqfromLatin1("1rightarrow"))); - } - else - { - yearForward->setIconSet(BarIconSet(TQString::tqfromLatin1("2rightarrow"))); - yearBackward->setIconSet(BarIconSet(TQString::tqfromLatin1("2leftarrow"))); - monthForward->setIconSet(BarIconSet(TQString::tqfromLatin1("1rightarrow"))); - monthBackward->setIconSet(BarIconSet(TQString::tqfromLatin1("1leftarrow"))); - } - connect(table, TQT_SIGNAL(dateChanged(TQDate)), TQT_SLOT(dateChangedSlot(TQDate))); - connect(table, TQT_SIGNAL(tableClicked()), TQT_SLOT(tableClickedSlot())); - connect(monthForward, TQT_SIGNAL(clicked()), TQT_SLOT(monthForwardClicked())); - connect(monthBackward, TQT_SIGNAL(clicked()), TQT_SLOT(monthBackwardClicked())); - connect(yearForward, TQT_SIGNAL(clicked()), TQT_SLOT(yearForwardClicked())); - connect(yearBackward, TQT_SIGNAL(clicked()), TQT_SLOT(yearBackwardClicked())); - connect(d->selectWeek, TQT_SIGNAL(activated(int)), TQT_SLOT(weekSelected(int))); - connect(d->todayButton, TQT_SIGNAL(clicked()), TQT_SLOT(todayButtonClicked())); - connect(selectMonth, TQT_SIGNAL(clicked()), TQT_SLOT(selectMonthClicked())); - connect(selectYear, TQT_SIGNAL(toggled(bool)), TQT_SLOT(selectYearClicked())); - connect(line, TQT_SIGNAL(returnPressed()), TQT_SLOT(lineEnterPressed())); - table->setFocus(); - - - topLayout->addWidget(table); - - TQBoxLayout * bottomLayout = new TQHBoxLayout(topLayout); - bottomLayout->addWidget(d->todayButton); - bottomLayout->addWidget(line); - bottomLayout->addWidget(d->selectWeek); - - table->setDate(dt); - dateChangedSlot(dt); // needed because table emits changed only when newDate != oldDate -} - -KDatePicker::~KDatePicker() -{ - delete d; -} - -bool -KDatePicker::eventFilter(TQObject *o, TQEvent *e ) -{ - if ( e->type() == TQEvent::KeyPress ) { - TQKeyEvent *k = (TQKeyEvent *)e; - - if ( (k->key() == TQt::Key_Prior) || - (k->key() == TQt::Key_Next) || - (k->key() == Qt::Key_Up) || - (k->key() == Qt::Key_Down) ) - { - TQApplication::sendEvent( table, e ); - table->setFocus(); - return true; // eat event - } - } - return TQFrame::eventFilter( o, e ); -} - -void -KDatePicker::resizeEvent(TQResizeEvent* e) -{ - TQWidget::resizeEvent(e); -} - -void -KDatePicker::dateChangedSlot(TQDate date) -{ - kdDebug(298) << "KDatePicker::dateChangedSlot: date changed (" << date.year() << "/" << date.month() << "/" << date.day() << ")." << endl; - - const KCalendarSystem * calendar = KGlobal::locale()->calendar(); - - line->setText(KGlobal::locale()->formatDate(date, true)); - selectMonth->setText(calendar->monthName(date, false)); - fillWeeksCombo(date); - - // calculate the item num in the week combo box; normalize selected day so as if 1.1. is the first day of the week - TQDate firstDay; - calendar->setYMD(firstDay, calendar->year(date), 1, 1); - d->selectWeek->setCurrentItem((calendar->dayOfYear(date) + calendar->dayOfWeek(firstDay) - 2) / 7/*calendar->daysInWeek()*/); - selectYear->setText(calendar->yearString(date, false)); - - emit(dateChanged(date)); -} - -void -KDatePicker::tableClickedSlot() -{ - kdDebug(298) << "KDatePicker::tableClickedSlot: table clicked." << endl; - emit(dateSelected(table->getDate())); - emit(tableClicked()); -} - -const TQDate& -KDatePicker::getDate() const -{ - return table->getDate(); -} - -const TQDate & -KDatePicker::date() const -{ - return table->getDate(); -} - -bool -KDatePicker::setDate(const TQDate& date) -{ - if(date.isValid()) - { - table->setDate(date); // this also emits dateChanged() which then calls our dateChangedSlot() - return true; - } - else - { - kdDebug(298) << "KDatePicker::setDate: refusing to set invalid date." << endl; - return false; - } -} - -void -KDatePicker::monthForwardClicked() -{ - TQDate temp; - temp = KGlobal::locale()->calendar()->addMonths( table->getDate(), 1 ); - - setDate( temp ); -} - -void -KDatePicker::monthBackwardClicked() -{ - TQDate temp; - temp = KGlobal::locale()->calendar()->addMonths( table->getDate(), -1 ); - - setDate( temp ); -} - -void -KDatePicker::yearForwardClicked() -{ - TQDate temp; - temp = KGlobal::locale()->calendar()->addYears( table->getDate(), 1 ); - - setDate( temp ); -} - -void -KDatePicker::yearBackwardClicked() -{ - TQDate temp; - temp = KGlobal::locale()->calendar()->addYears( table->getDate(), -1 ); - - setDate( temp ); -} - -void KDatePicker::selectWeekClicked() {} // ### in 3.2 obsolete; kept for binary compatibility - -void -KDatePicker::weekSelected(int week) -{ - const KCalendarSystem * calendar = KGlobal::locale()->calendar(); - - TQDate date = table->getDate(); - int year = calendar->year(date); - - calendar->setYMD(date, year, 1, 1); // first day of selected year - - // calculate the first day in the selected week (day 1 is first day of week) - date = calendar->addDays(date, week * 7/*calendar->daysOfWeek()*/ -calendar->dayOfWeek(date) + 1); - - setDate(date); -} - -void -KDatePicker::selectMonthClicked() -{ - // every year can have different month names (in some calendar systems) - const KCalendarSystem * calendar = KGlobal::locale()->calendar(); - TQDate date = table->getDate(); - int i, month, months = calendar->monthsInYear(date); - - TQPopupMenu popup(selectMonth); - - for (i = 1; i <= months; i++) - popup.insertItem(calendar->monthName(i, calendar->year(date)), i); - - popup.setActiveItem(calendar->month(date) - 1); - - if ( (month = popup.exec(selectMonth->mapToGlobal(TQPoint(0, 0)), calendar->month(date) - 1)) == -1 ) return; // canceled - - int day = calendar->day(date); - // ----- construct a valid date in this month: - calendar->setYMD(date, calendar->year(date), month, 1); - date = TQT_TQDATE_OBJECT(date.addDays(QMIN(day, calendar->daysInMonth(date)) - 1)); - // ----- set this month - setDate(date); -} - -void -KDatePicker::selectYearClicked() -{ - const KCalendarSystem * calendar = KGlobal::locale()->calendar(); - - if (selectYear->state() == TQButton::Off) - { - return; - } - - int year; - KPopupFrame* popup = new KPopupFrame(this); - KDateInternalYearSelector* picker = new KDateInternalYearSelector(popup); - // ----- - picker->resize(picker->tqsizeHint()); - picker->setYear( table->getDate().year() ); - picker->selectAll(); - popup->setMainWidget(picker); - connect(picker, TQT_SIGNAL(closeMe(int)), popup, TQT_SLOT(close(int))); - picker->setFocus(); - if(popup->exec(selectYear->mapToGlobal(TQPoint(0, selectMonth->height())))) - { - TQDate date; - int day; - // ----- - year=picker->getYear(); - date=table->getDate(); - day=calendar->day(date); - // ----- construct a valid date in this month: - //date.setYMD(year, date.month(), 1); - //date.setYMD(year, date.month(), QMIN(day, date.daysInMonth())); - calendar->setYMD(date, year, calendar->month(date), - QMIN(day, calendar->daysInMonth(date))); - // ----- set this month - setDate(date); - } else { - KNotifyClient::beep(); - } - - delete popup; - TQTimer::singleShot(0, this, TQT_SLOT(ensureSelectYearIsUp())); -} - -void -KDatePicker::ensureSelectYearIsUp() -{ - if (!selectYear->isDown()) - { - selectYear->setOn( false ); - } -} - -void -KDatePicker::setEnabled(bool enable) -{ - TQWidget *widgets[]= { - yearForward, yearBackward, monthForward, monthBackward, - selectMonth, selectYear, - line, table, d->selectWeek, d->todayButton }; - const int Size=sizeof(widgets)/sizeof(widgets[0]); - int count; - // ----- - for(count=0; count<Size; ++count) - { - widgets[count]->setEnabled(enable); - } -} - -void -KDatePicker::lineEnterPressed() -{ - TQDate temp; - // ----- - if(val->date(line->text(), temp)==TQValidator::Acceptable) - { - kdDebug(298) << "KDatePicker::lineEnterPressed: valid date entered." << endl; - emit(dateEntered(temp)); - setDate(temp); - } else { - KNotifyClient::beep(); - kdDebug(298) << "KDatePicker::lineEnterPressed: invalid date entered." << endl; - } -} - -void -KDatePicker::todayButtonClicked() -{ - setDate(TQDate::currentDate()); -} - -TQSize -KDatePicker::tqsizeHint() const -{ - return TQWidget::tqsizeHint(); -} - -void -KDatePicker::setFontSize(int s) -{ - TQWidget *buttons[]= { - // yearBackward, - // monthBackward, - selectMonth, - selectYear, - // monthForward, - // yearForward - }; - const int NoOfButtons=sizeof(buttons)/sizeof(buttons[0]); - int count; - TQFont font; - TQRect r; - // ----- - fontsize=s; - for(count=0; count<NoOfButtons; ++count) - { - font=buttons[count]->font(); - font.setPointSize(s); - buttons[count]->setFont(font); - } - TQFontMetrics metrics(selectMonth->fontMetrics()); - - for (int i = 1; ; ++i) - { - TQString str = KGlobal::locale()->calendar()->monthName(i, - KGlobal::locale()->calendar()->year(table->getDate()), false); - if (str.isNull()) break; - r=metrics.boundingRect(str); - maxMonthRect.setWidth(QMAX(r.width(), maxMonthRect.width())); - maxMonthRect.setHeight(QMAX(r.height(), maxMonthRect.height())); - } - - TQSize metricBound = tqstyle().tqsizeFromContents(TQStyle::CT_ToolButton, - selectMonth, - maxMonthRect); - selectMonth->setMinimumSize(metricBound); - - table->setFontSize(s); -} - -void -KDatePicker::setCloseButton( bool enable ) -{ - if ( enable == (d->closeButton != 0L) ) - return; - - if ( enable ) { - d->closeButton = new TQToolButton( this ); - d->closeButton->setAutoRaise(true); - d->navigationLayout->addSpacing(KDialog::spacingHint()); - d->navigationLayout->addWidget(d->closeButton); - TQToolTip::add(d->closeButton, i18n("Close")); - d->closeButton->setPixmap( SmallIcon("remove") ); - connect( d->closeButton, TQT_SIGNAL( clicked() ), - tqtopLevelWidget(), TQT_SLOT( close() ) ); - } - else { - delete d->closeButton; - d->closeButton = 0L; - } - - updateGeometry(); -} - -bool KDatePicker::hasCloseButton() const -{ - return (d->closeButton); -} - -void KDatePicker::virtual_hook( int /*id*/, void* /*data*/ ) -{ /*BASE::virtual_hook( id, data );*/ } - |