summaryrefslogtreecommitdiffstats
path: root/qt-ui/simplewidgets.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'qt-ui/simplewidgets.cpp')
-rw-r--r--qt-ui/simplewidgets.cpp736
1 files changed, 0 insertions, 736 deletions
diff --git a/qt-ui/simplewidgets.cpp b/qt-ui/simplewidgets.cpp
deleted file mode 100644
index 62a9cc646..000000000
--- a/qt-ui/simplewidgets.cpp
+++ /dev/null
@@ -1,736 +0,0 @@
-#include "simplewidgets.h"
-#include "filtermodels.h"
-
-#include <QProcess>
-#include <QFileDialog>
-#include <QShortcut>
-#include <QCalendarWidget>
-#include <QKeyEvent>
-#include <QAction>
-
-#include "file.h"
-#include "mainwindow.h"
-#include "helpers.h"
-#include "libdivecomputer/parser.h"
-#include "divelistview.h"
-#include "display.h"
-#include "profile/profilewidget2.h"
-#include "undocommands.h"
-
-class MinMaxAvgWidgetPrivate {
-public:
- QLabel *avgIco, *avgValue;
- QLabel *minIco, *minValue;
- QLabel *maxIco, *maxValue;
-
- MinMaxAvgWidgetPrivate(MinMaxAvgWidget *owner)
- {
- avgIco = new QLabel(owner);
- avgIco->setPixmap(QIcon(":/average").pixmap(16, 16));
- avgIco->setToolTip(QObject::tr("Average"));
- minIco = new QLabel(owner);
- minIco->setPixmap(QIcon(":/minimum").pixmap(16, 16));
- minIco->setToolTip(QObject::tr("Minimum"));
- maxIco = new QLabel(owner);
- maxIco->setPixmap(QIcon(":/maximum").pixmap(16, 16));
- maxIco->setToolTip(QObject::tr("Maximum"));
- avgValue = new QLabel(owner);
- minValue = new QLabel(owner);
- maxValue = new QLabel(owner);
-
- QGridLayout *formLayout = new QGridLayout();
- formLayout->addWidget(maxIco, 0, 0);
- formLayout->addWidget(maxValue, 0, 1);
- formLayout->addWidget(avgIco, 1, 0);
- formLayout->addWidget(avgValue, 1, 1);
- formLayout->addWidget(minIco, 2, 0);
- formLayout->addWidget(minValue, 2, 1);
- owner->setLayout(formLayout);
- }
-};
-
-double MinMaxAvgWidget::average() const
-{
- return d->avgValue->text().toDouble();
-}
-
-double MinMaxAvgWidget::maximum() const
-{
- return d->maxValue->text().toDouble();
-}
-double MinMaxAvgWidget::minimum() const
-{
- return d->minValue->text().toDouble();
-}
-
-MinMaxAvgWidget::MinMaxAvgWidget(QWidget *parent) : d(new MinMaxAvgWidgetPrivate(this))
-{
-}
-
-MinMaxAvgWidget::~MinMaxAvgWidget()
-{
-}
-
-void MinMaxAvgWidget::clear()
-{
- d->avgValue->setText(QString());
- d->maxValue->setText(QString());
- d->minValue->setText(QString());
-}
-
-void MinMaxAvgWidget::setAverage(double average)
-{
- d->avgValue->setText(QString::number(average));
-}
-
-void MinMaxAvgWidget::setMaximum(double maximum)
-{
- d->maxValue->setText(QString::number(maximum));
-}
-void MinMaxAvgWidget::setMinimum(double minimum)
-{
- d->minValue->setText(QString::number(minimum));
-}
-
-void MinMaxAvgWidget::setAverage(const QString &average)
-{
- d->avgValue->setText(average);
-}
-
-void MinMaxAvgWidget::setMaximum(const QString &maximum)
-{
- d->maxValue->setText(maximum);
-}
-
-void MinMaxAvgWidget::setMinimum(const QString &minimum)
-{
- d->minValue->setText(minimum);
-}
-
-void MinMaxAvgWidget::overrideMinToolTipText(const QString &newTip)
-{
- d->minIco->setToolTip(newTip);
- d->minValue->setToolTip(newTip);
-}
-
-void MinMaxAvgWidget::overrideAvgToolTipText(const QString &newTip)
-{
- d->avgIco->setToolTip(newTip);
- d->avgValue->setToolTip(newTip);
-}
-
-void MinMaxAvgWidget::overrideMaxToolTipText(const QString &newTip)
-{
- d->maxIco->setToolTip(newTip);
- d->maxValue->setToolTip(newTip);
-}
-
-RenumberDialog *RenumberDialog::instance()
-{
- static RenumberDialog *self = new RenumberDialog(MainWindow::instance());
- return self;
-}
-
-void RenumberDialog::renumberOnlySelected(bool selected)
-{
- if (selected && amount_selected == 1)
- ui.groupBox->setTitle(tr("New number"));
- else
- ui.groupBox->setTitle(tr("New starting number"));
- selectedOnly = selected;
-}
-
-void RenumberDialog::buttonClicked(QAbstractButton *button)
-{
- if (ui.buttonBox->buttonRole(button) == QDialogButtonBox::AcceptRole) {
- MainWindow::instance()->dive_list()->rememberSelection();
- // we remember a map from dive uuid to a pair of old number / new number
- QMap<int,QPair<int, int> > renumberedDives;
- int i;
- int newNr = ui.spinBox->value();
- struct dive *dive = NULL;
- for_each_dive (i, dive) {
- if (!selectedOnly || dive->selected)
- renumberedDives.insert(dive->id, QPair<int,int>(dive->number, newNr++));
- }
- UndoRenumberDives *undoCommand = new UndoRenumberDives(renumberedDives);
- MainWindow::instance()->undoStack->push(undoCommand);
-
- MainWindow::instance()->dive_list()->fixMessyQtModelBehaviour();
- mark_divelist_changed(true);
- MainWindow::instance()->dive_list()->restoreSelection();
- }
-}
-
-RenumberDialog::RenumberDialog(QWidget *parent) : QDialog(parent), selectedOnly(false)
-{
- ui.setupUi(this);
- connect(ui.buttonBox, SIGNAL(clicked(QAbstractButton *)), this, SLOT(buttonClicked(QAbstractButton *)));
- QShortcut *close = new QShortcut(QKeySequence(Qt::CTRL + Qt::Key_W), this);
- connect(close, SIGNAL(activated()), this, SLOT(close()));
- QShortcut *quit = new QShortcut(QKeySequence(Qt::CTRL + Qt::Key_Q), this);
- connect(quit, SIGNAL(activated()), parent, SLOT(close()));
-}
-
-SetpointDialog *SetpointDialog::instance()
-{
- static SetpointDialog *self = new SetpointDialog(MainWindow::instance());
- return self;
-}
-
-void SetpointDialog::setpointData(struct divecomputer *divecomputer, int second)
-{
- dc = divecomputer;
- time = second < 0 ? 0 : second;
-}
-
-void SetpointDialog::buttonClicked(QAbstractButton *button)
-{
- if (ui.buttonBox->buttonRole(button) == QDialogButtonBox::AcceptRole && dc)
- add_event(dc, time, SAMPLE_EVENT_PO2, 0, (int)(1000.0 * ui.spinbox->value()), "SP change");
- mark_divelist_changed(true);
- MainWindow::instance()->graphics()->replot();
-}
-
-SetpointDialog::SetpointDialog(QWidget *parent) :
- QDialog(parent),
- dc(0)
-{
- ui.setupUi(this);
- connect(ui.buttonBox, SIGNAL(clicked(QAbstractButton *)), this, SLOT(buttonClicked(QAbstractButton *)));
- QShortcut *close = new QShortcut(QKeySequence(Qt::CTRL + Qt::Key_W), this);
- connect(close, SIGNAL(activated()), this, SLOT(close()));
- QShortcut *quit = new QShortcut(QKeySequence(Qt::CTRL + Qt::Key_Q), this);
- connect(quit, SIGNAL(activated()), parent, SLOT(close()));
-}
-
-ShiftTimesDialog *ShiftTimesDialog::instance()
-{
- static ShiftTimesDialog *self = new ShiftTimesDialog(MainWindow::instance());
- return self;
-}
-
-void ShiftTimesDialog::buttonClicked(QAbstractButton *button)
-{
- int amount;
-
- if (ui.buttonBox->buttonRole(button) == QDialogButtonBox::AcceptRole) {
- amount = ui.timeEdit->time().hour() * 3600 + ui.timeEdit->time().minute() * 60;
- if (ui.backwards->isChecked())
- amount *= -1;
- if (amount != 0) {
- // DANGER, DANGER - this could get our dive_table unsorted...
- int i;
- struct dive *dive;
- QList<int> affectedDives;
- for_each_dive (i, dive) {
- if (!dive->selected)
- continue;
-
- affectedDives.append(dive->id);
- }
- MainWindow::instance()->undoStack->push(new UndoShiftTime(affectedDives, amount));
- sort_table(&dive_table);
- mark_divelist_changed(true);
- MainWindow::instance()->dive_list()->rememberSelection();
- MainWindow::instance()->refreshDisplay();
- MainWindow::instance()->dive_list()->restoreSelection();
- }
- }
-}
-
-void ShiftTimesDialog::showEvent(QShowEvent *event)
-{
- ui.timeEdit->setTime(QTime(0, 0, 0, 0));
- when = get_times(); //get time of first selected dive
- ui.currentTime->setText(get_dive_date_string(when));
- ui.shiftedTime->setText(get_dive_date_string(when));
-}
-
-void ShiftTimesDialog::changeTime()
-{
- int amount;
-
- amount = ui.timeEdit->time().hour() * 3600 + ui.timeEdit->time().minute() * 60;
- if (ui.backwards->isChecked())
- amount *= -1;
-
- ui.shiftedTime->setText(get_dive_date_string(amount + when));
-}
-
-ShiftTimesDialog::ShiftTimesDialog(QWidget *parent) :
- QDialog(parent),
- when(0)
-{
- ui.setupUi(this);
- connect(ui.buttonBox, SIGNAL(clicked(QAbstractButton *)), this, SLOT(buttonClicked(QAbstractButton *)));
- connect(ui.timeEdit, SIGNAL(timeChanged(const QTime)), this, SLOT(changeTime()));
- connect(ui.backwards, SIGNAL(toggled(bool)), this, SLOT(changeTime()));
- QShortcut *close = new QShortcut(QKeySequence(Qt::CTRL + Qt::Key_W), this);
- connect(close, SIGNAL(activated()), this, SLOT(close()));
- QShortcut *quit = new QShortcut(QKeySequence(Qt::CTRL + Qt::Key_Q), this);
- connect(quit, SIGNAL(activated()), parent, SLOT(close()));
-}
-
-void ShiftImageTimesDialog::buttonClicked(QAbstractButton *button)
-{
- if (ui.buttonBox->buttonRole(button) == QDialogButtonBox::AcceptRole) {
- m_amount = ui.timeEdit->time().hour() * 3600 + ui.timeEdit->time().minute() * 60;
- if (ui.backwards->isChecked())
- m_amount *= -1;
- }
-}
-
-void ShiftImageTimesDialog::syncCameraClicked()
-{
- QPixmap picture;
- QDateTime dcDateTime = QDateTime();
- QStringList fileNames = QFileDialog::getOpenFileNames(this,
- tr("Open image file"),
- DiveListView::lastUsedImageDir(),
- tr("Image files (*.jpg *.jpeg *.pnm *.tif *.tiff)"));
- if (fileNames.isEmpty())
- return;
-
- picture.load(fileNames.at(0));
- ui.displayDC->setEnabled(true);
- QGraphicsScene *scene = new QGraphicsScene(this);
-
- scene->addPixmap(picture.scaled(ui.DCImage->size()));
- ui.DCImage->setScene(scene);
-
- dcImageEpoch = picture_get_timestamp(fileNames.at(0).toUtf8().data());
- dcDateTime.setTime_t(dcImageEpoch - gettimezoneoffset(displayed_dive.when));
- ui.dcTime->setDateTime(dcDateTime);
- connect(ui.dcTime, SIGNAL(dateTimeChanged(const QDateTime &)), this, SLOT(dcDateTimeChanged(const QDateTime &)));
-}
-
-void ShiftImageTimesDialog::dcDateTimeChanged(const QDateTime &newDateTime)
-{
- QDateTime newtime(newDateTime);
- if (!dcImageEpoch)
- return;
- newtime.setTimeSpec(Qt::UTC);
- setOffset(newtime.toTime_t() - dcImageEpoch);
-}
-
-void ShiftImageTimesDialog::matchAllImagesToggled(bool state)
-{
- matchAllImages = state;
-}
-
-bool ShiftImageTimesDialog::matchAll()
-{
- return matchAllImages;
-}
-
-ShiftImageTimesDialog::ShiftImageTimesDialog(QWidget *parent, QStringList fileNames) :
- QDialog(parent),
- fileNames(fileNames),
- m_amount(0),
- matchAllImages(false)
-{
- ui.setupUi(this);
- connect(ui.buttonBox, SIGNAL(clicked(QAbstractButton *)), this, SLOT(buttonClicked(QAbstractButton *)));
- connect(ui.syncCamera, SIGNAL(clicked()), this, SLOT(syncCameraClicked()));
- connect(ui.timeEdit, SIGNAL(timeChanged(const QTime &)), this, SLOT(timeEditChanged(const QTime &)));
- connect(ui.matchAllImages, SIGNAL(toggled(bool)), this, SLOT(matchAllImagesToggled(bool)));
- dcImageEpoch = (time_t)0;
-}
-
-time_t ShiftImageTimesDialog::amount() const
-{
- return m_amount;
-}
-
-void ShiftImageTimesDialog::setOffset(time_t offset)
-{
- if (offset >= 0) {
- ui.forward->setChecked(true);
- } else {
- ui.backwards->setChecked(true);
- offset *= -1;
- }
- ui.timeEdit->setTime(QTime(offset / 3600, (offset % 3600) / 60, offset % 60));
-}
-
-void ShiftImageTimesDialog::updateInvalid()
-{
- timestamp_t timestamp;
- QDateTime time;
- bool allValid = true;
- ui.warningLabel->hide();
- ui.invalidLabel->hide();
- time.setTime_t(displayed_dive.when - gettimezoneoffset(displayed_dive.when));
- ui.invalidLabel->setText("Dive:" + time.toString() + "\n");
-
- Q_FOREACH (const QString &fileName, fileNames) {
- if (picture_check_valid(fileName.toUtf8().data(), m_amount))
- continue;
-
- // We've found invalid image
- timestamp = picture_get_timestamp(fileName.toUtf8().data());
- time.setTime_t(timestamp + m_amount - gettimezoneoffset(displayed_dive.when));
- ui.invalidLabel->setText(ui.invalidLabel->text() + fileName + " " + time.toString() + "\n");
- allValid = false;
- }
-
- if (!allValid){
- ui.warningLabel->show();
- ui.invalidLabel->show();
- }
-}
-
-void ShiftImageTimesDialog::timeEditChanged(const QTime &time)
-{
- m_amount = time.hour() * 3600 + time.minute() * 60;
- if (ui.backwards->isChecked())
- m_amount *= -1;
- updateInvalid();
-}
-
-URLDialog::URLDialog(QWidget *parent) : QDialog(parent)
-{
- ui.setupUi(this);
- QShortcut *close = new QShortcut(QKeySequence(Qt::CTRL + Qt::Key_W), this);
- connect(close, SIGNAL(activated()), this, SLOT(close()));
- QShortcut *quit = new QShortcut(QKeySequence(Qt::CTRL + Qt::Key_Q), this);
- connect(quit, SIGNAL(activated()), parent, SLOT(close()));
-}
-
-QString URLDialog::url() const
-{
- return ui.urlField->toPlainText();
-}
-
-bool isGnome3Session()
-{
-#if defined(QT_OS_WIW) || defined(QT_OS_MAC)
- return false;
-#else
- if (qApp->style()->objectName() != "gtk+")
- return false;
- QProcess p;
- p.start("pidof", QStringList() << "gnome-shell");
- p.waitForFinished(-1);
- QString p_stdout = p.readAllStandardOutput();
- return !p_stdout.isEmpty();
-#endif
-}
-
-DateWidget::DateWidget(QWidget *parent) : QWidget(parent),
- calendarWidget(new QCalendarWidget())
-{
- setDate(QDate::currentDate());
- setMinimumSize(QSize(80, 64));
- setFocusPolicy(Qt::StrongFocus);
- calendarWidget->setWindowFlags(Qt::FramelessWindowHint);
- calendarWidget->setFirstDayOfWeek(getLocale().firstDayOfWeek());
- calendarWidget->setVerticalHeaderFormat(QCalendarWidget::NoVerticalHeader);
-
- connect(calendarWidget, SIGNAL(activated(QDate)), calendarWidget, SLOT(hide()));
- connect(calendarWidget, SIGNAL(clicked(QDate)), calendarWidget, SLOT(hide()));
- connect(calendarWidget, SIGNAL(activated(QDate)), this, SLOT(setDate(QDate)));
- connect(calendarWidget, SIGNAL(clicked(QDate)), this, SLOT(setDate(QDate)));
- calendarWidget->installEventFilter(this);
-}
-
-bool DateWidget::eventFilter(QObject *object, QEvent *event)
-{
- if (event->type() == QEvent::FocusOut) {
- calendarWidget->hide();
- return true;
- }
- if (event->type() == QEvent::KeyPress) {
- QKeyEvent *ev = static_cast<QKeyEvent *>(event);
- if (ev->key() == Qt::Key_Escape) {
- calendarWidget->hide();
- }
- }
- return QObject::eventFilter(object, event);
-}
-
-
-void DateWidget::setDate(const QDate &date)
-{
- mDate = date;
- update();
- emit dateChanged(mDate);
-}
-
-QDate DateWidget::date() const
-{
- return mDate;
-}
-
-void DateWidget::changeEvent(QEvent *event)
-{
- if (event->type() == QEvent::EnabledChange) {
- update();
- }
-}
-
-#define DATEWIDGETWIDTH 80
-void DateWidget::paintEvent(QPaintEvent *event)
-{
- static QPixmap pix = QPixmap(":/calendar").scaled(DATEWIDGETWIDTH, 64);
-
- QPainter painter(this);
-
- painter.drawPixmap(QPoint(0, 0), isEnabled() ? pix : QPixmap::fromImage(grayImage(pix.toImage())));
-
- QString month = mDate.toString("MMM");
- QString year = mDate.toString("yyyy");
- QString day = mDate.toString("dd");
-
- QFont font = QFont("monospace", 10);
- QFontMetrics metrics = QFontMetrics(font);
- painter.setFont(font);
- painter.setPen(QPen(QBrush(Qt::white), 0));
- painter.setBrush(QBrush(Qt::white));
- painter.drawText(QPoint(6, metrics.height() + 1), month);
- painter.drawText(QPoint(DATEWIDGETWIDTH - metrics.width(year) - 6, metrics.height() + 1), year);
-
- font.setPointSize(14);
- metrics = QFontMetrics(font);
- painter.setPen(QPen(QBrush(Qt::black), 0));
- painter.setBrush(Qt::black);
- painter.setFont(font);
- painter.drawText(QPoint(DATEWIDGETWIDTH / 2 - metrics.width(day) / 2, 45), day);
-
- if (hasFocus()) {
- QStyleOptionFocusRect option;
- option.initFrom(this);
- option.backgroundColor = palette().color(QPalette::Background);
- style()->drawPrimitive(QStyle::PE_FrameFocusRect, &option, &painter, this);
- }
-}
-
-void DateWidget::mousePressEvent(QMouseEvent *event)
-{
- calendarWidget->setSelectedDate(mDate);
- calendarWidget->move(event->globalPos());
- calendarWidget->show();
- calendarWidget->raise();
- calendarWidget->setFocus();
-}
-
-void DateWidget::focusInEvent(QFocusEvent *event)
-{
- setFocus();
- QWidget::focusInEvent(event);
-}
-
-void DateWidget::focusOutEvent(QFocusEvent *event)
-{
- QWidget::focusOutEvent(event);
-}
-
-void DateWidget::keyPressEvent(QKeyEvent *event)
-{
- if (event->key() == Qt::Key_Return ||
- event->key() == Qt::Key_Enter ||
- event->key() == Qt::Key_Space) {
- calendarWidget->move(mapToGlobal(QPoint(0, 64)));
- calendarWidget->show();
- event->setAccepted(true);
- } else {
- QWidget::keyPressEvent(event);
- }
-}
-
-#define COMPONENT_FROM_UI(_component) what->_component = ui._component->isChecked()
-#define UI_FROM_COMPONENT(_component) ui._component->setChecked(what->_component)
-
-DiveComponentSelection::DiveComponentSelection(QWidget *parent, struct dive *target, struct dive_components *_what) : targetDive(target)
-{
- ui.setupUi(this);
- what = _what;
- UI_FROM_COMPONENT(divesite);
- UI_FROM_COMPONENT(divemaster);
- UI_FROM_COMPONENT(buddy);
- UI_FROM_COMPONENT(rating);
- UI_FROM_COMPONENT(visibility);
- UI_FROM_COMPONENT(notes);
- UI_FROM_COMPONENT(suit);
- UI_FROM_COMPONENT(tags);
- UI_FROM_COMPONENT(cylinders);
- UI_FROM_COMPONENT(weights);
- connect(ui.buttonBox, SIGNAL(clicked(QAbstractButton *)), this, SLOT(buttonClicked(QAbstractButton *)));
- QShortcut *close = new QShortcut(QKeySequence(Qt::CTRL + Qt::Key_W), this);
- connect(close, SIGNAL(activated()), this, SLOT(close()));
- QShortcut *quit = new QShortcut(QKeySequence(Qt::CTRL + Qt::Key_Q), this);
- connect(quit, SIGNAL(activated()), parent, SLOT(close()));
-}
-
-void DiveComponentSelection::buttonClicked(QAbstractButton *button)
-{
- if (ui.buttonBox->buttonRole(button) == QDialogButtonBox::AcceptRole) {
- COMPONENT_FROM_UI(divesite);
- COMPONENT_FROM_UI(divemaster);
- COMPONENT_FROM_UI(buddy);
- COMPONENT_FROM_UI(rating);
- COMPONENT_FROM_UI(visibility);
- COMPONENT_FROM_UI(notes);
- COMPONENT_FROM_UI(suit);
- COMPONENT_FROM_UI(tags);
- COMPONENT_FROM_UI(cylinders);
- COMPONENT_FROM_UI(weights);
- selective_copy_dive(&displayed_dive, targetDive, *what, true);
- }
-}
-
-TagFilter::TagFilter(QWidget *parent) : QWidget(parent)
-{
- ui.setupUi(this);
- ui.label->setText(tr("Tags: "));
-#if QT_VERSION >= 0x050200
- ui.filterInternalList->setClearButtonEnabled(true);
-#endif
- QSortFilterProxyModel *filter = new QSortFilterProxyModel();
- filter->setSourceModel(TagFilterModel::instance());
- filter->setFilterCaseSensitivity(Qt::CaseInsensitive);
- connect(ui.filterInternalList, SIGNAL(textChanged(QString)), filter, SLOT(setFilterFixedString(QString)));
- ui.filterList->setModel(filter);
-}
-
-void TagFilter::showEvent(QShowEvent *event)
-{
- MultiFilterSortModel::instance()->addFilterModel(TagFilterModel::instance());
- QWidget::showEvent(event);
-}
-
-void TagFilter::hideEvent(QHideEvent *event)
-{
- MultiFilterSortModel::instance()->removeFilterModel(TagFilterModel::instance());
- QWidget::hideEvent(event);
-}
-
-BuddyFilter::BuddyFilter(QWidget *parent) : QWidget(parent)
-{
- ui.setupUi(this);
- ui.label->setText(tr("Person: "));
- ui.label->setToolTip(tr("Searches for buddies and divemasters"));
-#if QT_VERSION >= 0x050200
- ui.filterInternalList->setClearButtonEnabled(true);
-#endif
- QSortFilterProxyModel *filter = new QSortFilterProxyModel();
- filter->setSourceModel(BuddyFilterModel::instance());
- filter->setFilterCaseSensitivity(Qt::CaseInsensitive);
- connect(ui.filterInternalList, SIGNAL(textChanged(QString)), filter, SLOT(setFilterFixedString(QString)));
- ui.filterList->setModel(filter);
-}
-
-void BuddyFilter::showEvent(QShowEvent *event)
-{
- MultiFilterSortModel::instance()->addFilterModel(BuddyFilterModel::instance());
- QWidget::showEvent(event);
-}
-
-void BuddyFilter::hideEvent(QHideEvent *event)
-{
- MultiFilterSortModel::instance()->removeFilterModel(BuddyFilterModel::instance());
- QWidget::hideEvent(event);
-}
-
-LocationFilter::LocationFilter(QWidget *parent) : QWidget(parent)
-{
- ui.setupUi(this);
- ui.label->setText(tr("Location: "));
-#if QT_VERSION >= 0x050200
- ui.filterInternalList->setClearButtonEnabled(true);
-#endif
- QSortFilterProxyModel *filter = new QSortFilterProxyModel();
- filter->setSourceModel(LocationFilterModel::instance());
- filter->setFilterCaseSensitivity(Qt::CaseInsensitive);
- connect(ui.filterInternalList, SIGNAL(textChanged(QString)), filter, SLOT(setFilterFixedString(QString)));
- ui.filterList->setModel(filter);
-}
-
-void LocationFilter::showEvent(QShowEvent *event)
-{
- MultiFilterSortModel::instance()->addFilterModel(LocationFilterModel::instance());
- QWidget::showEvent(event);
-}
-
-void LocationFilter::hideEvent(QHideEvent *event)
-{
- MultiFilterSortModel::instance()->removeFilterModel(LocationFilterModel::instance());
- QWidget::hideEvent(event);
-}
-
-SuitFilter::SuitFilter(QWidget *parent) : QWidget(parent)
-{
- ui.setupUi(this);
- ui.label->setText(tr("Suits: "));
-#if QT_VERSION >= 0x050200
- ui.filterInternalList->setClearButtonEnabled(true);
-#endif
- QSortFilterProxyModel *filter = new QSortFilterProxyModel();
- filter->setSourceModel(SuitsFilterModel::instance());
- filter->setFilterCaseSensitivity(Qt::CaseInsensitive);
- connect(ui.filterInternalList, SIGNAL(textChanged(QString)), filter, SLOT(setFilterFixedString(QString)));
- ui.filterList->setModel(filter);
-}
-
-void SuitFilter::showEvent(QShowEvent *event)
-{
- MultiFilterSortModel::instance()->addFilterModel(SuitsFilterModel::instance());
- QWidget::showEvent(event);
-}
-
-void SuitFilter::hideEvent(QHideEvent *event)
-{
- MultiFilterSortModel::instance()->removeFilterModel(SuitsFilterModel::instance());
- QWidget::hideEvent(event);
-}
-
-MultiFilter::MultiFilter(QWidget *parent) : QWidget(parent)
-{
- ui.setupUi(this);
-
- QWidget *expandedWidget = new QWidget();
- QHBoxLayout *l = new QHBoxLayout();
-
- TagFilter *tagFilter = new TagFilter(this);
- int minimumHeight = tagFilter->ui.filterInternalList->height() +
- tagFilter->ui.verticalLayout->spacing() * tagFilter->ui.verticalLayout->count();
-
- QListView *dummyList = new QListView();
- QStringListModel *dummy = new QStringListModel(QStringList() << "Dummy Text");
- dummyList->setModel(dummy);
-
- connect(ui.close, SIGNAL(clicked(bool)), this, SLOT(closeFilter()));
- connect(ui.clear, SIGNAL(clicked(bool)), MultiFilterSortModel::instance(), SLOT(clearFilter()));
- connect(ui.maximize, SIGNAL(clicked(bool)), this, SLOT(adjustHeight()));
-
- l->addWidget(tagFilter);
- l->addWidget(new BuddyFilter());
- l->addWidget(new LocationFilter());
- l->addWidget(new SuitFilter());
- l->setContentsMargins(0, 0, 0, 0);
- l->setSpacing(0);
- expandedWidget->setLayout(l);
-
- ui.scrollArea->setWidget(expandedWidget);
- expandedWidget->resize(expandedWidget->width(), minimumHeight + dummyList->sizeHintForRow(0) * 5 );
- ui.scrollArea->setMinimumHeight(expandedWidget->height() + 5);
-
- connect(MultiFilterSortModel::instance(), SIGNAL(filterFinished()), this, SLOT(filterFinished()));
-}
-
-void MultiFilter::filterFinished()
-{
- ui.filterText->setText(tr("Filter shows %1 (of %2) dives").arg(MultiFilterSortModel::instance()->divesDisplayed).arg(dive_table.nr));
-}
-
-void MultiFilter::adjustHeight()
-{
- ui.scrollArea->setVisible(!ui.scrollArea->isVisible());
-}
-
-void MultiFilter::closeFilter()
-{
- MultiFilterSortModel::instance()->clearFilter();
- hide();
-}