summaryrefslogtreecommitdiff
path: root/src/leap/gui/firstrun/last.py
blob: 1d8caca4099a600aabbeabfc28477ccb464e9849 (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
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
"""
Last Page, used in First Run Wizard
"""
import logging

from PyQt4 import QtGui

from leap.util.coroutines import coroutine
from leap.gui.constants import APP_LOGO

logger = logging.getLogger(__name__)


class LastPage(QtGui.QWizardPage):
    def __init__(self, parent=None):
        super(LastPage, self).__init__(parent)

        self.setTitle("Connecting to Encrypted Internet Proxy service...")

        self.setPixmap(
            QtGui.QWizard.LogoPixmap,
            QtGui.QPixmap(APP_LOGO))

        #self.setPixmap(
            #QtGui.QWizard.WatermarkPixmap,
            #QtGui.QPixmap(':/images/watermark2.png'))

        self.label = QtGui.QLabel()
        self.label.setWordWrap(True)

        # XXX REFACTOR to a Validating Page...
        self.status_line_1 = QtGui.QLabel()
        self.status_line_2 = QtGui.QLabel()
        self.status_line_3 = QtGui.QLabel()
        self.status_line_4 = QtGui.QLabel()

        layout = QtGui.QVBoxLayout()
        layout.addWidget(self.label)

        # make loop
        layout.addWidget(self.status_line_1)
        layout.addWidget(self.status_line_2)
        layout.addWidget(self.status_line_3)
        layout.addWidget(self.status_line_4)

        self.setLayout(layout)

    def set_status_line(self, line, status):
        statusline = getattr(self, 'status_line_%s' % line)
        if statusline:
            statusline.setText(status)

    def set_finished_status(self):
        self.setTitle('You are now using an encrypted connection!')
        finishText = self.wizard().buttonText(
            QtGui.QWizard.FinishButton)
        finishText = finishText.replace('&', '')
        self.label.setText(
            "Click '<i>%s</i>' to end the wizard and "
            "save your settings." % finishText)
        # XXX init network checker
        # trigger signal

    @coroutine
    def eip_status_handler(self):
        # XXX this can be changed to use
        # signals. See progress.py
        logger.debug('logging status in last page')
        self.validation_done = False
        status_count = 0
        try:
            while True:
                status = (yield)
                status_count += 1
                # XXX add to line...
                logger.debug('status --> %s', status)
                self.set_status_line(status_count, status)
                if status == "connected":
                    self.set_finished_status()
                    break
        except GeneratorExit:
            pass
        except StopIteration:
            pass

    def initializePage(self):
        wizard = self.wizard()
        if not wizard:
            return
        eip_status_handler = self.eip_status_handler()
        eip_statuschange_signal = wizard.eip_statuschange_signal
        if eip_statuschange_signal:
            eip_statuschange_signal.connect(
                lambda status: eip_status_handler.send(status))