diff options
Diffstat (limited to 'Swift/QtUI/QtChatWindow.cpp')
| -rw-r--r-- | Swift/QtUI/QtChatWindow.cpp | 48 | 
1 files changed, 47 insertions, 1 deletions
diff --git a/Swift/QtUI/QtChatWindow.cpp b/Swift/QtUI/QtChatWindow.cpp index 32c3067..c7a6fa8 100644 --- a/Swift/QtUI/QtChatWindow.cpp +++ b/Swift/QtUI/QtChatWindow.cpp @@ -30,6 +30,7 @@  #include <QTextEdit>  #include <QTime>  #include <QUrl> +#include <QPushButton>  namespace Swift {  QtChatWindow::QtChatWindow(const QString &contact, QtChatTheme* theme, UIEventStream* eventStream) : QtTabbable(), contact_(contact), previousMessageWasSelf_(false), previousMessageWasSystem_(false), previousMessageWasPresence_(false), eventStream_(eventStream) { @@ -38,6 +39,7 @@ QtChatWindow::QtChatWindow(const QString &contact, QtChatTheme* theme, UIEventSt  	completer_ = NULL;  	theme_ = theme;  	isCorrection_ = false; +	correctionEnabled_ = Maybe;  	updateTitleWithUnreadCount();  	QtSettingsProvider settings; @@ -45,10 +47,24 @@ QtChatWindow::QtChatWindow(const QString &contact, QtChatTheme* theme, UIEventSt  	layout->setContentsMargins(0,0,0,0);  	layout->setSpacing(2); +	alertWidget_ = new QWidget(this); +	QHBoxLayout* alertLayout = new QHBoxLayout(alertWidget_); +	layout->addWidget(alertWidget_); +	alertLabel_ = new QLabel(this); +	alertLayout->addWidget(alertLabel_); +	alertButton_ = new QPushButton(this); +	connect (alertButton_, SIGNAL(clicked()), this, SLOT(handleAlertButtonClicked())); +	alertLayout->addWidget(alertButton_); +	QPalette palette = alertWidget_->palette(); +	palette.setColor(QPalette::Window, QColor(Qt::yellow)); +	palette.setColor(QPalette::WindowText, QColor(Qt::black)); +	alertWidget_->setPalette(palette); +	alertLabel_->setPalette(palette); +	alertWidget_->hide(); +  	logRosterSplitter_ = new QSplitter(this);  	logRosterSplitter_->setAutoFillBackground(true);  	layout->addWidget(logRosterSplitter_); -  	messageLog_ = new QtChatView(theme, this);  	logRosterSplitter_->addWidget(messageLog_); @@ -104,10 +120,30 @@ QtChatWindow::~QtChatWindow() {  } +  void QtChatWindow::handleFontResized(int fontSizeSteps) {  	messageLog_->resizeFont(fontSizeSteps);  } +void QtChatWindow::handleAlertButtonClicked() { +	onAlertButtonClicked(); +} + +void QtChatWindow::setAlert(const std::string& alertText, const std::string& buttonText) { +	alertLabel_->setText(alertText.c_str()); +	if (buttonText.empty()) { +		alertButton_->hide(); +	} else { +		alertButton_->setText(buttonText.c_str()); +		alertButton_->show(); +	} +	alertWidget_->show(); +} + +void QtChatWindow::cancelAlert() { +	alertWidget_->hide(); +} +  void QtChatWindow::setTabComplete(TabComplete* completer) {  	completer_ = completer;  } @@ -146,6 +182,11 @@ void QtChatWindow::handleKeyPressEvent(QKeyEvent* event) {  }  void QtChatWindow::beginCorrection() { +	if (correctionEnabled_ == ChatWindow::Maybe) { +		setAlert(Q2PSTRING(tr("This chat may not support message correction. If you send a correction anyway, it may appear as a duplicate message"))); +	} else if (correctionEnabled_ == ChatWindow::No) { +		setAlert(Q2PSTRING(tr("This chat does not support message correction.  If you send a correction anyway, it will appear as a duplicate message"))); +	}  	QTextCursor cursor = input_->textCursor();  	cursor.select(QTextCursor::Document);  	cursor.beginEditBlock(); @@ -156,6 +197,7 @@ void QtChatWindow::beginCorrection() {  }  void QtChatWindow::cancelCorrection() { +	cancelAlert();  	QTextCursor cursor = input_->textCursor();  	cursor.select(QTextCursor::Document);  	cursor.removeSelectedText(); @@ -237,6 +279,10 @@ void QtChatWindow::setSecurityLabelsEnabled(bool enabled) {  	}  } +void QtChatWindow::setCorrectionEnabled(Tristate enabled) { +	correctionEnabled_ = enabled; +} +  SecurityLabelsCatalog::Item QtChatWindow::getSelectedSecurityLabel() {  	assert(labelsWidget_->isEnabled());  	return availableLabels_[labelsWidget_->currentIndex()];  | 
 Swift