Use Mac search widget for library & magnatune.

This commit is contained in:
John Maguire 2010-08-28 19:29:20 +00:00
parent dedb9621e8
commit d87733b005
6 changed files with 32 additions and 8 deletions

View File

@ -20,6 +20,7 @@
#include "ui_libraryfilterwidget.h"
#include "ui/iconloader.h"
#include "ui/settingsdialog.h"
#include "widgets/maclineedit.h"
#include <QMenu>
#include <QActionGroup>
@ -100,6 +101,16 @@ LibraryFilterWidget::LibraryFilterWidget(QWidget *parent)
library_menu_->addMenu(group_by_menu_);
library_menu_->addSeparator();
ui_->options->setMenu(library_menu_);
#ifdef Q_OS_DARWIN
delete ui_->filter;
MacLineEdit* lineedit = new MacLineEdit(this);
ui_->horizontalLayout->insertWidget(1, lineedit);
filter_ = lineedit;
ui_->clear->setHidden(true);
#else
filter_ = ui_->filter;
#endif
}
LibraryFilterWidget::~LibraryFilterWidget() {
@ -111,7 +122,7 @@ void LibraryFilterWidget::SetLibraryModel(LibraryModel *model) {
disconnect(model_, 0, this, 0);
disconnect(model_, 0, group_by_dialog_.get(), 0);
disconnect(group_by_dialog_.get(), 0, model_, 0);
disconnect(ui_->filter, 0, model_, 0);
disconnect(filter_->object(), 0, model_, 0);
disconnect(filter_age_mapper_, 0, model_, 0);
}
@ -124,7 +135,7 @@ void LibraryFilterWidget::SetLibraryModel(LibraryModel *model) {
SLOT(GroupingChanged(LibraryModel::Grouping)));
connect(group_by_dialog_.get(), SIGNAL(Accepted(LibraryModel::Grouping)),
model_, SLOT(SetGroupBy(LibraryModel::Grouping)));
connect(ui_->filter, SIGNAL(textChanged(QString)), model_, SLOT(SetFilterText(QString)));
connect(filter_->object(), SIGNAL(textChanged(QString)), model_, SLOT(SetFilterText(QString)));
connect(filter_age_mapper_, SIGNAL(mapped(int)), model_, SLOT(SetFilterAge(int)));
// Load settings
@ -172,12 +183,12 @@ void LibraryFilterWidget::GroupingChanged(const LibraryModel::Grouping& g) {
}
void LibraryFilterWidget::ClearFilter() {
ui_->filter->clear();
ui_->filter->setFocus();
filter_->clear();
filter_->setFocus();
}
void LibraryFilterWidget::SetFilterHint(const QString& hint) {
ui_->filter->SetHint(hint);
filter_->SetHint(hint);
}
void LibraryFilterWidget::SetAgeFilterEnabled(bool enabled) {

View File

@ -24,6 +24,7 @@
#include "librarymodel.h"
class GroupByDialog;
class LineEditInterface;
class SettingsDialog;
class Ui_LibraryFilterWidget;
@ -65,6 +66,8 @@ class LibraryFilterWidget : public QWidget {
QSignalMapper* filter_age_mapper_;
QString settings_group_;
LineEditInterface* filter_;
};
#endif // LIBRARYFILTERWIDGET_H

View File

@ -86,7 +86,7 @@ PlaylistContainer::PlaylistContainer(QWidget *parent)
delete ui_->filter;
MacLineEdit* filter = new MacLineEdit(ui_->toolbar);
filter->setObjectName("filter");
ui_->horizontalLayout->addWidget(ui_->filter);
ui_->horizontalLayout->addWidget(filter);
connect(filter, SIGNAL(textChanged(QString)), SLOT(UpdateFilter()));
filter->SetHint(tr("Playlist search"));
filter_ = filter;

View File

@ -20,7 +20,8 @@
#include <QPaintEvent>
LineEdit::LineEdit(QWidget* parent)
: QLineEdit(parent)
: QLineEdit(parent),
LineEditInterface(this)
{
}

View File

@ -21,10 +21,18 @@
class LineEditInterface {
public:
LineEditInterface(QObject* object) : object_(object) {}
virtual ~LineEditInterface() {}
virtual void clear() = 0;
virtual void setFocus() = 0;
virtual void setText(const QString&) = 0;
virtual QString text() const = 0;
virtual void SetHint(const QString&) = 0;
QObject* object() const { return object_; }
private:
QObject* object_;
};
// Remove in Qt 4.7: QLineEdit has placeholderText

View File

@ -74,7 +74,8 @@ void SearchTargetWrapper::SetHint(const QString& hint) {
MacLineEdit::MacLineEdit(QWidget* parent)
: QMacCocoaViewContainer(0, parent) {
: QMacCocoaViewContainer(0, parent),
LineEditInterface(this) {
NSAutoreleasePool* pool = [[NSAutoreleasePool alloc] init];
NSSearchField* search = [[NSSearchField alloc] init];