diff options
Diffstat (limited to 'kdejava/koala/org/kde/koala/KURL.java')
-rw-r--r-- | kdejava/koala/org/kde/koala/KURL.java | 1341 |
1 files changed, 1341 insertions, 0 deletions
diff --git a/kdejava/koala/org/kde/koala/KURL.java b/kdejava/koala/org/kde/koala/KURL.java new file mode 100644 index 00000000..0bab1cfc --- /dev/null +++ b/kdejava/koala/org/kde/koala/KURL.java @@ -0,0 +1,1341 @@ +//Auto-generated by kalyptus. DO NOT EDIT. +package org.kde.koala; + +import org.kde.qt.Qt; +import org.kde.qt.QtSupport; +import org.kde.qt.QUrlInterface; +import java.util.ArrayList; +import org.kde.qt.QUrl; + +/** + + @brief Represents and parses a URL + A prototypical URL looks like: + @code + protocol://user:password@hostname:port/path/to/file.ext#reference + @endcode + KURL handles escaping of URLs. This means that the specification + of a full URL will differ from the corresponding string that would specify a + local file or directory in file-operations like fopen. This is because an URL + doesn't allow certain characters and escapes them. + For examle: + - '#' . "%23" + (In a URL the hash-character @c '#' is used to specify a "reference", i.e. + the position within a document) + - space . "%20" + The constructor KURL(String) expects a string properly escaped, + or at least non-ambiguous. + For instance a local file or directory <tt>"/bar/#foo#"</tt> would have the + URL <tt>"file:///bar/%23foo%23"</tt>. + If you have the absolute path and need the URL-escaping you should create + KURL via the default-constructor and then call setPath(String): + @code + KURL kurl; + kurl.setPath( "/bar/#foo#" ); + String url = kurl.url(); // . "file:///bar/%23foo%23" + @endcode + If you have the URL of a local file or directory and need the absolute path, + you would use path(). + @code + KURL url( "file:///bar/%23foo%23" ); + ... + if ( url.isLocalFile() ) + String path = url.path(); // . "/bar/#foo#" + @endcode + The other way round: if the user can enter a string, that can be either a + path or a URL, then you need to use KURL.fromPathOrURL() to build a KURL. + This must also be considered, when you have separated directory and file + strings and need to put them together. + While you can simply concatenate normal path strings, you must take care if + the directory-part is already an escaped URL. + (This might be needed if the user specifies a relative path, and your + program supplies the rest from elsewhere.) + Wrong: + @code + String dirUrl = "file:///bar/"; + String fileName = "#foo#"; + String invalidURL = dirUrl + fileName; // . "file:///bar/#foo#" won't behave like you would expect. + @endcode + Instead you should use addPath(). + Right: + @code + KURL url( "file:///bar/" ); + String fileName = "#foo#"; + url.addPath( fileName ); + String validURL = url.url(); // . "file:///bar/%23foo%23" + @endcode + Also consider that some URLs contain the password, but this shouldn't be + visible. Your program should use prettyURL() every time it displays a + URL, whether in the GUI or in debug output or... + @code + KURL url( "ftp://name:password@ftp.faraway.org/bar/%23foo%23"); + String visibleURL = url.prettyURL(); // . "ftp://name@ftp.faraway.org/bar/%23foo%23" + @endcode + Note that prettyURL() doesn't change the character escapes (like <tt>"%23"</tt>). + Otherwise the URL would be invalid and the user wouldn't be able to use it in another + context. + KURL has some restrictions regarding the path + encoding. KURL works internally with the decoded path and + and encoded query. For example, + @code + http://localhost/cgi-bin/test%20me.pl?cmd=Hello%20you + @endcode + would result in a decoded path <tt>"/cgi-bin/test me.pl"</tt> + and in the encoded query <tt>"?cmd=Hello%20you"</tt>. + Since path is internally always encoded you may <b>not</b> use + <tt>"%00"</tt> in the path, although this is OK for the query. + @author Torben Weis <weis@kde.org> + + @short @brief Represents and parses a URL + +*/ +public class KURL implements QtSupport { + private long _qt; + private boolean _allocatedInJavaWorld = true; + protected KURL(Class dummy){} + + /** + Flags to choose how file: URLs are treated when creating their String + representation with prettyURL(int,AdjustementFlags) + However it is recommended to use pathOrURL() instead of this variant of prettyURL() + @short Flags to choose how file: URLs are treated when creating their String representation with prettyURL(int,AdjustementFlags) + */ + public static final int NoAdjustements = 0; + public static final int StripFileProtocol = 1; + + /** + Defines the type of URI we are processing. + @short Defines the type of URI we are processing. + */ + public static final int Auto = 0; + public static final int Invalid = 1; + public static final int RawURI = 2; + public static final int URL = 3; + public static final int Mailto = 4; + + /** + Options for queryItems() + @short Options for queryItems() + */ + public static final int CaseInsensitiveKeys = 1; + + /** + @brief Constructs an empty URL + The created instance will also be invalid, see isValid() + @short @brief Constructs an empty URL + */ + public KURL() { + newKURL(); + } + private native void newKURL(); + /** + @brief Usual constructor, to construct from a string + @warning It is dangerous to feed UNIX filenames into this function, + this will work most of the time but not always. + For example <tt>"/home/Torben%20Weis"</tt> will be considered a URL + pointing to the file <tt>"/home/Torben Weis"</tt> instead + of to the file <tt>"/home/Torben%20Weis"</tt>. + This means that if you have a usual UNIX like path you should not use + this constructor. Instead use fromPathOrURL() + @param url a URL, not a filename. If the URL does not have a protocol + part, @c "file:" is assumed + @param encoding_hint MIB of original encoding of URL. + See QTextCodec.mibEnum() + @short @brief Usual constructor, to construct from a string + @see #fromPathOrURL + */ + public KURL(String url, int encoding_hint) { + newKURL(url,encoding_hint); + } + private native void newKURL(String url, int encoding_hint); + public KURL(String url) { + newKURL(url); + } + private native void newKURL(String url); + /** + @brief Copy constructor + @param u the KURL to copy + @short @brief Copy constructor + */ + public KURL(KURL u) { + newKURL(u); + } + private native void newKURL(KURL u); + /** + @brief Constructor taking a Qt URL + Converts from a Qt URL. + @param u the QUrl + @short @brief Constructor taking a Qt URL + */ + public KURL(QUrlInterface u) { + newKURL(u); + } + private native void newKURL(QUrlInterface u); + /** + @brief Constructor allowing relative URLs + @warning It is dangerous to feed UNIX filenames into this function, + this will work most of the time but not always. + For example <tt>"/home/Torben%20Weis"</tt> will be considered a URL + pointing to the file <tt>"/home/Torben Weis"</tt> instead + of to the file <tt>"/home/Torben%20Weis"</tt>. + This means that if you have a usual UNIX like path you should not use + this constructor. Instead use fromPathOrURL() + @param _baseurl The base url. + @param _rel_url A relative or absolute URL. + If this is an absolute URL then <code>_baseurl</code> will be ignored. + If this is a relative URL it will be combined with <code>_baseurl.</code> + Note that <code>_rel_url</code> should be encoded too, in any case. + So do NOT pass a path here (use setPath() or addPath() or + fromPathOrURL() instead) + @param encoding_hint MIB of original encoding of URL. + See QTextCodec.mibEnum() + @short @brief Constructor allowing relative URLs + @see #fromPathOrURL + */ + public KURL(KURL _baseurl, String _rel_url, int encoding_hint) { + newKURL(_baseurl,_rel_url,encoding_hint); + } + private native void newKURL(KURL _baseurl, String _rel_url, int encoding_hint); + public KURL(KURL _baseurl, String _rel_url) { + newKURL(_baseurl,_rel_url); + } + private native void newKURL(KURL _baseurl, String _rel_url); + /** + @brief Returns the protocol for the URL + Examples for a protocol string are @c "file", @c "http", etc. but also + @c "mailto:" and other pseudo protocols. + @return the protocol of the URL, does not include the colon. If the + URL is malformed, @c null will be returned + + @short @brief Returns the protocol for the URL + @see #setProtocol + @see #isValid + */ + public native String protocol(); + /** + @brief Sets the protocol for the URL + Examples for a protocol string are @c "file", @c "http", etc. but also + @c "mailto:" and other pseudo protocols. + @param _txt the new protocol of the URL (without colon) + @short @brief Sets the protocol for the URL + @see #protocol + */ + public native void setProtocol(String _txt); + /** + @brief Returns the URI processing mode for the URL + @return the URI processing mode set for this URL + + @short @brief Returns the URI processing mode for the URL + @see URIMode + @see #uriModeForProtocol + */ + public native int uriMode(); + /** + @brief Returns the decoded user name (login, user id, etc) included in + the URL + @return the user name or @c null if there is no user name + + @short @brief Returns the decoded user name (login, user id, etc) included in the URL + @see #setUser + @see #hasUser + */ + public native String user(); + /** + @brief Sets the user name (login, user id, etc) to include in the URL + Special characters in the user name will appear encoded in the URL. + If there is a password associated with the user, it can be set using + setPass(). + @param _txt the name of the user or <code>null</code> to remove the user + @short @brief Sets the user name (login, user id, etc) to include in the URL + @see #user + @see #hasUser + @see #hasPass + */ + public native void setUser(String _txt); + /** + @brief Tests if this URL has a user name included in it + @return @c true if the URL has an non-empty user name + + @short @brief Tests if this URL has a user name included in it + @see #user + @see #setUser + @see #hasPass + */ + public native boolean hasUser(); + /** + @brief Returns the decoded password (corresponding to user()) included + in the URL + @note a password can only appear in a URL string if you also set + a user, see setUser(). + @return the password or @c null if it does not exist + + @short @brief Returns the decoded password (corresponding to user()) included in the URL + @see #setPass + @see #hasPass + @see #hasUser + */ + public native String pass(); + /** + @brief Sets the password (corresponding to user()) to include in the URL + Special characters in the password will appear encoded in the URL. + @note a password can only appear in a URL string if you also set + a user, see setUser(). + @param _txt the password to set or <code>null</code> to remove the password + @short @brief Sets the password (corresponding to user()) to include in the URL + @see #pass + @see #hasPass + @see #hasUser + */ + public native void setPass(String _txt); + /** + @brief Tests if this URL has a password included in it + @note a password can only appear in a URL string if you also set + a user, see setUser(). + @return @c true if there is a non-empty password set + + @short @brief Tests if this URL has a password included in it + @see #pass + @see #setPass + @see #hasUser + */ + public native boolean hasPass(); + /** + @brief Returns the decoded hostname included in the URL + @return the name of the host or @c null if no host is set + + @short @brief Returns the decoded hostname included in the URL + @see #setHost + @see #hasHost + */ + public native String host(); + /** + @brief Sets the hostname to include in the URL + Special characters in the hostname will appear encoded in the URL. + @param _txt the new name of the host or null to remove the host + @short @brief Sets the hostname to include in the URL + @see #host + @see #hasHost + */ + public native void setHost(String _txt); + /** + @brief Tests if this URL has a hostname included in it + @return @c true if the URL has a non-empty host + + @short @brief Tests if this URL has a hostname included in it + @see #host + @see #setHost + */ + public native boolean hasHost(); + /** + @brief Returns the port number included in the URL + @return the port number or @c 0 if there is no port number specified in + the URL + + @short @brief Returns the port number included in the URL + @see #setPort + @see #host + */ + public native short port(); + /** + @brief Sets the port number to include in the URL + @param _p the new port number or <code>0</code> to have no port number + @short @brief Sets the port number to include in the URL + @see #port + @see #setHost + */ + public native void setPort(short _p); + /** + @brief Returns the current decoded path + This does <b>not</b> include the query. + @return the path of the URL (without query), or @c null if no + path is set + + @short @brief Returns the current decoded path + @see #path(int) + @see #setPath + @see #hasPath + */ + public native String path(); + /** + @brief Returns the current decoded path + This does <b>not</b> include the query, see query() for accessing it. + The <code>_trailing</code> parameter allows to ensure the existance or absence of + the last (trailing) @c '/' character in the path. + If the URL has no path, then no @c '/' is added anyway. + And on the other side: if the path is just @c "/", then this character + won't be stripped. + Reason: <tt>"ftp://weis@host"</tt> means something completely different + than <tt>"ftp://weis@host/"</tt>. + So adding or stripping the '/' would really alter the URL, while + <tt>"ftp://host/path"</tt> and <tt>"ftp://host/path/"</tt> mean the same + directory. + @param _trailing May be ( @c -1, <code>0</code>, @c +1 ). @c -1 strips a trailing + @c '/', @c +1 adds a trailing @c '/' if there is none yet + and <code>0</code> returns the path unchanged + @return the path of the URL (without query), or @c null if no + path is set + + @short @brief Returns the current decoded path + @see #path + @see #setPath + @see #hasPath + @see #adjustPath + */ + public native String path(int _trailing); + /** + @brief Sets the decoded path of the URL + This does <b>not</b> changed the query, see setQuery() for that. + The <code>path</code> is considered to be decoded, i.e. characters not allowed in + path, for example @c '?' will be encoded and does not indicate the + beginning of the query part. Something that might look encoded, + like @c "%3f" will not become decoded. + @param path the new, decoded, path or <code>null</code> to remove the path + @short @brief Sets the decoded path of the URL + @see #path + @see #path(int) + @see #hasPath + */ + public native void setPath(String path); + /** + @brief Tests if this URL has a path included in it + @return @c true if there is a non-empty path + + @short @brief Tests if this URL has a path included in it + @see #path + @see #setPath + */ + public native boolean hasPath(); + /** + @brief Resolves @c "." and @c ".." components in path + Some servers seem not to like the removal of extra @c '/' + even though it is against the specification in RFC 2396. + @param cleanDirSeparator if <code>true</code>, occurrences of consecutive + directory separators (e.g. <tt>"/foo//bar"</tt>) are cleaned up as + well + @short @brief Resolves @c ". + @see #hasPath + @see #adjustPath + */ + public native void cleanPath(boolean cleanDirSeparator); + public native void cleanPath(); + /** + @brief Adds or removes a trailing slash to/from the path + The <code>_trailing</code> parameter allows to ensure the existance or absence of + the last (trailing) @c '/' character in the path. + If the URL has no path, then no @c '/' is added anyway. + And on the other side: if the path is just @c "/", then this character + won't be stripped. + Reason: <tt>"ftp://weis@host"</tt> means something completely different + than <tt>"ftp://weis@host/"</tt>. + So adding or stripping the '/' would really alter the URL, while + <tt>"ftp://host/path"</tt> and <tt>"ftp://host/path/"</tt> mean the same + directory. + @param _trailing May be ( @c -1, <code>0</code>, @c +1 ). @c -1 strips a trailing + @c '/', @c +1 adds a trailing @c '/' if there is none yet + and <code>0</code> returns the path unchanged + @short @brief Adds or removes a trailing slash to/from the path + @see #hasPath + @see #cleanPath + */ + public native void adjustPath(int _trailing); + /** + @brief Sets both path and query of the URL in their encoded form + This is useful for HTTP. It looks first for @c '?' and decodes then, + see setEncodedPath(). + The encoded path is the concatenation of the current path and the query. + @param _txt the new encoded path and encoded query + @param encoding_hint MIB of original encoding of <code>_txt</code> . + See QTextCodec.mibEnum() + @short @brief Sets both path and query of the URL in their encoded form + @see #encodedPathAndQuery + @see #setPath + @see #setQuery + */ + public native void setEncodedPathAndQuery(String _txt, int encoding_hint); + public native void setEncodedPathAndQuery(String _txt); + /** + @brief Sets the (already encoded) path of the URL + @param _txt the new encoded path + @param encoding_hint MIB of original encoding of <code>_txt</code> . + See QTextCodec.mibEnum() + @short @brief Sets the (already encoded) path of the URL + @see #setEncodedPathAndQuery + @see #setPath + */ + public native void setEncodedPath(String _txt, int encoding_hint); + public native void setEncodedPath(String _txt); + /** + @brief Returns the encoded path and the query + The <code>_trailing</code> parameter allows to ensure the existance or absence of + the last (trailing) @c '/' character in the path. + If the URL has no path, then no @c '/' is added anyway. + And on the other side: if the path is just @c "/", then this character + won't be stripped. + Reason: <tt>"ftp://weis@host"</tt> means something completely different + than <tt>"ftp://weis@host/"</tt>. + So adding or stripping the '/' would really alter the URL, while + <tt>"ftp://host/path"</tt> and <tt>"ftp://host/path/"</tt> mean the same + directory. + @param _trailing May be ( @c -1, <code>0</code>, @c +1 ). @c -1 strips a trailing + @c '/', @c +1 adds a trailing @c '/' if there is none yet + and <code>0</code> returns the path unchanged + @param _no_empty_path if set to <code>true</code> then an empty path is substituted + by @c "/" + @param encoding_hint MIB of desired encoding of URL. + See QTextCodec.mibEnum() + @return the concatenation of the encoded path , @c '?' and the + encoded query + + @short @brief Returns the encoded path and the query + @see #setEncodedPathAndQuery + @see #path + @see #query + */ + public native String encodedPathAndQuery(int _trailing, boolean _no_empty_path, int encoding_hint); + public native String encodedPathAndQuery(int _trailing, boolean _no_empty_path); + public native String encodedPathAndQuery(int _trailing); + public native String encodedPathAndQuery(); + /** + @brief Sets the encoded query of the URL + The query should start with a @c '?'. If it doesn't @c '?' is prepended. + @param _txt this is considered to be encoded. This has a good reason: + the query may contain the @c '0' character + @param encoding_hint MIB of the encoding. Reserved, should be <code>0</code> . + See QTextCodec.mibEnum() + @short @brief Sets the encoded query of the URL + @see #query + */ + public native void setQuery(String _txt, int encoding_hint); + public native void setQuery(String _txt); + /** + @brief Returns the encoded query of the URL + The query may contain the @c '0' character. + If a query is present it always starts with a @c '?'. + A single @c '?' means an empty query. + An empty string means no query. + @return the encoded query or @c null if there is none + + @short @brief Returns the encoded query of the URL + @see #setQuery + */ + public native String query(); + /** + @brief Returns the encoded reference of the URL + The reference is <b>never</b> decoded automatically. + @return the undecoded reference, or @c null if there is none + + @short @brief Returns the encoded reference of the URL + @see #setRef + @see #hasRef + @see #htmlRef + */ + public native String ref(); + /** + @brief Sets the encoded reference part (everything after @c '#') + This is considered to be encoded, i.e. characters that are not allowed + as part of the reference will <b>not</b> be encoded. + @param _txt the encoded reference or <code>null</code> to remove it + @short @brief Sets the encoded reference part (everything after @c '#') + @see #ref + @see #hasRef + */ + public native void setRef(String _txt); + /** + @brief Tests if the URL has a reference part + @return @c true if the URL has a reference part. In a URL like + <tt>"http://www.kde.org/kdebase.tar#tar:/README"</tt> it would + return @c true as well + + @short @brief Tests if the URL has a reference part + @see #ref + @see #setRef + */ + public native boolean hasRef(); + /** + @brief Returns decoded the HTML-style reference + (the part of the URL after @c '#') + @return the HTML-style reference + + @short @brief Returns decoded the HTML-style reference (the part of the URL after @c '#') + @see #encodedHtmlRef + @see #setHTMLRef + @see #hasHTMLRef + @see #split + @see #hasSubURL + @see #ref + */ + public native String htmlRef(); + /** + @brief Returns the encoded HTML-style reference + (the part of the URL after @c '#') + @return the HTML-style reference in its original, encoded, form + + @short @brief Returns the encoded HTML-style reference (the part of the URL after @c '#') + @see #htmlRef + @see #setHTMLRef + @see #hasHTMLRef + */ + public native String encodedHtmlRef(); + /** + @brief Sets the decoded HTML-style reference + @param _ref the new reference. This is considered to be <b>not</b> encoded in + contrast to setRef(). Use <code>null</code> to remove it + @short @brief Sets the decoded HTML-style reference + @see #htmlRef + @see #hasHTMLRef + */ + public native void setHTMLRef(String _ref); + /** + @brief Tests if there is an HTML-style reference + @return @c true if the URL has an HTML-style reference + + @short @brief Tests if there is an HTML-style reference + @see #htmlRef + @see #encodedHtmlRef + @see #setHTMLRef + @see #hasRef + */ + public native boolean hasHTMLRef(); + /** + @brief Tests if the URL is well formed + @return @c false if the URL is malformed. This function does @em not test + whether sub URLs are well-formed as well + + @short @brief Tests if the URL is well formed + */ + public native boolean isValid(); + /** + @brief Tests if the file is local + @return @c true if the file is a plain local file and has no filter + protocols attached to it + + @short @brief Tests if the file is local + */ + public native boolean isLocalFile(); + /** + @brief Adds file encoding information + Adds encoding information to the URL by adding a @c "charset" parameter. + If there is already a charset parameter, it will be replaced. + @param encoding the encoding to add or <code>null</code> to remove the + encoding + @short @brief Adds file encoding information + @see #fileEncoding + @see org.kde.qt.QTextCodec#codecForName + */ + public native void setFileEncoding(String encoding); + /** + @brief Returns encoding information of the URL + The encoding information is the content of the @c "charset" parameter. + @return an encoding suitable for QTextCodec.codecForName() + or @c null if not encoding was specified + + @short @brief Returns encoding information of the URL + */ + public native String fileEncoding(); + /** + @brief Tests if the URL has any sub URLs + See split() for examples for sub URLs. + @return @c true if the file has at least one sub URL + + @short @brief Tests if the URL has any sub URLs + @see #split + */ + public native boolean hasSubURL(); + /** + @brief Adds to the current path + Assumes that the current path is a directory. <code>_txt</code> is appended to the + current path. The function adds @c '/' if needed while concatenating. + This means it does not matter whether the current path has a trailing + @c '/' or not. If there is none, it becomes appended. If <code>_txt</code> + has a leading @c '/' then this one is stripped. + @param txt the text to add. It is considered to be decoded + @short @brief Adds to the current path + @see #setPath + @see #hasPath + */ + public native void addPath(String txt); + /** + @brief Returns the value of a certain query item + @param item item whose value we want + @return the value of the given query item name or @c null if the + specified item does not exist + + @short @brief Returns the value of a certain query item + @see #addQueryItem + @see #removeQueryItem + @see #queryItems + @see #query + */ + public native String queryItem(String item); + /** + @brief Returns the value of a certain query item + @param item item whose value we want + @param encoding_hint MIB of encoding of query. + See QTextCodec.mibEnum() + @return the value of the given query item name or @c null if the + specified item does not exist + + @short @brief Returns the value of a certain query item + @see #addQueryItem + @see #removeQueryItem + @see #queryItems + @see #query + */ + public native String queryItem(String item, int encoding_hint); + /** + @short + */ + // QMap<QString, QString> queryItems(int arg1); >>>> NOT CONVERTED + // QMap<QString, QString> queryItems(); >>>> NOT CONVERTED + /** + @brief Returns the list of query items as a map mapping keys to values + @param options any of QueryItemsOptions <em>OR</em>ed together + @param encoding_hint MIB of encoding of query. + See QTextCodec.mibEnum() + @return the map of query items or the empty map if the URL has no + query items + + @short @brief Returns the list of query items as a map mapping keys to values + @see #queryItem + @see #addQueryItem + @see #removeQueryItem + @see #query + */ + // QMap<QString, QString> queryItems(int arg1,int arg2); >>>> NOT CONVERTED + /** + @brief Adds an additional query item + To replace an existing query item, the item should first be + removed with removeQueryItem() + @param _item name of item to add + @param _value value of item to add + @param encoding_hint MIB of encoding to use for _value. + See QTextCodec.mibEnum() + @short @brief Adds an additional query item + @see #queryItem + @see #queryItems + @see #query + */ + public native void addQueryItem(String _item, String _value, int encoding_hint); + public native void addQueryItem(String _item, String _value); + /** + @brief Removea an item from the query + @param _item name of item to remove + @short @brief Removea an item from the query + @see #addQueryItem + @see #queryItem + @see #queryItems + @see #query + */ + public native void removeQueryItem(String _item); + /** + @brief Sets the filename of the path + In comparison to addPath() this function does not assume that the current + path is a directory. This is only assumed if the current path ends + with @c '/'. + If the current path ends with @c '/' then <code>_txt</code> is just appended, + otherwise all text behind the last @c '/' in the current path is erased + and <code>_txt</code> is appended then. It does not matter whether <code>_txt</code> starts + with @c '/' or not. + Any reference is reset. + @param _txt the filename to be set. It is considered to be decoded + @short @brief Sets the filename of the path + @see #fileName + @see #setDirectory + @see #setPath + */ + public native void setFileName(String _txt); + /** + @brief Returns the filename of the path + <code>_ignore_trailing_slash_in_path</code> tells whether a trailing @c '/' should + be ignored. This means that the function would return @c "torben" for + <tt>"file:///hallo/torben/"</tt> and <tt>"file:///hallo/torben"</tt>. + @param _ignore_trailing_slash_in_path if set to <code>false</code>, then everything + behind the last @c '/' is considered to be the filename + @return the filename of the current path. The returned string is decoded. + @c null if there is no file (and thus no path) + + @short @brief Returns the filename of the path + @see #setFileName + @see #directory + @see #path + */ + public native String fileName(boolean _ignore_trailing_slash_in_path); + public native String fileName(); + /** + @brief Returns the directory of the path + The directory is everything between the last and the second last @c '/' + is returned. For example <tt>"file:///hallo/torben/"</tt> would return + <tt>"/hallo/torben/"</tt> while <tt>"file:///hallo/torben"</tt> would + return <tt>"hallo/"</tt>. + <code>_ignore_trailing_slash_in_path</code> tells whether a trailing @c '/' should + be ignored. This means that the function would return @c "/hallo" + (or @c "/hallo" depending on <code>_strip_trailing_slash_from_result</code>) for + <tt>"file:///hallo/torben/"</tt> and <tt>"file:///hallo/torben"</tt>. + @param _strip_trailing_slash_from_result tells whether the returned result + should end with @c '/' or not. If the path is empty or just @c "/" + then this flag has no effect + @param _ignore_trailing_slash_in_path if set to <code>false</code>, then everything + behind the last @c '/' is considered to be the filename + @return the directory part of the current path or @c null when + there is no path. The returned string is decoded + + @short @brief Returns the directory of the path + @see #setDirectory + @see #fileName + @see #path + */ + public native String directory(boolean _strip_trailing_slash_from_result, boolean _ignore_trailing_slash_in_path); + public native String directory(boolean _strip_trailing_slash_from_result); + public native String directory(); + /** + @brief Sets the directory of the path, leaving the filename empty + @param dir the decoded directory to set + @short @brief Sets the directory of the path, leaving the filename empty + @see #directory + @see #setFileName + @see #setPath + */ + public native void setDirectory(String dir); + /** + @brief Changes the directory by descending into the given directory + It is assumed the current URL represents a directory. + If <code>_dir</code> starts with a @c '/' the current URL will be + <tt>"protocol://host/dir"</tt> otherwise <code>_dir</code> will be appended to the + path. <code>_dir</code> can be @c ".." + This function won't strip protocols. That means that when you are in + <tt>"file:///dir/dir2/my.tgz#tar:/"</tt> and you do <tt>cd("..")</tt> you + will still be in <tt>"file:///dir/dir2/my.tgz#tar:/"</tt> + @param _dir the directory to change to + @return @c true if successful + + @short @brief Changes the directory by descending into the given directory + @see #directory + @see #path + */ + public native boolean cd(String _dir); + /** + @brief Returns the URL as string, with all escape sequences intact, + encoded in a given charset + This is used in particular for encoding URLs in UTF-8 before using them + in a drag and drop operation. + @note that the string returned by url() will include the password of the + URL. If you want to show the URL to the user, use prettyURL(). + The <code>_trailing</code> parameter allows to ensure the existance or absence of + the last (trailing) @c '/' character in the path. + If the URL has no path, then no @c '/' is added anyway. + And on the other side: if the path is just @c "/", then this character + won't be stripped. + Reason: <tt>"ftp://weis@host"</tt> means something completely different + than <tt>"ftp://weis@host/"</tt>. + So adding or stripping the '/' would really alter the URL, while + <tt>"ftp://host/path"</tt> and <tt>"ftp://host/path/"</tt> mean the same + directory. + @param _trailing May be ( @c -1, <code>0</code>, @c +1 ). @c -1 strips a trailing + @c '/', @c +1 adds a trailing @c '/' if there is none yet + and <code>0</code> returns the path unchanged + @param encoding_hint MIB of encoding to use. + See QTextCodec.mibEnum() + @return the complete URL, with all escape sequences intact, encoded + in a given charset + + @short @brief Returns the URL as string, with all escape sequences intact, encoded in a given charset + @see #prettyURL + @see #pathOrURL + @see #htmlURL + */ + public native String url(int _trailing, int encoding_hint); + public native String url(int _trailing); + public native String url(); + /** + @brief Returns the URL as string in human-friendly format + Example: + @code + http://localhost:8080/test.cgi?test=hello world&name=fred + @endcode + Does <b>not</b> contain the password if the URL has one, use url() if you + need to have it in the string. + The <code>_trailing</code> parameter allows to ensure the existance or absence of + the last (trailing) @c '/' character in the path. + If the URL has no path, then no @c '/' is added anyway. + And on the other side: if the path is just @c "/", then this character + won't be stripped. + Reason: <tt>"ftp://weis@host"</tt> means something completely different + than <tt>"ftp://weis@host/"</tt>. + So adding or stripping the '/' would really alter the URL, while + <tt>"ftp://host/path"</tt> and <tt>"ftp://host/path/"</tt> mean the same + directory. + @param _trailing May be ( @c -1, <code>0</code>, @c +1 ). @c -1 strips a trailing + @c '/', @c +1 adds a trailing @c '/' if there is none yet + and <code>0</code> returns the path unchanged + @return a human readable URL, with no non-necessary encodings/escaped + characters. Password will not be shown + + @short @brief Returns the URL as string in human-friendly format + @see #url + @see #pathOrURL + */ + public native String prettyURL(int _trailing); + public native String prettyURL(); + /** + @brief Returns the URL as string in human-friendly format + Example: + @code + http://localhost:8080/test.cgi?test=hello world&name=fred + @endcode + Does <b>not</b> contain the password if the URL has one, use url() if you + need to have it in the string. + The <code>_trailing</code> parameter allows to ensure the existance or absence of + the last (trailing) @c '/' character in the path. + If the URL has no path, then no @c '/' is added anyway. + And on the other side: if the path is just @c "/", then this character + won't be stripped. + Reason: <tt>"ftp://weis@host"</tt> means something completely different + than <tt>"ftp://weis@host/"</tt>. + So adding or stripping the '/' would really alter the URL, while + <tt>"ftp://host/path"</tt> and <tt>"ftp://host/path/"</tt> mean the same + directory. + @param _trailing May be ( @c -1, <code>0</code>, @c +1 ). @c -1 strips a trailing + @c '/', @c +1 adds a trailing @c '/' if there is none yet + and <code>0</code> returns the path unchanged + @param _flags if StripFileProtocol, @c "file://" will be stripped. + The use of this method is now discouraged, better use pathOrURL(). + @return a human readable URL, with no non-necessary encodings/escaped + characters. Password will not be shown + + @short @brief Returns the URL as string in human-friendly format Example: @code http://localhost:8080/test. + @see #prettyURL + @see #url + @see #pathOrURL + */ + public native String prettyURL(int _trailing, int _flags); + /** + @brief Returns the URL as a string depending if it is a local file + It will be either the URL (as prettyURL() would return) or, when the URL + is a local file without query or ref, the path(). + Use this method, together with its opposite, fromPathOrURL(), + to display and even let the user edit URLs. + @return the path or URL string depending on its properties + + @short @brief Returns the URL as a string depending if it is a local file + @see #prettyURL + @see #path + @see #url + @see #isLocalFile + */ + public native String pathOrURL(); + /** + @brief Returns the URL as string, escaped for HTML + @return a human readable URL, with no non-necessary encodings/escaped + characters which is HTML encoded for safe inclusion in HTML or + rich text. Password will not be shown. + + @short @brief Returns the URL as string, escaped for HTML + @see #prettyURL + @see #url + @see #pathOrURL + */ + public native String htmlURL(); + /** + @brief Tests if the KURL is empty + An empty URL has neither path nor protocol set. + @return @c true if the URL is empty + + @short @brief Tests if the KURL is empty + @see #hasPath + @see #protocol + @see #isValid + */ + public native boolean isEmpty(); + /** + @brief Returns the URL that is the best possible candidate for on level + higher in the path hierachy + This function is useful to implement the "Up" button in a file manager for + example. + cd() never strips a sub-protocol. That means that if you are in + <tt>"file:///home/x.tgz#gzip:/#tar:/"</tt> and hit the up button you + expect to see <tt>"file:///home"</tt>. The algorithm tries to go up on the + right-most URL. If that is not possible it strips the right most URL. It + continues stripping URLs until it can go up. + @return a URL that is a level higher + + @short @brief Returns the URL that is the best possible candidate for on level higher in the path hierachy + @see #cd + @see #split + @see #hasSubURL + @see #path + */ + public native KURL upURL(); + /** + @brief Tests if this URL is less than the given URL + The current URL is consideres <tt>"less than"</tt> then <code>_u</code> if + (tested in this order): + - it is not valid but <code>_u</code> is. See isValid() + - its protocol is "less than" <code>_u</code>'s protocol. See protocol() + - its host is "less than" <code>_u</code>'s host. See host() + - its port is "less than" <code>_u</code>'s port. See port() + - its path is "less than" <code>_u</code>'s path. See path() + - its encoded query is "less than" <code>_u</code>'s encoded query. See query() + - its endoded reference is "less than" <code>_u</code>'s encoded reference. + See ref() + - its username is "less than" <code>_u</code>'s username. See user() + - its password is "less than" <code>_u</code>'s password. See pass() + Examples: + @code + KURL url1; + KURL url2; + boolean lessThan = url1 < url2; // false. Both invalid, no protocols + url2.setProtocol( null ); + lessThan = url1 < url2; // true. url2 is valid because of setProtocol() + url1.setProtocol( null ); + lessThan = url1 < url2; // false. Both valid and everything empty + url1.setProtocol( "http" ); + url2.setProtocol( "https" ); + lessThan = url1 < url2; // true. "http" < "https" + url2.setHost( "api.kde.org" ); + url2.setProtocol( "http" ); + url2.setProtocol( "www.kde.org" ); + lessThan = url1 < url2; // true. protocols equal and "api" < "www" + url1.setProtocol( "https" ); + url2.setProtocol( "http" ); + lessThan = url1 < url2; // false. "https" > "http". host doesn't matter yet + @endcode + @param _u the URL to compare to + @return @c true if the URL is less than <code>_u.</code> Otherwise @c false + (equal or greater than) + + @short @brief Tests if this URL is less than the given URL + @see #operator== + */ + public native boolean op_lt(KURL _u); + /** + @brief Tests if this URL is equal to the given one + Tests each member for equality unless one of the URLs is invalid + in which case they are not considered equal (even if both are invalid). + Same as equals() when used with <code>ignore_trailing</code> set to + <code>false</code> (default) + @param _u the URL to compare to + @return @c true if equal and neither this URL nor <code>_u</code> is malformed. + Otherwise @c false + + @short @brief Tests if this URL is equal to the given one + @see #equals + @see #isValid + @see #operator!= + @see #operator< + */ + public native boolean op_equals(KURL _u); + /** + @brief Tests if this URL is equal to the one given as a string + Creates a KURL instance for <code>_u</code> and compares with that using + the equality operator for two KURLs. + See the respective constructor for known limitations. + @param _u the string to compare to + @return @c true if equal and neither this URL nor <code>_u</code> is malformed. + Otherwise @c false + + @short @brief Tests if this URL is equal to the one given as a string + @see KURL(const + @see #int) + @see #operator==(const + @see KURL + @see #equals + @see #isValid + @see #operator!= + @see #operator< + */ + public native boolean op_equals(String _u); + /** + @brief Tests if this URL is different from the given one + Tests by negating the result of operator==() + @param _u the URL to compare to + @return the negated result of operator==() + + @short @brief Tests if this URL is different from the given one + @see #operator== + @see #operator< + */ + public native boolean op_not_equals(KURL _u); + /** + @brief Tests if this URL is different from the one given as a string + Tests by negating the result of operator==(String) + @param _u the URL to compare to + @return the negated result of operator==(String) + + @short @brief Tests if this URL is different from the one given as a string + @see #operator==(const + @see #operator< + */ + public native boolean op_not_equals(String _u); + /** + @brief Compares this URL with another one + @param u the URL to compare this one with + @param ignore_trailing set to <code>true</code> to ignore trailing @c '/' characters + @return @c true if both urls are the same + + @short @brief Compares this URL with another one + @see #operator==# + @see This + @see #function + @see #should + @see #be + @see #used + @see #if + @see #you + @see #want + @see #to + @see #ignore + @see #trailing + @see @c + @see #characters + */ + public native boolean equals(KURL u, boolean ignore_trailing); + public native boolean equals(KURL u); + /** + @brief Tests if the given URL is parent of this URL + For instance, <tt>"ftp://host/dir/"</tt> is a parent of + <tt>"ftp://host/dir/subdir/subsubdir/"</tt>. + @return @c true if this URL is a parent of <code>u</code> (or the same URL as <code>u</code>) + + @short @brief Tests if the given URL is parent of this URL + @see #equals + @see #cd + */ + public native boolean isParentOf(KURL u); + /** + @brief Splits nested URLs into a list of URLs + Example for a nested URL: + @code + file:///home/weis/kde.tgz#gzip:/#tar:/kdebase + @endcode + A URL like <tt>"http://www.kde.org#tar:/kde/README.hml#ref1"</tt> will be + split in <tt>"http://www.kde.org#ref1"</tt> and + <tt>"tar:/kde/README.html#ref1"</tt>. + That means in turn that @c "#ref1" is an HTML-style reference and not a + new sub URL. Since HTML-style references mark a certain position in a + document this reference is appended to every URL. + The idea behind this is that browsers, for example, only look at the first + URL while the rest is not of interest to them. + @param _url the URL that has to be split + @return an empty list on error or the list of split URLs + + @short @brief Splits nested URLs into a list of URLs + @see #hasSubURL + @see KURL(const + @see #int) + @see #join + */ + public static native ArrayList split(String _url); + /** + @brief Splits nested URLs into a list of URLs + Example for a nested URL: + @code + file:///home/weis/kde.tgz#gzip:/#tar:/kdebase + @endcode + A URL like <tt>"http://www.kde.org#tar:/kde/README.hml#ref1"</tt> will be + split in <tt>"http://www.kde.org#ref1"</tt> and + <tt>"tar:/kde/README.html#ref1"</tt>. + That means in turn that @c "#ref1" is an HTML-style reference and not a + new sub URL. Since HTML-style references mark a certain position in a + document this reference is appended to every URL. + The idea behind this is that browsers, for example, only look at the first + URL while the rest is not of interest to them. + @param _url the URL that has to be split + @return an empty list on error or the list of split URLs + + @short @brief Splits nested URLs into a list of URLs + @see #hasSubURL + @see #join + */ + public static native ArrayList split(KURL _url); + /** + @brief Joins a list of URLs into a single URL with sub URLs + Reverses split(). Only the first URL may have a reference. This reference + is considered to be HTML-like and is appended at the end of the resulting + joined URL. + @param _list the list to join + @return the joined URL or an invalid URL if the list is empty + + @short @brief Joins a list of URLs into a single URL with sub URLs + @see #split + */ + public static native KURL join(ArrayList _list); + /** + @brief Creates a KURL object from a String representing either an + absolute path or a real URL + Use this method instead of + @code + String someDir = ... + KURL url = someDir; + @endcode + Otherwise some characters (e.g. the '#') won't be encoded properly. + @param text the string representation of the URL to convert + @return the new KURL + + @short @brief Creates a KURL object from a String representing either an absolute path or a real URL + @see #pathOrURL + @see KURL(const + @see #int) + */ + public static native KURL fromPathOrURL(String text); + /** + @brief Encodes a string for use in URLs + Convenience function. + Convert unicoded string to local encoding and use %%-style + encoding for all common delimiters / non-ascii characters. + @param str the string to encode (can be <code>null</code>) + @param encoding_hint MIB of encoding to use. + See QTextCodec.mibEnum() + @return the encoded string + + @short @brief Encodes a string for use in URLs + @see #encode_string_no_slash + @see #decode_string + */ + public static native String encode_string(String str, int encoding_hint); + public static native String encode_string(String str); + /** + @brief Encodes a string for use in URLs + Convenience function. + Convert unicoded string to local encoding and use %%-style + encoding for all common delimiters and non-ascii characters + as well as the slash @c '/'. + @param str the string to encode (can be <code>null</code>) + @param encoding_hint MIB of encoding to use. + See QTextCodec.mibEnum() + @short @brief Encodes a string for use in URLs + @see #encode_string + @see #decode_string + */ + public static native String encode_string_no_slash(String str, int encoding_hint); + public static native String encode_string_no_slash(String str); + /** + @brief Decodes a string as used in URLs + Convenience function. + Decode %-style encoding and convert from local encoding to unicode. + Reverse of encode_string() + @param str the string to decode (can be <code>null</code>) + @param encoding_hint MIB of original encoding of <code>str</code> . + See QTextCodec.mibEnum() + @return the decoded string + + @short @brief Decodes a string as used in URLs + @see #encode_string + @see #encode_string_no_slash + */ + public static native String decode_string(String str, int encoding_hint); + public static native String decode_string(String str); + /** + @brief Tests if a given URL is a relative as opposed to an absolute URL + Convenience function. + Returns whether <code>_url</code> is likely to be a "relative" URL instead of + an "absolute" URL. + @param _url the URL to examine + @return @c true when the URL is likely to be "relative", + @c false otherwise + + @short @brief Tests if a given URL is a relative as opposed to an absolute URL + @see #relativeURL + */ + public static native boolean isRelativeURL(String _url); + /** + @brief Creates an URL relative to a base URL for a given input URL + Convenience function + Returns a "relative URL" based on <code>base_url</code> that points to <code>url.</code> + If no "relative URL" can be created, e.g. because the protocol + and/or hostname differ between <code>base_url</code> and <code>url</code> an absolute + URL is returned. + @note if <code>base_url</code> represents a directory, it should contain + a trailing slash + @param base_url the URL to derive from + @param url the URL to point to relatively from <code>base_url</code> + @param encoding_hint MIB of original encoding of <code>str</code> . + See QTextCodec.mibEnum() + @short @brief Creates an URL relative to a base URL for a given input URL + @see #isRelativeURL + @see #relativePath + @see #adjustPath + */ + public static native String relativeURL(KURL base_url, KURL url, int encoding_hint); + public static native String relativeURL(KURL base_url, KURL url); + /** + @brief Creates a path relative to a base path for a given input path + Convenience function + Returns a relative path based on <code>base_dir</code> that points to <code>path.</code> + @param base_dir the base directory to derive from + @param path the new target directory + @param isParent an optional pointer to a booleanean which, if provided, will + be set to reflect whether <code>path</code> has <code>base_dir</code> as a parent dir + @short @brief Creates a path relative to a base path for a given input path + @see #relativeURL + */ + public static native String relativePath(String base_dir, String path, boolean[] isParent); + public static native String relativePath(String base_dir, String path); + /** + @brief Determines which URI mode is suitable for processing URIs of a + given protocol + @param protocol the protocol name. See protocol() + @return the URIMode suitable for the given protocol + + @short @brief Determines which URI mode is suitable for processing URIs of a given protocol + @see #uriMode + */ + public static native int uriModeForProtocol(String protocol); + /** + @brief Resets the members to their "null" state + All String members get reset to <code>null</code>, the port to <code>0</code> + the URIMode to <code>Auto</code> and the URL becomes invalid. + This is like assigning a null URL, but more efficient as it doesn't + require the temporary object. + Called by constructors, assignment operators and the parse methods in case + of a parsing error. + @short @brief Resets the members to their "null" state + @see #isValid + @see #isEmpty + */ + protected native void reset(); + /** + @brief Parses the given string and fills the URL's values on success + Treats the string as an URL. + @param _url the string to parse + @param encoding_hint MIB of original encoding of <code>str</code> . + See QTextCodec.mibEnum() + @short @brief Parses the given string and fills the URL's values on success + */ + protected native void parseURL(String _url, int encoding_hint); + protected native void parseURL(String _url); + /** + @brief Parses the given string and fills the URL's values on success + Treats the string as a generic URI. + @param _url the string to parse + @param encoding_hint MIB of original encoding of <code>str</code> . + See QTextCodec.mibEnum() + @short @brief Parses the given string and fills the URL's values on success + */ + protected native void parseRawURI(String _url, int encoding_hint); + protected native void parseRawURI(String _url); + /** + @brief Parses the given string and fills the URL's values on success + Treats the string as a @c "mailto:" URI. + @param _url the string to parse + @param encoding_hint MIB of original encoding of <code>str</code> . + See QTextCodec.mibEnum() + @short @brief Parses the given string and fills the URL's values on success + */ + protected native void parseMailto(String _url, int encoding_hint); + protected native void parseMailto(String _url); + /** + @brief Parses the given string and fills the URL's values on success + @param _url the string to parse + @param encoding_hint MIB of original encoding of <code>str</code> . + See QTextCodec.mibEnum() + @short @brief Parses the given string and fills the URL's values on success + */ + protected native void parse(String _url, int encoding_hint); + protected native void parse(String _url); + /** Deletes the wrapped C++ instance */ + protected native void finalize() throws InternalError; + /** Delete the wrapped C++ instance ahead of finalize() */ + public native void dispose(); + /** Has the wrapped C++ instance been deleted? */ + public native boolean isDisposed(); +} |