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.
koffice/kexi/widget/kexifilterdlg.cpp

150 lines
4.1 KiB

/* This file is part of the KDE project
Copyright (C) 2003 Lucijan Busch <lucijan@kde.org>
This program is free software; you can redistribute it and/or
modify it under the terms of the GNU Library General Public
License as published by the Free Software Foundation; either
version 2 of the License, or (at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
Library General Public License for more details.
You should have received a copy of the GNU Library General Public License
along with this program; see the file COPYING. If not, write to
the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
* Boston, MA 02110-1301, USA.
*/
#include <tqlistview.h>
#include <tqpushbutton.h>
#include <tqlayout.h>
#include <tqheader.h>
#include <tqstringlist.h>
#include "kexiproject.h"
#include "kexiprojecthandler.h"
#include "kexiprojecthandleritem.h"
#include "kexidataprovider.h"
#include "kexifilterdlg.h"
#include "kexiquerydesignersqleditor.h"
KexiFilterDlg::KexiFilterDlg(KexiProject *project, TQWidget *parent, const char *name)
: TQDialog(parent, name)
{
m_project = project;
TQHBoxLayout *lbraces = new TQHBoxLayout(0, 0, 4);
TQPushButton *bsBO = createMiniButton("[");
TQPushButton *bBO = createMiniButton("(");
TQPushButton *bBC = createMiniButton(")");
TQPushButton *bsBC = createMiniButton("]");
lbraces->addWidget(bsBO);
lbraces->addWidget(bBO);
lbraces->addWidget(bBC);
lbraces->addWidget(bsBC);
TQHBoxLayout *lcond = new TQHBoxLayout(0, 0, 4);
TQPushButton *blt = createMiniButton("<");
TQPushButton *beq = createMiniButton("=");
TQPushButton *bgt = createMiniButton(">");
TQPushButton *bp = createMiniButton("%");
lcond->addWidget(blt);
lcond->addWidget(beq);
lcond->addWidget(bgt);
lcond->addWidget(bp);
TQHBoxLayout *lbool = new TQHBoxLayout(0, 0, 4);
TQPushButton *bAnd = new TQPushButton("AND", this);
bAnd->setFlat(true);
TQPushButton *bOr = new TQPushButton("OR", this);
bOr->setFlat(true);
TQPushButton *bLike = new TQPushButton("LIKE", this);
bLike->setFlat(true);
lbool->addWidget(bLike);
lbool->addWidget(bAnd);
lbool->addWidget(bOr);
m_catalog = new TQListView(this);
m_catalog->addColumn("a");
m_catalog->header()->hide();
KexiQueryDesignerSQLEditor *e = new KexiQueryDesignerSQLEditor(this);
setupCatalog(TQString("kexi/table"));
TQGridLayout *g = new TQGridLayout(this);
g->setSpacing(6);
g->addMultiCellWidget(e, 0, 0, 0, 2);
g->addItem(lbraces, 1, 0);
g->addItem(lcond, 1, 1);
g->addItem(lbool, 1, 2);
g->addMultiCellWidget(m_catalog, 2, 2, 0, 2);
}
TQPushButton*
KexiFilterDlg::createMiniButton(const TQString &text)
{
TQPushButton *p = new TQPushButton(text, this);
p->setFlat(true);
p->setMaximumSize(TQSize(20, 300));
return p;
}
void
KexiFilterDlg::setupCatalog(const TQStringList &mimes)
{
m_catalog->clear();
m_catalog->setRootIsDecorated(true);
TQStringList::ConstIterator it, end( mimes.constEnd() );
for( it = mimes.constBegin(); it != end; ++it)
{
KexiProjectHandler *h = m_project->handlerForMime(*it);
if(h)
{
TQListViewItem *base = new TQListViewItem(m_catalog, h->name());
base->setPixmap(0, h->groupPixmap());
TQDictIterator<KexiProjectHandlerItem> iit(*h->items()); // See TQDictIterator
for(; iit.current(); ++iit )
{
TQListViewItem *bi = new TQListViewItem(base, iit.current()->name());
bi->setPixmap(0, h->itemPixmap());
KexiDataProvider *prov=KEXIDATAPROVIDER(h);
if(prov)
{
TQStringList fields = prov->fields(0, iit.current()->identifier());
TQStringList::ConstIterator fit, end( fields.constEnd() );
for( fit = fields.constBegin(); fit != end; ++fit)
{
TQListViewItem *bif = new TQListViewItem(bi, (*fit));
}
}
}
}
}
}
void
KexiFilterDlg::setupCatalog(const TQString &mime)
{
TQStringList l;
l.append(mime);
setupCatalog(l);
}
void
KexiFilterDlg::insert(TQListViewItem *)
{
}
KexiFilterDlg::~KexiFilterDlg()
{
}
#include "kexifilterdlg.moc"