summaryrefslogtreecommitdiffabout
path: root/libkdepim/kdatepicker.cpp
authorzautrix <zautrix>2005-02-08 16:40:46 (UTC)
committer zautrix <zautrix>2005-02-08 16:40:46 (UTC)
commit720510bf933a86211f8e9e2465788d141f0f1149 (patch) (unidiff)
tree65fb4d3ab30fed082d8c8b513e1cbed910373178 /libkdepim/kdatepicker.cpp
parent78c70cfbbe79243d8b0ec40f8f6438c99046e12b (diff)
downloadkdepimpi-720510bf933a86211f8e9e2465788d141f0f1149.zip
kdepimpi-720510bf933a86211f8e9e2465788d141f0f1149.tar.gz
kdepimpi-720510bf933a86211f8e9e2465788d141f0f1149.tar.bz2
ffff
Diffstat (limited to 'libkdepim/kdatepicker.cpp') (more/less context) (ignore whitespace changes)
-rw-r--r--libkdepim/kdatepicker.cpp8
1 files changed, 5 insertions, 3 deletions
diff --git a/libkdepim/kdatepicker.cpp b/libkdepim/kdatepicker.cpp
index d6e9b51..c13734f 100644
--- a/libkdepim/kdatepicker.cpp
+++ b/libkdepim/kdatepicker.cpp
@@ -1,188 +1,190 @@
1/* -*- C++ -*- 1/* -*- C++ -*-
2 This file is part of the KDE libraries 2 This file is part of the KDE libraries
3 Copyright (C) 1997 Tim D. Gilman (tdgilman@best.org) 3 Copyright (C) 1997 Tim D. Gilman (tdgilman@best.org)
4 (C) 1998-2001 Mirko Boehm (mirko@kde.org) 4 (C) 1998-2001 Mirko Boehm (mirko@kde.org)
5 This library is free software; you can redistribute it and/or 5 This library is free software; you can redistribute it and/or
6 modify it under the terms of the GNU Library General Public 6 modify it under the terms of the GNU Library General Public
7 License as published by the Free Software Foundation; either 7 License as published by the Free Software Foundation; either
8 version 2 of the License, or (at your option) any later version. 8 version 2 of the License, or (at your option) any later version.
9 9
10 This library is distributed in the hope that it will be useful, 10 This library is distributed in the hope that it will be useful,
11 but WITHOUT ANY WARRANTY; without even the implied warranty of 11 but WITHOUT ANY WARRANTY; without even the implied warranty of
12 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 12 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
13 Library General Public License for more details. 13 Library General Public License for more details.
14 14
15 You should have received a copy of the GNU Library General Public License 15 You should have received a copy of the GNU Library General Public License
16 along with this library; see the file COPYING.LIB. If not, write to 16 along with this library; see the file COPYING.LIB. If not, write to
17 the Free Software Foundation, Inc., 59 Temple Place - Suite 330, 17 the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
18 Boston, MA 02111-1307, USA. 18 Boston, MA 02111-1307, USA.
19*/ 19*/
20 20
21#include "kdatepicker.h" 21#include "kdatepicker.h"
22#include <kglobal.h> 22#include <kglobal.h>
23#include <kapplication.h> 23#include <kapplication.h>
24#include <klocale.h> 24#include <klocale.h>
25#include <kiconloader.h> 25#include <kiconloader.h>
26#include <qframe.h> 26#include <qframe.h>
27#include <qpainter.h> 27#include <qpainter.h>
28#include <qdialog.h> 28#include <qdialog.h>
29#include <qtoolbutton.h> 29#include <qtoolbutton.h>
30#include <qfont.h> 30#include <qfont.h>
31#include <qapplication.h> 31#include <qapplication.h>
32#include <qlineedit.h> 32#include <qlineedit.h>
33#include <qvalidator.h> 33#include <qvalidator.h>
34#include <kdebug.h> 34#include <kdebug.h>
35#include <knotifyclient.h> 35#include <knotifyclient.h>
36#include <kglobalsettings.h> 36#include <kglobalsettings.h>
37#include "kdatetbl.h" 37#include "kdatetbl.h"
38#include "kdateedit.h" 38#include "kdateedit.h"
39//#include "kdatepicker.moc" 39//#include "kdatepicker.moc"
40 40
41 41
42KDatePicker::KDatePicker(QWidget *parent, QDate dt, const char *name) 42KDatePicker::KDatePicker(QWidget *parent, QDate dt, const char *name)
43 : QFrame(parent,name), 43 : QFrame(parent,name),
44 yearForward(new QToolButton(this)), 44 yearForward(new QToolButton(this)),
45 yearBackward(new QToolButton(this)), 45 yearBackward(new QToolButton(this)),
46 monthForward(new QToolButton(this)), 46 monthForward(new QToolButton(this)),
47 monthBackward(new QToolButton(this)), 47 monthBackward(new QToolButton(this)),
48 selectMonth(new QToolButton(this)), 48 selectMonth(new QToolButton(this)),
49 selectYear(new QToolButton(this)), 49 selectYear(new QToolButton(this)),
50 //line(new QLineEdit(this)), 50 //line(new QLineEdit(this)),
51 val(new KDateValidator(this)) 51 val(new KDateValidator(this))
52 //table(new KDateTable(this)), 52 //table(new KDateTable(this)),
53 //fontsize(1) 53 //fontsize(1)
54{ 54{
55 setFont ( KGlobalSettings::generalFont() ); 55 QFont fo = KGlobalSettings::generalFont();
56 table = new KDateTable(this);
57 int add = 2; 56 int add = 2;
58 if ( QApplication::desktop()->width() >= 480 && QApplication::desktop()->width() <= 640 ) 57 if ( QApplication::desktop()->width() >= 480 && QApplication::desktop()->width() <= 640 )
59 add += 4; 58 add += 4;
60 setFontSize(font().pointSize()+add); 59 fo.setPointSize(fo.pointSize()+add );
60 setFont( fo );
61 table = new KDateTable(this);
62 setFontSize(font().pointSize());
61 //line->setValidator(val); 63 //line->setValidator(val);
62 lineDate = new KDateEdit( this, "dateediipicker", true ); 64 lineDate = new KDateEdit( this, "dateediipicker", true );
63 yearForward->setPixmap(SmallIcon("2rightarrowB")); 65 yearForward->setPixmap(SmallIcon("2rightarrowB"));
64 yearBackward->setPixmap(SmallIcon("2leftarrowB")); 66 yearBackward->setPixmap(SmallIcon("2leftarrowB"));
65 monthForward->setPixmap(SmallIcon("1rightarrowB")); 67 monthForward->setPixmap(SmallIcon("1rightarrowB"));
66 monthBackward->setPixmap(SmallIcon("1leftarrowB")); 68 monthBackward->setPixmap(SmallIcon("1leftarrowB"));
67 setDate(dt); // set button texts 69 setDate(dt); // set button texts
68 connect(table, SIGNAL(dateChanged(QDate)), SLOT(dateChangedSlot(QDate))); 70 connect(table, SIGNAL(dateChanged(QDate)), SLOT(dateChangedSlot(QDate)));
69 connect(table, SIGNAL(tableClicked()), SLOT(tableClickedSlot())); 71 connect(table, SIGNAL(tableClicked()), SLOT(tableClickedSlot()));
70 connect(monthForward, SIGNAL(clicked()), SLOT(monthForwardClicked())); 72 connect(monthForward, SIGNAL(clicked()), SLOT(monthForwardClicked()));
71 connect(monthBackward, SIGNAL(clicked()), SLOT(monthBackwardClicked())); 73 connect(monthBackward, SIGNAL(clicked()), SLOT(monthBackwardClicked()));
72 connect(yearForward, SIGNAL(clicked()), SLOT(yearForwardClicked())); 74 connect(yearForward, SIGNAL(clicked()), SLOT(yearForwardClicked()));
73 connect(yearBackward, SIGNAL(clicked()), SLOT(yearBackwardClicked())); 75 connect(yearBackward, SIGNAL(clicked()), SLOT(yearBackwardClicked()));
74 connect(selectMonth, SIGNAL(clicked()), SLOT(selectMonthClicked())); 76 connect(selectMonth, SIGNAL(clicked()), SLOT(selectMonthClicked()));
75 connect(selectYear, SIGNAL(clicked()), SLOT(selectYearClicked())); 77 connect(selectYear, SIGNAL(clicked()), SLOT(selectYearClicked()));
76 //connect(line, SIGNAL(returnPressed()), SLOT(lineEnterPressed())); 78 //connect(line, SIGNAL(returnPressed()), SLOT(lineEnterPressed()));
77 connect(lineDate, SIGNAL(dateChanged(QDate)), SLOT(slotSetDate(QDate))); 79 connect(lineDate, SIGNAL(dateChanged(QDate)), SLOT(slotSetDate(QDate)));
78 connect(lineDate, SIGNAL(returnPressed()), SLOT(lineEnterPressed())); 80 connect(lineDate, SIGNAL(returnPressed()), SLOT(lineEnterPressed()));
79 table->setFocus(); 81 table->setFocus();
80 82
81} 83}
82 84
83KDatePicker::~KDatePicker() 85KDatePicker::~KDatePicker()
84{ 86{
85} 87}
86 88
87void 89void
88KDatePicker::resizeEvent(QResizeEvent*) 90KDatePicker::resizeEvent(QResizeEvent*)
89{ 91{
90 QWidget *buttons[] = { 92 QWidget *buttons[] = {
91 yearBackward, 93 yearBackward,
92 monthBackward, 94 monthBackward,
93 selectMonth, 95 selectMonth,
94 selectYear, 96 selectYear,
95 monthForward, 97 monthForward,
96 yearForward }; 98 yearForward };
97 const int NoOfButtons=sizeof(buttons)/sizeof(buttons[0]); 99 const int NoOfButtons=sizeof(buttons)/sizeof(buttons[0]);
98 QSize sizes[NoOfButtons]; 100 QSize sizes[NoOfButtons];
99 int buttonHeight=0; 101 int buttonHeight=0;
100 int count; 102 int count;
101 int w; 103 int w;
102 int x=0; 104 int x=0;
103 // ----- calculate button row height: 105 // ----- calculate button row height:
104 for(count=0; count<NoOfButtons; ++count) { 106 for(count=0; count<NoOfButtons; ++count) {
105 int xS = buttons[count]->sizeHint().width(); 107 int xS = buttons[count]->sizeHint().width();
106 int yS = buttons[count]->sizeHint().height(); 108 int yS = buttons[count]->sizeHint().height();
107 if ( QApplication::desktop()->width() < 320 ) 109 if ( QApplication::desktop()->width() < 320 )
108 sizes[count]=QSize ( xS+4, yS ); 110 sizes[count]=QSize ( xS+4, yS );
109 else 111 else
110 sizes[count]=QSize ( xS+10, yS ); 112 sizes[count]=QSize ( xS+10, yS );
111 113
112 buttonHeight=QMAX(buttonHeight, sizes[count].height()); 114 buttonHeight=QMAX(buttonHeight, sizes[count].height());
113 } 115 }
114 buttonHeight += 10; 116 buttonHeight += 10;
115 // ----- calculate size of the month button: 117 // ----- calculate size of the month button:
116 w=0; 118 w=0;
117 for(count=0; count<NoOfButtons; ++count) { 119 for(count=0; count<NoOfButtons; ++count) {
118 if(buttons[count]!=selectMonth) 120 if(buttons[count]!=selectMonth)
119 { 121 {
120 w+=sizes[count].width(); 122 w+=sizes[count].width();
121 } else { 123 } else {
122 x=count; 124 x=count;
123 } 125 }
124 } 126 }
125 sizes[x].setWidth(width()-w); // stretch the month button 127 sizes[x].setWidth(width()-w); // stretch the month button
126 // ----- place the buttons: 128 // ----- place the buttons:
127 x=0; 129 x=0;
128 for(count=0; count<NoOfButtons; ++count) 130 for(count=0; count<NoOfButtons; ++count)
129 { 131 {
130 w=sizes[count].width(); 132 w=sizes[count].width();
131 buttons[count]->setGeometry(x, 0, w, buttonHeight); 133 buttons[count]->setGeometry(x, 0, w, buttonHeight);
132 x+=w; 134 x+=w;
133 } 135 }
134 // ----- place the line edit for direct input: 136 // ----- place the line edit for direct input:
135 sizes[0]=lineDate->sizeHint(); 137 sizes[0]=lineDate->sizeHint();
136 //line->setGeometry(0, height()-sizes[0].height(), width(), sizes[0].height()); 138 //line->setGeometry(0, height()-sizes[0].height(), width(), sizes[0].height());
137 lineDate->setGeometry(0, height()-sizes[0].height(), width(), sizes[0].height()); 139 lineDate->setGeometry(0, height()-sizes[0].height(), width(), sizes[0].height());
138 // ----- adjust the table: 140 // ----- adjust the table:
139 table->setGeometry(0, buttonHeight, width(), 141 table->setGeometry(0, buttonHeight, width(),
140 height()-buttonHeight-sizes[0].height()); 142 height()-buttonHeight-sizes[0].height());
141} 143}
142 144
143void 145void
144KDatePicker::dateChangedSlot(QDate date) 146KDatePicker::dateChangedSlot(QDate date)
145{ 147{
146 lineDate->setDate( date );//(KGlobal::locale()->formatDate(date, true)); 148 lineDate->setDate( date );//(KGlobal::locale()->formatDate(date, true));
147 //line->setText(KGlobal::locale()->formatDate(date, true)); 149 //line->setText(KGlobal::locale()->formatDate(date, true));
148 emit(dateChanged(date)); 150 emit(dateChanged(date));
149} 151}
150 152
151void 153void
152KDatePicker::tableClickedSlot() 154KDatePicker::tableClickedSlot()
153{ 155{
154 156
155 emit(dateSelected(table->getDate())); 157 emit(dateSelected(table->getDate()));
156 emit(tableClicked()); 158 emit(tableClicked());
157} 159}
158 160
159const QDate& 161const QDate&
160KDatePicker::getDate() const 162KDatePicker::getDate() const
161{ 163{
162 return table->getDate(); 164 return table->getDate();
163} 165}
164 166
165const QDate & 167const QDate &
166KDatePicker::date() const 168KDatePicker::date() const
167{ 169{
168 return table->getDate(); 170 return table->getDate();
169} 171}
170 172
171void KDatePicker::slotSetDate( QDate date ) 173void KDatePicker::slotSetDate( QDate date )
172{ 174{
173 175
174 if(date.isValid()) { 176 if(date.isValid()) {
175 QString temp; 177 QString temp;
176 // ----- 178 // -----
177 table->setDate(date); 179 table->setDate(date);
178 selectMonth->setText(KGlobal::locale()->monthName(date.month(), false)); 180 selectMonth->setText(KGlobal::locale()->monthName(date.month(), false));
179 temp.setNum(date.year()); 181 temp.setNum(date.year());
180 selectYear->setText(temp); 182 selectYear->setText(temp);
181 //line->setText(KGlobal::locale()->formatDate(date, true)); 183 //line->setText(KGlobal::locale()->formatDate(date, true));
182 lineDate->setDate( date ); 184 lineDate->setDate( date );
183 } 185 }
184 186
185} 187}
186bool 188bool
187KDatePicker::setDate(const QDate& date) 189KDatePicker::setDate(const QDate& date)
188{ 190{