X-Git-Url: https://git.quassel-irc.org/?a=blobdiff_plain;f=src%2Fuisupport%2Fbufferview.cpp;h=2127bcc6af24e6d1b1784019d2ac181825019826;hb=2fd8e1c1d5a04b167ffa73e9c011fd34faebe1fc;hp=da7d0371c7b27641af450d3a4ab13985de25863a;hpb=5b164bbc62960cea62a31287f679197b623ad7ac;p=quassel.git diff --git a/src/uisupport/bufferview.cpp b/src/uisupport/bufferview.cpp index da7d0371..2127bcc6 100644 --- a/src/uisupport/bufferview.cpp +++ b/src/uisupport/bufferview.cpp @@ -28,6 +28,7 @@ #include #include #include +#include #include "action.h" #include "buffermodel.h" @@ -548,6 +549,16 @@ void BufferView::hideCurrentBuffer() config()->requestRemoveBuffer(bufferId); } +void BufferView::filterTextChanged(QString filterString) +{ + BufferViewFilter *filter = qobject_cast(model()); + if (!filter) { + return; + } + filter->setFilterString(filterString); + on_configChanged(); // make sure collapsation is correct +} + QSize BufferView::sizeHint() const { @@ -631,6 +642,9 @@ bool BufferViewDelegate::editorEvent(QEvent *event, QAbstractItemModel *model, c // ============================== BufferViewDock::BufferViewDock(BufferViewConfig *config, QWidget *parent) : QDockWidget(parent), + _childWidget(0), + _widget(new QWidget(parent)), + _filterEdit(new QLineEdit(parent)), _active(false), _title(config->bufferViewName()) { @@ -639,6 +653,14 @@ BufferViewDock::BufferViewDock(BufferViewConfig *config, QWidget *parent) setAllowedAreas(Qt::RightDockWidgetArea|Qt::LeftDockWidgetArea); connect(config, SIGNAL(bufferViewNameSet(const QString &)), this, SLOT(bufferViewRenamed(const QString &))); updateTitle(); + + _widget->setLayout(new QVBoxLayout); + _widget->layout()->setSpacing(0); + _widget->layout()->setContentsMargins(0, 0, 0, 0); + _filterEdit->setVisible(config->showSearch()); // hide it here, so we don't flicker or somesuch + _filterEdit->setPlaceholderText(tr("Search...")); + _widget->layout()->addWidget(_filterEdit); + QDockWidget::setWidget(_widget); } @@ -650,6 +672,14 @@ void BufferViewDock::updateTitle() setWindowTitle(title); } +void BufferViewDock::configChanged() +{ + _filterEdit->setVisible(config()->showSearch()); + + if (!_filterEdit->isVisible()) { + _filterEdit->setText(QLatin1String("")); + } +} void BufferViewDock::setActive(bool active) { @@ -691,3 +721,11 @@ BufferViewConfig *BufferViewDock::config() const else return view->config(); } + +void BufferViewDock::setWidget(QWidget *newWidget) +{ + _widget->layout()->addWidget(newWidget); + _childWidget = newWidget; + + connect(_filterEdit, SIGNAL(textChanged(QString)), bufferView(), SLOT(filterTextChanged(QString))); +}