summaryrefslogtreecommitdiffabout
path: root/kaddressbook/jumpbuttonbar.cpp
Unidiff
Diffstat (limited to 'kaddressbook/jumpbuttonbar.cpp') (more/less context) (ignore whitespace changes)
-rw-r--r--kaddressbook/jumpbuttonbar.cpp47
1 files changed, 31 insertions, 16 deletions
diff --git a/kaddressbook/jumpbuttonbar.cpp b/kaddressbook/jumpbuttonbar.cpp
index e89ec52..32922a6 100644
--- a/kaddressbook/jumpbuttonbar.cpp
+++ b/kaddressbook/jumpbuttonbar.cpp
@@ -52,51 +52,51 @@ class JumpButton : public QPushButton
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, 2, 14 ); 76 mButtonLayout = new QGridLayout( this, 1, 18 );
77 else 77 else
78 mButtonLayout = new QGridLayout( this, 1, 28 ); 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 )
@@ -120,92 +120,107 @@ void JumpButtonBar::recreateButtons()
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 ) )
134 mCharacters.append( character ); 134 mCharacters.append( character );
135 } 135 }
136 if ( mCharacters.count() == 0 ) { 136 if ( mCharacters.count() == 0 ) {
137 setEnabled( false ); 137 setEnabled( false );
138 return; 138 return;
139 } 139 }
140 140
141 int maxRows = mCharacters.count() / 2; // we use 2 columns 141 int maxRows = mCharacters.count() / 2; // we use 2 columns
142 if ( mCharacters.count() % 2 ) 142 if ( mCharacters.count() % 2 )
143 maxRows++; 143 maxRows++;
144 int fixwid = 20;
145 sortListLocaleAware( mCharacters ); 144 sortListLocaleAware( mCharacters );
146 bool skip2 = false; 145 bool skip2 = false;
147 int skipcount = 0; 146 int skipcount = 0;
148 int maxHei = 25; 147 int maxHei = 0;
149 int roW = 15;//13 is ok 148#ifdef DESKTOP_VERSION
150 if ( QApplication::desktop()->width() < 480 && mCharacters.count() > roW ) { 149 int maxChar = 26;
151 skipcount = mCharacters.count()-roW ; 150 int heightDiff = 200;
152 maxHei = (QApplication::desktop()->height()-65)/roW ; 151 int fixwid = 0;
153 } 152#else
154 else { 153 //default for 240x320 diaplay:
155 fixwid = 30; 154 int maxChar = 16;
156 if ( mCharacters.count() > 16 ) 155 int heightDiff = 64;
157 skipcount = mCharacters.count()- 16; 156 int fixwid = 20;
158 maxHei = (QApplication::desktop()->height()-120)/(16);
159 157
158 if ( QApplication::desktop()->height() == 480 ) {
159 maxChar = 16;
160 heightDiff = 135;
161 fixwid = 34;
162 } else if ( QApplication::desktop()->height() >= 640 ) {
163 maxChar = 20;
164 heightDiff = 135;
165 fixwid = 34;
160 } 166 }
167#endif
168
169 if ( mCharacters.count() > maxChar )
170 skipcount = mCharacters.count()- maxChar;
171 maxHei = (QApplication::desktop()->height()-heightDiff)/(maxChar);
172
173
161 maxRows = 28; 174 maxRows = 28;
162 bool skipcurrent = false; 175 bool skipcurrent = false;
163 bool state = isUpdatesEnabled(); 176 bool state = isUpdatesEnabled();
164 setUpdatesEnabled( false ); 177 setUpdatesEnabled( false );
165 //qDebug("cc %d ",mCharacters.count() ); 178 //qDebug("cc %d ",mCharacters.count() );
166 JumpButton *button = 0; 179 JumpButton *button = 0;
167 int row = 0, col = 0; 180 int row = 0, col = 0;
168 JumpButton* cur = mButtons.first(); 181 JumpButton* cur = mButtons.first();
169 for ( uint i = 0; i < mCharacters.count(); ++i ) { 182 for ( uint i = 0; i < mCharacters.count(); ++i ) {
170 if ( skipcount > 0 && skipcurrent ) { 183 if ( skipcount > 0 && skipcurrent ) {
171 --skipcount; 184 --skipcount;
172 if ( button ) { 185 if ( button ) {
173 button->setCharacter( button->character() + mCharacters[ i ]); 186 button->setCharacter( button->character() + mCharacters[ i ]);
174 } 187 }
175 } else { 188 } else {
176 if ( cur ) { 189 if ( cur ) {
177 button = cur ; 190 button = cur ;
178 cur = mButtons.next(); 191 cur = mButtons.next();
179 button->setCharacter(mCharacters[ i ]); 192 button->setCharacter(mCharacters[ i ]);
180 } else { 193 } else {
181 button = new JumpButton( mCharacters[ i ].upper(), this, mCharacters[ i ] ); 194 button = new JumpButton( mCharacters[ i ].upper(), this, mCharacters[ i ] );
182 button->setFixedWidth( fixwid ); 195 if ( fixwid )
196 button->setFixedWidth( fixwid );
183 mButtons.append( button ); 197 mButtons.append( button );
184 connect( button, SIGNAL( clicked() ), this, SLOT( letterClicked() ) ); 198 connect( button, SIGNAL( clicked() ), this, SLOT( letterClicked() ) );
185 mButtonLayout->addWidget( button, row, col ); 199 mButtonLayout->addWidget( button, row, col );
186 } 200 }
187 button->setMaximumHeight( maxHei ); 201 if ( maxHei )
202 button->setMaximumHeight( maxHei );
188 button->show(); 203 button->show();
189 204
190 if ( col == maxRows ) { 205 if ( col == maxRows ) {
191 row = 0; 206 row = 0;
192 col++; 207 col++;
193 } else 208 } else
194 row++; 209 row++;
195 } 210 }
196 if ( i > 0 ) 211 if ( i > 0 )
197 skipcurrent = !skipcurrent; 212 skipcurrent = !skipcurrent;
198 } 213 }
199 while ( cur ) { 214 while ( cur ) {
200 cur->hide(); 215 cur->hide();
201 cur = mButtons.next(); 216 cur = mButtons.next();
202 } 217 }
203 218
204 mButtonLayout->activate(); 219 mButtonLayout->activate();
205 setUpdatesEnabled( state ); 220 setUpdatesEnabled( state );
206 update(); 221 update();
207} 222}
208 223
209void JumpButtonBar::sortListLocaleAware( QStringList &list ) 224void JumpButtonBar::sortListLocaleAware( QStringList &list )
210{ 225{
211 QStringList::Iterator beginIt = list.begin(); 226 QStringList::Iterator beginIt = list.begin();