diff --git a/src/gui/formsettings.cpp b/src/gui/formsettings.cpp index a7bacabc6..507fce068 100755 --- a/src/gui/formsettings.cpp +++ b/src/gui/formsettings.cpp @@ -126,16 +126,29 @@ void FormSettings::changeBrowserProgressColor() { void FormSettings::loadFeedsMessages() { Settings *settings = Settings::getInstance(); + // TODO: dodělat m_ui->m_cmbExternalBrowserPreset->addItem("Chromium", "aa %1"); + m_ui->m_cmbExternalBrowserPreset->addItem("Mozilla Firefox", "aa %1"); + m_ui->m_cmbExternalBrowserPreset->addItem("Safari", "aa %1"); + m_ui->m_cmbExternalBrowserPreset->addItem("Microsoft Internet Explorer", "aa %1"); + m_ui->m_cmbExternalBrowserPreset->addItem("Opera 12 or older", "-nosession %1"); m_ui->m_txtExternalBrowserExecutable->setText(settings->value(APP_CFG_MESSAGES, "external_browser_executable").toString()); m_ui->m_txtExternalBrowserArguments->setText(settings->value(APP_CFG_MESSAGES, - "external_browser_arguments").toString()); + "external_browser_arguments", + "%1").toString()); } void FormSettings::saveFeedsMessages() { + Settings *settings = Settings::getInstance(); + settings->setValue(APP_CFG_MESSAGES, + "external_browser_executable", + m_ui->m_txtExternalBrowserExecutable->text()); + settings->setValue(APP_CFG_MESSAGES, + "external_browser_arguments", + m_ui->m_txtExternalBrowserArguments->text()); } void FormSettings::displayProxyPassword(int state) { @@ -153,9 +166,8 @@ bool FormSettings::doSaveCheck() { QMessageBox msg_error(this); // Setup indication of settings consistence. - everything_ok &= m_ui->m_shortcuts->areShortcutsUnique(); - if (!m_ui->m_shortcuts->areShortcutsUnique()) { + everything_ok = false; #if QT_VERSION >= 0x050000 resulting_information.append(tr(" • some keyboard shortcuts are not unique")); #else @@ -163,6 +175,16 @@ bool FormSettings::doSaveCheck() { #endif } + if (m_ui->m_txtExternalBrowserExecutable->text().isEmpty() || + m_ui->m_txtExternalBrowserArguments->text().isEmpty()) { + everything_ok = false; +#if QT_VERSION >= 0x050000 + resulting_information.append(tr(" • external browser is not set")); +#else + resulting_information.append(trUtf8(" • external browser is not set")); +#endif + } + // Setup dialog. msg_error.setText(tr("Some critical settings are not set. You must fix these settings in order confirm new settings.")); msg_error.setWindowTitle(tr("Cannot save settings")); diff --git a/src/gui/messagesview.cpp b/src/gui/messagesview.cpp index 4deff214e..0e0dc8537 100644 --- a/src/gui/messagesview.cpp +++ b/src/gui/messagesview.cpp @@ -2,11 +2,14 @@ #include #include #include +#include +#include #include "gui/messagesview.h" #include "core/messagesproxymodel.h" #include "core/messagesmodel.h" #include "gui/formmain.h" +#include "core/settings.h" MessagesView::MessagesView(QWidget *parent) @@ -178,7 +181,26 @@ void MessagesView::currentChanged(const QModelIndex ¤t, } void MessagesView::openSelectedSourceArticlesExternally() { - // TODO: otevře vybrane zpravy v externim prohlizeci + + QString browser = Settings::getInstance()->value(APP_CFG_MESSAGES, + "external_browser_executable").toString(); + QString arguments = Settings::getInstance()->value(APP_CFG_MESSAGES, + "external_browser_arguments", + "%1").toString(); + + if (browser.isEmpty() || arguments.isEmpty()) { + QMessageBox::critical(this, + tr("External browser not set"), + tr("External browser is not set, head to application settings and set it up to use this feature."), + QMessageBox::Ok); + return; + } + + foreach (const QModelIndex &index, selectionModel()->selectedRows()) { + QString link = m_sourceModel->messageAt(m_proxyModel->mapToSource(index).row()).m_url; + + QProcess::execute(browser, QStringList() << arguments.arg(link)); + } } void MessagesView::openSelectedSourceMessagesInternally() {