view widgets/TypingSelectWidget.cpp @ 39:94cdfacc4910

* some track id stuff, widget test stuff
author Chris Cannam
date Thu, 01 Apr 2010 14:26:51 +0100
parents 8bed05455706
children a42493a3baf8
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 <QLabel>

#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 = new QFrame;
    m_listLayout = new QGridLayout;
    m_list->setLayout(m_listLayout);
    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 (QWidget *w, m_listEntries) delete w;
    m_listEntries.clear();    

    foreach (Guess g, results) {
	Composer *c = qobject_cast<Composer *>(g.entity());
	if (!c) continue;
        QLabel *l = new QLabel;
        l->setText(c->getSortName(true));
        m_listLayout->addWidget(l);
        m_listEntries.push_back(l);

    }

    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;
}
   


}