21 #ifndef __kmimetyperesolver_h
22 #define __kmimetyperesolver_h
24 #include <tqscrollview.h>
25 #include <tqptrlist.h>
34 class TDEIO_EXPORT KMimeTypeResolverBase
37 virtual void slotViewportAdjusted() = 0;
38 virtual void slotProcessMimeIcons() = 0;
40 virtual void virtual_hook(
int,
void* ) {}
49 class TDEIO_EXPORT KMimeTypeResolverHelper :
public TQObject
54 KMimeTypeResolverHelper( KMimeTypeResolverBase *resolver,
56 : m_resolver( resolver ),
57 m_timer( new TQTimer( this ) )
59 connect( m_timer, TQ_SIGNAL( timeout() ), TQ_SLOT( slotProcessMimeIcons() ));
61 connect( view->horizontalScrollBar(), TQ_SIGNAL( sliderMoved(
int) ),
62 TQ_SLOT( slotAdjust() ) );
63 connect( view->verticalScrollBar(), TQ_SIGNAL( sliderMoved(
int) ),
64 TQ_SLOT( slotAdjust() ) );
66 view->viewport()->installEventFilter(
this );
69 void start(
int delay,
bool singleShot )
71 m_timer->start( delay, singleShot );
75 virtual bool eventFilter( TQObject *o, TQEvent *e )
77 bool ret = TQObject::eventFilter( o, e );
79 if ( e->type() == TQEvent::Resize )
80 m_resolver->slotViewportAdjusted();
86 void slotProcessMimeIcons()
88 m_resolver->slotProcessMimeIcons();
93 m_resolver->slotViewportAdjusted();
97 KMimeTypeResolverBase *m_resolver;
117 template<
class IconItem,
class Parent>
127 m_helper( new KMimeTypeResolverHelper(this, parent->scrollWidget())),
128 m_delayNonVisibleIcons(10)
141 void start( uint delayNonVisibleIcons = 10 )
143 m_helper->start( 0,
true );
144 m_delayNonVisibleIcons = delayNonVisibleIcons;
171 IconItem * findVisibleIcon();
174 KMimeTypeResolverHelper *m_helper;
175 uint m_delayNonVisibleIcons;
179 template<
class IconItem,
class Parent>
184 IconItem * item = 0L;
187 if ( m_lstPendingMimeIconItems.count() > 0 )
192 item = findVisibleIcon();
199 if ( m_lstPendingMimeIconItems.count() > 0 )
201 item = m_lstPendingMimeIconItems.first();
202 nextDelay = m_delayNonVisibleIcons;
206 m_parent->mimeTypeDeterminationFinished();
211 m_parent->determineIcon(item);
212 m_lstPendingMimeIconItems.remove(item);
213 m_helper->start( nextDelay,
true );
216 template<
class IconItem,
class Parent>
219 if (m_lstPendingMimeIconItems.isEmpty())
return;
220 IconItem * item = findVisibleIcon();
223 m_parent->determineIcon( item );
224 m_lstPendingMimeIconItems.remove(item);
225 m_helper->start( 0,
true );
229 template<
class IconItem,
class Parent>
234 TQPtrListIterator<IconItem> it(m_lstPendingMimeIconItems);
235 if ( m_lstPendingMimeIconItems.count()<20)
236 return m_lstPendingMimeIconItems.first();
238 TQScrollView * view = m_parent->scrollWidget();
239 TQRect visibleContentsRect
241 view->viewportToContents(TQPoint(0, 0)),
242 view->viewportToContents
244 TQPoint(view->visibleWidth(), view->visibleHeight())
248 for (; it.current(); ++it)
249 if (visibleContentsRect.intersects(it.current()->rect()))
This class implements the "delayed-mimetype-determination" feature, for konqueror's directory views (...
virtual void slotViewportAdjusted()
"Connected" to the viewportAdjusted signal of the scrollview
KMimeTypeResolver(Parent *parent)
Creates a new KMimeTypeResolver with the given parent.
void start(uint delayNonVisibleIcons=10)
Start the mimetype-determination.
TQPtrList< IconItem > m_lstPendingMimeIconItems
The list of items to process.
virtual void slotProcessMimeIcons()
"Connected" to the timer