diff --git a/CMakeLists.txt b/CMakeLists.txt index 3223568..07b2e47 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -6,17 +6,17 @@ set(CMAKE_AUTOMOC ON) cmake_policy(SET CMP0048 NEW) # Options -option(SAILFISHOS "Build SailfishOS version of application") +option(PLATFORM_SAILFISHOS "Build SailfishOS version of application") option(PLATFORM_QTQUICK "Build QtQuick version of application") -if(SAILFISHOS) +if(PLATFORM_SAILFISHOS) # Hardcode this less? set(CMAKE_INSTALL_LIBDIR "${CMAKE_INSTALL_PREFIX}/share/harbour-sailfin/lib") endif() add_subdirectory(core) -if(SAILFISHOS) +if(PLATFORM_SAILFISHOS) add_subdirectory(sailfish) -else() +elseif(PLATFORM_QTQUICK) add_subdirectory(qtquick) endif() diff --git a/core/CMakeLists.txt b/core/CMakeLists.txt index fd696ba..83f2aaa 100644 --- a/core/CMakeLists.txt +++ b/core/CMakeLists.txt @@ -27,6 +27,9 @@ set(jellyfin-qt_HEADERS include/JellyfinQt/serverdiscoverymodel.h) add_definitions(-DSAILFIN_VERSION=\"${SAILFIN_VERSION}\") +if (PLATFORM_SAILFISHOS) + add_definitions(-DPLATFORM_SAILFISHOS=1) +endif() add_library(jellyfin-qt ${jellyfin-qt_SOURCES} ${jellyfin-qt_HEADERS}) target_include_directories(jellyfin-qt PUBLIC "include" diff --git a/core/src/credentialmanager.cpp b/core/src/credentialmanager.cpp index 3a469cb..37f540e 100644 --- a/core/src/credentialmanager.cpp +++ b/core/src/credentialmanager.cpp @@ -27,7 +27,13 @@ CredentialsManager * CredentialsManager::newInstance(QObject *parent) { // FallbackCredentialsManager // //////////////////////////////////////////////////////////////////////////////////////////////////// FallbackCredentialsManager::FallbackCredentialsManager(QObject *parent) - : CredentialsManager (parent) { + : CredentialsManager (parent) + #if PLATFORM_SAILFISHOS + // I'd rather not hardcoded this here, but I donĀ“t know a better, quick solution. + // since this file must be placed in this path due to sandboxing. + , m_settings("nl.netsoj.chris/Sailfin/sailfin") + #endif +{ m_settings.beginGroup("Credentials"); } diff --git a/rpm/harbour-sailfin.yaml b/rpm/harbour-sailfin.yaml index 41db878..22e1d5e 100644 --- a/rpm/harbour-sailfin.yaml +++ b/rpm/harbour-sailfin.yaml @@ -48,8 +48,7 @@ Macros: - '_unpackaged_files_terminate_build; 0 ' ConfigOptions: - - -DCMAKE_BUILD_TYPE=Release - - -DSAILFISHOS=1 + - -DPLATFORM_SAILFISHOS=1 - -DSAILFIN_VERSION='%{version}-%{release}' # ExtraInstall: | diff --git a/sailfish/harbour-sailfin.desktop b/sailfish/harbour-sailfin.desktop index 5491e87..ef6febb 100644 --- a/sailfish/harbour-sailfin.desktop +++ b/sailfish/harbour-sailfin.desktop @@ -3,7 +3,7 @@ Type=Application Version=1.1 X-Nemo-Application-Type=silica-qt5 Icon=harbour-sailfin -Exec=harbour-sailfin +Exec=harbour-sailfin --attempt-sandbox Name=Sailfin @@ -17,3 +17,8 @@ GenericName=Jellyfin client Comment=Stream audio and video from your Jellyfin media server Categories=AudioVideo;Player + +[X-Sailjail] +Permissions=Internet;Audio +OrganizationName=nl.netsoj.chris +ApplicationName=Sailfin diff --git a/sailfish/src/harbour-sailfin.cpp b/sailfish/src/harbour-sailfin.cpp index c1216f3..c379d2c 100644 --- a/sailfish/src/harbour-sailfin.cpp +++ b/sailfish/src/harbour-sailfin.cpp @@ -21,16 +21,21 @@ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA #include #endif +#include +#include #include #include #include #include #include +#include #include #include +static const char *SANDBOX_PROGRAM = "/usr/bin/sailjail"; + int main(int argc, char *argv[]) { // SailfishApp::main() will display "qml/harbour-sailfin.qml", if you need more // control over initialization, you can use: @@ -42,6 +47,30 @@ int main(int argc, char *argv[]) { // // To display the view, call "show()" (will show fullscreen on device). QGuiApplication *app = SailfishApp::application(argc, argv); + app->setOrganizationName("nl.netsoj.chris"); + app->setOrganizationDomain("nl.netsoj.chris"); + app->setApplicationName("Sailfin"); + //: Application display name + app->setApplicationDisplayName(QObject::tr("Sailfin")); + + bool canSanbox = QFile::exists(SANDBOX_PROGRAM); + QCommandLineParser cmdParser; + cmdParser.addHelpOption(); + cmdParser.addVersionOption(); + QCommandLineOption sandboxOption("attempt-sandbox", app->translate("Command line argument description", "Try to start with FireJail.")); + if (canSanbox) { + cmdParser.addOption(sandboxOption); + } + cmdParser.process(*app); + + if (canSanbox && cmdParser.isSet(sandboxOption)) { + qDebug() << "Restarting in Sanbox mode"; + QProcess::execute(QString(SANDBOX_PROGRAM), + QStringList() << "-p" << "harbour-sailfin.desktop" << "/usr/bin/harbour-sailfin"); + return 0; + } + + Jellyfin::registerTypes(); QQuickView *view = SailfishApp::createView(); view->setSource(SailfishApp::pathToMainQml());