android/lib/src/main/cpp/androidapp.cpp |    2 +-
 ios/Mobile/AppDelegate.mm               |    2 +-
 kit/ForKit.cpp                          |   10 +++++++++-
 kit/Kit.cpp                             |    9 +++++++--
 kit/Kit.hpp                             |    3 ++-
 wsd/LOOLWSD.cpp                         |    9 ++++++++-
 wsd/LOOLWSD.hpp                         |    1 +
 7 files changed, 29 insertions(+), 7 deletions(-)

New commits:
commit 11965d083edd7dc0f2a1e8e872de3e79cb26ebf5
Author:     Szymon Kłos <szymon.k...@collabora.com>
AuthorDate: Fri Jun 26 12:58:09 2020 +0200
Commit:     Szymon Kłos <szymon.k...@collabora.com>
CommitDate: Tue Jun 30 08:15:25 2020 +0200

    notebookbar: early init
    
    - read settings from loolwsd.xml
    - in case of notebookbar activated send :notebookbar parameter
    - for mobile apps I left empty parameter in setupKitEnvironment calls
    
    Change-Id: I5813589564b37eecc1e77c5d0eb737eca5f92f04
    Reviewed-on: https://gerrit.libreoffice.org/c/online/+/97233
    Tested-by: Jenkins
    Tested-by: Jenkins CollaboraOffice <jenkinscollaboraoff...@gmail.com>
    Reviewed-by: Szymon Kłos <szymon.k...@collabora.com>

diff --git a/android/lib/src/main/cpp/androidapp.cpp 
b/android/lib/src/main/cpp/androidapp.cpp
index 7570f96ca..e6a3f8a3b 100644
--- a/android/lib/src/main/cpp/androidapp.cpp
+++ b/android/lib/src/main/cpp/androidapp.cpp
@@ -45,7 +45,7 @@ JNI_OnLoad(JavaVM* vm, void*) {
         return JNI_ERR; // JNI version not supported.
     }
 
-    setupKitEnvironment();
+    setupKitEnvironment("");
 
     // Uncomment the following to see the logs from the core too
     //setenv("SAL_LOG", "+WARN+INFO", 0);
diff --git a/ios/Mobile/AppDelegate.mm b/ios/Mobile/AppDelegate.mm
index 9e5f19278..d38f04787 100644
--- a/ios/Mobile/AppDelegate.mm
+++ b/ios/Mobile/AppDelegate.mm
@@ -185,7 +185,7 @@ static void updateTemplates(NSData *data, NSURLResponse 
*response)
     if (!trace)
         trace = strdup("warning");
 
-    setupKitEnvironment();
+    setupKitEnvironment("");
 
     Log::initialize("Mobile", trace, false, false, {});
     Util::setThreadName("main");
diff --git a/kit/ForKit.cpp b/kit/ForKit.cpp
index 3a0a0811d..b69e2593b 100644
--- a/kit/ForKit.cpp
+++ b/kit/ForKit.cpp
@@ -52,6 +52,8 @@ static bool SingleKit = false;
 #endif
 #endif
 
+static std::string UserInterface;
+
 static bool DisplayVersion = false;
 static std::string UnitTestLibrary;
 static std::string LogLevel;
@@ -539,6 +541,12 @@ int main(int argc, char** argv)
             LOG_ERR("Security: Running without the ability to filter system 
calls is ill advised.");
             NoSeccomp = true;
         }
+
+        else if (std::strstr(cmd, "--ui") == cmd)
+        {
+            eq = std::strchr(cmd, '=');
+            UserInterface = std::string(eq+1);
+        }
     }
 
     if (loSubPath.empty() || sysTemplate.empty() ||
@@ -555,7 +563,7 @@ int main(int argc, char** argv)
         return EX_USAGE;
     }
 
-    setupKitEnvironment();
+    setupKitEnvironment(UserInterface);
 
     if (!std::getenv("LD_BIND_NOW")) // must be set by parent.
         LOG_INF("Note: LD_BIND_NOW is not set.");
diff --git a/kit/Kit.cpp b/kit/Kit.cpp
index 7a5fc1f7a..b50ae65a4 100644
--- a/kit/Kit.cpp
+++ b/kit/Kit.cpp
@@ -2505,7 +2505,7 @@ void wakeCallback(void* pData)
 #endif
 }
 
-void setupKitEnvironment()
+void setupKitEnvironment(const std::string& userInterface)
 {
     // Setup & check environment
     const std::string layers(
@@ -2536,6 +2536,10 @@ void setupKitEnvironment()
     if (Log::logger().trace())
         options += ":profile_events";
 #endif
+
+    if (userInterface == "notebookbar")
+        options += ":notebookbar";
+
 //    options += ":sc_no_grid_bg"; // leave this disabled for now, 
merged-cells needs more work.
     ::setenv("SAL_LOK_OPTIONS", options.c_str(), 0);
 }
@@ -2555,6 +2559,7 @@ void lokit_main(
                 bool displayVersion,
 #else
                 int docBrokerSocket,
+                const std::string& userInterface,
 #endif
                 size_t numericIdentifier
                 )
@@ -2818,7 +2823,7 @@ void lokit_main(
 #ifndef IOS
         // Was not done by the preload.
         // For iOS we call it in -[AppDelegate application: 
didFinishLaunchingWithOptions:]
-        setupKitEnvironment();
+        setupKitEnvironment(userInterface);
 #endif
 
 #if defined(__linux) && !defined(__ANDROID__)
diff --git a/kit/Kit.hpp b/kit/Kit.hpp
index a5c6332b8..06a03034d 100644
--- a/kit/Kit.hpp
+++ b/kit/Kit.hpp
@@ -38,6 +38,7 @@ void lokit_main(
                 bool displayVersion,
 #else
                 int docBrokerSocket,
+                const std::string& userInterface,
 #endif
                 size_t numericIdentifier
                 );
@@ -47,7 +48,7 @@ void runKitLoopInAThread();
 #endif
 
 /// We need to get several env. vars right
-void setupKitEnvironment();
+void setupKitEnvironment(const std::string& userInterface);
 
 bool globalPreinit(const std::string& loTemplate);
 /// Wrapper around private Document::ViewCallback().
diff --git a/wsd/LOOLWSD.cpp b/wsd/LOOLWSD.cpp
index 8cdf9974a..a51344da7 100644
--- a/wsd/LOOLWSD.cpp
+++ b/wsd/LOOLWSD.cpp
@@ -531,7 +531,7 @@ std::shared_ptr<ChildProcess> getNewChild_Blocks(unsigned 
mobileAppDocId)
 #endif
                     // Ugly to have that static global 
LOOLWSD::prisonerServerSocketFD, Otoh we know
                     // there is just one LOOLWSD object. (Even in real Online.)
-                    lokit_main(LOOLWSD::prisonerServerSocketFD, 
mobileAppDocId);
+                    lokit_main(LOOLWSD::prisonerServerSocketFD, 
LOOLWSD::UserInterface, mobileAppDocId);
                 }).detach();
 #endif
 
@@ -728,6 +728,7 @@ std::string LOOLWSD::HostIdentifier;
 std::string LOOLWSD::ConfigFile = LOOLWSD_CONFIGDIR "/loolwsd.xml";
 std::string LOOLWSD::ConfigDir = LOOLWSD_CONFIGDIR "/conf.d";
 std::string LOOLWSD::LogLevel = "trace";
+std::string LOOLWSD::UserInterface = "classic";
 bool LOOLWSD::AnonymizeUserData = false;
 bool LOOLWSD::CheckLoolUser = true;
 bool LOOLWSD::IsProxyPrefixEnabled = false;
@@ -999,6 +1000,9 @@ void LOOLWSD::initialize(Application& self)
     // Allow UT to manipulate before using configuration values.
     UnitWSD::get().configure(config());
 
+    // Setup user interface mode
+    UserInterface = getConfigValue<std::string>(conf, "user_interface.mode", 
"classic");
+
     // Set the log-level after complete initialization to force maximum 
details at startup.
     LogLevel = getConfigValue<std::string>(conf, "logging.level", "trace");
     setenv("LOOL_LOGLEVEL", LogLevel.c_str(), true);
@@ -1790,6 +1794,8 @@ bool LOOLWSD::createForKit()
     if (NoSeccomp)
         args.push_back("--noseccomp");
 
+    args.push_back("--ui=" + UserInterface);
+
     if (!CheckLoolUser)
         args.push_back("--disable-lool-user-checking");
 
@@ -3493,6 +3499,7 @@ public:
            << "\n  CheckLoolUser: " << (LOOLWSD::CheckLoolUser ? "yes" : "no")
            << "\n  IsProxyPrefixEnabled: " << (LOOLWSD::IsProxyPrefixEnabled ? 
"yes" : "no")
            << "\n  OverrideWatermark: " << LOOLWSD::OverrideWatermark
+           << "\n  UserInterface: " << LOOLWSD::UserInterface
             ;
 
         os << "\nServer poll:\n";
diff --git a/wsd/LOOLWSD.hpp b/wsd/LOOLWSD.hpp
index 54d63962f..bbc6bc430 100644
--- a/wsd/LOOLWSD.hpp
+++ b/wsd/LOOLWSD.hpp
@@ -230,6 +230,7 @@ public:
     static bool DummyLOK;
     static std::string FuzzFileName;
 #endif
+    static std::string UserInterface;
     static std::string ConfigFile;
     static std::string ConfigDir;
     static std::string SysTemplate;
_______________________________________________
Libreoffice-commits mailing list
libreoffice-comm...@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/libreoffice-commits

Reply via email to