|
|
|
@ -23,6 +23,8 @@
@@ -23,6 +23,8 @@
|
|
|
|
|
#include <QMessageBox> |
|
|
|
|
#include <QErrorMessage> |
|
|
|
|
#include <QClipboard> |
|
|
|
|
#include <QTabWidget> |
|
|
|
|
#include <QSignalMapper> |
|
|
|
|
#include <tox/tox.h> |
|
|
|
|
#include "ui_mainwindow.h" |
|
|
|
|
#include "src/nexus.h" |
|
|
|
@ -35,13 +37,23 @@
@@ -35,13 +37,23 @@
|
|
|
|
|
|
|
|
|
|
AddFriendForm::AddFriendForm() |
|
|
|
|
{ |
|
|
|
|
main = new QWidget(), head = new QWidget(); |
|
|
|
|
tabWidget = new QTabWidget(); |
|
|
|
|
main = new QWidget(tabWidget), head = new QWidget(); |
|
|
|
|
QFont bold; |
|
|
|
|
bold.setBold(true); |
|
|
|
|
headLabel.setFont(bold); |
|
|
|
|
|
|
|
|
|
retranslateUi(); |
|
|
|
|
|
|
|
|
|
tabWidget->addTab(main, tr("Add a friend")); |
|
|
|
|
QScrollArea* scrollArea = new QScrollArea(tabWidget); |
|
|
|
|
QWidget* requestWidget = new QWidget(tabWidget); |
|
|
|
|
scrollArea->setWidget(requestWidget); |
|
|
|
|
scrollArea->setWidgetResizable(true); |
|
|
|
|
requestsLayout = new QVBoxLayout(requestWidget); |
|
|
|
|
requestsLayout->addStretch(1); |
|
|
|
|
tabWidget->addTab(scrollArea, tr("Friend requests")); |
|
|
|
|
|
|
|
|
|
main->setLayout(&layout); |
|
|
|
|
layout.addWidget(&toxIdLabel); |
|
|
|
|
layout.addWidget(&toxId); |
|
|
|
@ -52,25 +64,38 @@ AddFriendForm::AddFriendForm()
@@ -52,25 +64,38 @@ AddFriendForm::AddFriendForm()
|
|
|
|
|
head->setLayout(&headLayout); |
|
|
|
|
headLayout.addWidget(&headLabel); |
|
|
|
|
|
|
|
|
|
connect(tabWidget, &QTabWidget::currentChanged, this, &AddFriendForm::onCurrentChanged); |
|
|
|
|
connect(&toxId,&QLineEdit::returnPressed, this, &AddFriendForm::onSendTriggered); |
|
|
|
|
connect(&sendButton, SIGNAL(clicked()), this, SLOT(onSendTriggered())); |
|
|
|
|
connect(Nexus::getCore(), &Core::usernameSet, this, &AddFriendForm::onUsernameSet); |
|
|
|
|
|
|
|
|
|
Translator::registerHandler(std::bind(&AddFriendForm::retranslateUi, this), this); |
|
|
|
|
|
|
|
|
|
acceptMapper = new QSignalMapper(requestWidget); |
|
|
|
|
rejectMapper = new QSignalMapper(requestWidget); |
|
|
|
|
connect(acceptMapper, SIGNAL(mapped(QWidget*)), this, SLOT(onFriendRequestAccepted(QWidget*))); |
|
|
|
|
connect(rejectMapper, SIGNAL(mapped(QWidget*)), this, SLOT(onFriendRequestRejected(QWidget*))); |
|
|
|
|
int size = Settings::getInstance().getFriendRequestSize(); |
|
|
|
|
|
|
|
|
|
for (int i = 0; i < size; ++i) |
|
|
|
|
{ |
|
|
|
|
QPair<QString, QString> request = Settings::getInstance().getFriendRequest(i); |
|
|
|
|
addFriendRequestWidget(request.first, request.second); |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
AddFriendForm::~AddFriendForm() |
|
|
|
|
{ |
|
|
|
|
Translator::unregister(this); |
|
|
|
|
head->deleteLater(); |
|
|
|
|
main->deleteLater(); |
|
|
|
|
tabWidget->deleteLater(); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
void AddFriendForm::show(Ui::MainWindow &ui) |
|
|
|
|
{ |
|
|
|
|
ui.mainContent->layout()->addWidget(main); |
|
|
|
|
ui.mainContent->layout()->addWidget(tabWidget); |
|
|
|
|
ui.mainHead->layout()->addWidget(head); |
|
|
|
|
main->show(); |
|
|
|
|
tabWidget->show(); |
|
|
|
|
head->show(); |
|
|
|
|
setIdFromClipboard(); |
|
|
|
|
toxId.setFocus(); |
|
|
|
@ -82,6 +107,18 @@ QString AddFriendForm::getMessage() const
@@ -82,6 +107,18 @@ QString AddFriendForm::getMessage() const
|
|
|
|
|
return !msg.isEmpty() ? msg : message.placeholderText(); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
void AddFriendForm::setMode(Mode mode) |
|
|
|
|
{ |
|
|
|
|
tabWidget->setCurrentIndex(mode); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
void AddFriendForm::addFriendRequest(const QString &friendAddress, const QString &message) |
|
|
|
|
{ |
|
|
|
|
addFriendRequestWidget(friendAddress, message); |
|
|
|
|
Settings::getInstance().addFriendRequest(friendAddress, message); |
|
|
|
|
onCurrentChanged(tabWidget->currentIndex()); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
void AddFriendForm::onUsernameSet(const QString& username) |
|
|
|
|
{ |
|
|
|
|
lastUsername = username; |
|
|
|
@ -140,6 +177,35 @@ void AddFriendForm::setIdFromClipboard()
@@ -140,6 +177,35 @@ void AddFriendForm::setIdFromClipboard()
|
|
|
|
|
toxId.setText(id); |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
#include <QDebug> |
|
|
|
|
void AddFriendForm::onFriendRequestAccepted(QWidget* friendWidget) |
|
|
|
|
{ |
|
|
|
|
int index = requestsLayout->indexOf(friendWidget); |
|
|
|
|
friendWidget->deleteLater(); |
|
|
|
|
requestsLayout->removeWidget(friendWidget); |
|
|
|
|
emit friendRequestAccepted(Settings::getInstance().getFriendRequest(requestsLayout->count() - index - 1).first); |
|
|
|
|
qDebug() << "Accepted:" << requestsLayout->count() - index - 1; |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
void AddFriendForm::onFriendRequestRejected(QWidget* friendWidget) |
|
|
|
|
{ |
|
|
|
|
int index = requestsLayout->indexOf(friendWidget); |
|
|
|
|
friendWidget->deleteLater(); |
|
|
|
|
requestsLayout->removeWidget(friendWidget); |
|
|
|
|
Settings::getInstance().removeFriendRequest(requestsLayout->count() - index - 1); |
|
|
|
|
Settings::getInstance().savePersonal(); |
|
|
|
|
qDebug() << "Rejected:" << requestsLayout->count() - index - 1; |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
void AddFriendForm::onCurrentChanged(int index) |
|
|
|
|
{ |
|
|
|
|
if (index == FriendRequest && Settings::getInstance().getUnreadFriendRequests() != 0) |
|
|
|
|
{ |
|
|
|
|
Settings::getInstance().clearUnreadFriendRequests(); |
|
|
|
|
Settings::getInstance().savePersonal(); |
|
|
|
|
emit friendRequestsSeen(); |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
void AddFriendForm::retranslateUi() |
|
|
|
|
{ |
|
|
|
@ -151,3 +217,27 @@ void AddFriendForm::retranslateUi()
@@ -151,3 +217,27 @@ void AddFriendForm::retranslateUi()
|
|
|
|
|
"Default message in friend requests if the field is left blank. Write something appropriate!") |
|
|
|
|
.arg(lastUsername)); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
void AddFriendForm::addFriendRequestWidget(const QString &friendAddress, const QString &message) |
|
|
|
|
{ |
|
|
|
|
QWidget* friendWidget = new QWidget(tabWidget); |
|
|
|
|
QHBoxLayout* friendLayout = new QHBoxLayout(friendWidget); |
|
|
|
|
QVBoxLayout* horLayout = new QVBoxLayout(); |
|
|
|
|
horLayout->setMargin(0); |
|
|
|
|
friendLayout->addLayout(horLayout); |
|
|
|
|
CroppingLabel* friendLabel = new CroppingLabel(friendWidget); |
|
|
|
|
friendLabel->setText("<b>" "12345678901234567890" "</b>"); |
|
|
|
|
horLayout->addWidget(friendLabel); |
|
|
|
|
QLabel* messageLabel = new QLabel(message); |
|
|
|
|
messageLabel->setWordWrap(true); |
|
|
|
|
horLayout->addWidget(messageLabel, 1); |
|
|
|
|
QPushButton* acceptButton = new QPushButton(tr("Accept")); |
|
|
|
|
connect(acceptButton, SIGNAL(pressed()), acceptMapper,SLOT(map())); |
|
|
|
|
acceptMapper->setMapping(acceptButton, friendWidget); |
|
|
|
|
friendLayout->addWidget(acceptButton); |
|
|
|
|
QPushButton* rejectButton = new QPushButton(tr("Reject")); |
|
|
|
|
connect(rejectButton, SIGNAL(pressed()), rejectMapper,SLOT(map())); |
|
|
|
|
rejectMapper->setMapping(rejectButton, friendWidget); |
|
|
|
|
friendLayout->addWidget(rejectButton); |
|
|
|
|
requestsLayout->insertWidget(0, friendWidget); |
|
|
|
|
} |
|
|
|
|