You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
tdeedu/kstars/kstars/draglistbox.cpp

93 lines
2.9 KiB

/***************************************************************************
draglistbox.cpp - description
-------------------
begin : Sun May 29 2005
copyright : (C) 2005 by Jason Harris
email : kstars@30doradus.org
***************************************************************************/
/***************************************************************************
* *
* This program is free software; you can redistribute it and/or modify *
* it under the terms of the GNU General Public License as published by *
* the Free Software Foundation; either version 2 of the License, or *
* (at your option) any later version. *
* *
***************************************************************************/
#include <tqdragobject.h>
#include <tdelocale.h>
#include <kdebug.h>
#include "draglistbox.h"
DragListBox::DragListBox( TQWidget *parent, const char *name, WFlags f )
: TDEListBox( parent, name, f ) {
setAcceptDrops( TRUE );
dragging = FALSE;
}
DragListBox::~DragListBox() {}
void DragListBox::dragEnterEvent( TQDragEnterEvent *evt )
{
if ( TQTextDrag::canDecode( evt ) )
evt->accept();
}
bool DragListBox::contains( const TQString &s ) const {
for ( uint i=0; i<count(); ++i )
if ( text(i) == s ) return true;
return false;
}
void DragListBox::dropEvent( TQDropEvent *evt ) {
TQString text;
int i = int( float(evt->pos().y())/float(itemHeight()) + 0.5 ) + topItem();
if ( i > count() + 1 ) i = count() + 1;
if ( TQTextDrag::decode( evt, text ) ) {
//If we dragged an "Ignore item from the FieldList to the FieldPool, then we don't
//need to insert the item, because FieldPool already has a persistent Ignore item.
if ( !( text == i18n("Ignore" ) && TQString(evt->source()->name()) == "FieldList" &&
evt->source() != this )) {
insertItem( text, i );
}
//If we dragged the "Ignore" item from FieldPool to FieldList, then we don't
//want to remove the item from the FieldPool
if ( !( text == i18n("Ignore" ) && TQString(evt->source()->name()) == "FieldPool" &&
evt->source() != this ) ) {
DragListBox *fp = (DragListBox*)evt->source();
fp->removeItem( fp->currentItem() );
}
}
}
void DragListBox::mousePressEvent( TQMouseEvent *evt ) {
TQListBox::mousePressEvent( evt );
dragging = TRUE;
//Record position of the Ignore item; we may have to restore it.
if ( currentText() == i18n("Ignore") )
IgnoreIndex = currentItem();
else
IgnoreIndex = -1;
}
void DragListBox::mouseMoveEvent( TQMouseEvent * )
{
if ( dragging ) {
TQDragObject *drag = new TQTextDrag( currentText(), this );
drag->dragMove();
dragging = FALSE;
}
}
#include "draglistbox.moc"