удаление веб сервисов, автоизация, отображание срока жизни токенов
This commit is contained in:
+167
-17
@@ -1584,7 +1584,7 @@ void uGeneral::on_btnGetTockenBot_clicked()
|
||||
fLinkForm = new uLink(this);
|
||||
}
|
||||
|
||||
// Устанавливаем ссылку в окно (предполагается, что в uLink есть метод setLink)
|
||||
// Устанавливаем ссылку в окно
|
||||
fLinkForm->setLinkText(authUrl);
|
||||
fLinkForm->show();
|
||||
|
||||
@@ -1604,7 +1604,6 @@ void uGeneral::on_btnOpenFolderSettings_clicked()
|
||||
void uGeneral::on_btnGetTokenStreamer_clicked()
|
||||
{
|
||||
|
||||
//ykui0quht3tvr06vfqhdj5idmhginn
|
||||
QString clientId = ui->edtBotClientID->text();
|
||||
if (clientId.isEmpty()) {
|
||||
QMessageBox::warning(this, "Ошибка", "Введите Client ID");
|
||||
@@ -1630,24 +1629,36 @@ void uGeneral::on_btnGetTokenStreamer_clicked()
|
||||
// Запускаем сервер с открытием браузера (true)
|
||||
m_authStreamer->startServer(authUrl, true);
|
||||
|
||||
|
||||
}
|
||||
|
||||
// Обработчик получения токена
|
||||
void uGeneral::onTokenReceived(const QString &token)
|
||||
{
|
||||
ui->edtBotToken->setText(token);
|
||||
|
||||
// Закрываем окно с ссылкой, если оно открыто
|
||||
if (fLinkForm && fLinkForm->isVisible()) {
|
||||
fLinkForm->close();
|
||||
}
|
||||
|
||||
// Сохраняем настройки
|
||||
db->writeSetting(ui->edtBotToken->objectName(), ui->edtBotToken->text());
|
||||
}
|
||||
|
||||
void uGeneral::onTokenReceived2(const QString &token)
|
||||
{
|
||||
ui->edtBotTokenStreamer->setText(token);
|
||||
fLinkForm->close();
|
||||
|
||||
// Сохраняем настройки
|
||||
db->writeSetting(ui->edtBotTokenStreamer->objectName(), ui->edtBotTokenStreamer->text());
|
||||
}
|
||||
|
||||
void uGeneral::onTokenReceived3(const QString &token)
|
||||
{
|
||||
ui->edtDACode->setText(token);
|
||||
|
||||
// Сохраняем настройки
|
||||
db->writeSetting(ui->edtDACode->objectName(), ui->edtDACode->text());
|
||||
}
|
||||
|
||||
void uGeneral::onAuthError(const QString &error)
|
||||
@@ -2199,22 +2210,59 @@ QString uGeneral::replaceCustomEmotes(const QString &message)
|
||||
|
||||
void uGeneral::on_pushButton_2_clicked()
|
||||
{
|
||||
if (ui->pushButton_2->text() != "Отключиться")
|
||||
// Если кнопка в состоянии "Отключиться"
|
||||
if (ui->pushButton_2->text() == "Отключиться")
|
||||
{
|
||||
QString oauthToken = "oauth:" + ui->edtBotToken->text();
|
||||
QString nickname = ui->edtBotName->text();
|
||||
QString channel = ui->edtChannel->text();
|
||||
m_twitchClient->connectToTwitchChat(oauthToken, nickname, channel);
|
||||
ui->pushButton_2->setText("Отключиться");
|
||||
}
|
||||
else
|
||||
{
|
||||
m_twitchClient->disconnectFromServer();
|
||||
m_userManager->clear();
|
||||
ui->pushButton_2->setText("Подключиться");
|
||||
setTwitchConnected(false);
|
||||
disconnectFromTwitch();
|
||||
return;
|
||||
}
|
||||
|
||||
// Попытка подключения
|
||||
connectToTwitch();
|
||||
}
|
||||
|
||||
void uGeneral::connectToTwitch()
|
||||
{
|
||||
int botTokenDays = 0;
|
||||
int streamerTokenDays = 0;
|
||||
|
||||
QString botToken = ui->edtBotToken->text();
|
||||
QString streamerToken = ui->edtBotTokenStreamer->text();
|
||||
|
||||
// Проверка токенов
|
||||
if (!twitchAPI->validateTwitchToken("Бот", botToken, botTokenDays))
|
||||
{
|
||||
|
||||
return;
|
||||
}
|
||||
|
||||
if (!twitchAPI->validateTwitchToken("Стример", streamerToken, streamerTokenDays))
|
||||
{
|
||||
|
||||
return;
|
||||
}
|
||||
|
||||
// Подключение к чату Twitch
|
||||
QString oauthToken = "oauth:" + botToken;
|
||||
QString nickname = ui->edtBotName->text();
|
||||
QString channel = ui->edtChannel->text();
|
||||
|
||||
if (m_twitchClient->connectToTwitchChat(oauthToken, nickname, channel))
|
||||
{
|
||||
// Успешное подключение
|
||||
ui->pushButton_2->setText("Отключиться");
|
||||
ui->lbBotDays->setText(QString::number(botTokenDays));
|
||||
ui->lbStreamerDays->setText(QString::number(streamerTokenDays));
|
||||
setTwitchConnected(true);
|
||||
}
|
||||
}
|
||||
|
||||
void uGeneral::disconnectFromTwitch()
|
||||
{
|
||||
m_twitchClient->disconnectFromServer();
|
||||
m_userManager->clear();
|
||||
ui->pushButton_2->setText("Подключиться");
|
||||
setTwitchConnected(false);
|
||||
}
|
||||
|
||||
|
||||
@@ -3372,3 +3420,105 @@ void uGeneral::on_btnAUserName_clicked()
|
||||
cursor.insertText("[USERNAME]");
|
||||
}
|
||||
|
||||
|
||||
void uGeneral::on_btnRmWebService_clicked()
|
||||
{
|
||||
// Проверяем, выбрана ли строка в таблице
|
||||
int currentRow = ui->sgWebServers->currentRow();
|
||||
if (currentRow < 0) {
|
||||
QMessageBox::warning(this, "Ошибка", "Выберите веб-сервис для удаления!");
|
||||
return;
|
||||
}
|
||||
|
||||
// Получаем данные из таблицы
|
||||
QTableWidgetItem *nameItem = ui->sgWebServers->item(currentRow, 0);
|
||||
QTableWidgetItem *typeItem = ui->sgWebServers->item(currentRow, 1);
|
||||
QTableWidgetItem *portItem = ui->sgWebServers->item(currentRow, 2);
|
||||
|
||||
if (!nameItem || !typeItem || !portItem) {
|
||||
QMessageBox::warning(this, "Ошибка", "Не удалось получить данные о сервисе!");
|
||||
return;
|
||||
}
|
||||
|
||||
QString serviceName = nameItem->text();
|
||||
QString serviceType = typeItem->text();
|
||||
quint16 port = portItem->text().toUShort();
|
||||
|
||||
// Подтверждение удаления
|
||||
int result = QMessageBox::question(this, "Подтверждение удаления",
|
||||
QString("Вы уверены, что хотите удалить сервис '%1'?\n"
|
||||
"Тип: %2\n"
|
||||
"Порт: %3").arg(serviceName, serviceType, QString::number(port)),
|
||||
QMessageBox::Yes | QMessageBox::No);
|
||||
|
||||
if (result != QMessageBox::Yes) {
|
||||
return;
|
||||
}
|
||||
|
||||
// Получаем объект сервера из userData
|
||||
QObject *serverObj = nameItem->data(Qt::UserRole).value<QObject*>();
|
||||
|
||||
bool deletedFromDB = false;
|
||||
|
||||
// Удаляем сервер в зависимости от типа
|
||||
if (serviceType.toLower() == "чат" || serviceType.toLower() == "chat") {
|
||||
// Обрабатываем чат-сервер
|
||||
HttpServerChat *chatServer = qobject_cast<HttpServerChat*>(serverObj);
|
||||
if (chatServer) {
|
||||
// Останавливаем сервер
|
||||
chatServer->stop();
|
||||
|
||||
// Удаляем из списка
|
||||
int chatIndex = m_chatServers.indexOf(chatServer);
|
||||
if (chatIndex >= 0) {
|
||||
m_chatServers.removeAt(chatIndex);
|
||||
}
|
||||
|
||||
// Удаляем из базы данных
|
||||
deletedFromDB = db->deleteChat(port);
|
||||
|
||||
// Удаляем объект
|
||||
delete chatServer;
|
||||
}
|
||||
}
|
||||
else if (serviceType.toLower() == "уведомления" || serviceType.toLower() == "notification") {
|
||||
// Обрабатываем сервер уведомлений
|
||||
HttpServer *notifyServer = qobject_cast<HttpServer*>(serverObj);
|
||||
if (notifyServer) {
|
||||
// Останавливаем сервер
|
||||
notifyServer->stop();
|
||||
|
||||
// Удаляем из списка
|
||||
int notifyIndex = m_notificationServers.indexOf(notifyServer);
|
||||
if (notifyIndex >= 0) {
|
||||
m_notificationServers.removeAt(notifyIndex);
|
||||
}
|
||||
|
||||
// Удаляем из базы данных
|
||||
deletedFromDB = db->deleteNotification(port);
|
||||
|
||||
// Удаляем объект
|
||||
delete notifyServer;
|
||||
}
|
||||
}
|
||||
|
||||
// Удаляем строку из таблицы
|
||||
ui->sgWebServers->removeRow(currentRow);
|
||||
|
||||
// Логируем результат
|
||||
if (deletedFromDB) {
|
||||
LogManager::instance()->info("uGeneral", "on_btnRmWebService_clicked",
|
||||
QString("Удален веб-сервис: %1 (тип: %2, порт: %3)")
|
||||
.arg(serviceName, serviceType, QString::number(port)));
|
||||
QMessageBox::information(this, "Успех",
|
||||
QString("Сервис '%1' успешно удален!").arg(serviceName));
|
||||
} else {
|
||||
LogManager::instance()->warning("uGeneral", "on_btnRmWebService_clicked",
|
||||
QString("Сервис удален из интерфейса, но возникли проблемы с БД: %1")
|
||||
.arg(serviceName));
|
||||
QMessageBox::warning(this, "Внимание",
|
||||
QString("Сервис '%1' удален из интерфейса, но не удалось удалить его из базы данных!")
|
||||
.arg(serviceName));
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
+4
-1
@@ -344,6 +344,8 @@ private slots:
|
||||
|
||||
void on_btnAUserName_clicked();
|
||||
|
||||
void on_btnRmWebService_clicked();
|
||||
|
||||
public slots:
|
||||
// Установка статуса подключения к Twitch
|
||||
void setTwitchConnected(bool connected);
|
||||
@@ -464,7 +466,8 @@ private:
|
||||
// Загрузка эмодзи
|
||||
void loadEmoties();
|
||||
void loadChatBadges();
|
||||
|
||||
void disconnectFromTwitch();
|
||||
void connectToTwitch();
|
||||
/**
|
||||
* @brief Инициализирует звуковые уведомления
|
||||
*/
|
||||
|
||||
+54
-1
@@ -36,7 +36,7 @@
|
||||
<enum>Qt::LeftToRight</enum>
|
||||
</property>
|
||||
<property name="currentIndex">
|
||||
<number>2</number>
|
||||
<number>4</number>
|
||||
</property>
|
||||
<property name="tabsClosable">
|
||||
<bool>false</bool>
|
||||
@@ -1273,6 +1273,19 @@
|
||||
</rect>
|
||||
</property>
|
||||
</widget>
|
||||
<widget class="QPushButton" name="btnRmWebService">
|
||||
<property name="geometry">
|
||||
<rect>
|
||||
<x>10</x>
|
||||
<y>350</y>
|
||||
<width>101</width>
|
||||
<height>24</height>
|
||||
</rect>
|
||||
</property>
|
||||
<property name="text">
|
||||
<string>Удалить</string>
|
||||
</property>
|
||||
</widget>
|
||||
</widget>
|
||||
<widget class="QWidget" name="tab_6">
|
||||
<property name="icon" stdset="0">
|
||||
@@ -1833,6 +1846,46 @@
|
||||
<string>...</string>
|
||||
</property>
|
||||
</widget>
|
||||
<widget class="QWidget" name="gridLayoutWidget_3">
|
||||
<property name="geometry">
|
||||
<rect>
|
||||
<x>770</x>
|
||||
<y>730</y>
|
||||
<width>231</width>
|
||||
<height>61</height>
|
||||
</rect>
|
||||
</property>
|
||||
<layout class="QGridLayout" name="gridLayout_3">
|
||||
<item row="1" column="0">
|
||||
<widget class="QLabel" name="label_23">
|
||||
<property name="text">
|
||||
<string>Осталось дней токена стримера</string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="0" column="0">
|
||||
<widget class="QLabel" name="label_22">
|
||||
<property name="text">
|
||||
<string>Осталось дней токена бота</string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="0" column="1">
|
||||
<widget class="QLabel" name="lbBotDays">
|
||||
<property name="text">
|
||||
<string>0</string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="1" column="1">
|
||||
<widget class="QLabel" name="lbStreamerDays">
|
||||
<property name="text">
|
||||
<string>0</string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
</layout>
|
||||
</widget>
|
||||
</widget>
|
||||
<widget class="QStatusBar" name="statusbar"/>
|
||||
</widget>
|
||||
|
||||
Reference in New Issue
Block a user