view widgets/TypingSelectWidget.cpp @ 30:8bed05455706

* Make classical code build
author Chris Cannam
date Tue, 16 Mar 2010 17:36:28 +0000
parents 7d8a6167febb
children 94cdfacc4910
line wrap: on
line source
/* -*- c-basic-offset: 4 indent-tabs-mode: nil -*-  vi:set ts=8 sts=4 sw=4: */

#include "TypingSelectWidget.h"

#include <dataquay/Uri.h>

#include <QGridLayout>
#include <QLineEdit>
#include <QListWidget>

#include "Matcher.h"

#include "Objects.h"

using namespace Dataquay;

namespace ClassicalData {

TypingSelectWidget::TypingSelectWidget(QWidget *parent) :
    QWidget(parent)
{
    QGridLayout *layout = new QGridLayout;
    setLayout(layout);

    m_editor = new QLineEdit;
    layout->addWidget(m_editor);

    connect(m_editor, SIGNAL(textEdited(const QString &)),
	    this, SLOT(textEdited(const QString &)));

    m_list = new QListWidget();
    m_list->setWindowFlags(Qt::Window | Qt::Tool | Qt::FramelessWindowHint);
    m_list->hide();
}

void
TypingSelectWidget::textEdited(const QString &s)
{
    if (m_matchers.empty()) return;
    
    GuessList results = m_matchers[0]->match(s, 10);
    m_list->clear();

    if (results.empty()) {
	m_list->hide();
	return;
    }

    foreach (Guess g, results) {
	Composer *c = qobject_cast<Composer *>(g.entity());
	if (!c) continue;
	m_list->addItem(c->getSortName(true));
    }

    m_list->show();
    m_list->move(m_editor->mapToGlobal(QPoint(0, m_editor->height())));
    m_list->resize(m_list->sizeHint());
//    m_list->setMinimumWidth((width()*3)/4);
//    m_list->setMinimumHeight(height() * 5);


    std::cerr << std::endl;
}
   


}