Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include "mainwindow.h"
- #include "ui_mainwindow.h"
- MainWindow::MainWindow(QWidget *parent) :
- QMainWindow(parent),
- ui(new Ui::MainWindow)
- {
- ui->setupUi(this);
- this -> setTrayIconActions();
- this -> showTrayIcon();
- file_settings = new QSettings("Settings.ini",QSettings::IniFormat);
- QPixmap image;
- image.load(":/imgages/logo.jpg");
- ui->lbl_image->setPixmap(image);
- //ui->phone_edit->hide();
- //ui->request_btn->hide();
- // реквест ссылки на пользователя
- connect(ui->request_btn,SIGNAL(clicked()),this, SLOT(req()));
- connect(trayIcon, SIGNAL(messageClicked()), this, SLOT(showLink()));
- connect(ui->button_setings, SIGNAL(clicked()), this, SLOT(settings()));
- connect(ui->btn_link, SIGNAL(clicked()), this, SLOT(link_button_click()));
- sock = new QTcpSocket();
- connect(ui->btn_connect, SIGNAL(clicked()), this, SLOT(connect_Sock()));
- connect(ui->btn_disconnect, SIGNAL(clicked()), this, SLOT(disconnect_Sock()));
- connect(ui->btn_login, SIGNAL(clicked()), this, SLOT(login()));
- connect(sock, SIGNAL(readyRead()), this, SLOT(read_Data()));
- }
- MainWindow::~MainWindow()
- {
- delete ui;
- }
- // Показать иконку в трее
- void MainWindow::showTrayIcon()
- {
- //Создаем экземпляр класса и задаем свойства
- trayIcon = new QSystemTrayIcon(this);
- QIcon trayImage(":/imgages/Abills.png");
- trayIcon->setIcon(trayImage);
- trayIcon->setContextMenu(trayIconMenu);
- // Подключаем обработчик клика по иконке...
- connect(trayIcon, SIGNAL(activated(QSystemTrayIcon::ActivationReason)), this, SLOT(trayIconActivated(QSystemTrayIcon::ActivationReason)));
- // Выводим значок...
- trayIcon -> show();
- }
- // Восстановление окна
- void MainWindow::trayActionExecute()
- {
- this->showNormal();
- this->focusPolicy();
- }
- // Активация окна
- void MainWindow::trayIconActivated(QSystemTrayIcon::ActivationReason reason)
- {
- switch (reason)
- {
- case QSystemTrayIcon::DoubleClick:
- case QSystemTrayIcon::Trigger:
- this -> showNormal();
- break;
- default:
- break;
- }
- }
- // Действия для иконки в трее
- void MainWindow::setTrayIconActions()
- {
- // Setting actions...
- minimizeAction = new QAction("Свернуть", this);
- restoreAction = new QAction("Восстановить", this);
- quitAction = new QAction("Выход", this);
- // Connecting actions to slots...
- connect (minimizeAction, SIGNAL(triggered()), this, SLOT(hide()));
- connect (restoreAction, SIGNAL(triggered()), this, SLOT(showNormal()));
- connect (quitAction, SIGNAL(triggered()), qApp, SLOT(quit()));
- // Setting system tray's icon menu...
- trayIconMenu = new QMenu(this);
- trayIconMenu -> addAction (minimizeAction);
- trayIconMenu -> addAction (restoreAction);
- trayIconMenu -> addAction (quitAction);
- }
- // Минимизирование окна
- void MainWindow::changeEvent(QEvent *event)
- {
- QMainWindow::changeEvent(event);
- if (event -> type() == QEvent::WindowStateChange)
- {
- if (isMinimized())
- {
- this -> hide();
- }
- }
- }
- // Отправка реквеста к серверу
- void MainWindow::req()
- {
- Settings setti;
- QString txt = ui->phone_edit->text();
- if(setti.get_type_connect() == "1")
- {
- abills = "https://"+ setti.get_login_abills() +":" + setti.get_password_abills()+ "@" + setti.get_ip() + ":9443/admin/index.cgi?qindex=7&search_form=1&search=1&type=11&header=1&xml=1&PHONE=";
- abills+=txt;
- url_req = abills;
- ui->browser_dbg->append(url_req.toString());
- }else
- {
- abills = "https://"+ setti.get_ip() + ":9443/admin/index.cgi?qindex=7&user=" + setti.get_login_abills() + "&passwd=" + setti.get_password_abills() + "&search_form=1&search=1&type=11&header=1&xml=1&PHONE=";
- abills+=txt;
- url_req = abills;
- ui->browser_dbg->append(url_req.toString());
- }
- manager = new QNetworkAccessManager(this);
- reply = manager->get(QNetworkRequest(url_req));
- reply->ignoreSslErrors();
- connect(reply, SIGNAL(finished()),this, SLOT(getXML()));
- }
- // Парсинг XML и заполнение данными
- void MainWindow::getXML()
- {
- qDebug() << "bytes available in reply - " << reply->bytesAvailable();
- data = reply->read(reply->bytesAvailable());
- qDebug() << "length of data - " << data.length();
- xml.addData(data);
- while(!xml.atEnd())
- {
- xml.readNext();
- ui->edit_phone->setText(ui->phone_edit->text());
- if (xml.name() == "FIO")
- {
- QString test;
- test = xml.readElementText();
- if(!test.isEmpty())
- {
- fio = test;
- //trayIcon->showMessage("USER", fio);
- log_string = QDate::currentDate().toString(Qt::ISODate);
- log_string.append(" - " + QTime::currentTime().toString());
- ui->edit_fullname->setText(fio);
- }
- }
- if (xml.name() == "UID")
- {
- QString test;
- test = xml.readElementText();
- if(!test.isEmpty())
- {
- uid = test;
- }
- }
- if (xml.name() == "ADDRESS_DISTRICT")
- {
- QString test;
- test = xml.readElementText();
- if(!test.isEmpty())
- {
- district = test;
- ui->edit_district->setText(district);
- }
- }
- if (xml.name() == "ADDRESS_STREET")
- {
- QString test;
- test = xml.readElementText();
- if(!test.isEmpty())
- {
- street = test;
- ui->edit_street->setText(street);
- }
- }
- if (xml.name() == "ADDRESS_BUILD")
- {
- QString test;
- test = xml.readElementText();
- if(!test.isEmpty())
- {
- build = test;
- ui->edit_build->setText(build);
- }
- }
- if (xml.name() == "TP_NAME")
- {
- QString tp = xml.readElementText();
- ui->edit_tp->setText(tp);
- }
- if (xml.name() == "G_NAME")
- {
- QString group = xml.readElementText();
- ui->edit_group->setText(group);
- }
- if (xml.name() == "DEPOSIT")
- {
- QString test;
- test = xml.readElementText();
- if(!test.isEmpty())
- {
- deposit = test;
- ui->edit_deposit->setText(deposit);
- }
- }
- if (xml.name() == "CREDIT")
- {
- QString test;
- test = xml.readElementText();
- if(!test.isEmpty())
- {
- credit = test;
- ui->edit_credit->setText(credit);
- }
- }
- }
- msg_show.append(fio + "\n");
- msg_show.append("Баланс: " + deposit + "\n");
- msg_show.append("UID = " + uid);
- trayIcon->showMessage("Звонок", msg_show);
- msg_show.clear();
- xml.clear();
- reply->deleteLater();
- }
- // Открытие абонента в браузере(сообщение в трее)
- void MainWindow::showLink()
- {
- Settings setti;
- QDesktopServices open;
- if(setti.get_type_connect() == "1")
- {
- QString link = "https://"+ setti.get_login_abills() +":" + setti.get_password_abills()+ "@" + setti.get_ip() + ":9443/admin/index.cgi?&index=15&UID=";
- link+=uid;
- open.openUrl(QUrl(link));
- }else
- {
- QString link = "https://"+ setti.get_ip() + ":9443/admin/index.cgi?user=" + setti.get_login_abills() + "&passwd=" + setti.get_password_abills() + "&index=15&UID=";
- link += uid;
- open.openUrl(QUrl(link));
- }
- }
- // Окно настроек, обьект
- void MainWindow::settings()
- {
- Settings *setings = new Settings;
- setings->exec();
- }
- // Подключение к сокету
- void MainWindow::connect_Sock()
- {
- Settings sett;
- //ui->browser_dbg->clear();
- sock->connectToHost(sett.get_ip(), 5039);
- qDebug() << "ip для сокета" << sett.get_ip();
- if(!sock->waitForConnected(3000))
- ui->statusBar->showMessage(sock->errorString());
- else
- {
- ui->statusBar->showMessage("Подключение открыто к " + sett.get_ip() + ", попробуй залогиниться");
- ui->btn_connect->setDisabled(true);
- ui->btn_disconnect->setEnabled(true);
- qDebug() << "connect to sock";
- }
- }
- // Отключение от сокета
- void MainWindow::disconnect_Sock()
- {
- ui->btn_disconnect->setDisabled(true);
- //ui->browser_dbg->clear();
- sock->write("Action: Logoff\n");
- sock->write("\n");
- sock->disconnect();
- ui->browser_dbg->append("Socket disconnected!");
- ui->statusBar->showMessage("Подключение закрыто");
- ui->btn_connect->setEnabled(true);
- }
- // Открытие абонента в браузере(кнопка)
- void MainWindow::link_button_click()
- {
- Settings setti;
- QDesktopServices open;
- if(setti.get_type_connect() == "1")
- {
- QString link = "https://"+ setti.get_login_abills() +":" + setti.get_password_abills()+ "@" + setti.get_ip() + ":9443/admin/index.cgi?&index=15&UID=";
- link+=uid;
- open.openUrl(QUrl(link));
- }else
- {
- QString link = "https://"+ setti.get_ip() + ":9443/admin/index.cgi?user=" + setti.get_login_abills() + "&passwd=" + setti.get_password_abills() + "&index=15&UID=";
- link += uid;
- open.openUrl(QUrl(link));
- }
- }
- // Логин до Астериска
- void MainWindow::login()
- {
- //ui->browser_dbg->clear();
- Settings sett;
- sock->write("Action: Login\n");
- sock->write("Username: ");
- sock->write(sett.get_login_asterisk());
- sock->write("\n");
- sock->write("Secret:");
- sock->write(sett.get_password_asterisk());
- sock->write("\n");
- sock->write("\n");
- }
- // Читаем данные с астериск менеджера
- void MainWindow::read_Data()
- {
- //ui->browser_dbg->append("NEW DATA");
- QByteArray data_sock;
- data_sock.clear();
- data_str.clear();
- qDebug() << "bytes available in sock - " << sock->bytesAvailable();
- qDebug() << data_sock.append(sock->read(sock->bytesAvailable()));
- qDebug() << "lenth of data_sock - " << data_sock.size();
- data_str.append(data_sock);
- qDebug() << "length of data_str - " << data_str.size();
- ui->browser_dbg->append(data_str);
- if(data_str.contains("Message: Authentication accepted"))
- {
- ui->statusBar->showMessage("Авторизировано");
- qDebug() << "login accepted";
- }
- if(data_str.contains("Event: Newstate"))
- {
- ui->browser_dbg->append("_______________________");
- QRegularExpression regexp("CallerIDNum.*", QRegularExpression::MultilineOption);
- QRegularExpressionMatch match = regexp.match(data_str);
- if(match.hasMatch())
- {
- QString number = match.captured();
- ui->browser_dbg->append("!" + number);
- QRegularExpression regexp1("\\d.*");
- QRegularExpressionMatch match1 = regexp1.match(number);
- if(match1.hasMatch())
- {
- QString last = match1.captured();
- last = last.remove(last.size()-1,1);
- ui->browser_dbg->append("PHONE = " + last);
- ui->phone_edit->setText(last);
- ui->request_btn->click();
- }
- }
- }
- if(data_str.contains("Event: SoftHangupRequest"))
- {
- Settings setti;
- log_string.append(" - " + QTime::currentTime().toString() + " - " + fio + " - Обработано.");
- QString link = "https://"+ setti.get_ip() + ":9443/admin/index.cgi?index\=15&user=" + setti.get_login_abills() + "&passwd=" + setti.get_password_abills() + "&UID=";
- link += uid;
- ui->textBrowser->setOpenExternalLinks(true);
- log_string.append("<a href=\"" + link + "\">" + uid + "</a>");
- QFile log_file("log.txt");
- QTextStream out(&log_file);
- if(log_file.open(QIODevice::Append))
- {
- out << log_string << "\n\n";
- log_file.close();
- }
- else
- {
- QMessageBox box;
- box.setText("ERROR FILE NOT OPEN");
- box.show();
- }
- ui->textBrowser->append(log_string + "\n\n");
- log_string.clear();
- ui->edit_build->clear();
- ui->edit_credit->clear();
- ui->edit_deposit->clear();
- ui->edit_district->clear();
- ui->edit_flat->clear();
- ui->edit_fullname->clear();
- ui->edit_group->clear();
- ui->edit_phone->clear();
- ui->edit_street->clear();
- ui->edit_tp->clear();
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement