parent
74bbc1f19f
commit
780b982635
|
@ -160,8 +160,11 @@ void RegisterMetaTypes() {
|
|||
qRegisterMetaType<PlaylistSettingsPage::PathType>("PlaylistSettingsPage::PathType");
|
||||
|
||||
qRegisterMetaType<PlaylistGeneratorPtr>("PlaylistGeneratorPtr");
|
||||
qRegisterMetaType<SmartPlaylistSearchTerm::Field>("SmartPlaylistSearchTerm::Field");
|
||||
qRegisterMetaType<SmartPlaylistSearchTerm::Operator>("SmartPlaylistSearchTerm::Operator");
|
||||
qRegisterMetaType<SmartPlaylistSearchTerm::OperatorList>("SmartPlaylistSearchTerm::OperatorList");
|
||||
qRegisterMetaType<SmartPlaylistSearchTerm::Type>("SmartPlaylistSearchTerm::Type");
|
||||
qRegisterMetaType<SmartPlaylistSearchTerm::DateType>("SmartPlaylistSearchTerm::DateType");
|
||||
qRegisterMetaType<SmartPlaylistsItem::Type>("SmartPlaylistsItem::Type");
|
||||
|
||||
}
|
||||
|
|
|
@ -138,7 +138,10 @@ class SmartPlaylistSearchTerm {
|
|||
QDataStream &operator<<(QDataStream &s, const SmartPlaylistSearchTerm &term);
|
||||
QDataStream &operator>>(QDataStream &s, SmartPlaylistSearchTerm &term);
|
||||
|
||||
Q_DECLARE_METATYPE(SmartPlaylistSearchTerm::Field)
|
||||
Q_DECLARE_METATYPE(SmartPlaylistSearchTerm::Operator)
|
||||
Q_DECLARE_METATYPE(SmartPlaylistSearchTerm::OperatorList)
|
||||
Q_DECLARE_METATYPE(SmartPlaylistSearchTerm::Type)
|
||||
Q_DECLARE_METATYPE(SmartPlaylistSearchTerm::DateType)
|
||||
|
||||
#endif // SMARTPLAYLISTSEARCHTERM_H
|
||||
|
|
|
@ -104,18 +104,20 @@ SmartPlaylistSearchTermWidget::SmartPlaylistSearchTermWidget(CollectionBackend *
|
|||
|
||||
// Populate the combo boxes
|
||||
for (int i = 0; i < static_cast<int>(SmartPlaylistSearchTerm::Field::FieldCount); ++i) {
|
||||
ui_->field->addItem(SmartPlaylistSearchTerm::FieldName(static_cast<SmartPlaylistSearchTerm::Field>(i)));
|
||||
ui_->field->setItemData(i, i);
|
||||
const SmartPlaylistSearchTerm::Field field = static_cast<SmartPlaylistSearchTerm::Field>(i);
|
||||
ui_->field->addItem(SmartPlaylistSearchTerm::FieldName(field));
|
||||
ui_->field->setItemData(i, QVariant::fromValue(field));
|
||||
}
|
||||
ui_->field->model()->sort(0);
|
||||
|
||||
// Populate the date type combo box
|
||||
for (int i = 0; i < 5; ++i) {
|
||||
ui_->date_type->addItem(SmartPlaylistSearchTerm::DateName(static_cast<SmartPlaylistSearchTerm::DateType>(i), false));
|
||||
ui_->date_type->setItemData(i, i);
|
||||
const SmartPlaylistSearchTerm::DateType datetype = static_cast<SmartPlaylistSearchTerm::DateType>(i);
|
||||
ui_->date_type->addItem(SmartPlaylistSearchTerm::DateName(datetype, false));
|
||||
ui_->date_type->setItemData(i, QVariant::fromValue(datetype));
|
||||
|
||||
ui_->date_type_relative->addItem(SmartPlaylistSearchTerm::DateName(static_cast<SmartPlaylistSearchTerm::DateType>(i), false));
|
||||
ui_->date_type_relative->setItemData(i, i);
|
||||
ui_->date_type_relative->addItem(SmartPlaylistSearchTerm::DateName(datetype, false));
|
||||
ui_->date_type_relative->setItemData(i, QVariant::fromValue(datetype));
|
||||
}
|
||||
|
||||
// Icons on the buttons
|
||||
|
@ -140,13 +142,13 @@ SmartPlaylistSearchTermWidget::~SmartPlaylistSearchTermWidget() { delete ui_; }
|
|||
|
||||
void SmartPlaylistSearchTermWidget::FieldChanged(int index) {
|
||||
|
||||
SmartPlaylistSearchTerm::Field field = static_cast<SmartPlaylistSearchTerm::Field>(ui_->field->itemData(index).toInt());
|
||||
SmartPlaylistSearchTerm::Type type = SmartPlaylistSearchTerm::TypeOf(field);
|
||||
const SmartPlaylistSearchTerm::Field field = ui_->field->itemData(index).value<SmartPlaylistSearchTerm::Field>();
|
||||
const SmartPlaylistSearchTerm::Type type = SmartPlaylistSearchTerm::TypeOf(field);
|
||||
|
||||
// Populate the operator combo box
|
||||
if (type != current_field_type_) {
|
||||
ui_->op->clear();
|
||||
for (SmartPlaylistSearchTerm::Operator op : SmartPlaylistSearchTerm::OperatorsForType(type)) {
|
||||
for (const SmartPlaylistSearchTerm::Operator op : SmartPlaylistSearchTerm::OperatorsForType(type)) {
|
||||
const int i = ui_->op->count();
|
||||
ui_->op->addItem(SmartPlaylistSearchTerm::OperatorText(type, op));
|
||||
ui_->op->setItemData(i, QVariant::fromValue(op));
|
||||
|
@ -156,7 +158,7 @@ void SmartPlaylistSearchTermWidget::FieldChanged(int index) {
|
|||
|
||||
// Show the correct value editor
|
||||
QWidget *page = nullptr;
|
||||
SmartPlaylistSearchTerm::Operator op = static_cast<SmartPlaylistSearchTerm::Operator>(ui_->op->itemData(ui_->op->currentIndex()).toInt());
|
||||
const SmartPlaylistSearchTerm::Operator op = ui_->op->currentData().value<SmartPlaylistSearchTerm::Operator>();
|
||||
switch (type) {
|
||||
case SmartPlaylistSearchTerm::Type::Time:
|
||||
page = ui_->page_time;
|
||||
|
@ -207,9 +209,8 @@ void SmartPlaylistSearchTermWidget::OpChanged(int idx) {
|
|||
Q_UNUSED(idx);
|
||||
|
||||
// Determine the currently selected operator
|
||||
SmartPlaylistSearchTerm::Operator op = static_cast<SmartPlaylistSearchTerm::Operator>(
|
||||
// This uses the operatorss index in the combobox to get its enum value
|
||||
ui_->op->itemData(ui_->op->currentIndex()).toInt());
|
||||
// This uses the operatorss index in the combobox to get its enum value
|
||||
const SmartPlaylistSearchTerm::Operator op = ui_->op->currentData().value<SmartPlaylistSearchTerm::Operator>();
|
||||
|
||||
// We need to change the page only in the following case
|
||||
if ((ui_->value_stack->currentWidget() == ui_->page_text) || (ui_->value_stack->currentWidget() == ui_->page_empty)) {
|
||||
|
@ -317,8 +318,8 @@ float SmartPlaylistSearchTermWidget::overlay_opacity() const {
|
|||
|
||||
void SmartPlaylistSearchTermWidget::SetTerm(const SmartPlaylistSearchTerm &term) {
|
||||
|
||||
ui_->field->setCurrentIndex(ui_->field->findData(static_cast<int>(term.field_)));
|
||||
ui_->op->setCurrentIndex(ui_->op->findData(static_cast<int>(term.operator_)));
|
||||
ui_->field->setCurrentIndex(ui_->field->findData(QVariant::fromValue(term.field_)));
|
||||
ui_->op->setCurrentIndex(ui_->op->findData(QVariant::fromValue(term.operator_)));
|
||||
|
||||
// The value depends on the data type
|
||||
switch (SmartPlaylistSearchTerm::TypeOf(term.field_)) {
|
||||
|
@ -338,12 +339,12 @@ void SmartPlaylistSearchTermWidget::SetTerm(const SmartPlaylistSearchTerm &term)
|
|||
case SmartPlaylistSearchTerm::Type::Date:
|
||||
if (ui_->value_stack->currentWidget() == ui_->page_date_numeric) {
|
||||
ui_->value_date_numeric->setValue(term.value_.toInt());
|
||||
ui_->date_type->setCurrentIndex(static_cast<int>(term.datetype_));
|
||||
ui_->date_type->setCurrentIndex(ui_->date_type->findData(QVariant::fromValue(term.datetype_)));
|
||||
}
|
||||
else if (ui_->value_stack->currentWidget() == ui_->page_date_relative) {
|
||||
ui_->value_date_numeric1->setValue(term.value_.toInt());
|
||||
ui_->value_date_numeric2->setValue(term.second_value_.toInt());
|
||||
ui_->date_type_relative->setCurrentIndex(static_cast<int>(term.datetype_));
|
||||
ui_->date_type_relative->setCurrentIndex(ui_->date_type_relative->findData(QVariant::fromValue(term.datetype_)));
|
||||
}
|
||||
else if (ui_->value_stack->currentWidget() == ui_->page_date) {
|
||||
ui_->value_date->setDateTime(QDateTime::fromSecsSinceEpoch(term.value_.toInt()));
|
||||
|
@ -366,12 +367,12 @@ void SmartPlaylistSearchTermWidget::SetTerm(const SmartPlaylistSearchTerm &term)
|
|||
|
||||
SmartPlaylistSearchTerm SmartPlaylistSearchTermWidget::Term() const {
|
||||
|
||||
const int field = ui_->field->itemData(ui_->field->currentIndex()).toInt();
|
||||
const int op = ui_->op->itemData(ui_->op->currentIndex()).toInt();
|
||||
const SmartPlaylistSearchTerm::Field field = ui_->field->currentData().value<SmartPlaylistSearchTerm::Field>();
|
||||
const SmartPlaylistSearchTerm::Operator op = ui_->op->currentData().value<SmartPlaylistSearchTerm::Operator>();
|
||||
|
||||
SmartPlaylistSearchTerm ret;
|
||||
ret.field_ = static_cast<SmartPlaylistSearchTerm::Field>(field);
|
||||
ret.operator_ = static_cast<SmartPlaylistSearchTerm::Operator>(op);
|
||||
ret.field_ = field;
|
||||
ret.operator_ = op;
|
||||
|
||||
// The value depends on the data type
|
||||
const QWidget *value_page = ui_->value_stack->currentWidget();
|
||||
|
@ -391,11 +392,11 @@ SmartPlaylistSearchTerm SmartPlaylistSearchTermWidget::Term() const {
|
|||
ret.value_ = QTime(0, 0).secsTo(ui_->value_time->time());
|
||||
}
|
||||
else if (value_page == ui_->page_date_numeric) {
|
||||
ret.datetype_ = static_cast<SmartPlaylistSearchTerm::DateType>(ui_->date_type->currentIndex());
|
||||
ret.datetype_ = ui_->date_type->currentData().value<SmartPlaylistSearchTerm::DateType>();
|
||||
ret.value_ = ui_->value_date_numeric->value();
|
||||
}
|
||||
else if (value_page == ui_->page_date_relative) {
|
||||
ret.datetype_ = static_cast<SmartPlaylistSearchTerm::DateType>(ui_->date_type_relative->currentIndex());
|
||||
ret.datetype_ = ui_->date_type_relative->currentData().value<SmartPlaylistSearchTerm::DateType>();
|
||||
ret.value_ = ui_->value_date_numeric1->value();
|
||||
ret.second_value_ = ui_->value_date_numeric2->value();
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue