summaryrefslogtreecommitdiff
path: root/src/leap/gui/firstrun/providerinfo.py
blob: cff4caca126aebe7bbe58e54d41ec1dc6174e938 (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
95
96
97
98
99
100
101
102
103
104
105
106
"""
Provider Info Page, used in First run Wizard
"""
import logging

from PyQt4 import QtGui

from leap.gui.constants import APP_LOGO
from leap.util.translations import translate

logger = logging.getLogger(__name__)


class ProviderInfoPage(QtGui.QWizardPage):

    def __init__(self, parent=None):
        super(ProviderInfoPage, self).__init__(parent)

        self.setTitle(self.tr("Provider Information"))
        self.setSubTitle(self.tr(
            "Services offered by this provider"))

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

        self.create_info_panel()

    def create_info_panel(self):
        # Use stacked widget instead
        # of reparenting the layout.

        infoWidget = QtGui.QStackedWidget()

        info = QtGui.QWidget()
        layout = QtGui.QVBoxLayout()

        displayName = QtGui.QLabel("")
        description = QtGui.QLabel("")
        enrollment_policy = QtGui.QLabel("")

        # XXX set stylesheet...
        # prettify a little bit.
        # bigger fonts and so on...

        # We could use a QFrame here

        layout.addWidget(displayName)
        layout.addWidget(description)
        layout.addWidget(enrollment_policy)
        layout.addStretch(1)

        info.setLayout(layout)
        infoWidget.addWidget(info)

        pageLayout = QtGui.QVBoxLayout()
        pageLayout.addWidget(infoWidget)
        self.setLayout(pageLayout)

        # add refs to self to allow for
        # updates.
        # Watch out! Have to get rid of these references!
        # this should be better handled with signals !!
        self.displayName = displayName
        self.description = description
        self.description.setWordWrap(True)
        self.enrollment_policy = enrollment_policy

    def show_provider_info(self):

        # XXX get multilingual objects
        # directly from the config object

        lang = "en"
        pconfig = self.wizard().providerconfig

        dn = pconfig.get('name')
        display_name = dn[lang] if dn else ''
        domain_name = self.field('provider_domain')

        self.displayName.setText(
            "<b>%s</b> https://%s" % (display_name, domain_name))

        desc = pconfig.get('description')

        #description_text = desc[lang] if desc else ''
        description_text = translate(desc) if desc else ''

        self.description.setText(
            "<i>%s</i>" % description_text)

        # XXX should translate this...
        enroll = pconfig.get('enrollment_policy')
        if enroll:
            self.enrollment_policy.setText(
                '<b>%s</b>: <em>%s</em>' % (
                    self.tr('enrollment policy'),
                    enroll))

    def nextId(self):
        wizard = self.wizard()
        next_ = "providersetupvalidation"
        return wizard.get_page_index(next_)

    def initializePage(self):
        self.show_provider_info()