diff --git a/openbr/gui/formcombowidget.h b/openbr/gui/formcombowidget.h index 5181a7e..0701da3 100644 --- a/openbr/gui/formcombowidget.h +++ b/openbr/gui/formcombowidget.h @@ -6,7 +6,7 @@ #include #include -#include +#include namespace br { diff --git a/openbr/gui/metadata.cpp b/openbr/gui/metadata.cpp new file mode 100644 index 0000000..eb14b1a --- /dev/null +++ b/openbr/gui/metadata.cpp @@ -0,0 +1,48 @@ +#include "metadata.h" + +using namespace br; + +Metadata::Metadata(QWidget *parent) : + QWidget(parent) +{ + name = new QLabel("Name: "); + gender = new QLabel("Gender: "); + age = new QLabel("Age: "); + race = new QLabel("Race: "); + height = new QLabel("Height: "); + weight = new QLabel("Weight: "); + + layout.addWidget(name); + layout.addWidget(gender); + layout.addWidget(age); + layout.addWidget(race); + layout.addWidget(height); + layout.addWidget(weight); + + setLayout(&layout); +} + +void Metadata::reset() +{ + name->setText("Name: "); + gender->setText("Gender: "); + age->setText("Age: "); + race->setText("Race: "); + height->setText("Height: "); + weight->setText("Weight: "); +} + +void Metadata::setMetadata(br::File file) +{ + if (file.isNull()) { + reset(); + } + else { + name->setText(file.get("LASTNAME", "N/A") + ", " + file.get("FIRSTNAME", "N/A")); + gender->setText("Gender: " + file.get("GENDER", "N/A")); + age->setText("Age: " + file.get("Age", "N/A")); + race->setText("Race: " + file.get("RACE", "N/A")); + height->setText("Height: " + file.get("HEIGHT", "N/A")); + weight->setText("Weight: " + file.get("WEIGHT", "N/A")); + } +} diff --git a/openbr/gui/metadata.h b/openbr/gui/metadata.h new file mode 100755 index 0000000..256d5c2 --- /dev/null +++ b/openbr/gui/metadata.h @@ -0,0 +1,39 @@ +#ifndef BR_METADATA_H +#define BR_METADATA_H + +#include +#include +#include +#include + +#include + +namespace br { + +class BR_EXPORT Metadata : public QWidget +{ + Q_OBJECT + + QVBoxLayout layout; + + QLabel *name; + QLabel *gender; + QLabel *race; + QLabel *age; + QLabel *weight; + QLabel *height; + +public: + explicit Metadata(QWidget *parent = 0); + +signals: + +public slots: + void reset(); + void setMetadata(br::File); + +}; + +} + +#endif // BR_METADATA_H diff --git a/openbr/gui/pageflipwidget.h b/openbr/gui/pageflipwidget.h index e842ae8..eb7ce98 100644 --- a/openbr/gui/pageflipwidget.h +++ b/openbr/gui/pageflipwidget.h @@ -5,7 +5,7 @@ #include #include -#include +#include namespace br { diff --git a/openbr/gui/rangewidget.h b/openbr/gui/rangewidget.h index c280a2f..8ef6f43 100644 --- a/openbr/gui/rangewidget.h +++ b/openbr/gui/rangewidget.h @@ -8,7 +8,7 @@ #include #include -#include +#include namespace br { diff --git a/openbr/gui/recognitionbar.h b/openbr/gui/recognitionbar.h index d811a68..2573548 100644 --- a/openbr/gui/recognitionbar.h +++ b/openbr/gui/recognitionbar.h @@ -10,11 +10,11 @@ #include #include -#include "formcombowidget.h" -#include "rangewidget.h" -#include "pageflipwidget.h" -#include "searchboxwidget.h" -#include "metadata.h" +#include +#include +#include +#include +#include #include diff --git a/openbr/gui/searchboxwidget.cpp b/openbr/gui/searchboxwidget.cpp new file mode 100644 index 0000000..3fabe2c --- /dev/null +++ b/openbr/gui/searchboxwidget.cpp @@ -0,0 +1,51 @@ +#include "searchboxwidget.h" + +using namespace br; + +SearchBoxWidget::SearchBoxWidget(QWidget *parent) : + QWidget(parent) +{ + model = new QStringListModel(this); + completer = new QCompleter(this); + completer->setCaseSensitivity(Qt::CaseInsensitive); + searchBar = new QLineEdit(this); + + layout = new QVBoxLayout(this); + layout->addWidget(searchBar); + + setLayout(layout); + + startIndex = 0; + + connect(searchBar, SIGNAL(returnPressed()), this, SLOT(setIndex())); +} + +void SearchBoxWidget::setFiles(br::FileList files) +{ + words.clear(); + + foreach (const br::File file, files) + words.push_back(file.get("LASTNAME","N/A") + ", " + file.get("FIRSTNAME", "N/A")); + + model->setStringList(words); + completer->setModel(model); + + searchBar->setCompleter(completer); +} + +void SearchBoxWidget::setIndex() +{ + if (searchBar->text().isEmpty()) return; + + // Get index of currently selected object, starting at the previous searches index + int index = words.indexOf(searchBar->text(), startIndex); + + // Start from beginning of list if nothing is found + if (index == -1) { + index = words.indexOf(searchBar->text(), 0); + startIndex = index+1; + } + else startIndex = index+1; + + if (index != -1) emit newIndex(index); +} diff --git a/openbr/gui/searchboxwidget.h b/openbr/gui/searchboxwidget.h new file mode 100644 index 0000000..bcf8de4 --- /dev/null +++ b/openbr/gui/searchboxwidget.h @@ -0,0 +1,41 @@ +#ifndef BR_SEARCHBOXWIDGET_H +#define BR_SEARCHBOXWIDGET_H + +#include +#include +#include +#include +#include + +#include + +namespace br { + +class BR_EXPORT SearchBoxWidget : public QWidget +{ + Q_OBJECT + + QLineEdit *searchBar; + QCompleter *completer; + QStringListModel *model; + QVBoxLayout *layout; + + QStringList words; + int startIndex; + +public: + explicit SearchBoxWidget(QWidget *parent = 0); + +signals: + + void newIndex(int); + +public slots: + + void setFiles(br::FileList files); + void setIndex(); +}; + +} + +#endif // BR_SEARCHBOXWIDGET_H