Improve user friendliness of changing chat widget channel/opening new chat widget

This commit is contained in:
Rasmus Karlsson 2017-07-31 01:36:42 +02:00
parent 5c8d3f9eef
commit 417c4028a0
4 changed files with 19 additions and 6 deletions

View file

@ -157,18 +157,26 @@ LimitedQueueSnapshot<SharedMessageRef> ChatWidget::getMessagesSnapshot()
return this->messages.getSnapshot();
}
void ChatWidget::showChangeChannelPopup()
bool ChatWidget::showChangeChannelPopup(const char *dialogTitle, bool empty)
{
// create new input dialog and execute it
TextInputDialog dialog(this);
dialog.setText(QString::fromStdString(this->channelName));
dialog.setWindowTitle(dialogTitle);
if (!empty) {
dialog.setText(QString::fromStdString(this->channelName));
}
if (dialog.exec() == QDialog::Accepted) {
QString newChannelName = dialog.getText().trimmed();
this->channelName = newChannelName.toStdString();
return true;
}
return false;
}
void ChatWidget::layoutMessages(bool forceUpdate)
@ -229,7 +237,7 @@ void ChatWidget::doCloseSplit()
void ChatWidget::doChangeChannel()
{
this->showChangeChannelPopup();
this->showChangeChannelPopup("Change channel");
}
void ChatWidget::doPopup()

View file

@ -48,7 +48,7 @@ public:
std::shared_ptr<Channel> getChannel() const;
std::shared_ptr<Channel> &getChannelRef();
void showChangeChannelPopup();
bool showChangeChannelPopup(const char *dialogTitle, bool empty = false);
messages::LimitedQueueSnapshot<messages::SharedMessageRef> getMessagesSnapshot();
void layoutMessages(bool forceUpdate = false);
void updateGifEmotes();

View file

@ -132,7 +132,7 @@ void ChatWidgetHeader::mouseMoveEvent(QMouseEvent *event)
void ChatWidgetHeader::mouseDoubleClickEvent(QMouseEvent *event)
{
if (event->button() == Qt::LeftButton) {
this->chatWidget->showChangeChannelPopup();
this->chatWidget->showChangeChannelPopup("Change channel");
}
}

View file

@ -123,7 +123,12 @@ void NotebookPage::addChat(bool openChannelNameDialog)
ChatWidget *w = this->createChatWidget();
if (openChannelNameDialog) {
w->showChangeChannelPopup();
bool ret = w->showChangeChannelPopup("Open channel", true);
if (!ret) {
delete w;
return;
}
}
this->addToLayout(w, std::pair<int, int>(-1, -1));