37 #include "keylistview.h"
41 #include <tqfontmetrics.h>
42 #include <tqtooltip.h>
46 #include <tqptrlist.h>
47 #include <tqpainter.h>
51 #include <tqcstring.h>
53 #include <gpgmepp/key.h>
60 static const int updateDelayMilliSecs = 500;
64 class ItemToolTip :
public TQToolTip {
66 ItemToolTip( Kleo::KeyListView * parent );
68 void maybeTip(
const TQPoint & p );
70 Kleo::KeyListView * mKeyListView;
73 ItemToolTip::ItemToolTip( Kleo::KeyListView * parent )
74 : TQToolTip( parent->viewport() ), mKeyListView( parent ) {}
76 void ItemToolTip::maybeTip(
const TQPoint & p ) {
80 const TQListViewItem * item = mKeyListView->itemAt( p );
84 const TQRect itemRect = mKeyListView->itemRect( item );
85 if ( !itemRect.isValid() )
88 const int col = mKeyListView->header()->sectionAt( p.x() );
92 const TQRect headerRect = mKeyListView->header()->sectionRect( col );
93 if ( !headerRect.isValid() )
96 const TQRect cellRect( headerRect.left(), itemRect.top(),
97 headerRect.width(), itemRect.height() );
100 if (
const Kleo::KeyListViewItem * klvi = Kleo::lvi_cast<Kleo::KeyListViewItem>( item ) )
101 tipStr = klvi->toolTip( col );
103 tipStr = item->text( col ) ;
105 if ( !tipStr.isEmpty() )
106 tip( cellRect, tipStr );
111 struct Kleo::KeyListView::Private {
112 Private() : updateTimer( 0 ), itemToolTip( 0 ) {}
114 std::vector<GpgME::Key> keyBuffer;
115 TQTimer * updateTimer;
116 TQToolTip * itemToolTip;
117 std::map<TQCString,KeyListViewItem*> itemMap;
122 static const struct {
125 } signalReplacements[] = {
126 { TQ_SIGNAL(doubleClicked(TQListViewItem*,
const TQPoint&,
int)),
127 TQ_SLOT(slotEmitDoubleClicked(TQListViewItem*,
const TQPoint&,
int)) },
128 { TQ_SIGNAL(returnPressed(TQListViewItem*)),
129 TQ_SLOT(slotEmitReturnPressed(TQListViewItem*)) },
130 { TQ_SIGNAL(selectionChanged(TQListViewItem*)),
131 TQ_SLOT(slotEmitSelectionChanged(TQListViewItem*)) },
132 { TQ_SIGNAL(contextMenu(TDEListView*, TQListViewItem*,
const TQPoint&)),
133 TQ_SLOT(slotEmitContextMenu(TDEListView*, TQListViewItem*,
const TQPoint&)) },
135 static const int numSignalReplacements =
sizeof signalReplacements /
sizeof *signalReplacements;
138 Kleo::KeyListView::KeyListView(
const ColumnStrategy * columnStrategy,
const DisplayStrategy * displayStrategy, TQWidget * parent,
const char * name, WFlags f )
139 : TDEListView( parent, name ),
140 mColumnStrategy( columnStrategy ),
141 mDisplayStrategy ( displayStrategy ),
142 mHierarchical( false )
148 d->updateTimer =
new TQTimer(
this );
149 connect( d->updateTimer, TQ_SIGNAL(timeout()), TQ_SLOT(slotUpdateTimeout()) );
151 if ( !columnStrategy ) {
152 kdWarning(5150) <<
"Kleo::KeyListView: need a column strategy to work with!" << endl;
156 const TQFontMetrics fm = fontMetrics();
158 for (
int col = 0 ; !columnStrategy->title( col ).isEmpty() ; ++col ) {
159 addColumn( columnStrategy->title( col ), columnStrategy->width( col, fm ) );
160 setColumnWidthMode( col, columnStrategy->widthMode( col ) );
163 setAllColumnsShowFocus(
true );
164 setShowToolTips(
false );
166 for (
int i = 0 ; i < numSignalReplacements ; ++i )
167 connect(
this, signalReplacements[i].source, signalReplacements[i].target );
169 TQToolTip::remove(
this );
170 TQToolTip::remove( viewport() );
171 d->itemToolTip =
new ItemToolTip(
this );
174 Kleo::KeyListView::~KeyListView() {
175 d->updateTimer->stop();
180 assert( d->itemMap.size() == 0 );
182 delete d->itemToolTip; d->itemToolTip = 0;
184 delete mColumnStrategy; mColumnStrategy = 0;
185 delete mDisplayStrategy; mDisplayStrategy = 0;
188 void Kleo::KeyListView::insertItem( TQListViewItem * qlvi ) {
190 TDEListView::insertItem( qlvi );
191 if ( KeyListViewItem * item = lvi_cast<KeyListViewItem>( qlvi ) )
192 registerItem( item );
195 void Kleo::KeyListView::takeItem( TQListViewItem * qlvi ) {
197 if ( KeyListViewItem * item = lvi_cast<KeyListViewItem>( qlvi ) )
198 deregisterItem( item );
199 TDEListView::takeItem( qlvi );
203 void Kleo::KeyListView::setHierarchical(
bool hier ) {
204 if ( hier == mHierarchical )
206 mHierarchical = hier;
210 scatterGathered( firstChild() );
213 void Kleo::KeyListView::slotAddKey(
const GpgME::Key & key ) {
217 d->keyBuffer.push_back( key );
218 if ( !d->updateTimer->isActive() )
219 d->updateTimer->start( updateDelayMilliSecs,
true );
222 void Kleo::KeyListView::slotUpdateTimeout() {
223 if ( d->keyBuffer.empty() )
226 const bool wasUpdatesEnabled = viewport()->isUpdatesEnabled();
227 if ( wasUpdatesEnabled )
228 viewport()->setUpdatesEnabled(
false );
229 kdDebug( 5150 ) <<
"Kleo::KeyListView::slotUpdateTimeout(): processing "
230 << d->keyBuffer.size() <<
" items en block" << endl;
231 if ( hierarchical() ) {
232 for ( std::vector<GpgME::Key>::const_iterator it = d->keyBuffer.begin() ; it != d->keyBuffer.end() ; ++it )
233 doHierarchicalInsert( *it );
236 for ( std::vector<GpgME::Key>::const_iterator it = d->keyBuffer.begin() ; it != d->keyBuffer.end() ; ++it )
237 (void)
new KeyListViewItem(
this, *it );
239 if ( wasUpdatesEnabled )
240 viewport()->setUpdatesEnabled(
true );
241 d->keyBuffer.clear();
244 void Kleo::KeyListView::clear() {
245 d->updateTimer->stop();
246 d->keyBuffer.clear();
247 TDEListView::clear();
250 void Kleo::KeyListView::registerItem( KeyListViewItem * item ) {
254 const TQCString fpr = item->key().primaryFingerprint();
255 if ( !fpr.isEmpty() )
256 d->itemMap.insert( std::make_pair( fpr, item ) );
259 void Kleo::KeyListView::deregisterItem(
const KeyListViewItem * item ) {
263 std::map<TQCString,KeyListViewItem*>::iterator it
264 = d->itemMap.find( item->key().primaryFingerprint() );
265 if ( it == d->itemMap.end() )
267 Q_ASSERT( it->second == item );
268 if ( it->second != item )
270 d->itemMap.erase( it );
273 void Kleo::KeyListView::doHierarchicalInsert(
const GpgME::Key & key ) {
274 const TQCString fpr = key.primaryFingerprint();
277 KeyListViewItem * item = 0;
279 if ( KeyListViewItem * parent = itemByFingerprint( key.chainID() ) ) {
280 item =
new KeyListViewItem( parent, key );
281 parent->setOpen(
true );
284 item =
new KeyListViewItem(
this, key );
286 d->itemMap.insert( std::make_pair( fpr, item ) );
289 void Kleo::KeyListView::gatherScattered() {
290 KeyListViewItem * item = firstChild();
292 KeyListViewItem * cur = item;
293 item = item->nextSibling();
294 if ( cur->key().isRoot() )
296 if ( KeyListViewItem * parent = itemByFingerprint( cur->key().chainID() ) ) {
300 parent->insertItem( cur );
301 parent->setOpen(
true );
306 void Kleo::KeyListView::scatterGathered( TQListViewItem * start ) {
307 TQListViewItem * item = start;
309 TQListViewItem * cur = item;
310 item = item->nextSibling();
312 scatterGathered( cur->firstChild() );
313 assert( cur->childCount() == 0 );
317 cur->parent()->takeItem( cur );
324 Kleo::KeyListViewItem * Kleo::KeyListView::itemByFingerprint(
const TQCString & s )
const {
327 const std::map<TQCString,KeyListViewItem*>::const_iterator it = d->itemMap.find( s );
328 if ( it == d->itemMap.end() )
334 void Kleo::KeyListView::slotRefreshKey(
const GpgME::Key & key ) {
335 const char * fpr = key.primaryFingerprint();
339 if ( KeyListViewItem * item = itemByFingerprint( fpr ) ) {
340 item->setKey ( key );
350 void Kleo::KeyListView::slotEmitDoubleClicked( TQListViewItem * item,
const TQPoint & p,
int col ) {
351 if ( !item || lvi_cast<KeyListViewItem>( item ) )
352 emit doubleClicked(
static_cast<KeyListViewItem*
>( item ), p, col );
355 void Kleo::KeyListView::slotEmitReturnPressed( TQListViewItem * item ) {
356 if ( !item || lvi_cast<KeyListViewItem>( item ) )
357 emit returnPressed(
static_cast<KeyListViewItem*
>( item ) );
360 void Kleo::KeyListView::slotEmitSelectionChanged( TQListViewItem * item ) {
361 if ( !item || lvi_cast<KeyListViewItem>( item ) )
362 emit selectionChanged(
static_cast<KeyListViewItem*
>( item ) );
365 void Kleo::KeyListView::slotEmitContextMenu( TDEListView*, TQListViewItem * item,
const TQPoint & p ) {
366 if ( !item || lvi_cast<KeyListViewItem>( item ) )
367 emit contextMenu(
static_cast<KeyListViewItem*
>( item ), p );
376 Kleo::KeyListViewItem::KeyListViewItem( KeyListView * parent,
const GpgME::Key & key )
377 : TQListViewItem( parent )
382 Kleo::KeyListViewItem::KeyListViewItem( KeyListView * parent, KeyListViewItem * after,
const GpgME::Key & key )
383 : TQListViewItem( parent, after )
388 Kleo::KeyListViewItem::KeyListViewItem( KeyListViewItem * parent,
const GpgME::Key & key )
389 : TQListViewItem( parent )
394 Kleo::KeyListViewItem::KeyListViewItem( KeyListViewItem * parent, KeyListViewItem * after,
const GpgME::Key & key )
395 : TQListViewItem( parent, after )
400 Kleo::KeyListViewItem::~KeyListViewItem() {
405 while ( TQListViewItem * item = firstChild() )
411 if ( KeyListView * lv = listView() )
412 lv->deregisterItem(
this );
415 void Kleo::KeyListViewItem::setKey(
const GpgME::Key & key ) {
416 KeyListView * lv = listView();
418 lv->deregisterItem(
this );
421 lv->registerItem(
this );
425 const Kleo::KeyListView::ColumnStrategy * cs = lv ? lv->columnStrategy() : 0 ;
428 const int numCols = lv ? lv->columns() : 0 ;
429 for (
int i = 0 ; i < numCols ; ++i ) {
430 setText( i, cs->text( key, i ) );
431 if (
const TQPixmap * pix = cs->pixmap( key, i ) )
432 setPixmap( i, *pix );
437 TQString Kleo::KeyListViewItem::toolTip(
int col )
const {
438 return listView() && listView()->columnStrategy()
439 ? listView()->columnStrategy()->toolTip( key(), col )
443 int Kleo::KeyListViewItem::compare( TQListViewItem * item,
int col,
bool ascending )
const {
444 if ( !item || item->rtti() != RTTI || !listView() || !listView()->columnStrategy() )
445 return TQListViewItem::compare( item, col, ascending );
446 KeyListViewItem * that =
static_cast<KeyListViewItem*
>( item );
447 return listView()->columnStrategy()->compare( this->key(), that->key(), col );
450 void Kleo::KeyListViewItem::paintCell( TQPainter * p,
const TQColorGroup & cg,
int column,
int width,
int alignment ) {
451 const KeyListView::DisplayStrategy * ds = listView() ? listView()->displayStrategy() : 0 ;
453 TQListViewItem::paintCell( p, cg, column, width, alignment );
456 const TQColor fg = ds->keyForeground( key(), cg.text() );
457 const TQColor bg = ds->keyBackground( key(), cg.base() );
458 const TQFont f = ds->keyFont( key(), p->font() );
460 TQColorGroup _cg = cg;
462 _cg.setColor( TQColorGroup::Text, fg );
463 _cg.setColor( TQColorGroup::Base, bg );
465 TQListViewItem::paintCell( p, _cg, column, width, alignment );
468 void Kleo::KeyListViewItem::insertItem( TQListViewItem * qlvi ) {
470 TQListViewItem::insertItem( qlvi );
471 if ( KeyListViewItem * item = lvi_cast<KeyListViewItem>( qlvi ) )
472 listView()->registerItem( item );
475 void Kleo::KeyListViewItem::takeItem( TQListViewItem * qlvi ) {
477 if ( KeyListViewItem * item = lvi_cast<KeyListViewItem>( qlvi ) )
478 listView()->deregisterItem( item );
479 TQListViewItem::takeItem( qlvi );
489 Kleo::SubkeyKeyListViewItem::SubkeyKeyListViewItem( KeyListView * parent,
const GpgME::Subkey & subkey )
490 : KeyListViewItem( parent, subkey.parent() ), mSubkey( subkey )
495 Kleo::SubkeyKeyListViewItem::SubkeyKeyListViewItem( KeyListView * parent, KeyListViewItem * after,
const GpgME::Subkey & subkey )
496 : KeyListViewItem( parent, after, subkey.parent() ), mSubkey( subkey )
501 Kleo::SubkeyKeyListViewItem::SubkeyKeyListViewItem( KeyListViewItem * parent,
const GpgME::Subkey & subkey )
502 : KeyListViewItem( parent, subkey.parent() ), mSubkey( subkey )
507 Kleo::SubkeyKeyListViewItem::SubkeyKeyListViewItem( KeyListViewItem * parent, KeyListViewItem * after,
const GpgME::Subkey & subkey )
508 : KeyListViewItem( parent, after, subkey.parent() ), mSubkey( subkey )
513 void Kleo::SubkeyKeyListViewItem::setSubkey(
const GpgME::Subkey & subkey ) {
515 setKey( subkey.parent() );
518 TQString Kleo::SubkeyKeyListViewItem::text(
int col )
const {
519 return listView() && listView()->columnStrategy()
520 ? listView()->columnStrategy()->subkeyText( subkey(), col )
524 TQString Kleo::SubkeyKeyListViewItem::toolTip(
int col )
const {
525 return listView() && listView()->columnStrategy()
526 ? listView()->columnStrategy()->subkeyToolTip( subkey(), col )
530 const TQPixmap * Kleo::SubkeyKeyListViewItem::pixmap(
int col )
const {
531 return listView() && listView()->columnStrategy()
532 ? listView()->columnStrategy()->subkeyPixmap( subkey(), col ) : 0 ;
535 int Kleo::SubkeyKeyListViewItem::compare( TQListViewItem * item,
int col,
bool ascending )
const {
536 if ( !item || item->rtti() != RTTI || !listView() || !listView()->columnStrategy() )
537 return KeyListViewItem::compare( item, col, ascending );
538 SubkeyKeyListViewItem * that =
static_cast<SubkeyKeyListViewItem*
>( item );
539 return listView()->columnStrategy()->subkeyCompare( this->subkey(), that->subkey(), col );
542 void Kleo::SubkeyKeyListViewItem::paintCell( TQPainter * p,
const TQColorGroup & cg,
int column,
int width,
int alignment ) {
543 const KeyListView::DisplayStrategy * ds = listView() ? listView()->displayStrategy() : 0 ;
545 TQListViewItem::paintCell( p, cg, column, width, alignment );
548 const TQColor fg = ds->subkeyForeground( subkey(), cg.text() );
549 const TQColor bg = ds->subkeyBackground( subkey(), cg.base() );
550 const TQFont f = ds->subkeyFont( subkey(), p->font() );
552 TQColorGroup _cg = cg;
554 _cg.setColor( TQColorGroup::Text, fg );
555 _cg.setColor( TQColorGroup::Base, bg );
557 TQListViewItem::paintCell( p, _cg, column, width, alignment );
567 Kleo::UserIDKeyListViewItem::UserIDKeyListViewItem( KeyListView * parent,
const GpgME::UserID & userID )
568 : KeyListViewItem( parent, userID.parent() ), mUserID( userID )
573 Kleo::UserIDKeyListViewItem::UserIDKeyListViewItem( KeyListView * parent, KeyListViewItem * after,
const GpgME::UserID & userID )
574 : KeyListViewItem( parent, after, userID.parent() ), mUserID( userID )
579 Kleo::UserIDKeyListViewItem::UserIDKeyListViewItem( KeyListViewItem * parent,
const GpgME::UserID & userID )
580 : KeyListViewItem( parent, userID.parent() ), mUserID( userID )
585 Kleo::UserIDKeyListViewItem::UserIDKeyListViewItem( KeyListViewItem * parent, KeyListViewItem * after,
const GpgME::UserID & userID )
586 : KeyListViewItem( parent, after, userID.parent() ), mUserID( userID )
591 void Kleo::UserIDKeyListViewItem::setUserID(
const GpgME::UserID & userID ) {
593 setKey( userID.parent() );
596 TQString Kleo::UserIDKeyListViewItem::text(
int col )
const {
597 return listView() && listView()->columnStrategy()
598 ? listView()->columnStrategy()->userIDText( userID(), col )
602 TQString Kleo::UserIDKeyListViewItem::toolTip(
int col )
const {
603 return listView() && listView()->columnStrategy()
604 ? listView()->columnStrategy()->userIDToolTip( userID(), col )
608 const TQPixmap * Kleo::UserIDKeyListViewItem::pixmap(
int col )
const {
609 return listView() && listView()->columnStrategy()
610 ? listView()->columnStrategy()->userIDPixmap( userID(), col ) : 0 ;
613 int Kleo::UserIDKeyListViewItem::compare( TQListViewItem * item,
int col,
bool ascending )
const {
614 if ( !item || item->rtti() != RTTI || !listView() || !listView()->columnStrategy() )
615 return KeyListViewItem::compare( item, col, ascending );
616 UserIDKeyListViewItem * that =
static_cast<UserIDKeyListViewItem*
>( item );
617 return listView()->columnStrategy()->userIDCompare( this->userID(), that->userID(), col );
621 void Kleo::UserIDKeyListViewItem::paintCell( TQPainter * p,
const TQColorGroup & cg,
int column,
int width,
int alignment ) {
622 const KeyListView::DisplayStrategy * ds = listView() ? listView()->displayStrategy() : 0 ;
624 TQListViewItem::paintCell( p, cg, column, width, alignment );
627 const TQColor fg = ds->useridForeground( userID(), cg.text() );
628 const TQColor bg = ds->useridBackground( userID(), cg.base() );
629 const TQFont f = ds->useridFont( userID(), p->font() );
631 TQColorGroup _cg = cg;
633 _cg.setColor( TQColorGroup::Text, fg );
634 _cg.setColor( TQColorGroup::Base, bg );
636 TQListViewItem::paintCell( p, _cg, column, width, alignment );
646 Kleo::SignatureKeyListViewItem::SignatureKeyListViewItem( KeyListView * parent,
const GpgME::UserID::Signature & signature )
647 : KeyListViewItem( parent, signature.parent().parent() ), mSignature( signature )
652 Kleo::SignatureKeyListViewItem::SignatureKeyListViewItem( KeyListView * parent, KeyListViewItem * after,
const GpgME::UserID::Signature & signature )
653 : KeyListViewItem( parent, after, signature.parent().parent() ), mSignature( signature )
658 Kleo::SignatureKeyListViewItem::SignatureKeyListViewItem( KeyListViewItem * parent,
const GpgME::UserID::Signature & signature )
659 : KeyListViewItem( parent, signature.parent().parent() ), mSignature( signature )
664 Kleo::SignatureKeyListViewItem::SignatureKeyListViewItem( KeyListViewItem * parent, KeyListViewItem * after,
const GpgME::UserID::Signature & signature )
665 : KeyListViewItem( parent, after, signature.parent().parent() ), mSignature( signature )
670 void Kleo::SignatureKeyListViewItem::setSignature(
const GpgME::UserID::Signature & signature ) {
671 mSignature = signature;
672 setKey( signature.parent().parent() );
675 TQString Kleo::SignatureKeyListViewItem::text(
int col )
const {
676 return listView() && listView()->columnStrategy()
677 ? listView()->columnStrategy()->signatureText( signature(), col )
681 TQString Kleo::SignatureKeyListViewItem::toolTip(
int col )
const {
682 return listView() && listView()->columnStrategy()
683 ? listView()->columnStrategy()->signatureToolTip( signature(), col )
687 const TQPixmap * Kleo::SignatureKeyListViewItem::pixmap(
int col )
const {
688 return listView() && listView()->columnStrategy()
689 ? listView()->columnStrategy()->signaturePixmap( signature(), col ) : 0 ;
692 int Kleo::SignatureKeyListViewItem::compare( TQListViewItem * item,
int col,
bool ascending )
const {
693 if ( !item || item->rtti() != RTTI || !listView() || !listView()->columnStrategy() )
694 return KeyListViewItem::compare( item, col, ascending );
695 SignatureKeyListViewItem * that =
static_cast<SignatureKeyListViewItem*
>( item );
696 return listView()->columnStrategy()->signatureCompare( this->signature(), that->signature(), col );
699 void Kleo::SignatureKeyListViewItem::paintCell( TQPainter * p,
const TQColorGroup & cg,
int column,
int width,
int alignment ) {
700 const KeyListView::DisplayStrategy * ds = listView() ? listView()->displayStrategy() : 0 ;
702 TQListViewItem::paintCell( p, cg, column, width, alignment );
705 const TQColor fg = ds->signatureForeground( signature(), cg.text() );
706 const TQColor bg = ds->signatureBackground( signature(), cg.base() );
707 const TQFont f = ds->signatureFont( signature(), p->font() );
709 TQColorGroup _cg = cg;
711 _cg.setColor( TQColorGroup::Text, fg );
712 _cg.setColor( TQColorGroup::Base, bg );
714 TQListViewItem::paintCell( p, _cg, column, width, alignment );
724 Kleo::KeyListView::ColumnStrategy::~ColumnStrategy() {}
726 int Kleo::KeyListView::ColumnStrategy::compare(
const GpgME::Key & key1,
const GpgME::Key & key2,
int col )
const {
727 return TQString::localeAwareCompare( text( key1, col ), text( key2, col ) );
730 int Kleo::KeyListView::ColumnStrategy::width(
int col,
const TQFontMetrics & fm )
const {
731 return fm.width( title( col ) ) * 2;
734 int Kleo::KeyListView::ColumnStrategy::subkeyCompare(
const GpgME::Subkey & sub1,
const GpgME::Subkey & sub2,
int col )
const {
735 return TQString::localeAwareCompare( subkeyText( sub1, col ), subkeyText( sub2, col ) );
738 int Kleo::KeyListView::ColumnStrategy::userIDCompare(
const GpgME::UserID & uid1,
const GpgME::UserID & uid2,
int col )
const {
739 return TQString::localeAwareCompare( userIDText( uid1, col ), userIDText( uid2, col ) );
742 int Kleo::KeyListView::ColumnStrategy::signatureCompare(
const GpgME::UserID::Signature & sig1,
const GpgME::UserID::Signature & sig2,
int col )
const {
743 return TQString::localeAwareCompare( signatureText( sig1, col ), signatureText( sig2, col ) );
746 TQString Kleo::KeyListView::ColumnStrategy::toolTip(
const GpgME::Key & key,
int col )
const {
747 return text( key, col );
750 TQString Kleo::KeyListView::ColumnStrategy::subkeyToolTip(
const GpgME::Subkey & sub,
int col )
const {
751 return subkeyText( sub, col );
754 TQString Kleo::KeyListView::ColumnStrategy::userIDToolTip(
const GpgME::UserID & uid,
int col )
const {
755 return userIDText( uid, col );
758 TQString Kleo::KeyListView::ColumnStrategy::signatureToolTip(
const GpgME::UserID::Signature & sig,
int col )
const {
759 return signatureText( sig, col );
768 Kleo::KeyListView::DisplayStrategy::~DisplayStrategy() {}
772 TQFont Kleo::KeyListView::DisplayStrategy::keyFont(
const GpgME::Key &,
const TQFont & font )
const {
776 TQFont Kleo::KeyListView::DisplayStrategy::subkeyFont(
const GpgME::Subkey &,
const TQFont & font )
const {
780 TQFont Kleo::KeyListView::DisplayStrategy::useridFont(
const GpgME::UserID &,
const TQFont & font )
const {
784 TQFont Kleo::KeyListView::DisplayStrategy::signatureFont(
const GpgME::UserID::Signature &,
const TQFont & font )
const {
789 TQColor Kleo::KeyListView::DisplayStrategy::keyForeground(
const GpgME::Key &,
const TQColor & fg )
const {
793 TQColor Kleo::KeyListView::DisplayStrategy::subkeyForeground(
const GpgME::Subkey &,
const TQColor & fg )
const {
797 TQColor Kleo::KeyListView::DisplayStrategy::useridForeground(
const GpgME::UserID &,
const TQColor & fg )
const {
801 TQColor Kleo::KeyListView::DisplayStrategy::signatureForeground(
const GpgME::UserID::Signature &,
const TQColor & fg )
const {
806 TQColor Kleo::KeyListView::DisplayStrategy::keyBackground(
const GpgME::Key &,
const TQColor & bg )
const {
810 TQColor Kleo::KeyListView::DisplayStrategy::subkeyBackground(
const GpgME::Subkey &,
const TQColor & bg )
const {
814 TQColor Kleo::KeyListView::DisplayStrategy::useridBackground(
const GpgME::UserID &,
const TQColor & bg )
const {
818 TQColor Kleo::KeyListView::DisplayStrategy::signatureBackground(
const GpgME::UserID::Signature &,
const TQColor & bg )
const {
830 Kleo::KeyListView * Kleo::KeyListViewItem::listView()
const {
831 return static_cast<Kleo::KeyListView*
>( TQListViewItem::listView() );
834 Kleo::KeyListViewItem * Kleo::KeyListViewItem::nextSibling()
const {
835 return static_cast<Kleo::KeyListViewItem*
>( TQListViewItem::nextSibling() );
838 Kleo::KeyListViewItem * Kleo::KeyListView::firstChild()
const {
839 return static_cast<Kleo::KeyListViewItem*
>( TDEListView::firstChild() );
842 Kleo::KeyListViewItem * Kleo::KeyListView::selectedItem()
const {
843 return static_cast<Kleo::KeyListViewItem*
>( TDEListView::selectedItem() );
846 static void selectedItems( TQPtrList<Kleo::KeyListViewItem> & result, TQListViewItem * start ) {
847 for ( TQListViewItem * item = start ; item ; item = item->nextSibling() ) {
848 if ( item->isSelected() )
849 if ( Kleo::KeyListViewItem * i = Kleo::lvi_cast<Kleo::KeyListViewItem>( item ) )
851 selectedItems( result, item->firstChild() );
855 TQPtrList<Kleo::KeyListViewItem> Kleo::KeyListView::selectedItems()
const {
856 TQPtrList<KeyListViewItem> result;
857 ::selectedItems( result, firstChild() );
861 static bool hasSelection( TQListViewItem * start ) {
862 for ( TQListViewItem * item = start ; item ; item = item->nextSibling() )
863 if ( item->isSelected() || hasSelection( item->firstChild() ) )
868 bool Kleo::KeyListView::hasSelection()
const {
869 return ::hasSelection( firstChild() );
872 #include "keylistview.moc"