[ENHANCEMENT] Add skeleton of setVisible()/isVisible() support to QIconView

v3.5.13-sru
Timothy Pearson 13 years ago
parent ba6061655c
commit d82327fe4f

@ -995,6 +995,7 @@ void QIconViewItem::init( QIconViewItem *after
allow_rename = FALSE;
allow_drag = TRUE;
allow_drop = TRUE;
visible = TRUE;
selected = FALSE;
selectable = TRUE;
#ifndef QT_NO_TEXTEDIT
@ -1050,6 +1051,32 @@ int QIconViewItem::rtti() const
return RTTI;
}
/*!
If \a b is TRUE, the item is made visible; otherwise it is hidden.
*/
void QIconViewItem::setVisible( bool b )
{
if ( b == (bool)visible )
return;
QIconView *iv = iconView();
if ( !iv )
return;
visible = b;
if ( iv )
iv->updateContents();
}
/*!
Returns TRUE if the item is visible; otherwise returns FALSE.
\sa setVisible()
*/
bool QIconViewItem::isVisible() const
{
return (bool)visible;
}
/*!
Sets \a text as the text of the icon view item. This function
@ -3851,10 +3878,18 @@ void QIconView::selectAll( bool select )
viewport()->setUpdatesEnabled( FALSE );
QRect rr;
for ( ; item; item = item->next ) {
if ( select != item->isSelected() ) {
item->setSelected( select, TRUE );
rr = rr.unite( item->rect() );
changed = TRUE;
if (item->isVisible()) {
if ( select != item->isSelected() ) {
item->setSelected( select, TRUE );
rr = rr.unite( item->rect() );
changed = TRUE;
}
else {
if ( FALSE != item->isSelected() ) {
item->setSelected( FALSE, TRUE );
changed = TRUE;
}
}
}
}
viewport()->setUpdatesEnabled( ue );
@ -4082,7 +4117,7 @@ void QIconView::clear()
d->drawDragShapes = FALSE;
resizeContents( 0, 0 );
// maybe we don´t need this update, so delay it
// maybe we don<EFBFBD>t need this update, so delay it
d->fullRedrawTimer->start( 0, TRUE );
d->cleared = TRUE;
@ -6139,17 +6174,19 @@ void QIconView::updateItemContainer( QIconViewItem *item )
return;
}
c->items.append( item );
item->d->container1 = c;
if (item->isVisible()) {
c->items.append( item );
item->d->container1 = c;
if ( !contains ) {
c = c->n;
if ( !c ) {
appendItemContainer();
c = d->lastContainer;
}
c->items.append( item );
item->d->container2 = c;
if ( !contains ) {
c = c->n;
if ( !c ) {
appendItemContainer();
c = d->lastContainer;
}
c->items.append( item );
item->d->container2 = c;
}
}
if ( contentsWidth() < irect.right() || contentsHeight() < irect.bottom() )
resizeContents( QMAX( contentsWidth(), irect.right() ), QMAX( contentsHeight(), irect.bottom() ) );
@ -6204,40 +6241,42 @@ void QIconView::rebuildContainers()
appendItemContainer();
c = d->lastContainer;
while ( item ) {
if ( c->rect.contains( item->rect() ) ) {
item->d->container1 = c;
item->d->container2 = 0;
c->items.append( item );
item = item->next;
} else if ( c->rect.intersects( item->rect() ) ) {
item->d->container1 = c;
c->items.append( item );
c = c->n;
if ( !c ) {
appendItemContainer();
c = d->lastContainer;
}
c->items.append( item );
item->d->container2 = c;
item = item->next;
c = c->p;
} else {
if ( d->arrangement == LeftToRight ) {
if ( item->y() < c->rect.y() && c->p ) {
c = c->p;
continue;
}
if (item->isVisible()) {
if ( c->rect.contains( item->rect() ) ) {
item->d->container1 = c;
item->d->container2 = 0;
c->items.append( item );
item = item->next;
} else if ( c->rect.intersects( item->rect() ) ) {
item->d->container1 = c;
c->items.append( item );
c = c->n;
if ( !c ) {
appendItemContainer();
c = d->lastContainer;
}
c->items.append( item );
item->d->container2 = c;
item = item->next;
c = c->p;
} else {
if ( item->x() < c->rect.x() && c->p ) {
c = c->p;
continue;
}
}
if ( d->arrangement == LeftToRight ) {
if ( item->y() < c->rect.y() && c->p ) {
c = c->p;
continue;
}
} else {
if ( item->x() < c->rect.x() && c->p ) {
c = c->p;
continue;
}
}
c = c->n;
if ( !c ) {
appendItemContainer();
c = d->lastContainer;
c = c->n;
if ( !c ) {
appendItemContainer();
c = d->lastContainer;
}
}
}
}

@ -169,6 +169,9 @@ public:
bool isSelected() const;
bool isSelectable() const;
void setVisible( bool b );
bool isVisible() const;
virtual void repaint();
virtual bool move( int x, int y );
@ -249,6 +252,7 @@ private:
uint allow_rename : 1;
uint allow_drag : 1;
uint allow_drop : 1;
uint visible : 1;
uint selected : 1;
uint selectable : 1;
uint dirty : 1;

Loading…
Cancel
Save