summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--Swift/Controllers/HighlightEditorController.cpp13
-rw-r--r--Swift/Controllers/HighlightEditorController.h3
-rw-r--r--Swift/Controllers/MainController.cpp3
-rw-r--r--Swift/Controllers/UIInterfaces/HighlightEditorWindow.h10
-rw-r--r--Swift/QtUI/QtHighlightEditor.cpp16
-rw-r--r--Swift/QtUI/QtHighlightEditor.h2
6 files changed, 40 insertions, 7 deletions
diff --git a/Swift/Controllers/HighlightEditorController.cpp b/Swift/Controllers/HighlightEditorController.cpp
index 66a9f25..cb2c3b8 100644
--- a/Swift/Controllers/HighlightEditorController.cpp
+++ b/Swift/Controllers/HighlightEditorController.cpp
@@ -15,8 +15,8 @@
namespace Swift {
-HighlightEditorController::HighlightEditorController(UIEventStream* uiEventStream, ContactSuggester* contactSuggester, HighlightEditorWindowFactory* highlightEditorWindowFactory, HighlightManager* highlightManager)
-: highlightEditorWindowFactory_(highlightEditorWindowFactory), highlightEditorWindow_(NULL), highlightManager_(highlightManager), contactSuggester_(contactSuggester)
+HighlightEditorController::HighlightEditorController(UIEventStream* uiEventStream, HighlightEditorWindowFactory* highlightEditorWindowFactory, HighlightManager* highlightManager)
+: highlightEditorWindowFactory_(highlightEditorWindowFactory), highlightEditorWindow_(NULL), highlightManager_(highlightManager), contactSuggester_(0)
{
uiEventStream->onUIEvent.connect(boost::bind(&HighlightEditorController::handleUIEvent, this, _1));
}
@@ -34,7 +34,7 @@ void HighlightEditorController::handleUIEvent(boost::shared_ptr<UIEvent> rawEven
if (!highlightEditorWindow_) {
highlightEditorWindow_ = highlightEditorWindowFactory_->createHighlightEditorWindow();
highlightEditorWindow_->setHighlightManager(highlightManager_);
- //highlightEditorWindow_->onContactSuggestionsRequested.connect(boost::bind(&HighlightEditorController::handleContactSuggestionsRequested, this, _1));
+ highlightEditorWindow_->onContactSuggestionsRequested.connect(boost::bind(&HighlightEditorController::handleContactSuggestionsRequested, this, _1));
}
highlightEditorWindow_->show();
}
@@ -42,7 +42,12 @@ void HighlightEditorController::handleUIEvent(boost::shared_ptr<UIEvent> rawEven
void HighlightEditorController::handleContactSuggestionsRequested(const std::string& text)
{
- //highlightEditorWindow_->setContactSuggestions(contactSuggester_->getSuggestions(text));
+ if (contactSuggester_) {
+ std::cout << "PASSING JID SUGGESTIONS TO WINDOW!" << std::endl;
+ highlightEditorWindow_->setContactSuggestions(contactSuggester_->getSuggestions(text));
+ } else {
+ std::cout << "PASSING JID SUGGESTIONS TO WINDOW: FAILED - OFFLINE!" << std::endl;
+ }
}
}
diff --git a/Swift/Controllers/HighlightEditorController.h b/Swift/Controllers/HighlightEditorController.h
index f784248..c8d9bef 100644
--- a/Swift/Controllers/HighlightEditorController.h
+++ b/Swift/Controllers/HighlightEditorController.h
@@ -22,10 +22,11 @@ namespace Swift {
class HighlightEditorController {
public:
- HighlightEditorController(UIEventStream* uiEventStream, ContactSuggester* contactSuggester, HighlightEditorWindowFactory* highlightEditorWindowFactory, HighlightManager* highlightManager);
+ HighlightEditorController(UIEventStream* uiEventStream, HighlightEditorWindowFactory* highlightEditorWindowFactory, HighlightManager* highlightManager);
~HighlightEditorController();
HighlightManager* getHighlightManager() const { return highlightManager_; }
+ void setContactSuggester(ContactSuggester *suggester) { contactSuggester_ = suggester; }
private:
void handleUIEvent(boost::shared_ptr<UIEvent> event);
diff --git a/Swift/Controllers/MainController.cpp b/Swift/Controllers/MainController.cpp
index b527583..89836c9 100644
--- a/Swift/Controllers/MainController.cpp
+++ b/Swift/Controllers/MainController.cpp
@@ -167,7 +167,7 @@ MainController::MainController(
loginWindow_->setShowNotificationToggle(!notifier->isExternallyConfigured());
highlightManager_ = new HighlightManager(settings_);
- highlightEditorController_ = new HighlightEditorController(uiEventStream_, contactSuggesterWithRoster_, uiFactory_, highlightManager_);
+ highlightEditorController_ = new HighlightEditorController(uiEventStream_, uiFactory_, highlightManager_);
soundEventController_ = new SoundEventController(eventController_, soundPlayer, settings, highlightManager_);
@@ -369,6 +369,7 @@ void MainController::handleConnected() {
contactSuggesterWithoutRoster_->addContactProvider(chatsManager_);
contactSuggesterWithRoster_->addContactProvider(chatsManager_);
contactSuggesterWithRoster_->addContactProvider(contactsFromRosterProvider_);
+ highlightEditorController_->setContactSuggester(contactSuggesterWithoutRoster_);
client_->onMessageReceived.connect(boost::bind(&ChatsManager::handleIncomingMessage, chatsManager_, _1));
chatsManager_->setAvatarManager(client_->getAvatarManager());
diff --git a/Swift/Controllers/UIInterfaces/HighlightEditorWindow.h b/Swift/Controllers/UIInterfaces/HighlightEditorWindow.h
index abc8741..90623ba 100644
--- a/Swift/Controllers/UIInterfaces/HighlightEditorWindow.h
+++ b/Swift/Controllers/UIInterfaces/HighlightEditorWindow.h
@@ -4,6 +4,10 @@
* See Documentation/Licenses/GPLv3.txt for more information.
*/
+#include <vector>
+#include <Swiften/Base/boost_bsignals.h>
+#include <Swift/Controllers/Contact.h>
+
namespace Swift {
class HighlightManager;
@@ -12,8 +16,12 @@ class HighlightEditorWindow {
public:
HighlightEditorWindow();
virtual ~HighlightEditorWindow();
- virtual void setHighlightManager(HighlightManager *highlightManager) = 0;
virtual void show() = 0;
+ virtual void setHighlightManager(HighlightManager *highlightManager) = 0;
+ virtual void setContactSuggestions(const std::vector<Contact>& suggestions) = 0;
+
+public:
+ boost::signal<void (const std::string&)> onContactSuggestionsRequested;
};
}
diff --git a/Swift/QtUI/QtHighlightEditor.cpp b/Swift/QtUI/QtHighlightEditor.cpp
index c7ccf60..f014ce6 100644
--- a/Swift/QtUI/QtHighlightEditor.cpp
+++ b/Swift/QtUI/QtHighlightEditor.cpp
@@ -51,6 +51,9 @@ QtHighlightEditor::QtHighlightEditor(QtSettingsProvider* settings, QWidget* pare
jid_ = new QtSuggestingJIDInput(this, settings);
ui_.senderName->addWidget(jid_);
+ /* handle autocomplete */
+ connect(jid_, SIGNAL(textEdited(QString)), SLOT(handleContactSuggestionRequested(QString)));
+
/* we need to be notified if any of the state changes so that we can update our textual rule description */
connect(ui_.chatCheck, SIGNAL(clicked()), SLOT(updateRuleDescription()));
connect(ui_.roomCheck, SIGNAL(clicked()), SLOT(updateRuleDescription()));
@@ -166,6 +169,12 @@ void QtHighlightEditor::setHighlightManager(HighlightManager* highlightManager)
//ui_.moveDownButton->setEnabled(false);
}
+void QtHighlightEditor::setContactSuggestions(const std::vector<Contact>& suggestions)
+{
+ std::cout << "SETTINGS SUGGESTIONS!" << std::endl;
+ jid_->setSuggestions(suggestions);
+}
+
void QtHighlightEditor::colorOtherSelect()
{
ui_.foregroundColor->setEnabled(false);
@@ -302,6 +311,13 @@ void QtHighlightEditor::enableDialog(bool state)
ui_.customSoundRadio->setEnabled(state);
}
+void QtHighlightEditor::handleContactSuggestionRequested(const QString& text)
+{
+ std::cout << "GOT TEXT INPUT EVENT" << std::endl;
+ std::string stdText = Q2PSTRING(text);
+ onContactSuggestionsRequested(stdText);
+}
+
void QtHighlightEditor::selectRow(int row)
{
for (int i = 0; i < ui_.listWidget->count(); ++i) {
diff --git a/Swift/QtUI/QtHighlightEditor.h b/Swift/QtUI/QtHighlightEditor.h
index 2c3a819..5c0d618 100644
--- a/Swift/QtUI/QtHighlightEditor.h
+++ b/Swift/QtUI/QtHighlightEditor.h
@@ -30,6 +30,7 @@ namespace Swift {
virtual void show();
virtual void setHighlightManager(HighlightManager* highlightManager);
+ virtual void setContactSuggestions(const std::vector<Contact>& suggestions);
private slots:
void colorOtherSelect();
@@ -44,6 +45,7 @@ namespace Swift {
void onOkButtonClick();
void updateRuleDescription();
void enableDialog(bool state);
+ void handleContactSuggestionRequested(const QString& text);
private: