diff --git a/CMakeLists.txt b/CMakeLists.txt index 35c5b0323..df75297e7 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -27,7 +27,7 @@ # {FEEDLY,GMAIL,INOREADER}_CLIENT_SECRET - preconfigured OAuth cliend SECRET. # # Other information: -# - supports Windows, Linux, macOS, OS/2, Android, +# - supports Windows, Linux, *BSD, macOS, OS/2, Android, # - Qt 5.9.0 or newer is required, # - cmake 3.9.0 or newer is required, # - if you wish to make packages for Windows, then you must initialize all submodules within repository before compilation, @@ -38,13 +38,13 @@ # your OS/2 distro is up-to-date and you have all dependencies installed: os2-base, all gcc-* packages, # libc and libcx up-to-date, kbuild-make, ash, binutils, all relevant qt5-* packages. # -# After your dependecies are installed, then you can compile via standard `qmake -> make -> make install` steps +# After your dependecies are installed, then you can compile via standard `cmake -> make -> make install` steps # and package with: 7z.exe a -t7z -mmt -mx9 "rssguard.7z" "setStyleSheet(QSL("QToolButton { border: none; }")); m_btnToggle->setToolButtonStyle(Qt::ToolButtonStyle::ToolButtonTextBesideIcon); @@ -29,6 +29,7 @@ HelpSpoiler::HelpSpoiler(QWidget* parent) : QWidget(parent), m_content->setSizePolicy(QSizePolicy::Policy::Expanding, QSizePolicy::Policy::Fixed); m_content->setMaximumHeight(0); m_content->setMinimumHeight(0); + m_content->setContentsMargins({ 0, 0, 0, 0 }); m_animation->addAnimation(new QPropertyAnimation(this, QSL("minimumHeight").toLocal8Bit())); m_animation->addAnimation(new QPropertyAnimation(this, QSL("maximumHeight").toLocal8Bit())); @@ -39,12 +40,9 @@ HelpSpoiler::HelpSpoiler(QWidget* parent) : QWidget(parent), m_layout->setVerticalSpacing(0); m_layout->setContentsMargins(0, 0, 0, 0); - PlainToolButton* btn_help = new PlainToolButton(this); + m_btnHelp->setPadding(0); - btn_help->setPadding(0); - btn_help->setIcon(qApp->icons()->fromTheme(QSL("dialog-question"))); - - m_layout->addWidget(btn_help, 0, 0); + m_layout->addWidget(m_btnHelp, 0, 0); m_layout->addWidget(m_btnToggle, 0, 1, 1, 1, Qt::AlignmentFlag::AlignLeft); m_layout->addWidget(m_content, 1, 0, 1, 2); @@ -79,6 +77,7 @@ HelpSpoiler::HelpSpoiler(QWidget* parent) : QWidget(parent), m_animation->start(); }); + m_text->setMargin(0); m_text->setWordWrap(true); auto* content_layout = new QVBoxLayout(m_content); @@ -93,5 +92,7 @@ void HelpSpoiler::setHelpText(const QString& title, const QString& text, bool is void HelpSpoiler::setHelpText(const QString& text, bool is_warning) { m_text->setText(text); - GuiUtilities::setLabelAsNotice(*m_text, is_warning, false); + m_btnHelp->setIcon(is_warning + ? qApp->icons()->fromTheme(QSL("dialog-warning")) + : qApp->icons()->fromTheme(QSL("dialog-question"))); } diff --git a/src/librssguard/gui/reusable/helpspoiler.h b/src/librssguard/gui/reusable/helpspoiler.h index 5790ae43b..9014ed6fb 100644 --- a/src/librssguard/gui/reusable/helpspoiler.h +++ b/src/librssguard/gui/reusable/helpspoiler.h @@ -10,6 +10,7 @@ class QGridLayout; class QToolButton; class QParallelAnimationGroup; class QScrollArea; +class PlainToolButton; class HelpSpoiler : public QWidget { Q_OBJECT @@ -26,6 +27,7 @@ class HelpSpoiler : public QWidget { QParallelAnimationGroup* m_animation; QGridLayout* m_layout; QLabel* m_text; + PlainToolButton* m_btnHelp; }; #endif // HELPSPOILER_H diff --git a/src/librssguard/gui/settings/settingsbrowsermail.cpp b/src/librssguard/gui/settings/settingsbrowsermail.cpp index 5572bbb64..f3ccd9d65 100644 --- a/src/librssguard/gui/settings/settingsbrowsermail.cpp +++ b/src/librssguard/gui/settings/settingsbrowsermail.cpp @@ -82,7 +82,7 @@ void SettingsBrowserMail::selectBrowserExecutable() { qApp->homeFolder(), //: File filter for external browser selection dialog. -#if defined(Q_OS_LINUX) +#if defined(Q_OS_UNIX) && !defined(Q_OS_MACOS) tr("Executables (*)")); #else tr("Executables (*.*)")); @@ -126,7 +126,7 @@ void SettingsBrowserMail::selectEmailExecutable() { qApp->homeFolder(), //: File filter for external e-mail selection dialog. -#if defined(Q_OS_LINUX) +#if defined(Q_OS_UNIX) && !defined(Q_OS_MACOS) tr("Executables (*)")); #else tr("Executables (*.*)")); diff --git a/src/librssguard/gui/settings/settingsgui.cpp b/src/librssguard/gui/settings/settingsgui.cpp index cab1230a2..7a9963a29 100644 --- a/src/librssguard/gui/settings/settingsgui.cpp +++ b/src/librssguard/gui/settings/settingsgui.cpp @@ -132,7 +132,7 @@ void SettingsGui::loadSettings() { if (icon_theme_name == QSL(APP_NO_THEME)) { // Add just "no theme" on other systems. //: Label for disabling icon theme. -#if defined(Q_OS_LINUX) +#if defined(Q_OS_UNIX) && !defined(Q_OS_MACOS) m_ui->m_cmbIconTheme->addItem(tr("system icon theme"), APP_NO_THEME); #else m_ui->m_cmbIconTheme->addItem(tr("no icon theme"), APP_NO_THEME); diff --git a/src/librssguard/miscellaneous/application.cpp b/src/librssguard/miscellaneous/application.cpp index b4a10a292..4b67cabd5 100644 --- a/src/librssguard/miscellaneous/application.cpp +++ b/src/librssguard/miscellaneous/application.cpp @@ -31,7 +31,7 @@ #include #include -#if defined(Q_OS_LINUX) +#if defined(Q_OS_UNIX) && !defined(Q_OS_MACOS) #include #include #endif @@ -91,7 +91,7 @@ Application::Application(const QString& id, int& argc, char** argv) connect(this, &Application::commitDataRequest, this, &Application::onCommitData); connect(this, &Application::saveStateRequest, this, &Application::onSaveState); -#if defined(Q_OS_LINUX) +#if defined(Q_OS_UNIX) && !defined(Q_OS_MACOS) QString app_dir = QString::fromLocal8Bit(qgetenv("APPDIR")); if (!app_dir.isEmpty()) { @@ -623,7 +623,7 @@ void Application::showMessagesNumber(int unread_messages, bool any_feed_has_unre m_trayIcon->setNumber(unread_messages, any_feed_has_unread_messages); } -#if defined(Q_OS_LINUX) +#if defined(Q_OS_UNIX) && !defined(Q_OS_MACOS) QDBusMessage signal = QDBusMessage::createSignal(QSL("/"), QSL("com.canonical.Unity.LauncherEntry"), QSL("Update")); diff --git a/src/librssguard/miscellaneous/iconfactory.cpp b/src/librssguard/miscellaneous/iconfactory.cpp index 8b0190437..5cbda1d49 100644 --- a/src/librssguard/miscellaneous/iconfactory.cpp +++ b/src/librssguard/miscellaneous/iconfactory.cpp @@ -92,7 +92,7 @@ void IconFactory::loadCurrentIconTheme() { if (installed_themes.contains(theme_name_from_settings)) { // Desired icon theme is installed and can be loaded. -#if defined(Q_OS_LINUX) +#if defined(Q_OS_UNIX) && !defined(Q_OS_MACOS) if (theme_name_from_settings.isEmpty()) { qDebugNN << LOGSEC_GUI << "Loading default system icon theme."; } @@ -108,7 +108,7 @@ void IconFactory::loadCurrentIconTheme() { else { // Desired icon theme is not currently available. // Activate "default" or "no" icon theme instead. -#if defined(Q_OS_LINUX) +#if defined(Q_OS_UNIX) && !defined(Q_OS_MACOS) qWarningNN << "Icon theme" << QUOTE_W_SPACE(theme_name_from_settings) << "cannot be loaded because it is not installed. Activating \"no\" icon theme."; diff --git a/src/librssguard/miscellaneous/settings.cpp b/src/librssguard/miscellaneous/settings.cpp index b1e5935e8..787947879 100644 --- a/src/librssguard/miscellaneous/settings.cpp +++ b/src/librssguard/miscellaneous/settings.cpp @@ -491,8 +491,8 @@ SettingsProperties Settings::determineProperties() { else { // We will use PORTABLE settings only and only if it is available and NON-PORTABLE // settings was not initialized before. -#if defined(Q_OS_LINUX) || defined (Q_OS_ANDROID) || defined (Q_OS_MACOSOS) - // DO NOT use portable settings for Linux, it is really not used on that platform. +#if defined(Q_OS_UNIX) + // DO NOT use portable settings for *nix, it is really not used on that platform. const bool will_we_use_portable_settings = false; #else const QString exe_path = qApp->applicationDirPath(); diff --git a/src/librssguard/miscellaneous/systemfactory.cpp b/src/librssguard/miscellaneous/systemfactory.cpp index 6f4598a77..db2321b5d 100644 --- a/src/librssguard/miscellaneous/systemfactory.cpp +++ b/src/librssguard/miscellaneous/systemfactory.cpp @@ -58,8 +58,8 @@ SystemFactory::AutoStartStatus SystemFactory::autoStartStatus() const { else { return AutoStartStatus::Disabled; } -#elif defined(Q_OS_LINUX) - // Use proper freedesktop.org way to auto-start the application on Linux. +#elif defined(Q_OS_UNIX) && !defined(Q_OS_MACOS) + // Use proper freedesktop.org way to auto-start the application. // INFO: http://standards.freedesktop.org/autostart-spec/latest/ const QString desktop_file_location = autostartDesktopFileLocation(); @@ -86,7 +86,7 @@ SystemFactory::AutoStartStatus SystemFactory::autoStartStatus() const { #endif } -#if defined(Q_OS_LINUX) +#if defined(Q_OS_UNIX) && !defined(Q_OS_MACOS) QString SystemFactory::autostartDesktopFileLocation() const { const QString xdg_config_path(qgetenv("XDG_CONFIG_HOME")); QString desktop_file_location; @@ -136,7 +136,7 @@ bool SystemFactory::setAutoStartStatus(AutoStartStatus new_status) { default: return false; } -#elif defined(Q_OS_LINUX) +#elif defined(Q_OS_UNIX) && !defined(Q_OS_MACOS) // Note that we expect here that no other program uses // "rssguard.desktop" desktop file. const QString destination_file = autostartDesktopFileLocation(); diff --git a/src/librssguard/miscellaneous/systemfactory.h b/src/librssguard/miscellaneous/systemfactory.h index e32b4af6c..3048e6705 100644 --- a/src/librssguard/miscellaneous/systemfactory.h +++ b/src/librssguard/miscellaneous/systemfactory.h @@ -55,7 +55,7 @@ class SystemFactory : public QObject { // new status failed. bool setAutoStartStatus(AutoStartStatus new_status); -#if defined(Q_OS_LINUX) +#if defined(Q_OS_UNIX) && !defined(Q_OS_MACOS) // Returns standard location where auto-start .desktop files // should be placed. QString autostartDesktopFileLocation() const; diff --git a/src/librssguard/network-web/webfactory.cpp b/src/librssguard/network-web/webfactory.cpp index ee08d7f59..c26dbabea 100644 --- a/src/librssguard/network-web/webfactory.cpp +++ b/src/librssguard/network-web/webfactory.cpp @@ -306,7 +306,7 @@ void WebFactory::createMenu(QMenu* menu) { actions << createEngineSettingsAction(tr("Plugins enabled"), QWebEngineSettings::WebAttribute::PluginsEnabled); actions << createEngineSettingsAction(tr("Fullscreen enabled"), QWebEngineSettings::WebAttribute::FullScreenSupportEnabled); -#if !defined(Q_OS_LINUX) +#if !defined(Q_OS_UNIX) && !defined(Q_OS_MACOS) actions << createEngineSettingsAction(tr("Screen capture enabled"), QWebEngineSettings::WebAttribute::ScreenCaptureEnabled); actions << createEngineSettingsAction(tr("WebGL enabled"), QWebEngineSettings::WebAttribute::WebGLEnabled); actions << createEngineSettingsAction(tr("Accelerate 2D canvas"), QWebEngineSettings::WebAttribute::Accelerated2dCanvasEnabled); diff --git a/src/librssguard/services/standard/gui/standardfeeddetails.ui b/src/librssguard/services/standard/gui/standardfeeddetails.ui index e01acfc1b..bb815e0b6 100644 --- a/src/librssguard/services/standard/gui/standardfeeddetails.ui +++ b/src/librssguard/services/standard/gui/standardfeeddetails.ui @@ -112,7 +112,7 @@ 0 - 70 + 50 @@ -138,7 +138,7 @@ 0 - 70 + 50 diff --git a/src/rssguard/main.cpp b/src/rssguard/main.cpp index 740b58fdc..55cff7c7e 100644 --- a/src/rssguard/main.cpp +++ b/src/rssguard/main.cpp @@ -33,7 +33,7 @@ int main(int argc, char* argv[]) { QApplication::setAttribute(Qt::ApplicationAttribute::AA_EnableHighDpiScaling); #endif -#if defined(Q_OS_LINUX) +#if defined(Q_OS_UNIX) && !defined(Q_OS_MACOS) QApplication::setDesktopFileName(APP_DESKTOP_ENTRY_FILE); #endif