20#include "kexifieldlistview.h"
25#include <tqpushbutton.h>
28#include <tqapplication.h>
33#include <kiconloader.h>
35#include <tdeglobalsettings.h>
38#include <kexidb/tableschema.h>
39#include <kexidb/queryschema.h>
40#include <kexidb/utils.h>
41#include <kexidragobjects.h>
42#include <kexiutils/utils.h>
44KexiFieldListView::KexiFieldListView(TQWidget *parent,
const char *name,
int options)
45 : TDEListView(parent, name)
47 , m_keyIcon(SmallIcon(
"key"))
53 viewport()->setAcceptDrops(
true);
54 setDropVisualizer(
false);
55 setDropHighlighter(
true);
56 setAllColumnsShowFocus(
true);
57 addColumn(i18n(
"Field Name"));
58 if (m_options & ShowDataTypes)
59 addColumn(i18n(
"Data Type"));
60 if (m_options & AllowMultiSelection)
61 setSelectionMode(TQListView::Extended);
62 setResizeMode(TQListView::LastColumn);
67 connect(
this, TQ_SIGNAL(doubleClicked(TQListViewItem*,
const TQPoint &,
int)),
68 this, TQ_SLOT(slotDoubleClicked(TQListViewItem*)));
71KexiFieldListView::~KexiFieldListView()
89 TDEListViewItem *item = 0;
90 KexiDB::QueryColumnInfo::Vector columns = m_schema->columns(
true );
91 const int count = columns.count();
92 for(
int i=-1; i < count; i++)
98 item =
new TDEListViewItem(
this, item, i18n(
"* (All Columns)"));
99 m_allColumnsItem = item;
102 colinfo = columns[i];
103 item =
new TDEListViewItem(
this, item, colinfo->
aliasOrName());
105 item->setText(1, colinfo->field->
typeName());
115 setCurrentItem(firstChild());
119TQSize KexiFieldListView::sizeHint()
121 TQFontMetrics fm(font());
123 kdDebug() << m_table->name() <<
" cw=" << columnWidth(1) + fm.width(
"i") <<
", " << fm.width(m_table->name()+
" ") << endl;
126 TQMAX( columnWidth(1) + fm.width(
"i"), fm.width(m_table->name()+
" ")),
127 childCount()*firstChild()->totalHeight() + 4 );
132void KexiFieldListView::setReadOnly(
bool b)
135 viewport()->setAcceptDrops(!b);
139TQDragObject* KexiFieldListView::dragObject()
144 return new KexiFieldDrag(m_schema->table() ?
"kexi/table" :
"kexi/query",
145 m_schema->name(), selectedFields,
this,
"KexiFieldDrag");
156 return TQStringList();
157 TQStringList selectedFields;
158 for (TQListViewItem *item = firstChild(); item; item = item->nextSibling()) {
159 if (item->isSelected()) {
161 if (item == m_allColumnsItem && m_allColumnsItem)
162 selectedFields.append(
"*");
164 selectedFields.append(item->text(0));
167 return selectedFields;
175 schema()->name(), item->text(0));
179#include "kexifieldlistview.moc"
bool isPrimaryKey() const
static TQString typeName(uint type)
Helper class that assigns additional information for the column in a query.
TQCString aliasOrName() const
TQPixmap m_keyIcon
a small "primary key" icon for 0-th column
void fieldDoubleClicked(const TQString &sourceMimeType, const TQString &sourceName, const TQString &fieldName)
TQPixmap m_noIcon
blank icon of the same size as m_keyIcon
KexiDB::TableOrQuerySchema * schema() const
@ ShowDataTypes
if set, 'data type' column is added
@ ShowAsterisk
if set, asterisk ('*') item is prepended to the list
void slotDoubleClicked(TQListViewItem *item)
void setSchema(KexiDB::TableOrQuerySchema *schema)
TQStringList selectedFieldNames() const
KEXIUTILS_EXPORT TQPixmap emptyIcon(TDEIcon::Group iconGroup)