+ // Add the actions to the current bookmarks lists.
+ bookmarksMenuCurrentActionList.append(menuBookmarkActionPointer);
+ bookmarksToolBarCurrentActionList.append(toolBarBookmarkActionPointer);
+ }
+
+ // Get a handle for the bookmark toolbar layout.
+ QLayout *bookmarksToolBarLayoutPointer = bookmarksToolBarPointer->layout();
+
+ // Get the count of the bookmarks.
+ int bookmarkCount = bookmarksToolBarLayoutPointer->count();
+
+ // Set the layout of each bookmark to be left aligned.
+ for(int i = 0; i < bookmarkCount; ++i)
+ bookmarksToolBarLayoutPointer->itemAt(i)->setAlignment(Qt::AlignLeft);
+}
+
+void BrowserWindow::refresh() const
+{
+ // Remove the focus from the URL line edit.
+ urlLineEditPointer->clearFocus();
+
+ // Refresh the web page.
+ tabWidgetPointer->refresh();
+}
+
+void BrowserWindow::reloadAndBypassCache() const
+{
+ // Remove the focus from the URL line edit.
+ urlLineEditPointer->clearFocus();
+
+ // Refresh the web page.
+ tabWidgetPointer->refresh();
+}
+
+void BrowserWindow::showAddBookmarkDialog() const
+{
+ // Instantiate an add bookmark dialog.
+ AddBookmarkDialog *addBookmarkDialogPointer = new AddBookmarkDialog(tabWidgetPointer->getCurrentTabTitle(), tabWidgetPointer->getCurrentTabUrl(), tabWidgetPointer->getCurrentTabFavoritIcon());
+
+ // Update the displayed bookmarks when a new one is added.
+ connect(addBookmarkDialogPointer, SIGNAL(bookmarkAdded()), this, SLOT(populateBookmarks()));
+
+ // Show the dialog.
+ addBookmarkDialogPointer->show();
+}
+
+void BrowserWindow::showBookmarkContextMenu(const QPoint&) const
+{
+ qDebug() << "Show the bookmark context menu.";
+}
+
+void BrowserWindow::showCookiesDialog()
+{
+ // Remove the focus from the URL line edit.
+ urlLineEditPointer->clearFocus();
+
+ // Instantiate the cookie settings dialog.
+ CookiesDialog *cookiesDialogPointer = new CookiesDialog(tabWidgetPointer->getCookieList());
+
+ // Show the dialog.
+ cookiesDialogPointer->show();
+
+ // Connect the dialog signals.
+ connect(cookiesDialogPointer, SIGNAL(addCookie(QNetworkCookie)), tabWidgetPointer, SLOT(addCookieToStore(QNetworkCookie)));
+ connect(cookiesDialogPointer, SIGNAL(deleteAllCookies()), tabWidgetPointer, SLOT(deleteAllCookies()));
+ connect(cookiesDialogPointer, SIGNAL(deleteCookie(QNetworkCookie)), tabWidgetPointer, SLOT(deleteCookieFromStore(QNetworkCookie)));
+}
+
+void BrowserWindow::showDownloadLocationBrowseDialog() const
+{
+ // Get the current download location.
+ QString currentDownloadLocation = downloadLocationComboBoxPointer->currentText();
+
+ // Resolve the system download directory if specified.
+ if (currentDownloadLocation == QStringLiteral("System Download Directory"))
+ currentDownloadLocation = QStandardPaths::writableLocation(QStandardPaths::DownloadLocation);
+
+ // Get the new download location.
+ QString newDownloadLocation = QFileDialog::getExistingDirectory(configDialogPointer, i18nc("Select download location dialog caption", "Select Download Location"), currentDownloadLocation);
+
+ // Populate the download location combo box according to the new download location.
+ if (newDownloadLocation == QStandardPaths::writableLocation(QStandardPaths::DownloadLocation)) // The default download location was selected.
+ {
+ // Populate the download location with the default text.
+ downloadLocationComboBoxPointer->setCurrentText("System Download Directory");
+ }
+ else if (newDownloadLocation != QStringLiteral("")) // A different directory was selected.
+ {
+ // Populate the download location.
+ downloadLocationComboBoxPointer->setCurrentText(newDownloadLocation);
+ }
+}
+
+void BrowserWindow::showDomainSettingsDialog() const
+{
+ // Remove the focus from the URL line edit.
+ urlLineEditPointer->clearFocus();
+
+ // Instantiate the domain settings dialog.
+ DomainSettingsDialog *domainSettingsDialogPointer = new DomainSettingsDialog();
+
+ // Reload the tabs when domain settings are updated.
+ connect(domainSettingsDialogPointer, SIGNAL(domainSettingsUpdated()), tabWidgetPointer, SLOT(applyDomainSettingsAndReload()));
+
+ // Show the dialog.
+ domainSettingsDialogPointer->show();
+}
+
+void BrowserWindow::showFindTextActions() const
+{
+ // Show the find text actions.
+ findTextLineEditActionPointer->setVisible(true);
+ findTextLabelActionPointer->setVisible(true);
+ findNextActionPointer->setVisible(true);
+ findPreviousActionPointer->setVisible(true);
+ findCaseSensitiveActionPointer->setVisible(true);
+ hideFindTextActionPointer->setVisible(true);
+
+ // Set the focus on the find line edit.
+ findTextLineEditPointer->setFocus();
+
+ // Select all the text in the find line edit.
+ findTextLineEditPointer->selectAll();
+}
+
+void BrowserWindow::showProgressBar(const int &progress) const
+{
+ // Set the progress bar value.
+ progressBarPointer->setValue(progress);
+
+ // Show the progress bar.
+ progressBarPointer->show();
+}
+
+void BrowserWindow::showSettingsDialog()
+{
+ // Create the settings widgets.
+ QWidget *privacySettingsWidgetPointer = new QWidget;
+ QWidget *generalSettingsWidgetPointer = new QWidget;
+ QWidget *spellCheckSettingsWidgetPointer = new QWidget;
+
+ // Instantiate the settings UI.
+ Ui::PrivacySettings privacySettingsUi;
+ Ui::GeneralSettings generalSettingsUi;
+ Ui::SpellCheckSettings spellCheckSettingsUi;
+
+ // Setup the UI to display the settings widgets.
+ privacySettingsUi.setupUi(privacySettingsWidgetPointer);
+ generalSettingsUi.setupUi(generalSettingsWidgetPointer);
+ spellCheckSettingsUi.setupUi(spellCheckSettingsWidgetPointer);
+
+ // Get handles for the widgets.
+ QComboBox *userAgentComboBoxPointer = privacySettingsUi.kcfg_userAgent;
+ userAgentLabelPointer = privacySettingsUi.userAgentLabel;
+ QComboBox *searchEngineComboBoxPointer = generalSettingsUi.kcfg_searchEngine;
+ searchEngineLabelPointer = generalSettingsUi.searchEngineLabel;
+ downloadLocationComboBoxPointer = generalSettingsUi.kcfg_downloadLocation;
+ QPushButton *browseButtonPointer = generalSettingsUi.browseButton;
+ QListWidget *spellCheckListWidgetPointer = spellCheckSettingsUi.spellCheckListWidget;
+
+ // Populate the combo box labels.
+ updateUserAgentLabel(userAgentComboBoxPointer->currentText());
+ updateSearchEngineLabel(searchEngineComboBoxPointer->currentText());
+
+ // Update the labels when the combo boxes change.
+ connect(userAgentComboBoxPointer, SIGNAL(currentTextChanged(const QString)), this, SLOT(updateUserAgentLabel(const QString)));
+ connect(searchEngineComboBoxPointer, SIGNAL(currentTextChanged(const QString)), this, SLOT(updateSearchEngineLabel(const QString)));
+
+ // Connect the download location directory browse button.
+ connect(browseButtonPointer, SIGNAL(clicked()), this, SLOT(showDownloadLocationBrowseDialog()));
+
+ // Create a dictionaries QDir from the `QTWEBENGINE_DICTIONARIES_PATH` environment variable.
+ QDir dictionariesDir = QDir(qEnvironmentVariable("QTWEBENGINE_DICTIONARIES_PATH"));
+
+ // Get a dictionaries string list.
+ QStringList dictionariesStringList = dictionariesDir.entryList(QStringList(QLatin1String("*.bdic")), QDir::Files | QDir::NoSymLinks);
+
+ // Remove the `.bdic` file extensions from the dictionaries list.
+ dictionariesStringList.replaceInStrings(QLatin1String(".bdic"), QLatin1String(""));
+
+ // Get a list of the enabled spell check languages.
+ QStringList enabledSpellCheckLanguagesList = Settings::spellCheckLanguages();
+
+ // Add each dictionary to the spell check list widget.
+ foreach(QString dictionaryString, dictionariesStringList)
+ {
+ // Create a new list widget item pointer.
+ QListWidgetItem *listWidgetItemPointer = new QListWidgetItem();
+
+ // Create a dictionary check box widget with the name of the dictionary string.
+ QCheckBox *dictionaryCheckBoxWidget = new QCheckBox(dictionaryString);
+
+ // Check the language if it is currently enabled.
+ if (enabledSpellCheckLanguagesList.contains(dictionaryString))
+ dictionaryCheckBoxWidget->setCheckState(Qt::Checked);
+ else
+ dictionaryCheckBoxWidget->setCheckState(Qt::Unchecked);
+
+ // Add the list widget item to the spell check list widget.
+ spellCheckListWidgetPointer->addItem(listWidgetItemPointer);
+
+ // Set the list widget item check box widget.
+ spellCheckListWidgetPointer->setItemWidget(listWidgetItemPointer, dictionaryCheckBoxWidget);
+ }
+
+ // Get a handle for the KConfig skeleton.
+ KConfigSkeleton *kConfigSkeletonPointer = Settings::self();
+
+ // Instantiate a settings config dialog from the settings.kcfg file.
+ configDialogPointer = new KConfigDialog(this, QLatin1String("settings"), kConfigSkeletonPointer);
+
+ // Create a settings icon string.
+ QString settingsIconString;
+
+ // Get a settings icon that matches the theme.
+ if (QIcon::hasThemeIcon("breeze-settings"))
+ {
+ // KDE uses breeze-settings.
+ settingsIconString = QLatin1String("breeze-settings");