summaryrefslogtreecommitdiffabout
authorzautrix <zautrix>2005-07-06 12:36:37 (UTC)
committer zautrix <zautrix>2005-07-06 12:36:37 (UTC)
commit794478c1f0b960af9256c480ec28abd9429f72c2 (patch) (unidiff)
treed1a1f1ca76a9c64536843e886f78eef3d4bdae4f
parent1e5f0fbaac9814c7289137a74a460494553245c2 (diff)
downloadkdepimpi-794478c1f0b960af9256c480ec28abd9429f72c2.zip
kdepimpi-794478c1f0b960af9256c480ec28abd9429f72c2.tar.gz
kdepimpi-794478c1f0b960af9256c480ec28abd9429f72c2.tar.bz2
fixx
Diffstat (more/less context) (show whitespace changes)
-rw-r--r--kaddressbook/jumpbuttonbar.cpp5
1 files changed, 3 insertions, 2 deletions
diff --git a/kaddressbook/jumpbuttonbar.cpp b/kaddressbook/jumpbuttonbar.cpp
index 7524fb7..aebf8a6 100644
--- a/kaddressbook/jumpbuttonbar.cpp
+++ b/kaddressbook/jumpbuttonbar.cpp
@@ -36,196 +36,197 @@
36#include "kabcore.h" 36#include "kabcore.h"
37 37
38#include "jumpbuttonbar.h" 38#include "jumpbuttonbar.h"
39 39
40class JumpButton : public QPushButton 40class JumpButton : public QPushButton
41{ 41{
42 public: 42 public:
43 JumpButton( const QString &text, QWidget *parent, 43 JumpButton( const QString &text, QWidget *parent,
44 const QString &character ); 44 const QString &character );
45 45
46 void setCharacter( const QString &character ); 46 void setCharacter( const QString &character );
47 QString character() const; 47 QString character() const;
48 48
49 private: 49 private:
50 QString mCharacter; 50 QString mCharacter;
51}; 51};
52 52
53JumpButton::JumpButton( const QString &text, QWidget *parent, 53JumpButton::JumpButton( const QString &text, QWidget *parent,
54 const QString &character ) 54 const QString &character )
55 : QPushButton( text, parent ) 55 : QPushButton( text, parent )
56{ 56{
57 mCharacter = character; 57 mCharacter = character;
58} 58}
59 59
60void JumpButton::setCharacter( const QString &character ) 60void JumpButton::setCharacter( const QString &character )
61{ 61{
62 mCharacter = character; 62 mCharacter = character;
63 setText(mCharacter.upper() ); 63 setText(mCharacter.upper() );
64} 64}
65 65
66QString JumpButton::character() const 66QString JumpButton::character() const
67{ 67{
68 return mCharacter; 68 return mCharacter;
69} 69}
70 70
71JumpButtonBar::JumpButtonBar( KABCore *core, QWidget *parent, const char *name ) 71JumpButtonBar::JumpButtonBar( KABCore *core, QWidget *parent, const char *name )
72 : QWidget( parent, name ), mCore( core ) 72 : QWidget( parent, name ), mCore( core )
73{ 73{
74 if ( QApplication::desktop()->width() < 480 ) 74 if ( QApplication::desktop()->width() < 480 )
75 75
76 mButtonLayout = new QGridLayout( this, 1, 18 ); 76 mButtonLayout = new QGridLayout( this, 1, 18 );
77 else 77 else
78 mButtonLayout = new QGridLayout( this, 1, 20 ); 78 mButtonLayout = new QGridLayout( this, 1, 20 );
79 mButtonLayout->setAlignment( Qt::AlignTop ); 79 mButtonLayout->setAlignment( Qt::AlignTop );
80 80
81 recreateButtons(); 81 recreateButtons();
82} 82}
83 83
84JumpButtonBar::~JumpButtonBar() 84JumpButtonBar::~JumpButtonBar()
85{ 85{
86} 86}
87 87
88QSizePolicy JumpButtonBar::sizePolicy() const 88QSizePolicy JumpButtonBar::sizePolicy() const
89{ 89{
90#ifndef KAB_EMBEDDED 90#ifndef KAB_EMBEDDED
91 return QSizePolicy( QSizePolicy::Maximum, QSizePolicy::Minimum, 91 return QSizePolicy( QSizePolicy::Maximum, QSizePolicy::Minimum,
92 QSizePolicy::Vertically ); 92 QSizePolicy::Vertically );
93#else //KAB_EMBEDDED 93#else //KAB_EMBEDDED
94 return QSizePolicy( QSizePolicy::Maximum, QSizePolicy::Minimum); 94 return QSizePolicy( QSizePolicy::Maximum, QSizePolicy::Minimum);
95#endif //KAB_EMBEDDED 95#endif //KAB_EMBEDDED
96} 96}
97 97
98void JumpButtonBar::letterClicked() 98void JumpButtonBar::letterClicked()
99{ 99{
100 JumpButton *button = (JumpButton*)sender(); 100 JumpButton *button = (JumpButton*)sender();
101 QString character = button->character(); 101 QString character = button->character();
102 if ( character.length() == 2 ) 102 if ( character.length() == 2 )
103 character = character.left(1) +"-"+character.right(1); 103 character = character.left(1) +"-"+character.right(1);
104 if ( !character.isNull() ) 104 if ( !character.isNull() )
105 emit jumpToLetter( character ); 105 emit jumpToLetter( character );
106 //qDebug("emit *%s* ",character.latin1()); 106 //qDebug("emit *%s* ",character.latin1());
107} 107}
108 108
109void JumpButtonBar::recreateButtons() 109void JumpButtonBar::recreateButtons()
110{ 110{
111 // the easiest way to remove all buttons ;) 111 // the easiest way to remove all buttons ;)
112 //mButtons.setAutoDelete( true ); 112 //mButtons.setAutoDelete( true );
113 //mButtons.clear(); 113 //mButtons.clear();
114 //mButtons.setAutoDelete( false ); 114 //mButtons.setAutoDelete( false );
115 mCharacters.clear(); 115 mCharacters.clear();
116 116
117 QString character; 117 QString character;
118 118
119 KABC::AddressBook *ab = mCore->addressBook(); 119 KABC::AddressBook *ab = mCore->addressBook();
120 KABC::AddressBook::Iterator it; 120 KABC::AddressBook::Iterator it;
121 KABC::Field *field = mCore->currentSearchField(); 121 KABC::Field *field = mCore->currentSearchField();
122 if ( field ) { 122 if ( field ) {
123 setEnabled( true ); 123 setEnabled( true );
124 } else { 124 } else {
125 setEnabled( false ); 125 setEnabled( false );
126 return; 126 return;
127 } 127 }
128 mCharacters.append( "*"); 128 mCharacters.append( "*");
129 for ( it = ab->begin(); it != ab->end(); ++it ) { 129 for ( it = ab->begin(); it != ab->end(); ++it ) {
130 if ( !field->value( *it ).isEmpty() ) 130 if ( !field->value( *it ).isEmpty() )
131 character = field->value( *it )[ 0 ].lower(); 131 character = field->value( *it )[ 0 ].lower();
132 if ( character != "!" ) 132 if ( character != "!" ) {
133 if ( !character.isEmpty() && !mCharacters.contains( character ) ) 133 if ( !character.isEmpty() && !mCharacters.contains( character ) && character.at( 0 ).isLetter ())
134 mCharacters.append( character ); 134 mCharacters.append( character );
135 } 135 }
136 }
136 if ( mCharacters.count() == 0 ) { 137 if ( mCharacters.count() == 0 ) {
137 setEnabled( false ); 138 setEnabled( false );
138 return; 139 return;
139 } 140 }
140 141
141 int maxRows = mCharacters.count() / 2; // we use 2 columns 142 int maxRows = mCharacters.count() / 2; // we use 2 columns
142 if ( mCharacters.count() % 2 ) 143 if ( mCharacters.count() % 2 )
143 maxRows++; 144 maxRows++;
144 sortListLocaleAware( mCharacters ); 145 sortListLocaleAware( mCharacters );
145 bool skip2 = false; 146 bool skip2 = false;
146 int skipcount = 0; 147 int skipcount = 0;
147 int maxHei = 0; 148 int maxHei = 0;
148#ifdef DESKTOP_VERSION 149#ifdef DESKTOP_VERSION
149 int maxChar = 16; 150 int maxChar = 16;
150 int heightDiff = 200; 151 int heightDiff = 200;
151 int fixwid = 36; 152 int fixwid = 36;
152#else 153#else
153 //default for 240x320 diaplay: 154 //default for 240x320 diaplay:
154 int maxChar = 16; 155 int maxChar = 16;
155 int heightDiff = 64; 156 int heightDiff = 64;
156 int fixwid = 20; 157 int fixwid = 20;
157 158
158 if ( QApplication::desktop()->height() == 480 ) { 159 if ( QApplication::desktop()->height() == 480 ) {
159 maxChar = 16; 160 maxChar = 16;
160 heightDiff = 135; 161 heightDiff = 135;
161 fixwid = 34; 162 fixwid = 34;
162 } else if ( QApplication::desktop()->height() >= 640 ) { 163 } else if ( QApplication::desktop()->height() >= 640 ) {
163 maxChar = 20; 164 maxChar = 20;
164 heightDiff = 135; 165 heightDiff = 135;
165 fixwid = 34; 166 fixwid = 34;
166 } 167 }
167#endif 168#endif
168 169
169 if ( mCharacters.count() > maxChar ) 170 if ( mCharacters.count() > maxChar )
170 skipcount = mCharacters.count()- maxChar; 171 skipcount = mCharacters.count()- maxChar;
171 maxHei = (QApplication::desktop()->height()-heightDiff)/(maxChar); 172 maxHei = (QApplication::desktop()->height()-heightDiff)/(maxChar);
172 173
173 174
174 maxRows = 28; 175 maxRows = 28;
175 bool skipcurrent = false; 176 bool skipcurrent = false;
176 bool state = isUpdatesEnabled(); 177 bool state = isUpdatesEnabled();
177 setUpdatesEnabled( false ); 178 setUpdatesEnabled( false );
178 //qDebug("cc %d ",mCharacters.count() ); 179 //qDebug("cc %d ",mCharacters.count() );
179 JumpButton *button = 0; 180 JumpButton *button = 0;
180 int row = 0, col = 0; 181 int row = 0, col = 0;
181 JumpButton* cur = mButtons.first(); 182 JumpButton* cur = mButtons.first();
182 for ( uint i = 0; i < mCharacters.count(); ++i ) { 183 for ( uint i = 0; i < mCharacters.count(); ++i ) {
183 if ( skipcount > 0 && skipcurrent ) { 184 if ( skipcount > 0 && skipcurrent ) {
184 --skipcount; 185 --skipcount;
185 if ( button ) { 186 if ( button ) {
186 button->setCharacter( button->character() + mCharacters[ i ]); 187 button->setCharacter( button->character() + mCharacters[ i ]);
187 } 188 }
188 } else { 189 } else {
189 if ( cur ) { 190 if ( cur ) {
190 button = cur ; 191 button = cur ;
191 cur = mButtons.next(); 192 cur = mButtons.next();
192 button->setCharacter(mCharacters[ i ]); 193 button->setCharacter(mCharacters[ i ]);
193 } else { 194 } else {
194 button = new JumpButton( mCharacters[ i ].upper(), this, mCharacters[ i ] ); 195 button = new JumpButton( mCharacters[ i ].upper(), this, mCharacters[ i ] );
195 if ( fixwid ) 196 if ( fixwid )
196 button->setFixedWidth( fixwid ); 197 button->setFixedWidth( fixwid );
197 mButtons.append( button ); 198 mButtons.append( button );
198 connect( button, SIGNAL( clicked() ), this, SLOT( letterClicked() ) ); 199 connect( button, SIGNAL( clicked() ), this, SLOT( letterClicked() ) );
199 mButtonLayout->addWidget( button, row, col ); 200 mButtonLayout->addWidget( button, row, col );
200 } 201 }
201 if ( maxHei ) 202 if ( maxHei )
202 button->setMaximumHeight( maxHei ); 203 button->setMaximumHeight( maxHei );
203 button->show(); 204 button->show();
204 205
205 if ( col == maxRows ) { 206 if ( col == maxRows ) {
206 row = 0; 207 row = 0;
207 col++; 208 col++;
208 } else 209 } else
209 row++; 210 row++;
210 } 211 }
211 if ( i > 0 ) 212 if ( i > 0 )
212 skipcurrent = !skipcurrent; 213 skipcurrent = !skipcurrent;
213 } 214 }
214 while ( cur ) { 215 while ( cur ) {
215 cur->hide(); 216 cur->hide();
216 cur = mButtons.next(); 217 cur = mButtons.next();
217 } 218 }
218 219
219 mButtonLayout->activate(); 220 mButtonLayout->activate();
220 setUpdatesEnabled( state ); 221 setUpdatesEnabled( state );
221 update(); 222 update();
222} 223}
223 224
224void JumpButtonBar::sortListLocaleAware( QStringList &list ) 225void JumpButtonBar::sortListLocaleAware( QStringList &list )
225{ 226{
226 QStringList::Iterator beginIt = list.begin(); 227 QStringList::Iterator beginIt = list.begin();
227 QStringList::Iterator endIt = list.end(); 228 QStringList::Iterator endIt = list.end();
228 229
229 --endIt; 230 --endIt;
230 if ( beginIt == endIt ) // don't need sorting 231 if ( beginIt == endIt ) // don't need sorting
231 return; 232 return;