author | zautrix <zautrix> | 2005-02-02 15:21:26 (UTC) |
---|---|---|
committer | zautrix <zautrix> | 2005-02-02 15:21:26 (UTC) |
commit | f94c5075fdd356c7a73b23150287034216ef0bdf (patch) (unidiff) | |
tree | de0cc9b2b2caf41f4c1d3a7a81de8579030abab3 /korganizer/navigatorbar.cpp | |
parent | 66c1429e6d29331dac4182d2c42aaf1630916c7d (diff) | |
download | kdepimpi-f94c5075fdd356c7a73b23150287034216ef0bdf.zip kdepimpi-f94c5075fdd356c7a73b23150287034216ef0bdf.tar.gz kdepimpi-f94c5075fdd356c7a73b23150287034216ef0bdf.tar.bz2 |
fihix
-rw-r--r-- | korganizer/navigatorbar.cpp | 32 |
1 files changed, 31 insertions, 1 deletions
diff --git a/korganizer/navigatorbar.cpp b/korganizer/navigatorbar.cpp index f339c67..2406bb5 100644 --- a/korganizer/navigatorbar.cpp +++ b/korganizer/navigatorbar.cpp | |||
@@ -7,172 +7,202 @@ | |||
7 | it under the terms of the GNU General Public License as published by | 7 | it under the terms of the GNU General Public License as published by |
8 | the Free Software Foundation; either version 2 of the License, or | 8 | the Free Software Foundation; either version 2 of the License, or |
9 | (at your option) any later version. | 9 | (at your option) any later version. |
10 | 10 | ||
11 | This program is distributed in the hope that it will be useful, | 11 | This program is distributed in the hope that it will be useful, |
12 | but WITHOUT ANY WARRANTY; without even the implied warranty of | 12 | but WITHOUT ANY WARRANTY; without even the implied warranty of |
13 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | 13 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
14 | GNU General Public License for more details. | 14 | GNU General Public License for more details. |
15 | 15 | ||
16 | You should have received a copy of the GNU General Public License | 16 | You should have received a copy of the GNU General Public License |
17 | along with this program; if not, write to the Free Software | 17 | along with this program; if not, write to the Free Software |
18 | Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. | 18 | Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. |
19 | 19 | ||
20 | As a special exception, permission is given to link this program | 20 | As a special exception, permission is given to link this program |
21 | with any edition of Qt, and distribute the resulting executable, | 21 | with any edition of Qt, and distribute the resulting executable, |
22 | without including the source code for Qt in the source distribution. | 22 | without including the source code for Qt in the source distribution. |
23 | */ | 23 | */ |
24 | 24 | ||
25 | #include <qstring.h> | 25 | #include <qstring.h> |
26 | #include <qtooltip.h> | 26 | #include <qtooltip.h> |
27 | #include <qpushbutton.h> | 27 | #include <qpushbutton.h> |
28 | #include <qlayout.h> | 28 | #include <qlayout.h> |
29 | #include <qframe.h> | 29 | #include <qframe.h> |
30 | #include <qlabel.h> | 30 | #include <qlabel.h> |
31 | #include <qpopupmenu.h> | ||
31 | #include <qapplication.h> | 32 | #include <qapplication.h> |
32 | 33 | ||
33 | #include <kdebug.h> | 34 | #include <kdebug.h> |
34 | #include <klocale.h> | 35 | #include <klocale.h> |
35 | #include <kglobal.h> | 36 | #include <kglobal.h> |
36 | #include <kiconloader.h> | 37 | #include <kiconloader.h> |
37 | #include "libkdepim/kdatepicker.h" | 38 | #include "libkdepim/kdatepicker.h" |
38 | #include <knotifyclient.h> | 39 | #include <knotifyclient.h> |
39 | #include "kdatetbl.h" | 40 | #include "kdatetbl.h" |
40 | 41 | ||
41 | #include "koglobals.h" | 42 | #include "koglobals.h" |
42 | #include "koprefs.h" | 43 | #include "koprefs.h" |
43 | #ifndef KORG_NOPLUGINS | 44 | #ifndef KORG_NOPLUGINS |
44 | #include "kocore.h" | 45 | #include "kocore.h" |
45 | #endif | 46 | #endif |
46 | 47 | ||
47 | #include <kcalendarsystem.h> | 48 | #include <kcalendarsystem.h> |
48 | 49 | ||
49 | #include "navigatorbar.h" | 50 | #include "navigatorbar.h" |
50 | 51 | ||
51 | NavigatorBar::NavigatorBar( const QDate & date, QWidget *parent, const char *name ) | 52 | NavigatorBar::NavigatorBar( const QDate & date, QWidget *parent, const char *name ) |
52 | : QWidget( parent, name ) | 53 | : QWidget( parent, name ) |
53 | { | 54 | { |
54 | QBoxLayout *topLayout = new QHBoxLayout( this ); | 55 | QBoxLayout *topLayout = new QHBoxLayout( this ); |
55 | 56 | ||
56 | // Set up the control buttons and date label | 57 | // Set up the control buttons and date label |
57 | mCtrlFrame = new QFrame( this ); | 58 | mCtrlFrame = new QFrame( this ); |
58 | mCtrlFrame->setFrameStyle(QFrame::Panel|QFrame::Raised); | 59 | mCtrlFrame->setFrameStyle(QFrame::Panel|QFrame::Raised); |
59 | mCtrlFrame->setLineWidth(1); | 60 | mCtrlFrame->setLineWidth(1); |
60 | 61 | ||
61 | topLayout->addWidget( mCtrlFrame ); | 62 | topLayout->addWidget( mCtrlFrame ); |
62 | 63 | ||
63 | QFont tfont = font(); | 64 | QFont tfont = font(); |
64 | if ( QApplication::desktop()->width() >= 480 ) | 65 | if ( QApplication::desktop()->width() >= 480 ) |
65 | tfont.setPointSize(tfont.pointSize()+2); | 66 | tfont.setPointSize(tfont.pointSize()+2); |
66 | tfont.setBold(true); | 67 | tfont.setBold(true); |
67 | 68 | ||
68 | bool isRTL = KOGlobals::self()->reverseLayout(); | 69 | bool isRTL = KOGlobals::self()->reverseLayout(); |
69 | #ifndef DESKTOP_VERSION | 70 | #ifndef DESKTOP_VERSION |
70 | bool isDesktop = false; | 71 | bool isDesktop = false; |
71 | #else | 72 | #else |
72 | bool isDesktop = true; | 73 | bool isDesktop = true; |
73 | #endif | 74 | #endif |
74 | if ( QString ( name ) == QString("useBigPixmaps") && QApplication::desktop()->width() > 320 ) | 75 | bool insertWeek = (QString ( name ) == QString("useBigPixmaps")) ; |
76 | if ( insertWeek && QApplication::desktop()->width() > 320 ) | ||
75 | isDesktop = true; | 77 | isDesktop = true; |
76 | // Create backward navigation buttons | 78 | // Create backward navigation buttons |
77 | mPrevYear = new QPushButton( mCtrlFrame ); | 79 | mPrevYear = new QPushButton( mCtrlFrame ); |
78 | mPrevYear->setPixmap( SmallIcon( isDesktop ? "2leftarrowB" : "2leftarrow" ) ); | 80 | mPrevYear->setPixmap( SmallIcon( isDesktop ? "2leftarrowB" : "2leftarrow" ) ); |
79 | QToolTip::add( mPrevYear, i18n("Previous Year") ); | 81 | QToolTip::add( mPrevYear, i18n("Previous Year") ); |
80 | 82 | ||
81 | mPrevMonth = new QPushButton( mCtrlFrame ); | 83 | mPrevMonth = new QPushButton( mCtrlFrame ); |
82 | mPrevMonth->setPixmap( SmallIcon( isDesktop ? "1leftarrowB" : "1leftarrow") ); | 84 | mPrevMonth->setPixmap( SmallIcon( isDesktop ? "1leftarrowB" : "1leftarrow") ); |
83 | QToolTip::add( mPrevMonth, i18n("Previous Month") ); | 85 | QToolTip::add( mPrevMonth, i18n("Previous Month") ); |
84 | 86 | ||
85 | // Create forward navigation buttons | 87 | // Create forward navigation buttons |
86 | mNextMonth = new QPushButton( mCtrlFrame ); | 88 | mNextMonth = new QPushButton( mCtrlFrame ); |
87 | mNextMonth->setPixmap( SmallIcon( isDesktop ? "1rightarrowB" : "1rightarrow") ); | 89 | mNextMonth->setPixmap( SmallIcon( isDesktop ? "1rightarrowB" : "1rightarrow") ); |
88 | QToolTip::add( mNextMonth, i18n("Next Month") ); | 90 | QToolTip::add( mNextMonth, i18n("Next Month") ); |
89 | 91 | ||
92 | QPushButton * selWeek = 0; | ||
93 | if ( insertWeek ) { | ||
94 | selWeek = new QPushButton( mCtrlFrame ); | ||
95 | QToolTip::add( selWeek, i18n("Select Week") ); | ||
96 | selWeek->setFocusPolicy(NoFocus); | ||
97 | } | ||
98 | |||
90 | mNextYear = new QPushButton( mCtrlFrame ); | 99 | mNextYear = new QPushButton( mCtrlFrame ); |
91 | mNextYear->setPixmap( SmallIcon( isDesktop ? "2rightarrowB": "2rightarrow") ); | 100 | mNextYear->setPixmap( SmallIcon( isDesktop ? "2rightarrowB": "2rightarrow") ); |
92 | QToolTip::add( mNextYear, i18n("Next Year") ); | 101 | QToolTip::add( mNextYear, i18n("Next Year") ); |
93 | mSelectMonth = new QPushButton( mCtrlFrame ); | 102 | mSelectMonth = new QPushButton( mCtrlFrame ); |
94 | // Create month name label | 103 | // Create month name label |
95 | //selectMonth->setFont( tfont ); | 104 | //selectMonth->setFont( tfont ); |
96 | // selectMonth->setAlignment( AlignCenter ); | 105 | // selectMonth->setAlignment( AlignCenter ); |
97 | //mDateLabel = new QLabel( selectMonth ); | 106 | //mDateLabel = new QLabel( selectMonth ); |
98 | //mDateLabel->setFont( tfont ); | 107 | //mDateLabel->setFont( tfont ); |
99 | //mDateLabel->setAlignment( AlignCenter ); | 108 | //mDateLabel->setAlignment( AlignCenter ); |
100 | if ( QString ( name ) == QString("useBigPixmaps") ) { | 109 | if ( QString ( name ) == QString("useBigPixmaps") ) { |
101 | mNextMonth->setFlat( true); | 110 | mNextMonth->setFlat( true); |
102 | mNextYear->setFlat( true); | 111 | mNextYear->setFlat( true); |
103 | mSelectMonth->setFlat( true); | 112 | mSelectMonth->setFlat( true); |
104 | mPrevYear->setFlat( true); | 113 | mPrevYear->setFlat( true); |
105 | mPrevMonth->setFlat( true); | 114 | mPrevMonth->setFlat( true); |
115 | if ( insertWeek ) | ||
116 | selWeek->setFlat( true); | ||
106 | } | 117 | } |
107 | mSelectMonth->setFont( tfont ); | 118 | mSelectMonth->setFont( tfont ); |
108 | // Set minimum width to width of widest month name label | 119 | // Set minimum width to width of widest month name label |
109 | int i; | 120 | int i; |
110 | int maxwidth = 0; | 121 | int maxwidth = 0; |
111 | QFontMetrics fm ( mSelectMonth->font() ); | 122 | QFontMetrics fm ( mSelectMonth->font() ); |
112 | int width = fm.width("September '00" ); | 123 | int width = fm.width("September '00" ); |
113 | // for( i = 1; i <= KOGlobals::self()->calendarSystem()->monthsInYear(date); | 124 | // for( i = 1; i <= KOGlobals::self()->calendarSystem()->monthsInYear(date); |
114 | // ++i ) { | 125 | // ++i ) { |
115 | // //int width = fm.width( KOGlobals::self()->calendarSystem()->monthName(i, | 126 | // //int width = fm.width( KOGlobals::self()->calendarSystem()->monthName(i, |
116 | // // KOGlobals::self()->calendarSystem()->year(date) ) + " 2000" ); | 127 | // // KOGlobals::self()->calendarSystem()->year(date) ) + " 2000" ); |
117 | // int width = fm.width("September 2000" ); | 128 | // int width = fm.width("September 2000" ); |
118 | // if ( width > maxwidth ) maxwidth = width; | 129 | // if ( width > maxwidth ) maxwidth = width; |
119 | // } | 130 | // } |
120 | maxwidth = width+2; | 131 | maxwidth = width+2; |
121 | int size = fm.height()+2; | 132 | int size = fm.height()+2; |
122 | if ( QApplication::desktop()->width() >= 480 ) { | 133 | if ( QApplication::desktop()->width() >= 480 ) { |
123 | size += 6; | 134 | size += 6; |
124 | maxwidth+= 6; | 135 | maxwidth+= 6; |
125 | } | 136 | } |
137 | |||
138 | if ( insertWeek ) { | ||
139 | //shit : bug in Qt. after inserting 53 item, only 51 are shown... | ||
140 | QPopupMenu * wpo = new QPopupMenu (this); | ||
141 | wpo->insertItem( i18n("W#"), 0 ); | ||
142 | for ( i = 1; i < 53; ++i ) { | ||
143 | wpo->insertItem( QString::number(i), i ); | ||
144 | } | ||
145 | for ( i = 53; i < 54; ++i ) { | ||
146 | wpo->insertItem( "", 52 ); | ||
147 | } | ||
148 | selWeek->setPopup( wpo ); | ||
149 | selWeek->setFixedWidth( (size/4)*3 ); | ||
150 | selWeek->setFixedHeight( size ); | ||
151 | connect( wpo, SIGNAL( activated(int) ), SIGNAL( selectWeek ( int ) ) ); | ||
152 | } | ||
126 | mSelectMonth->setFixedWidth( maxwidth ); | 153 | mSelectMonth->setFixedWidth( maxwidth ); |
127 | mSelectMonth->setFixedHeight( size ); | 154 | mSelectMonth->setFixedHeight( size ); |
128 | mPrevYear->setFixedHeight( size ); | 155 | mPrevYear->setFixedHeight( size ); |
129 | mPrevMonth->setFixedHeight( size ); | 156 | mPrevMonth->setFixedHeight( size ); |
130 | mNextMonth->setFixedHeight( size ); | 157 | mNextMonth->setFixedHeight( size ); |
131 | mNextYear->setFixedHeight ( size ); | 158 | mNextYear->setFixedHeight ( size ); |
132 | // set up control frame layout | 159 | // set up control frame layout |
133 | QBoxLayout *ctrlLayout = new QHBoxLayout( mCtrlFrame, 1 ); | 160 | QBoxLayout *ctrlLayout = new QHBoxLayout( mCtrlFrame, 1 ); |
134 | ctrlLayout->addWidget( mPrevYear, 3 ); | 161 | ctrlLayout->addWidget( mPrevYear, 3 ); |
135 | ctrlLayout->addWidget( mPrevMonth, 3 ); | 162 | ctrlLayout->addWidget( mPrevMonth, 3 ); |
136 | //ctrlLayout->addStretch( 1 ); | 163 | //ctrlLayout->addStretch( 1 ); |
137 | // ctrlLayout->addSpacing( 1 ); | 164 | // ctrlLayout->addSpacing( 1 ); |
138 | // ctrlLayout->addWidget( mDateLabel ); | 165 | // ctrlLayout->addWidget( mDateLabel ); |
139 | ctrlLayout->addWidget( mSelectMonth ); | 166 | ctrlLayout->addWidget( mSelectMonth ); |
140 | // ctrlLayout->addSpacing( 1 ); | 167 | // ctrlLayout->addSpacing( 1 ); |
141 | // ctrlLayout->addStretch( 1 ); | 168 | // ctrlLayout->addStretch( 1 ); |
142 | ctrlLayout->addWidget( mNextMonth, 3 ); | 169 | ctrlLayout->addWidget( mNextMonth, 3 ); |
143 | ctrlLayout->addWidget( mNextYear, 3 ); | 170 | ctrlLayout->addWidget( mNextYear, 3 ); |
171 | if ( insertWeek ) | ||
172 | ctrlLayout->addWidget( selWeek ); | ||
144 | 173 | ||
145 | connect( mPrevYear, SIGNAL( clicked() ), SIGNAL( goPrevYear() ) ); | 174 | connect( mPrevYear, SIGNAL( clicked() ), SIGNAL( goPrevYear() ) ); |
146 | connect( mPrevMonth, SIGNAL( clicked() ), SIGNAL( goPrevMonth() ) ); | 175 | connect( mPrevMonth, SIGNAL( clicked() ), SIGNAL( goPrevMonth() ) ); |
147 | connect( mNextMonth, SIGNAL( clicked() ), SIGNAL( goNextMonth() ) ); | 176 | connect( mNextMonth, SIGNAL( clicked() ), SIGNAL( goNextMonth() ) ); |
148 | connect( mNextYear, SIGNAL( clicked() ), SIGNAL( goNextYear() ) ); | 177 | connect( mNextYear, SIGNAL( clicked() ), SIGNAL( goNextYear() ) ); |
149 | connect( mSelectMonth, SIGNAL( clicked() ),SLOT( selectMonth() ) ); | 178 | connect( mSelectMonth, SIGNAL( clicked() ),SLOT( selectMonth() ) ); |
150 | mPrevYear->setFocusPolicy(NoFocus); | 179 | mPrevYear->setFocusPolicy(NoFocus); |
151 | mPrevMonth->setFocusPolicy(NoFocus); | 180 | mPrevMonth->setFocusPolicy(NoFocus); |
152 | mNextMonth->setFocusPolicy(NoFocus); | 181 | mNextMonth->setFocusPolicy(NoFocus); |
153 | mNextYear->setFocusPolicy(NoFocus); | 182 | mNextYear->setFocusPolicy(NoFocus); |
154 | mSelectMonth->setFocusPolicy(NoFocus); | 183 | mSelectMonth->setFocusPolicy(NoFocus); |
184 | |||
155 | } | 185 | } |
156 | 186 | ||
157 | NavigatorBar::~NavigatorBar() | 187 | NavigatorBar::~NavigatorBar() |
158 | { | 188 | { |
159 | } | 189 | } |
160 | 190 | ||
161 | void NavigatorBar::selectMonth() | 191 | void NavigatorBar::selectMonth() |
162 | { | 192 | { |
163 | 193 | ||
164 | int month; | 194 | int month; |
165 | KPopupFrame* popup = new KPopupFrame(this); | 195 | KPopupFrame* popup = new KPopupFrame(this); |
166 | int size = 12; | 196 | int size = 12; |
167 | if ( QApplication::desktop()->width() >= 480 ) | 197 | if ( QApplication::desktop()->width() >= 480 ) |
168 | size = 18; | 198 | size = 18; |
169 | KDateInternalMonthPicker* picker = new KDateInternalMonthPicker(size, popup); | 199 | KDateInternalMonthPicker* picker = new KDateInternalMonthPicker(size, popup); |
170 | // ----- | 200 | // ----- |
171 | picker->resize(picker->sizeHint()); | 201 | picker->resize(picker->sizeHint()); |
172 | popup->setMainWidget(picker); | 202 | popup->setMainWidget(picker); |
173 | picker->setFocus(); | 203 | picker->setFocus(); |
174 | connect(picker, SIGNAL(closeMe(int)), popup, SLOT(close(int))); | 204 | connect(picker, SIGNAL(closeMe(int)), popup, SLOT(close(int))); |
175 | if(popup->exec(mSelectMonth->mapToGlobal(QPoint(0, mSelectMonth->height())))) | 205 | if(popup->exec(mSelectMonth->mapToGlobal(QPoint(0, mSelectMonth->height())))) |
176 | { | 206 | { |
177 | month = picker->getResult(); | 207 | month = picker->getResult(); |
178 | emit monthSelected ( month ); | 208 | emit monthSelected ( month ); |