-Subproject commit 5bd0d7387712ce3f53869294761ac4d8537841cd
+Subproject commit 4f315c7e06f6eef48df246be0ee9252fdfccdf00
--- /dev/null
+<?xml version="1.0" encoding="utf-8"?>
+<menu xmlns:android="http://schemas.android.com/apk/res/android" >
+ <item
+ android:id="@+id/actionbar_select_all"
+ android:icon="@android:drawable/checkbox_off_background"
+ android:orderInCategory="1"
+ android:showAsAction="always"
+ android:title="actionbar_select_all"/>
+
+
+</menu>
<string name="actionbar_settings">Indstillinger</string>
<string name="actionbar_see_details">Detaljer</string>
<string name="actionbar_send_file">Send</string>
+ <string name="actionbar_sort">Sortér</string>
+ <string name="actionbar_sort_title">Sortér efter</string>
+ <string-array name="actionbar_sortby">
+ <item>A-Å</item>
+ <item>Nyeste - ældste</item>
+ </string-array>
<!--TODO re-enable when server-side folder size calculation is available
<item>Biggest - Smallest</item>-->
<string name="prefs_category_general">Generel</string>
<string name="actionbar_settings">Settings</string>
<string name="actionbar_see_details">Details</string>
<string name="actionbar_send_file">Send</string>
+ <string name="actionbar_sort">Sort</string>
+ <string name="actionbar_sort_title">Sort by</string>
+ <string-array name="actionbar_sortby">
+ <item>A-Z</item>
+ <item>Newest - Oldest</item>
+ </string-array>
<!--TODO re-enable when server-side folder size calculation is available
<item>Biggest - Smallest</item>-->
<string name="prefs_category_general">General</string>
<string name="actionbar_settings">Configuración</string>
<string name="actionbar_see_details">Detalles</string>
<string name="actionbar_send_file">Enviar</string>
+ <string name="actionbar_sort">Ordenar</string>
+ <string name="actionbar_sort_title">Ordenar por</string>
+ <string-array name="actionbar_sortby">
+ <item>A-Z</item>
+ <item>Más nuevo - Más viejo</item>
+ </string-array>
<!--TODO re-enable when server-side folder size calculation is available
<item>Biggest - Smallest</item>-->
<string name="prefs_category_general">General</string>
<string name="actionbar_settings">Ezarpenak</string>
<string name="actionbar_see_details">Xehetasunak</string>
<string name="actionbar_send_file">Bidali</string>
+ <string name="actionbar_sort">Ordenatu</string>
+ <string-array name="actionbar_sortby">
+ <item>A-Z</item>
+ <item>Berrienak - Zaharrenak</item>
+ </string-array>
<!--TODO re-enable when server-side folder size calculation is available
<item>Biggest - Smallest</item>-->
<string name="prefs_category_general">Orokorra</string>
<string name="preview_image_description">Irudi aurreikuspena</string>
<string name="preview_image_error_unknown_format">Ezin da irudi hau erakutsi</string>
<string name="error__upload__local_file_not_copied">%1$s ezin da %2$s karpeta lokalera kopiatu</string>
+ <string name="prefs_instant_upload_path_title">Igotzetarako Bidea</string>
<string name="share_link_no_support_share_api">Sentitzen dut, partekatzea ez dago zure zerbitzarian gaituta. Mesedez jarri harremanetan zure administratzailearekin.</string>
<string name="share_link_file_error">Errore bat egon da fitxategaia edo karpeta partekatzerakoan</string>
<string name="unshare_link_file_error">Errore bat egon da fitxategaia edo karpeta partekatzeari uzterakoan</string>
<string name="downloader_download_file_not_found">Fitxategia jadanik ez dago eskuragarri zerbitzarian</string>
<string name="prefs_category_accounts">Kontuak</string>
<string name="prefs_add_account">Gehitu kontua</string>
+ <string name="log_mail_subject">ownCloud Android programaren egunerokoak</string>
+ <string name="log_progress_dialog_text">Datuak kargatzen...</string>
<string name="saml_authentication_required_text">Autentikazioa beharrezkoa</string>
<string name="saml_authentication_wrong_pass">Pasahitz okerra</string>
+ <string name="actionbar_move">Mugitu</string>
<string name="move_choose_button_text">Aukeratu</string>
+ <string name="prefs_category_instant_uploading">Berehalako Igoerak</string>
<string name="prefs_category_security">Segurtasuna</string>
</resources>
<string name="about_version">version %1$s</string>
<string name="actionbar_sync">Actualiser le compte</string>
<string name="actionbar_upload">Téléverser</string>
- <string name="actionbar_upload_from_apps">Contenu d\'une autre application</string>
+ <string name="actionbar_upload_from_apps">Contenu d\'autres applications</string>
<string name="actionbar_upload_files">Fichiers</string>
<string name="actionbar_open_with">Ouvrir avec</string>
<string name="actionbar_mkdir">Nouveau dossier</string>
<string name="auth_wrong_connection_title">Impossible d\'établir la connexion</string>
<string name="auth_secure_connection">Connexion sécurisée établie</string>
<string name="auth_unauthorized">Nom d\'utilisateur ou mot de passe incorrect</string>
- <string name="auth_oauth_error">Echec d\'autorisation</string>
+ <string name="auth_oauth_error">Échec d\'autorisation</string>
<string name="auth_oauth_error_access_denied">Accès refusé par le serveur d\'autorisation</string>
<string name="auth_wtf_reenter_URL">État inattendu ; veuillez entrer à nouveau l\'URL du serveur</string>
<string name="auth_expired_oauth_token_toast">Votre autorisation a expiré. Merci de vous authentifier à nouveau</string>
<string name="actionbar_settings">Pengaturan</string>
<string name="actionbar_see_details">Rincian</string>
<string name="actionbar_send_file">Kirim</string>
+ <string name="actionbar_sort">Urutkan</string>
+ <string name="actionbar_sort_title">Urutan</string>
+ <string-array name="actionbar_sortby">
+ <item>A-Z</item>
+ <item>Terbaru - Terlawas</item>
+ </string-array>
<!--TODO re-enable when server-side folder size calculation is available
<item>Biggest - Smallest</item>-->
<string name="prefs_category_general">Umum</string>
<string name="uploader_upload_succeeded_content_single">%1$s berhasil diunggah</string>
<string name="uploader_upload_failed_ticker">Gagal mengunggah</string>
<string name="uploader_upload_failed_content_single">Unggah %1$s tidak selesai</string>
+ <string name="uploader_upload_failed_credentials_error">Unggah gagal, Anda perlu masuk ulang</string>
<string name="downloader_download_in_progress_ticker">Mengunduh...</string>
<string name="downloader_download_in_progress_content">%1$d%% Mengunduh %2$s</string>
<string name="downloader_download_succeeded_ticker">Berhasil mengunduh</string>
<string name="auth_connecting_auth_server">Menyambungkan ke server otentikasi...</string>
<string name="auth_unsupported_auth_method">Server tidak mendukung medote otentikasi ini</string>
<string name="auth_unsupported_multiaccount">%1$s tidak mendukung banyak akun </string>
+ <string name="auth_fail_get_user_name">Server Anda tidak membalas id pengguna dengan banar, Sialakn hubungi Administrator
+ </string>
<string name="auth_can_not_auth_against_server">Tidak dapat mengotentikasi pada server ini</string>
<string name="fd_keep_in_sync">Biarkan berkas tetap terbaru</string>
<string name="common_rename">Ubah nama</string>
<string name="conflict_dont_upload">Jangan mengunggah</string>
<string name="preview_image_description">Pratilik gambar</string>
<string name="preview_image_error_unknown_format">Gambar ini tidak dapat ditampilkan</string>
+ <string name="error__upload__local_file_not_copied">%1$s tidak dapat disalin ke folder lokal %2$s</string>
+ <string name="prefs_instant_upload_path_title">Jalur Lokasi Unggah</string>
+ <string name="share_link_no_support_share_api">Maaf, berbagi tidak diaktifkan pada server Anda. Silakan hubungi
+ administrator Anda.</string>
+ <string name="share_link_file_no_exist">Tidak dapat berbagi. Mohon periksa apakah berkas ada</string>
+ <string name="share_link_file_error">Terjadi kesalahan saat mencoba membagikan berkas atau folder ini</string>
+ <string name="unshare_link_file_no_exist">Tidak dapat menghapus berbagi. Mohon periksa apakah berkas ada</string>
+ <string name="unshare_link_file_error">Terjadi kesalahan saat mencoba menghapus berbagi berkas dan folder ini</string>
<string name="activity_chooser_send_file_title">Kirim</string>
+ <string name="copy_link">Salin tautan</string>
<string name="clipboard_text_copied">Disalin ke papan klip</string>
+ <string name="error_cant_bind_to_operations_service">Kesalahan fatal: tidak dapat melakukan operasi</string>
+ <string name="network_error_socket_exception">Terjadi kesalahan saat menghubungkan dengan server.</string>
+ <string name="network_error_socket_timeout_exception">Terjadi kesalahan saat menunggu balasan server, operasi tidak dapat diselesaikan</string>
+ <string name="network_error_connect_timeout_exception">Terjadi kesalahan saat menunggu balasan server, operasi tidak dapat diselesaikan</string>
+ <string name="network_host_not_available">Operasi tidak dapat diselesaikan, server tidak tersedia</string>
<string name="empty"></string>
+ <string name="forbidden_permissions">Anda tidak memiliki izin %s</string>
+ <string name="forbidden_permissions_rename">untuk mengubah nama berkas ini</string>
+ <string name="forbidden_permissions_delete">untuk menghapus berkas ini</string>
+ <string name="share_link_forbidden_permissions">untuk membagikan berkas ini</string>
+ <string name="unshare_link_forbidden_permissions">untuk batal membagikan berkas ini</string>
+ <string name="forbidden_permissions_create">untuk membuat berkas</string>
+ <string name="uploader_upload_forbidden_permissions">untuk mengunggah kedalam folder ini</string>
+ <string name="downloader_download_file_not_found">Berkas tidak lagi tersedia pada server</string>
<string name="prefs_category_accounts">Akun</string>
+ <string name="prefs_add_account">Tambah akun</string>
+ <string name="auth_redirect_non_secure_connection_title">Sambungan aman dialihkan ke rute yang tidak aman.</string>
+ <string name="actionbar_logger">Log</string>
+ <string name="log_send_history_button">Kirim Riwayat</string>
+ <string name="log_mail_subject">Log apl ownCloud Android</string>
+ <string name="log_progress_dialog_text">Memuat data...</string>
<string name="saml_authentication_required_text">Diperlukan otentikasi</string>
<string name="saml_authentication_wrong_pass">Sandi salah</string>
+ <string name="actionbar_move">Pindah</string>
+ <string name="file_list_empty_moving">Tdak ada apapun disini. Anda dapat menambahkan sebuah folder!</string>
<string name="move_choose_button_text">Pilih</string>
+ <string name="move_file_not_found">Tidak dapat memindahkan. Silakan periksa apakah berkas ada</string>
+ <string name="move_file_invalid_into_descendent">Tidak mungkin untuk memindahkan folder kedalam turunannya</string>
+ <string name="move_file_invalid_overwrite">Berkas sudah ada didalam folder tujuan</string>
+ <string name="move_file_error">Terjadi kesalahan saat mencoba memindahkan berkas atau folder ini</string>
+ <string name="forbidden_permissions_move">untuk memindahkan berkas ini</string>
+ <string name="prefs_category_instant_uploading">Unggah Cepat</string>
<string name="prefs_category_security">Keamanan</string>
</resources>
<string name="actionbar_settings">Impostazioni</string>
<string name="actionbar_see_details">Dettagli</string>
<string name="actionbar_send_file">Invia</string>
+ <string name="actionbar_sort">Ordina</string>
+ <string name="actionbar_sort_title">Ordina per</string>
+ <string-array name="actionbar_sortby">
+ <item>A-Z</item>
+ <item>Più recente - Più datato</item>
+ </string-array>
<!--TODO re-enable when server-side folder size calculation is available
<item>Biggest - Smallest</item>-->
<string name="prefs_category_general">Generale</string>
<string name="actionbar_send_file">送信</string>
<string name="actionbar_sort">ソート</string>
<string name="actionbar_sort_title">ソート: </string>
+ <string-array name="actionbar_sortby">
+ <item>A-Z</item>
+ <item>最新 - 最古</item>
+ </string-array>
<!--TODO re-enable when server-side folder size calculation is available
<item>Biggest - Smallest</item>-->
<string name="prefs_category_general">一般</string>
<string name="preview_image_description">イメージプレビュー</string>
<string name="preview_image_error_unknown_format">この画像は表示できません</string>
<string name="error__upload__local_file_not_copied">%1$s は、ローカルフォルダー %2$s にコピーできませんでした。</string>
+ <string name="prefs_instant_upload_path_title">アップロードパス</string>
<string name="share_link_no_support_share_api">申し訳ございません。共有がサーバー上で有効になっていません。 管理者に
ご連絡ください。</string>
<string name="share_link_file_no_exist">共有できません。ファイルがあるか確認してください。</string>
<string name="downloader_download_file_not_found">ファイルはサーバー上で利用できません</string>
<string name="prefs_category_accounts">アカウント</string>
<string name="prefs_add_account">アカウントを追加</string>
+ <string name="auth_redirect_non_secure_connection_title">暗号化接続は非暗号化接続にリダイレクトされました。</string>
<string name="actionbar_logger">ログ</string>
<string name="log_send_history_button">ログを送信</string>
<string name="log_mail_subject">ownCloud Android アプリログ</string>
<string name="move_file_invalid_overwrite">そのファイルは、宛先フォルダに既に存在しています。</string>
<string name="move_file_error">このファイルまたはフォルダーを移動する際にエラーが発生しました</string>
<string name="forbidden_permissions_move">このファイルを移動</string>
+ <string name="prefs_category_instant_uploading">自動アップロード</string>
<string name="prefs_category_security">セキュリティ</string>
</resources>
<string name="actionbar_settings">Ustawienia</string>
<string name="actionbar_see_details">Szczegóły</string>
<string name="actionbar_send_file">Wyślij</string>
+ <string name="actionbar_sort">Sortuj</string>
+ <string name="actionbar_sort_title">Sortuj według</string>
+ <string-array name="actionbar_sortby">
+ <item>A-Z</item>
+ <item>Nowsze - Starsze</item>
+ </string-array>
<!--TODO re-enable when server-side folder size calculation is available
<item>Biggest - Smallest</item>-->
<string name="prefs_category_general">Ogólne</string>
<string name="preview_image_description">Podgląd</string>
<string name="preview_image_error_unknown_format">Ten obrazek nie może zostać wyświetlony</string>
<string name="error__upload__local_file_not_copied">%1$s nie może zostać skopiowany do lokalnego folderu %2$s</string>
+ <string name="prefs_instant_upload_path_title">Katalog wysyłania </string>
<string name="share_link_no_support_share_api">Przepraszamy, ale współdzielenie nie jest włączone na Twoim serwerze. Proszę skontaktuj się z
administratorem.</string>
<string name="share_link_file_no_exist">Nie można udostępnić. Proszę sprawdzić, czy plik istnieje</string>
<string name="downloader_download_file_not_found">Ten plik nie jest już dostępny na serwerze</string>
<string name="prefs_category_accounts">Konta</string>
<string name="prefs_add_account">Dodaj konto</string>
+ <string name="auth_redirect_non_secure_connection_title">Bezpieczne połączenie jest przekierowywane przez niezabezpieczone trasy.</string>
<string name="actionbar_logger">Logi</string>
<string name="log_send_history_button">Wyślij historię</string>
+ <string name="log_mail_subject">Logi aplikacji ownCloud Android</string>
<string name="log_progress_dialog_text">Ładuję dane...</string>
<string name="saml_authentication_required_text">Wymagana autoryzacja</string>
<string name="saml_authentication_wrong_pass">Złe hasło</string>
<string name="move_file_invalid_overwrite">Plik istnieje już w folderze docelowym</string>
<string name="move_file_error">Pojawił się błąd podczas próby przeniesienia tego pliku lub folderu</string>
<string name="forbidden_permissions_move">aby przenieść ten plik</string>
+ <string name="prefs_category_instant_uploading">Automatyczne wysyłanie</string>
<string name="prefs_category_security">Bezpieczeństwo</string>
</resources>
<string name="actionbar_settings">Setări</string>
<string name="actionbar_see_details">Detalii</string>
<string name="actionbar_send_file">Expediază</string>
+ <string name="actionbar_sort">Sortare</string>
+ <string name="actionbar_sort_title">Sortare după</string>
<!--TODO re-enable when server-side folder size calculation is available
<item>Biggest - Smallest</item>-->
<string name="prefs_category_general">General</string>
<string name="uploader_upload_forbidden_permissions">pentru a încărca în acest folder</string>
<string name="downloader_download_file_not_found">Fișierul nu mai este disponibil pe server</string>
<string name="prefs_category_accounts">Conturi</string>
+ <string name="prefs_add_account">Adaugă cont</string>
+ <string name="log_progress_dialog_text">Se încarcă datele...</string>
+ <string name="saml_authentication_required_text">Autentificare necesară</string>
<string name="saml_authentication_wrong_pass">Parolă greșită</string>
+ <string name="actionbar_move">Mutare</string>
+ <string name="file_list_empty_moving">Nu este nimic aici. Poți adăuga un director!</string>
<string name="move_choose_button_text">Alege</string>
+ <string name="forbidden_permissions_move">pentru a muta acest fișier</string>
<string name="prefs_category_security">Securitate</string>
</resources>
import com.owncloud.android.ui.dialog.SamlWebViewDialog;\r
import com.owncloud.android.ui.dialog.SslUntrustedCertDialog;\r
import com.owncloud.android.ui.dialog.SslUntrustedCertDialog.OnSslUntrustedCertListener;\r
+import com.owncloud.android.utils.DisplayUtils;\r
\r
/**\r
* This Activity is used to add an ownCloud account to the App\r
\r
/// step 2 - set properties of UI elements (text, visibility, enabled...)\r
mHostUrlInput = (EditText) findViewById(R.id.hostUrlInput);\r
- mHostUrlInput.setText(mServerInfo.mBaseUrl);\r
+ // Convert IDN to Unicode\r
+ mHostUrlInput.setText(DisplayUtils.convertIdn(mServerInfo.mBaseUrl, false));\r
if (mAction != ACTION_CREATE) {\r
/// lock things that should not change\r
mHostUrlInput.setEnabled(false);\r
showRefreshButton(false);\r
\r
if (uri.length() != 0) {\r
+ // Handle internationalized domain names\r
+ uri = DisplayUtils.convertIdn(uri, true);\r
mServerStatusText = R.string.auth_testing_connection;\r
mServerStatusIcon = R.drawable.progress_small;\r
showServerStatus();\r
if (obj != null && obj instanceof LongClickableCheckBoxPreference) {
mShowContextMenu = true;
- mAccountName = obj.toString();
+ mAccountName = ((LongClickableCheckBoxPreference) obj).getKey();
Preferences.this.openContextMenu(listView);
for (Account a : accounts) {
LongClickableCheckBoxPreference accountPreference = new LongClickableCheckBoxPreference(this);
accountPreference.setKey(a.name);
- accountPreference.setTitle(a.name);
+ // Handle internationalized domain names
+ accountPreference.setTitle(DisplayUtils.convertIdn(a.name, false));
mAccountsPrefCategory.addPreference(accountPreference);
// Check the current account that is being used
import com.actionbarsherlock.app.ActionBar;
import com.actionbarsherlock.app.ActionBar.OnNavigationListener;
+import com.actionbarsherlock.internal.view.menu.ActionMenuItemView;
+import com.actionbarsherlock.view.Menu;
+import com.actionbarsherlock.view.MenuInflater;
import com.actionbarsherlock.view.MenuItem;
import com.owncloud.android.R;
import com.owncloud.android.lib.common.utils.Log_OC;
private static final String WAIT_DIALOG_TAG = "WAIT";
private static final String QUERY_TO_MOVE_DIALOG_TAG = "QUERY_TO_MOVE";
+ private boolean selectAllToggled = false;
+ private Menu menu;
@Override
public void onCreate(Bundle savedInstanceState) {
actionBar.setNavigationMode(ActionBar.NAVIGATION_MODE_LIST);
actionBar.setListNavigationCallbacks(mDirectories, this);
+
// wait dialog
if (mCurrentDialog != null) {
mCurrentDialog.dismiss();
Log_OC.d(TAG, "onCreate() end");
}
-
-
+ @Override
+ public boolean onCreateOptionsMenu(Menu menu) {
+ // Inflate the menu items for use in the action bar
+ MenuInflater inflater = getSherlock().getMenuInflater();
+ inflater.inflate(R.menu.file_select_all, menu);
+ this.menu = menu;
+ return true;
+ }
+
@Override
public boolean onOptionsItemSelected(MenuItem item) {
boolean retval = true;
}
break;
}
+ case R.id.actionbar_select_all:{
+ if(selectAllToggled){
+ toggleOffSelectAll();
+ }else{
+ toggleOnSelectAll(item);
+ }
+ break;
+ }
default:
retval = super.onOptionsItemSelected(item);
}
return retval;
}
-
+ public void toggleOffSelectAll(MenuItem item){
+ selectAllToggled = false;
+ item.setIcon(android.R.drawable.checkbox_off_background);
+ mFileListFragment.deselectAll();
+ }
+ public void toggleOffSelectAll(){
+ MenuItem item = menu.findItem(R.id.actionbar_select_all);
+ toggleOffSelectAll(item);
+ }
+ public void toggleOnSelectAll(MenuItem item){
+ selectAllToggled = true;
+ item.setIcon(android.R.drawable.checkbox_on_background);
+ mFileListFragment.selectAll();
+ }
@Override
public boolean onNavigationItemSelected(int itemPosition, long itemId) {
ActionBar actionBar = getSupportActionBar();
actionBar.setDisplayHomeAsUpEnabled(false);
}
+ toggleOffSelectAll();
}
* {@inheritDoc}
*/
@Override
- public void onDirectoryClick(File directory) {
+ public void onDirectoryClick(File directory) {
pushDirname(directory);
ActionBar actionBar = getSupportActionBar();
actionBar.setDisplayHomeAsUpEnabled(true);
+ toggleOffSelectAll();
}
package com.owncloud.android.ui.fragment;
import java.io.File;
+import java.util.ArrayList;
import android.app.Activity;
import android.os.Bundle;
Log_OC.i(TAG, "onActivityCreated() stop");
}
+ public void selectAll(){
+ int numberOfFiles = mAdapter.getCount();
+ for(int i = 0; i < numberOfFiles; i++){
+ File file = (File) mAdapter.getItem(i);
+ if (file != null) {
+ if (!file.isDirectory()) {
+ /// Click on a file
+ getListView().setItemChecked(i, true);
+ // notify the change to the container Activity
+ mContainerActivity.onFileClick(file);
+ }
+ }
+ }
+ }
+
+ public void deselectAll(){
+ mAdapter = new LocalFileListAdapter(mContainerActivity.getInitialDirectory(), getActivity());
+ setListAdapter(mAdapter);
+ }
/**
* Checks the file clicked over. Browses inside if it is a directory. Notifies the container activity in any case.
*/
@Override
public void onItemClick(AdapterView<?> l, View v, int position, long id) {
- File file = (File) mAdapter.getItem(position);
+ File file = (File) mAdapter.getItem(position);
+
if (file != null) {
/// Click on a directory
if (file.isDirectory()) {
* @return File paths to the files checked by the user.
*/
public String[] getCheckedFilePaths() {
- String [] result = null;
+ ArrayList<String> result = new ArrayList<String>();
SparseBooleanArray positions = mList.getCheckedItemPositions();
if (positions.size() > 0) {
- Log_OC.d(TAG, "Returning " + positions.size() + " selected files");
- result = new String[positions.size()];
- for (int i=0; i<positions.size(); i++) {
- result[i] = ((File) mList.getItemAtPosition(positions.keyAt(i))).getAbsolutePath();
+ for (int i = 0; i < positions.size(); i++) {
+ if (positions.get(positions.keyAt(i)) == true) {
+ result.add(((File) mList.getItemAtPosition(positions.keyAt(i))).getAbsolutePath());
+ }
}
+
+ Log_OC.d(TAG, "Returning " + result.size() + " selected files");
}
- return result;
+ return result.toArray(new String[result.size()]);
}
\r
package com.owncloud.android.utils;\r
\r
+import java.net.IDN;\r
import java.util.Arrays;\r
import java.util.Calendar;\r
import java.util.Date;\r
import java.util.HashSet;\r
import java.util.Set;\r
\r
+import android.annotation.TargetApi;\r
+import android.os.Build;\r
+\r
import com.owncloud.android.R;\r
\r
/**\r
return R.drawable.icon;\r
}\r
}\r
+ \r
+ /**\r
+ * Converts an internationalized domain name (IDN) in an URL to and from ASCII/Unicode.\r
+ * @param url the URL where the domain name should be converted\r
+ * @param toASCII if true converts from Unicode to ASCII, if false converts from ASCII to Unicode\r
+ * @return the URL containing the converted domain name\r
+ */\r
+ @TargetApi(Build.VERSION_CODES.GINGERBREAD)\r
+ public static String convertIdn(String url, boolean toASCII) {\r
+ \r
+ if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.GINGERBREAD) {\r
+ // Find host name after '//' or '@'\r
+ int hostStart = 0;\r
+ if (url.indexOf("//") != -1) {\r
+ hostStart = url.indexOf("//") + "//".length();\r
+ } else if (url.indexOf("@") != -1) {\r
+ hostStart = url.indexOf("@") + "@".length();\r
+ }\r
+ \r
+ int hostEnd = url.substring(hostStart).indexOf("/");\r
+ // Handle URL which doesn't have a path (path is implicitly '/')\r
+ hostEnd = (hostEnd == -1 ? url.length() : hostStart + hostEnd);\r
+ \r
+ String host = url.substring(hostStart, hostEnd);\r
+ host = (toASCII ? IDN.toASCII(host) : IDN.toUnicode(host));\r
+ \r
+ return url.substring(0, hostStart) + host + url.substring(hostEnd);\r
+ } else {\r
+ return url;\r
+ }\r
+ }\r
}\r
<?xml version="1.0" encoding="UTF-8"?>
<classpath>
- <classpathentry kind="src" path="src"/>
- <classpathentry kind="src" path="gen"/>
<classpathentry combineaccessrules="false" kind="src" path="/owncloud-android"/>
<classpathentry kind="con" path="com.android.ide.eclipse.adt.ANDROID_FRAMEWORK"/>
<classpathentry exported="true" kind="con" path="com.android.ide.eclipse.adt.LIBRARIES"/>
<classpathentry exported="true" kind="con" path="com.android.ide.eclipse.adt.DEPENDENCIES"/>
+ <classpathentry kind="src" path="src"/>
+ <classpathentry kind="src" path="gen"/>
<classpathentry kind="output" path="bin/classes"/>
</classpath>