18 |
18 |
19 class PasswordsDialog(QDialog, Ui_PasswordsDialog): |
19 class PasswordsDialog(QDialog, Ui_PasswordsDialog): |
20 """ |
20 """ |
21 Class implementing a dialog to show all saved logins. |
21 Class implementing a dialog to show all saved logins. |
22 """ |
22 """ |
|
23 |
23 def __init__(self, parent=None): |
24 def __init__(self, parent=None): |
24 """ |
25 """ |
25 Constructor |
26 Constructor |
26 |
27 |
27 @param parent reference to the parent widget (QWidget) |
28 @param parent reference to the parent widget (QWidget) |
28 """ |
29 """ |
29 super().__init__(parent) |
30 super().__init__(parent) |
30 self.setupUi(self) |
31 self.setupUi(self) |
31 |
32 |
32 self.__showPasswordsText = self.tr("Show Passwords") |
33 self.__showPasswordsText = self.tr("Show Passwords") |
33 self.__hidePasswordsText = self.tr("Hide Passwords") |
34 self.__hidePasswordsText = self.tr("Hide Passwords") |
34 self.passwordsButton.setText(self.__showPasswordsText) |
35 self.passwordsButton.setText(self.__showPasswordsText) |
35 |
36 |
36 self.removeButton.clicked.connect( |
37 self.removeButton.clicked.connect(self.passwordsTable.removeSelected) |
37 self.passwordsTable.removeSelected) |
|
38 self.removeAllButton.clicked.connect(self.passwordsTable.removeAll) |
38 self.removeAllButton.clicked.connect(self.passwordsTable.removeAll) |
39 |
39 |
40 import WebBrowser.WebBrowserWindow |
40 import WebBrowser.WebBrowserWindow |
41 from .PasswordModel import PasswordModel |
41 from .PasswordModel import PasswordModel |
42 |
42 |
43 self.passwordsTable.verticalHeader().hide() |
43 self.passwordsTable.verticalHeader().hide() |
44 self.__passwordModel = PasswordModel( |
44 self.__passwordModel = PasswordModel( |
45 WebBrowser.WebBrowserWindow.WebBrowserWindow.passwordManager(), |
45 WebBrowser.WebBrowserWindow.WebBrowserWindow.passwordManager(), self |
46 self) |
46 ) |
47 self.__proxyModel = QSortFilterProxyModel(self) |
47 self.__proxyModel = QSortFilterProxyModel(self) |
48 self.__proxyModel.setSourceModel(self.__passwordModel) |
48 self.__proxyModel.setSourceModel(self.__passwordModel) |
49 self.searchEdit.textChanged.connect( |
49 self.searchEdit.textChanged.connect(self.__proxyModel.setFilterFixedString) |
50 self.__proxyModel.setFilterFixedString) |
|
51 self.passwordsTable.setModel(self.__proxyModel) |
50 self.passwordsTable.setModel(self.__proxyModel) |
52 |
51 |
53 fm = QFontMetrics(QFont()) |
52 fm = QFontMetrics(QFont()) |
54 height = fm.height() + fm.height() // 3 |
53 height = fm.height() + fm.height() // 3 |
55 self.passwordsTable.verticalHeader().setDefaultSectionSize(height) |
54 self.passwordsTable.verticalHeader().setDefaultSectionSize(height) |
56 self.passwordsTable.verticalHeader().setMinimumSectionSize(-1) |
55 self.passwordsTable.verticalHeader().setMinimumSectionSize(-1) |
57 |
56 |
58 self.__calculateHeaderSizes() |
57 self.__calculateHeaderSizes() |
59 |
58 |
60 def __calculateHeaderSizes(self): |
59 def __calculateHeaderSizes(self): |
61 """ |
60 """ |
62 Private method to calculate the section sizes of the horizontal header. |
61 Private method to calculate the section sizes of the horizontal header. |
63 """ |
62 """ |
64 fm = QFontMetrics(QFont()) |
63 fm = QFontMetrics(QFont()) |
65 for section in range(self.__passwordModel.columnCount()): |
64 for section in range(self.__passwordModel.columnCount()): |
66 header = self.passwordsTable.horizontalHeader().sectionSizeHint( |
65 header = self.passwordsTable.horizontalHeader().sectionSizeHint(section) |
67 section) |
|
68 if section == 0: |
66 if section == 0: |
69 try: |
67 try: |
70 header = fm.horizontalAdvance("averagebiglongsitename") |
68 header = fm.horizontalAdvance("averagebiglongsitename") |
71 except AttributeError: |
69 except AttributeError: |
72 header = fm.width("averagebiglongsitename") |
70 header = fm.width("averagebiglongsitename") |
83 try: |
81 try: |
84 buffer = fm.horizontalAdvance("mm") |
82 buffer = fm.horizontalAdvance("mm") |
85 except AttributeError: |
83 except AttributeError: |
86 buffer = fm.width("mm") |
84 buffer = fm.width("mm") |
87 header += buffer |
85 header += buffer |
88 self.passwordsTable.horizontalHeader().resizeSection( |
86 self.passwordsTable.horizontalHeader().resizeSection(section, header) |
89 section, header) |
|
90 self.passwordsTable.horizontalHeader().setStretchLastSection(True) |
87 self.passwordsTable.horizontalHeader().setStretchLastSection(True) |
91 |
88 |
92 @pyqtSlot() |
89 @pyqtSlot() |
93 def on_passwordsButton_clicked(self): |
90 def on_passwordsButton_clicked(self): |
94 """ |
91 """ |
95 Private slot to switch the password display mode. |
92 Private slot to switch the password display mode. |
96 """ |
93 """ |
99 self.passwordsButton.setText(self.__showPasswordsText) |
96 self.passwordsButton.setText(self.__showPasswordsText) |
100 else: |
97 else: |
101 res = EricMessageBox.yesNo( |
98 res = EricMessageBox.yesNo( |
102 self, |
99 self, |
103 self.tr("Saved Passwords"), |
100 self.tr("Saved Passwords"), |
104 self.tr("""Do you really want to show passwords?""")) |
101 self.tr("""Do you really want to show passwords?"""), |
|
102 ) |
105 if res: |
103 if res: |
106 self.__passwordModel.setShowPasswords(True) |
104 self.__passwordModel.setShowPasswords(True) |
107 self.passwordsButton.setText(self.__hidePasswordsText) |
105 self.passwordsButton.setText(self.__hidePasswordsText) |
108 self.__calculateHeaderSizes() |
106 self.__calculateHeaderSizes() |