***************************************************************************/
#include "bufferwidget.h"
-#include "chatline.h"
-#include "chatline-old.h"
#include "chatview.h"
-#include "chatwidget.h"
+#include "chatviewsearchbar.h"
+#include "chatviewsearchcontroller.h"
#include "settings.h"
#include "client.h"
-#include "global.h"
+#include <QLayout>
-BufferWidget::BufferWidget(QWidget *parent) : AbstractBufferContainer(parent) {
+BufferWidget::BufferWidget(QWidget *parent)
+ : AbstractBufferContainer(parent),
+ _chatViewSearchController(new ChatViewSearchController(this))
+{
ui.setupUi(this);
+ layout()->setContentsMargins(0, 0, 0, 0);
+ layout()->setSpacing(0);
+ // ui.searchBar->hide();
+
+ _chatViewSearchController->setCaseSensitive(ui.searchBar->caseSensitiveBox()->isChecked());
+ _chatViewSearchController->setSearchSenders(ui.searchBar->searchSendersBox()->isChecked());
+ _chatViewSearchController->setSearchMsgs(ui.searchBar->searchMsgsBox()->isChecked());
+ _chatViewSearchController->setSearchOnlyRegularMsgs(ui.searchBar->searchOnlyRegularMsgsBox()->isChecked());
+
+ connect(ui.searchBar->searchEditLine(), SIGNAL(textChanged(const QString &)),
+ _chatViewSearchController, SLOT(setSearchString(const QString &)));
+ connect(ui.searchBar->caseSensitiveBox(), SIGNAL(toggled(bool)),
+ _chatViewSearchController, SLOT(setCaseSensitive(bool)));
+ connect(ui.searchBar->searchSendersBox(), SIGNAL(toggled(bool)),
+ _chatViewSearchController, SLOT(setSearchSenders(bool)));
+ connect(ui.searchBar->searchMsgsBox(), SIGNAL(toggled(bool)),
+ _chatViewSearchController, SLOT(setSearchMsgs(bool)));
+ connect(ui.searchBar->searchOnlyRegularMsgsBox(), SIGNAL(toggled(bool)),
+ _chatViewSearchController, SLOT(setSearchOnlyRegularMsgs(bool)));
+ connect(ui.searchBar->searchUpButton(), SIGNAL(clicked()),
+ _chatViewSearchController, SLOT(highlightPrev()));
+ connect(ui.searchBar->searchDownButton(), SIGNAL(clicked()),
+ _chatViewSearchController, SLOT(highlightNext()));
+
+ connect(_chatViewSearchController, SIGNAL(newCurrentHighlight(QGraphicsItem *)),
+ this, SLOT(scrollToHighlight(QGraphicsItem *)));
}
BufferWidget::~BufferWidget() {
-
+ delete _chatViewSearchController;
+ _chatViewSearchController = 0;
}
AbstractChatView *BufferWidget::createChatView(BufferId id) {
- QWidget *chatView;
- if(Global::SPUTDEV) {
- chatView = new ChatView(Client::buffer(id), this);
- } else {
- chatView = new ChatWidget(id, this);
- }
+ ChatView *chatView;
+ chatView = new ChatView(id, this);
_chatViews[id] = chatView;
ui.stackedWidget->addWidget(chatView);
chatView->setFocusProxy(this);
- return dynamic_cast<AbstractChatView*>(chatView);
+ return chatView;
}
void BufferWidget::removeChatView(BufferId id) {
}
void BufferWidget::showChatView(BufferId id) {
- if(!id.isValid()) ui.stackedWidget->setCurrentWidget(ui.page);
- else ui.stackedWidget->setCurrentWidget(_chatViews.value(id));
+ if(!id.isValid()) {
+ ui.stackedWidget->setCurrentWidget(ui.page);
+ } else {
+ ChatView *view = qobject_cast<ChatView *>(_chatViews.value(id));
+ Q_ASSERT(view);
+ ui.stackedWidget->setCurrentWidget(view);
+ _chatViewSearchController->setScene(view->scene());
+ }
}
+void BufferWidget::scrollToHighlight(QGraphicsItem *highlightItem) {
+ ChatView *view = qobject_cast<ChatView *>(ui.stackedWidget->currentWidget());
+ if(view) {
+ view->centerOn(highlightItem);
+ }
+}