164 self.deskAudVidList, |
172 self.deskAudVidList, |
165 EricPixmapCache.getIcon("desktopAudioVideoCapture"), |
173 EricPixmapCache.getIcon("desktopAudioVideoCapture"), |
166 self.tr("Desktop Audio && Video"), |
174 self.tr("Desktop Audio && Video"), |
167 ) |
175 ) |
168 |
176 |
|
177 if QtUtilities.qVersionTuple() >= (6, 8, 0): |
|
178 # Qt 6.8+ |
|
179 self.clipboardList = QTreeWidget() |
|
180 self.clipboardList.setAlternatingRowColors(True) |
|
181 self.clipboardList.setSelectionMode(QAbstractItemView.SelectionMode.ExtendedSelection) |
|
182 self.clipboardList.setRootIsDecorated(False) |
|
183 self.clipboardList.setItemsExpandable(False) |
|
184 self.clipboardList.setAllColumnsShowFocus(True) |
|
185 self.clipboardList.setObjectName("camList") |
|
186 self.clipboardList.setSortingEnabled(True) |
|
187 self.clipboardList.headerItem().setText(0, self.tr("Host")) |
|
188 self.clipboardList.headerItem().setText(1, self.tr("Permission")) |
|
189 self.tabWidget.addTab( |
|
190 self.clipboardList, EricPixmapCache.getIcon("clipboard"), self.tr("Clipboard") |
|
191 ) |
|
192 |
|
193 self.localFontsList = QTreeWidget() |
|
194 self.localFontsList.setAlternatingRowColors(True) |
|
195 self.localFontsList.setSelectionMode(QAbstractItemView.SelectionMode.ExtendedSelection) |
|
196 self.localFontsList.setRootIsDecorated(False) |
|
197 self.localFontsList.setItemsExpandable(False) |
|
198 self.localFontsList.setAllColumnsShowFocus(True) |
|
199 self.localFontsList.setObjectName("camList") |
|
200 self.localFontsList.setSortingEnabled(True) |
|
201 self.localFontsList.headerItem().setText(0, self.tr("Host")) |
|
202 self.localFontsList.headerItem().setText(1, self.tr("Permission")) |
|
203 self.tabWidget.addTab( |
|
204 self.localFontsList, EricPixmapCache.getIcon("font"), self.tr("Local Fonts") |
|
205 ) |
|
206 |
169 self.setTabOrder(self.tabWidget, self.notifList) |
207 self.setTabOrder(self.tabWidget, self.notifList) |
170 self.setTabOrder(self.notifList, self.geoList) |
208 self.setTabOrder(self.notifList, self.geoList) |
171 self.setTabOrder(self.geoList, self.micList) |
209 self.setTabOrder(self.geoList, self.micList) |
172 self.setTabOrder(self.micList, self.camList) |
210 self.setTabOrder(self.micList, self.camList) |
173 self.setTabOrder(self.camList, self.micCamList) |
211 self.setTabOrder(self.camList, self.micCamList) |
174 self.setTabOrder(self.micCamList, self.mouseLockList) |
212 self.setTabOrder(self.micCamList, self.mouseLockList) |
175 self.setTabOrder(self.mouseLockList, self.deskVidList) |
213 self.setTabOrder(self.mouseLockList, self.deskVidList) |
176 self.setTabOrder(self.deskVidList, self.deskAudVidList) |
214 self.setTabOrder(self.deskVidList, self.deskAudVidList) |
177 self.setTabOrder(self.deskAudVidList, self.removeButton) |
215 if QtUtilities.qVersionTuple() >= (6, 8, 0): |
|
216 # Qt 6.8+ |
|
217 self.setTabOrder(self.deskAudVidList, self.clipboardList) |
|
218 self.setTabOrder(self.clipboardList, self.localFontsList) |
|
219 self.setTabOrder(self.localFontsList, self.removeButton) |
|
220 else: |
|
221 self.setTabOrder(self.deskAudVidList, self.removeButton) |
178 self.setTabOrder(self.removeButton, self.removeAllButton) |
222 self.setTabOrder(self.removeButton, self.removeAllButton) |
179 |
223 |
180 self.__permissionStrings = { |
224 if QtUtilities.qVersionTuple() >= (6, 8, 0): |
181 QWebEnginePage.PermissionPolicy.PermissionGrantedByUser: self.tr("Allow"), |
225 # Qt 6.8+ |
182 QWebEnginePage.PermissionPolicy.PermissionDeniedByUser: self.tr("Deny"), |
226 self.__permissionStrings = { |
183 } |
227 QWebEnginePermission.State.Granted: self.tr("Allow"), |
184 |
228 QWebEnginePermission.State.Denied: self.tr("Deny"), |
185 self.__permissionsLists = { |
229 QWebEnginePermission.State.Ask: self.tr("Always Ask"), |
186 QWebEnginePage.Feature.Geolocation: self.geoList, |
230 QWebEnginePermission.State.Invalid: self.tr("Invalid"), |
187 QWebEnginePage.Feature.MediaAudioCapture: self.micList, |
231 } |
188 QWebEnginePage.Feature.MediaVideoCapture: self.camList, |
232 |
189 QWebEnginePage.Feature.MediaAudioVideoCapture: self.micCamList, |
233 self.__permissionsLists = { |
190 QWebEnginePage.Feature.MouseLock: self.mouseLockList, |
234 QWebEnginePermission.PermissionType.Geolocation: self.geoList, |
191 QWebEnginePage.Feature.DesktopVideoCapture: self.deskVidList, |
235 QWebEnginePermission.PermissionType.MediaAudioCapture: self.micList, |
192 QWebEnginePage.Feature.DesktopAudioVideoCapture: self.deskAudVidList, |
236 QWebEnginePermission.PermissionType.MediaVideoCapture: self.camList, |
193 QWebEnginePage.Feature.Notifications: self.notifList, |
237 QWebEnginePermission.PermissionType.MediaAudioVideoCapture: self.micCamList, |
194 } |
238 QWebEnginePermission.PermissionType.MouseLock: self.mouseLockList, |
195 |
239 QWebEnginePermission.PermissionType.DesktopVideoCapture: self.deskVidList, |
196 for feature, permissionsList in self.__permissionsLists.items(): |
240 QWebEnginePermission.PermissionType.DesktopAudioVideoCapture: self.deskAudVidList, |
197 for permission in featurePermissions[feature]: |
241 QWebEnginePermission.PermissionType.Notifications: self.notifList, |
198 for host in featurePermissions[feature][permission]: |
242 QWebEnginePermission.PermissionType.ClipboardReadWrite: self.clipboardList, |
|
243 QWebEnginePermission.PermissionType.LocalFontsAccess: self.localFontsList, |
|
244 } |
|
245 |
|
246 for permission in featurePermissions: |
|
247 with contextlib.suppress(KeyError): |
|
248 permissionsList = self.__permissionsLists[permission.permissionType()] |
199 itm = QTreeWidgetItem( |
249 itm = QTreeWidgetItem( |
200 permissionsList, [host, self.__permissionStrings[permission]] |
250 permissionsList, [ |
|
251 permission.origin().toString(), |
|
252 self.__permissionStrings[permission.state()], |
|
253 ] |
201 ) |
254 ) |
202 itm.setData(0, Qt.ItemDataRole.UserRole, permission) |
255 itm.setData(0, Qt.ItemDataRole.UserRole, permission) |
203 |
256 else: |
|
257 # Qt <6.8 |
|
258 self.__permissionStrings = { |
|
259 QWebEnginePage.PermissionPolicy.PermissionGrantedByUser: self.tr("Allow"), |
|
260 QWebEnginePage.PermissionPolicy.PermissionDeniedByUser: self.tr("Deny"), |
|
261 } |
|
262 |
|
263 self.__permissionsLists = { |
|
264 QWebEnginePage.Feature.Geolocation: self.geoList, |
|
265 QWebEnginePage.Feature.MediaAudioCapture: self.micList, |
|
266 QWebEnginePage.Feature.MediaVideoCapture: self.camList, |
|
267 QWebEnginePage.Feature.MediaAudioVideoCapture: self.micCamList, |
|
268 QWebEnginePage.Feature.MouseLock: self.mouseLockList, |
|
269 QWebEnginePage.Feature.DesktopVideoCapture: self.deskVidList, |
|
270 QWebEnginePage.Feature.DesktopAudioVideoCapture: self.deskAudVidList, |
|
271 QWebEnginePage.Feature.Notifications: self.notifList, |
|
272 } |
|
273 |
|
274 for feature, permissionsList in self.__permissionsLists.items(): |
|
275 for permission in featurePermissions[feature]: |
|
276 for host in featurePermissions[feature][permission]: |
|
277 itm = QTreeWidgetItem( |
|
278 permissionsList, [host, self.__permissionStrings[permission]] |
|
279 ) |
|
280 itm.setData(0, Qt.ItemDataRole.UserRole, permission) |
|
281 |
|
282 self.__removedPermissions = [] |
204 self.__previousCurrent = -1 |
283 self.__previousCurrent = -1 |
205 self.tabWidget.currentChanged.connect(self.__currentTabChanged) |
284 self.tabWidget.currentChanged.connect(self.__currentTabChanged) |
206 self.tabWidget.setCurrentIndex(0) |
285 self.tabWidget.setCurrentIndex(0) |
207 |
286 |
208 @pyqtSlot(int) |
287 @pyqtSlot(int) |