Date: prev next · Thread: first prev next last
2013 Archives by date, by thread · List index


Hi,

I have submitted a patch for review:

    https://gerrit.libreoffice.org/3700

To pull it, you can do:

    git pull ssh://gerrit.libreoffice.org:29418/core refs/changes/00/3700/1

Show only filename in "Recent Files" list

As discussed here: 
http://nabble.documentfoundation.org/Libreoffice-ux-advise-Recent-files-dropdown-td4052945.html#a4052996

The changes are (inspired by Gedit):
* Display only the filename, not the (abbreviated) path
* Show the protocol name before the file, if not local (e.g. "ftp: myfile.odt")
* After the keyboard shortcut (a number from 1 to 10) display a '.' instead of a ':' (because the 
protocol has a ':')

Change-Id: I47472c901aa866adb76c7c7ab36bc871f82ad8df
---
M framework/source/uielement/recentfilesmenucontroller.cxx
M include/tools/urlobj.hxx
M tools/source/fsys/urlobj.cxx
3 files changed, 23 insertions(+), 19 deletions(-)



diff --git a/framework/source/uielement/recentfilesmenucontroller.cxx 
b/framework/source/uielement/recentfilesmenucontroller.cxx
index 3d8d9c9..6259924 100644
--- a/framework/source/uielement/recentfilesmenucontroller.cxx
+++ b/framework/source/uielement/recentfilesmenucontroller.cxx
@@ -40,13 +40,12 @@
 using namespace com::sun::star::beans;
 using namespace com::sun::star::util;
 
-#define MAX_STR_WIDTH   46
 #define MAX_MENU_ITEMS  99
 
 static const char SFX_REFERER_USER[] = "private:user";
 static const char CMD_CLEAR_LIST[]   = ".uno:ClearRecentFileList";
 static const char CMD_PREFIX[]       = "vnd.sun.star.popup:RecentFileList?entry=";
-static const char MENU_SHOTCUT[]     = "~N: ";
+static const char MENU_SHORTCUT[]     = "~N. ";
 
 namespace framework
 {
@@ -133,17 +132,17 @@
                 if ( i <= 9 )
                 {
                     if ( i == 9 )
-                        aMenuShortCut.append( "1~0: " );
+                        aMenuShortCut.append( "1~0. " );
                     else
                     {
-                        aMenuShortCut.append( MENU_SHOTCUT );
+                        aMenuShortCut.append( MENU_SHORTCUT );
                         aMenuShortCut[ 1 ] = sal_Unicode( i + '1' );
                     }
                 }
                 else
                 {
                     aMenuShortCut.append( sal_Int32( i + 1 ) );
-                    aMenuShortCut.append( ": " );
+                    aMenuShortCut.append( ". " );
                 }
 
                 OUStringBuffer aStrBuffer;
@@ -152,28 +151,19 @@
                 OUString  aURLString( aStrBuffer.makeStringAndClear() );
 
                 // Abbreviate URL
-                OUString   aTipHelpText;
                 OUString   aMenuTitle;
                 INetURLObject   aURL( m_aRecentFilesItems[i].aURL );
+                OUString aTipHelpText( aURL.getFSysPath( INetURLObject::FSYS_DETECT ) );
 
                 if ( aURL.GetProtocol() == INET_PROT_FILE )
                 {
-                    // Do handle file URL differently => convert it to a system
-                    // path and abbreviate it with a special function:
-                    OUString aSystemPath( aURL.getFSysPath( INetURLObject::FSYS_DETECT ) );
-                    aTipHelpText = aSystemPath;
-
-                    OUString aCompactedSystemPath;
-                    if ( osl_abbreviateSystemPath( aSystemPath.pData, &aCompactedSystemPath.pData, 
MAX_STR_WIDTH, NULL ) == osl_File_E_None )
-                        aMenuTitle = aCompactedSystemPath;
-                    else
-                        aMenuTitle = aSystemPath;
+                    // Do handle file URL differently: don't show the protocol, just the file name
+                    aMenuTitle = aURL.getName();
                 }
                 else
                 {
-                    // Use INetURLObject to abbreviate all other URLs
-                    aMenuTitle   = aURL.getAbbreviated( xStringLength, MAX_STR_WIDTH, 
INetURLObject::DECODE_UNAMBIGUOUS );
-                    aTipHelpText = aURLString;
+                    // In all other URLs show the protocol name before the file name
+                    aMenuTitle   = aURL.GetSchemeName(aURL.GetProtocol()) + ": " + aURL.getName();
                 }
 
                 aMenuShortCut.append( aMenuTitle );
diff --git a/include/tools/urlobj.hxx b/include/tools/urlobj.hxx
index fef9f46..8905334 100644
--- a/include/tools/urlobj.hxx
+++ b/include/tools/urlobj.hxx
@@ -484,6 +484,14 @@
      */
     static OUString GetScheme(INetProtocol eTheScheme);
 
+    /** Return the a human-readable name for a given scheme.
+
+        @param eTheScheme  One of the supported URL schemes.
+
+        @return  The protocol name of URLs of the given scheme.
+     */
+    static OUString GetSchemeName(INetProtocol eTheScheme);
+
     static inline INetProtocol CompareProtocolScheme(const OString&
                                                          rTheAbsURIRef)
     { return CompareProtocolScheme(extend(rTheAbsURIRef)); }
diff --git a/tools/source/fsys/urlobj.cxx b/tools/source/fsys/urlobj.cxx
index 2724b71..071ca7a 100644
--- a/tools/source/fsys/urlobj.cxx
+++ b/tools/source/fsys/urlobj.cxx
@@ -4192,6 +4192,12 @@
 }
 
 // static
+OUString INetURLObject::GetSchemeName(INetProtocol eTheScheme)
+{
+    return OUString::createFromAscii(getSchemeInfo(eTheScheme).m_pScheme);
+}
+
+// static
 INetProtocol INetURLObject::CompareProtocolScheme(OUString const &
                                                       rTheAbsURIRef)
 {

-- 
To view, visit https://gerrit.libreoffice.org/3700
To unsubscribe, visit https://gerrit.libreoffice.org/settings

Gerrit-MessageType: newchange
Gerrit-Change-Id: I47472c901aa866adb76c7c7ab36bc871f82ad8df
Gerrit-PatchSet: 1
Gerrit-Project: core
Gerrit-Branch: master
Gerrit-Owner: Samuel Mehrbrodt <s.mehrbrodt@gmail.com>


Context


Privacy Policy | Impressum (Legal Info) | Copyright information: Unless otherwise specified, all text and images on this website are licensed under the Creative Commons Attribution-Share Alike 3.0 License. This does not include the source code of LibreOffice, which is licensed under the Mozilla Public License (MPLv2). "LibreOffice" and "The Document Foundation" are registered trademarks of their corresponding registered owners or are in actual use as trademarks in one or more countries. Their respective logos and icons are also subject to international copyright laws. Use thereof is explained in our trademark policy.