Vfs: Adjust and centralise action text #7143
authorChristian Kamm <mail@ckamm.de>
Tue, 16 Apr 2019 07:47:55 +0000 (09:47 +0200)
committerKevin Ottens <kevin.ottens@nextcloud.com>
Tue, 15 Dec 2020 09:58:49 +0000 (10:58 +0100)
Saying "Currently available locally" sounds more like an indicator than
"Availably locally" does. Centralizing translations avoids consistency
issues between shell context menus and sync folder context menu.

src/common/vfs.cpp
src/common/vfs.h
src/gui/accountsettings.cpp
src/gui/guiutility.cpp
src/gui/guiutility.h
src/gui/socketapi.cpp

index 5f170daf1f36a1439db6251fc92bed6cdea6dd62..54f6cb6bd5d0c91e5d20ffb42a0dc209808c53a7 100644 (file)
@@ -205,22 +205,3 @@ std::unique_ptr<Vfs> OCC::createVfsFromPlugin(Vfs::Mode mode)
     qCInfo(lcPlugin) << "Created VFS instance from plugin" << pluginPath;
     return vfs;
 }
-
-QString OCC::vfsItemAvailabilityToString(VfsItemAvailability availability, bool forFolder)
-{
-    switch(availability) {
-    case VfsItemAvailability::AlwaysLocal:
-        return Vfs::tr("Always available locally");
-    case VfsItemAvailability::AllHydrated:
-        return Vfs::tr("Available locally");
-    case VfsItemAvailability::SomeDehydrated:
-        if (forFolder) {
-            return Vfs::tr("Some available online only");
-        } else {
-            return Vfs::tr("Available online only");
-        }
-    case VfsItemAvailability::OnlineOnly:
-        return Vfs::tr("Available online only");
-    }
-    ENFORCE(false);
-}
index a8765d793c84aa8f05c96e7b6ff335cdae1e568b..59153024ad944c5045a19b0f753a04e34cb018ff 100644 (file)
@@ -300,7 +300,4 @@ OCSYNC_EXPORT Vfs::Mode bestAvailableVfsMode();
 /// Create a VFS instance for the mode, returns nullptr on failure.
 OCSYNC_EXPORT std::unique_ptr<Vfs> createVfsFromPlugin(Vfs::Mode mode);
 
-/// Convert availability to translated string
-OCSYNC_EXPORT QString vfsItemAvailabilityToString(VfsItemAvailability availability, bool forFolder);
-
 } // namespace OCC
index 05dd56a4daa1204f46b4c861a6603fd01b564ea0..d4d139fe3cbcfb8061bb5a068db2f2ee6254b891 100644 (file)
@@ -22,6 +22,7 @@
 #include "folderstatusmodel.h"
 #include "folderstatusdelegate.h"
 #include "common/utility.h"
+#include "guiutility.h"
 #include "application.h"
 #include "configfile.h"
 #include "account.h"
@@ -448,15 +449,15 @@ void AccountSettings::slotCustomContextMenuRequested(const QPoint &pos)
         auto availabilityMenu = menu->addMenu(tr("Availability"));
         auto availability = folder->vfs().availability(QString());
         if (availability) {
-            ac = availabilityMenu->addAction(vfsItemAvailabilityToString(*availability, true));
+            ac = availabilityMenu->addAction(Utility::vfsCurrentAvailabilityText(*availability, true));
             ac->setEnabled(false);
         }
 
-        ac = availabilityMenu->addAction(tr("Make always available locally"));
+        ac = availabilityMenu->addAction(Utility::vfsPinActionText());
         ac->setEnabled(!availability || *availability != VfsItemAvailability::AlwaysLocal);
         connect(ac, &QAction::triggered, this, [this]() { slotSetCurrentFolderAvailability(PinState::AlwaysLocal); });
 
-        ac = availabilityMenu->addAction(tr("Free up local space"));
+        ac = availabilityMenu->addAction(Utility::vfsFreeSpaceActionText());
         ac->setEnabled(!availability || *availability != VfsItemAvailability::OnlineOnly);
         connect(ac, &QAction::triggered, this, [this]() { slotSetCurrentFolderAvailability(PinState::OnlineOnly); });
 
index f354c39ca8951ccf9f966ef2804d38d4ace688ff..751e171cc416b1ddf38d681cb4996b6ab7a087be 100644 (file)
@@ -21,6 +21,8 @@
 #include <QMessageBox>
 #include <QUrlQuery>
 
+#include "common/asserts.h"
+
 using namespace OCC;
 
 Q_LOGGING_CATEGORY(lcUtility, "nextcloud.gui.utility", QtInfoMsg)
@@ -66,3 +68,32 @@ bool Utility::openEmailComposer(const QString &subject, const QString &body, QWi
     }
     return true;
 }
+
+QString Utility::vfsCurrentAvailabilityText(VfsItemAvailability availability, bool forFolder)
+{
+    switch(availability) {
+    case VfsItemAvailability::AlwaysLocal:
+        return QCoreApplication::translate("utility", "Currently always available locally");
+    case VfsItemAvailability::AllHydrated:
+        return QCoreApplication::translate("utility", "Currently available locally");
+    case VfsItemAvailability::SomeDehydrated:
+        if (forFolder) {
+            return QCoreApplication::translate("utility", "Currently some available online only");
+        } else {
+            return QCoreApplication::translate("utility", "Currently available online only");
+        }
+    case VfsItemAvailability::OnlineOnly:
+        return QCoreApplication::translate("utility", "Currently available online only");
+    }
+    ENFORCE(false);
+}
+
+QString Utility::vfsPinActionText()
+{
+    return QCoreApplication::translate("utility", "Make always available locally");
+}
+
+QString Utility::vfsFreeSpaceActionText()
+{
+    return QCoreApplication::translate("utility", "Free up local space");
+}
index 55f808ac24a1e02921691592cdf92b87edd248c0..b25ecc9379c620cbeb71785b98035454ddcf14ef 100644 (file)
@@ -19,6 +19,8 @@
 #include <QUrl>
 #include <QWidget>
 
+#include "common/pinstate.h"
+
 namespace OCC {
 namespace Utility {
 
@@ -35,6 +37,18 @@ namespace Utility {
     bool openEmailComposer(const QString &subject, const QString &body,
         QWidget *errorWidgetParent);
 
+    /** Returns a translated string indicating the current availability.
+     *
+     * This will be used in context menus to describe the current state.
+     */
+    QString vfsCurrentAvailabilityText(VfsItemAvailability availability, bool forFolder);
+
+    /** Translated text for "making items always available locally" */
+    QString vfsPinActionText();
+
+    /** Translated text for "free up local space" (and unpinning the item) */
+    QString vfsFreeSpaceActionText();
+
 } // namespace Utility
 } // namespace OCC
 
index 7dcccee2644233cedcc2843d2bb55a948b5dc335..f893bd4b28146749159d0b73cc0bca82ec57bcb0 100644 (file)
@@ -1075,13 +1075,13 @@ void SocketApi::command_GET_MENU_ITEMS(const QString &argument, OCC::SocketListe
         // TODO: Should be a submenu, should use icons
         auto makePinContextMenu = [&](bool makeAvailableLocally, bool freeSpace) {
             listener->sendMessage(QLatin1String("MENU_ITEM:CURRENT_PIN:d:")
-                                  + vfsItemAvailabilityToString(*combined, isFolderOrMultiple));
+                                  + Utility::vfsCurrentAvailabilityText(*combined, isFolderOrMultiple));
             listener->sendMessage(QLatin1String("MENU_ITEM:MAKE_AVAILABLE_LOCALLY:")
                                   + (makeAvailableLocally ? QLatin1String(":") : QLatin1String("d:"))
-                                  + tr("Make always available locally"));
+                                  + Utility::vfsPinActionText());
             listener->sendMessage(QLatin1String("MENU_ITEM:MAKE_ONLINE_ONLY:")
                                   + (freeSpace ? QLatin1String(":") : QLatin1String("d:"))
-                                  + tr("Free up local space"));
+                                  + Utility::vfsFreeSpaceActionText());
         };
 
         switch (*combined) {