20#include "kexifieldlistview.h"
25#include <tqpushbutton.h>
28#include <tqapplication.h>
33#include <kiconloader.h>
34#include <tdeversion.h>
36#include <tdeglobalsettings.h>
39#include <kexidb/tableschema.h>
40#include <kexidb/queryschema.h>
41#include <kexidb/utils.h>
42#include <kexidragobjects.h>
43#include <kexiutils/utils.h>
45KexiFieldListView::KexiFieldListView(TQWidget *parent,
const char *name,
int options)
46 : TDEListView(parent, name)
48 , m_keyIcon(SmallIcon(
"key"))
54 viewport()->setAcceptDrops(
true);
55 setDropVisualizer(
false);
56 setDropHighlighter(
true);
57 setAllColumnsShowFocus(
true);
58 addColumn(i18n(
"Field Name"));
59 if (m_options & ShowDataTypes)
60 addColumn(i18n(
"Data Type"));
61 if (m_options & AllowMultiSelection)
62 setSelectionMode(TQListView::Extended);
63 setResizeMode(TQListView::LastColumn);
68 connect(
this, TQ_SIGNAL(doubleClicked(TQListViewItem*,
const TQPoint &,
int)),
69 this, TQ_SLOT(slotDoubleClicked(TQListViewItem*)));
72KexiFieldListView::~KexiFieldListView()
90 TDEListViewItem *item = 0;
91 KexiDB::QueryColumnInfo::Vector columns = m_schema->
columns(
true );
92 const int count = columns.count();
93 for(
int i=-1; i < count; i++)
99 item =
new TDEListViewItem(
this, item, i18n(
"* (All Columns)"));
100 m_allColumnsItem = item;
103 colinfo = columns[i];
104 item =
new TDEListViewItem(
this, item, colinfo->
aliasOrName());
106 item->setText(1, colinfo->field->
typeName());
116 setCurrentItem(firstChild());
120TQSize KexiFieldListView::sizeHint()
122 TQFontMetrics fm(font());
124 kdDebug() << m_table->name() <<
" cw=" << columnWidth(1) + fm.width(
"i") <<
", " << fm.width(m_table->name()+
" ") << endl;
127 TQMAX( columnWidth(1) + fm.width(
"i"), fm.width(m_table->name()+
" ")),
128 childCount()*firstChild()->totalHeight() + 4 );
133void KexiFieldListView::setReadOnly(
bool b)
136 viewport()->setAcceptDrops(!b);
140TQDragObject* KexiFieldListView::dragObject()
146 m_schema->name(), selectedFields, this,
"KexiFieldDrag");
157 return TQStringList();
158 TQStringList selectedFields;
159 for (TQListViewItem *item = firstChild(); item; item = item->nextSibling()) {
160 if (item->isSelected()) {
162 if (item == m_allColumnsItem && m_allColumnsItem)
163 selectedFields.append(
"*");
165 selectedFields.append(item->text(0));
168 return selectedFields;
180#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
const QueryColumnInfo::Vector columns(bool unique=false)
TableSchema * table() const
Drag object containing information about field(s).
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)