summaryrefslogtreecommitdiff
path: root/client-qt/udm-client-qt/udm_main.cpp
blob: 02c0f9a70bc461d85a2ecd855ae4bbb00490fe29 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
/*
    Copyright © 2015 Gluzskiy Alexandr (sss)

    This file is part of Unknown Download Manager (UDM).

    UDM is free software: you can redistribute it and/or modify
    it under the terms of the GNU General Public License as published by
    the Free Software Foundation, either version 2 of the License, or
    (at your option) any later version.

    UDM is distributed in the hope that it will be useful,
    but WITHOUT ANY WARRANTY; without even the implied warranty of
    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
    GNU General Public License for more details.

    You should have received a copy of the GNU General Public License
    along with UDM.  If not, see <http://www.gnu.org/licenses/>.

*/


#include "udm_main.h"
#include <QMenuBar>
#include <QThread>

#include "connect_widget.h"
#include "client_session.h"

udm_main::udm_main(QWidget *parent)
    : QMainWindow(parent)
{
    auto menu_main = this->menuBar()->addMenu(tr("Main"));
    auto action_connect = menu_main->addAction(tr("Connect"));
    connect(action_connect, SIGNAL(triggered()), this, SLOT(show_connect_widget()));
}

udm_main::~udm_main()
{

}

void udm_main::show_connect_widget()
{
    connect_widget *w = new connect_widget;
    connect(w, SIGNAL(client_connect(QString&,QString&,int)), this, SLOT(client_connect(QString&,QString&,int)));
    //TODO: make connection to other slots related to connection
    //TODO: destroy widget on close
    w->show();
}

void udm_main::client_connect(QString &host, QString &password, int port)
{
    thread_client_session = new QThread(this);
    io_service_ = new boost::asio::io_service;
    session = new client_session(0, io_service_); //parent must be 0 here
    connect(this, SIGNAL(connect_signal(QString,QString,int)), session, SLOT(client_connect(QString,QString,int)));
    connect(this, SIGNAL(run_client_io_loop()), session, SLOT(run_io_service()));
    connect(session, SIGNAL(terminate_thread()), thread_client_session, SLOT(terminate()));
    session->moveToThread(thread_client_session);
    thread_client_session->start();
    emit connect_signal(host, password, port);
    emit run_client_io_loop();
}