From 00e7c102c2197ef91d71b61e6d57663f381b29dd Mon Sep 17 00:00:00 2001 From: Jenkins for ownCloud Date: Sun, 12 Jun 2016 01:13:58 -0400 Subject: [PATCH 01/99] [tx-robot] updated from transifex --- res/values-ar/strings.xml | 3 +++ 1 file changed, 3 insertions(+) diff --git a/res/values-ar/strings.xml b/res/values-ar/strings.xml index ccc67b1e4f32..5792934f3fbe 100644 --- a/res/values-ar/strings.xml +++ b/res/values-ar/strings.xml @@ -269,7 +269,10 @@ حسابات سجل كلمة مرور خاطئة + أنقل اختيار + الملف موجود بالفعل في المجلد الوجهة + الملف موجود بالفعل في المجلد الوجهة تفاصيل عنوان الخادم مشاركة From 932c66d4c59e0edbbbd8cbee16eca617c2314d68 Mon Sep 17 00:00:00 2001 From: Jenkins for ownCloud Date: Tue, 14 Jun 2016 01:13:59 -0400 Subject: [PATCH 02/99] [tx-robot] updated from transifex --- res/values-he/strings.xml | 32 ++++++++++++++++++++++++++++++++ 1 file changed, 32 insertions(+) diff --git a/res/values-he/strings.xml b/res/values-he/strings.xml index 5242faf9039f..b00d7750bf83 100644 --- a/res/values-he/strings.xml +++ b/res/values-he/strings.xml @@ -63,11 +63,19 @@ לא מוגדרים חשבונות %1$s במכשיר שלך. יש להגדיר חשבות תחילה. הגדרות יציאה + אין קובץ להעלאה + %1$s לא ניתן להעלות מחרוזת טקסט כקובץ. + מידע שהתקבל אינו מכיל כל קובץ חוקי. + קובץ לא ניתן להעלאה + ל- %1$s אסור לקרוא קובץ מתקבל + הקובץ להעלאה לא נמצא במיקום שלו. יש לבדוק אם הקובץ קיים. + שגיאה אירעה בזמן העתקת הקובץ לתיקייה הזמנית. יש לנסות לשלוח שוב. שניות אין כאן שום דבר. אולי ברצונך להעלות משהו? בטעינה … לא נמצא יישום עבור סוג זה! אין קבצים בתיקייה זו: + אין העלאות זמינות. תקיה תקיות קובץ @@ -85,12 +93,15 @@ כן לא אישור + הסרת העלאה + נסיון נוסף להעלאה ביטול סנכרון ביטול אחורה שמירה ויציאה שגיאה בטעינה … + לא ידוע שגיאה בלתי ידועה על אודות שינוי ססמה @@ -107,13 +118,22 @@ העלאה נכשלה, יש להתחבר מחדש העלאות נוכחי + נכשל (יש להקיש לניסיון נוסף) הועלה הושלם + בוטל + מושהה + שגיאת חיבור + העלאה תבוצע שוב בהקדם שגיאת אישורי גישה שגיאת תיקייה שגיאת קובץ + קובץ מקומי לא נמצא שגיאת הרשאה + התנגשות + יישום הופסק שגיאה בלתי ידועה + מחכה לחיבור WiFi ממתין להעלאה בהורדה … %1$d%% בהורדה %2$s @@ -203,6 +223,8 @@ ⇥ לא ניתן לאמת עבור שרת זה עדיין לא קיים חשבון במכשיר + הגדר כזמין באופן לא מקוון + ביטול הגדרה כזמין באופן לא מקוון שינוי שם הסרה האם באמת להסיר %1$s? @@ -220,6 +242,7 @@ שם קובץ כולל לפחות תו אחד לא חוקי שם קובץ לא יכול להיות ריק נא להמתין רגע + בודק אישורים שמורים תקלה בלתי צפויה ; נא לבחור בקובץ מיישום אחר לא נבחרו קבצים שליחת קישור אל ... @@ -284,6 +307,9 @@ שליחה העתקת קישור הועתק ללוח הגזירים - clipboard + לא הוחזר טקסט להעתקה ללוח הגזירים + שגיאה לא צפויה בזמן העתקה ללוח הגזירים + טקסט הועתק מ- %1$s שגיאה קריטית: לא ניתן לבצע את הפעולות שגיאה אירעה בזמן חיבור לשרת. שגיאה אירעה בזמן המתנה לשרת, הפעולה לא הייתה ניתנת להשלמה @@ -375,10 +401,16 @@ מחיקה הפסקת שיתוף הסתיים + ניסיון שנית נכשל + ניקוי נכשל + ניקוי הצליח + ניקוי כל הפריטים שהסתיימו תצוגת טבלה תצוגת רשימה ניהול מקום + הגדרות, של אישורי מסד נתונים ושרת מתוך מידע %1$s\'s ימחק לצמיתות. \n\nקבצים שהורדו ישמרו ללא פגע.\n\nתהליך זה יכול להמשך זמן מה. ניקוי מידע לא ניתן היה למחוק מספר קבצים. נדרשות הרשאות נוספות להעלאה והורדת קבצים. + הקובץ לא נמצא במערכת הקבצים המקומית From d74f5fdc2a91462d2cd31d3364b0abebd7c0549f Mon Sep 17 00:00:00 2001 From: Andy Scherzinger Date: Mon, 9 Nov 2015 18:24:57 +0100 Subject: [PATCH 03/99] implementation of #1193 - optimizing the uploader layout and taking user configured sorting into account --- AndroidManifest.xml | 4 +- res/layout/uploader_layout.xml | 26 +++---- res/layout/uploader_list_item_layout.xml | 77 +++++++++++++------ res/values/strings.xml | 2 +- .../ReceiveExternalFilesActivity.java | 33 ++++++-- .../ui/adapter/FileListListAdapter.java | 7 +- .../owncloud/android/utils/DisplayUtils.java | 7 +- 7 files changed, 100 insertions(+), 56 deletions(-) diff --git a/AndroidManifest.xml b/AndroidManifest.xml index 16bad9bab134..ced6f67253ee 100644 --- a/AndroidManifest.xml +++ b/AndroidManifest.xml @@ -73,7 +73,9 @@ + android:excludeFromRecents="true" + android:label="@string/uploader_top_message" + android:theme="@style/Theme.ownCloud"> diff --git a/res/layout/uploader_layout.xml b/res/layout/uploader_layout.xml index 1c2b6cc31cf2..891b4a07e999 100644 --- a/res/layout/uploader_layout.xml +++ b/res/layout/uploader_layout.xml @@ -18,25 +18,19 @@ along with this program. If not, see . --> - - - - + android:id="@+id/upload_list" + android:layout_above="@+id/upload_actions"> - . --> - - - - - - + + + + + + + + + + + + + + + + diff --git a/res/values/strings.xml b/res/values/strings.xml index 25d52b4d2280..519d03cb7089 100644 --- a/res/values/strings.xml +++ b/res/values/strings.xml @@ -61,7 +61,7 @@ Files Connect Upload - Choose upload folder: + Choose upload folder No account found There are no %1$s accounts on your device. Please set up an account first. Setup diff --git a/src/com/owncloud/android/ui/activity/ReceiveExternalFilesActivity.java b/src/com/owncloud/android/ui/activity/ReceiveExternalFilesActivity.java index 6cb05b431cf6..aa4dd4024c9b 100644 --- a/src/com/owncloud/android/ui/activity/ReceiveExternalFilesActivity.java +++ b/src/com/owncloud/android/ui/activity/ReceiveExternalFilesActivity.java @@ -73,6 +73,7 @@ import com.owncloud.android.ui.helpers.UriUploader; import com.owncloud.android.utils.DisplayUtils; import com.owncloud.android.utils.ErrorMessageAdapter; +import com.owncloud.android.utils.FileStorageUtils; import java.util.ArrayList; import java.util.HashMap; @@ -313,6 +314,8 @@ public void onItemClick(AdapterView parent, View view, int position, long id) Log_OC.d(TAG, "on item click"); // TODO Enable when "On Device" is recovered ? Vector tmpfiles = getStorageManager().getFolderContent(mFile /*, false*/); + tmpfiles = sortFileList(tmpfiles); + if (tmpfiles.size() <= 0) return; // filter on dirtype Vector files = new Vector<>(); @@ -378,15 +381,16 @@ private void populateDirectoryList() { setContentView(R.layout.uploader_layout); ListView mListView = (ListView) findViewById(android.R.id.list); + ActionBar actionBar = getSupportActionBar(); String current_dir = mParents.peek(); if (current_dir.equals("")) { - getSupportActionBar().setTitle(getString(R.string.default_display_name_for_root_folder)); + actionBar.setTitle(getString(R.string.uploader_top_message)); } else { - getSupportActionBar().setTitle(current_dir); + actionBar.setTitle(current_dir); } boolean notRoot = (mParents.size() > 1); - ActionBar actionBar = getSupportActionBar(); + actionBar.setDisplayHomeAsUpEnabled(notRoot); actionBar.setHomeButtonEnabled(notRoot); @@ -398,10 +402,14 @@ private void populateDirectoryList() { if (mFile != null) { // TODO Enable when "On Device" is recovered ? Vector files = getStorageManager().getFolderContent(mFile/*, false*/); - List> data = new LinkedList<>(); + files = sortFileList(files); + + List> data = new LinkedList<>(); for (OCFile f : files) { - HashMap h = new HashMap<>(); - h.put("dirname", f); + if (f.isFolder()) { + HashMap h = new HashMap<>(); + h.put("dirname", f.getFileName()); + h.put("last_mod", DisplayUtils.getRelativeTimestamp(this, f)); data.add(h); } @@ -409,7 +417,7 @@ private void populateDirectoryList() { data, R.layout.uploader_list_item_layout, new String[] {"dirname"}, - new int[] {R.id.filename}, + new int[] {R.id.filename, R.id.last_mod}); getStorageManager(), getAccount()); mListView.setAdapter(sa); @@ -446,6 +454,17 @@ private void startSyncFolderOperation(OCFile folder) { synchFolderOp.execute(getAccount(), this, null, null); } + private Vector sortFileList(Vector files) { + SharedPreferences sharedPreferences = PreferenceManager + .getDefaultSharedPreferences(this); + + // Read sorting order, default to sort by name ascending + FileStorageUtils.mSortOrder = sharedPreferences.getInt("sortOrder", 0); + FileStorageUtils.mSortAscending = sharedPreferences.getBoolean("sortAscending", true); + + files = FileStorageUtils.sortFolder(files); + return files; + } private String generatePath(Stack dirs) { String full_path = ""; diff --git a/src/com/owncloud/android/ui/adapter/FileListListAdapter.java b/src/com/owncloud/android/ui/adapter/FileListListAdapter.java index fa56e61c2307..3629ff6740c4 100644 --- a/src/com/owncloud/android/ui/adapter/FileListListAdapter.java +++ b/src/com/owncloud/android/ui/adapter/FileListListAdapter.java @@ -199,7 +199,7 @@ public View getView(int position, View convertView, ViewGroup parent) { ImageView checkBoxV = (ImageView) view.findViewById(R.id.custom_checkbox); lastModV.setVisibility(View.VISIBLE); - lastModV.setText(showRelativeTimestamp(file)); + lastModV.setText(DisplayUtils.getRelativeTimestamp(mContext, file)); checkBoxV.setVisibility(View.GONE); @@ -443,11 +443,6 @@ public void setSortOrder(Integer order, boolean ascending) { notifyDataSetChanged(); } - - private CharSequence showRelativeTimestamp(OCFile file){ - return DisplayUtils.getRelativeDateTimeString(mContext, file.getModificationTimestamp(), - DateUtils.SECOND_IN_MILLIS, DateUtils.WEEK_IN_MILLIS, 0); - } public void setGridMode(boolean gridMode) { mGridMode = gridMode; diff --git a/src/com/owncloud/android/utils/DisplayUtils.java b/src/com/owncloud/android/utils/DisplayUtils.java index 4ecaaa963901..a95a7088285c 100644 --- a/src/com/owncloud/android/utils/DisplayUtils.java +++ b/src/com/owncloud/android/utils/DisplayUtils.java @@ -172,8 +172,13 @@ public static String convertIdn(String url, boolean toASCII) { } } + public static CharSequence getRelativeTimestamp(Context context, OCFile file) { + return getRelativeDateTimeString(context, file.getModificationTimestamp(), + DateUtils.SECOND_IN_MILLIS, DateUtils.WEEK_IN_MILLIS, 0); + } + @SuppressWarnings("deprecation") - public static CharSequence getRelativeDateTimeString ( + private static CharSequence getRelativeDateTimeString ( Context c, long time, long minResolution, long transitionResolution, int flags ){ From ef0b5030e1e449c2e65d903144389753a96494a0 Mon Sep 17 00:00:00 2001 From: Andy Scherzinger Date: Tue, 10 Nov 2015 11:43:13 +0100 Subject: [PATCH 04/99] fix background color --- res/layout/uploader_layout.xml | 1 + 1 file changed, 1 insertion(+) diff --git a/res/layout/uploader_layout.xml b/res/layout/uploader_layout.xml index 891b4a07e999..38eec2be5da5 100644 --- a/res/layout/uploader_layout.xml +++ b/res/layout/uploader_layout.xml @@ -21,6 +21,7 @@ android:layout_height="wrap_content" android:orientation="vertical" android:layout_width="wrap_content" + android:background="@color/white" android:gravity="center"> Date: Mon, 9 Nov 2015 18:24:57 +0100 Subject: [PATCH 05/99] implementation of #1193 - optimizing the uploader layout and taking user configured sorting into account --- .../android/ui/activity/ReceiveExternalFilesActivity.java | 1 + 1 file changed, 1 insertion(+) diff --git a/src/com/owncloud/android/ui/activity/ReceiveExternalFilesActivity.java b/src/com/owncloud/android/ui/activity/ReceiveExternalFilesActivity.java index aa4dd4024c9b..aba428bc9e34 100644 --- a/src/com/owncloud/android/ui/activity/ReceiveExternalFilesActivity.java +++ b/src/com/owncloud/android/ui/activity/ReceiveExternalFilesActivity.java @@ -389,6 +389,7 @@ private void populateDirectoryList() { } else { actionBar.setTitle(current_dir); } + boolean notRoot = (mParents.size() > 1); actionBar.setDisplayHomeAsUpEnabled(notRoot); From 7c8fbf1adeb3b2f6615fb0ca9cf586987f63e0c3 Mon Sep 17 00:00:00 2001 From: Andy Scherzinger Date: Thu, 31 Mar 2016 18:27:46 +0200 Subject: [PATCH 06/99] Fixes after rebase --- .../android/ui/activity/ReceiveExternalFilesActivity.java | 6 +++--- .../android/ui/adapter/ExpandableUploadListAdapter.java | 1 + src/com/owncloud/android/ui/adapter/UploaderAdapter.java | 6 +++--- src/com/owncloud/android/utils/DisplayUtils.java | 2 +- 4 files changed, 8 insertions(+), 7 deletions(-) diff --git a/src/com/owncloud/android/ui/activity/ReceiveExternalFilesActivity.java b/src/com/owncloud/android/ui/activity/ReceiveExternalFilesActivity.java index aba428bc9e34..fd7beff35640 100644 --- a/src/com/owncloud/android/ui/activity/ReceiveExternalFilesActivity.java +++ b/src/com/owncloud/android/ui/activity/ReceiveExternalFilesActivity.java @@ -409,16 +409,16 @@ private void populateDirectoryList() { for (OCFile f : files) { if (f.isFolder()) { HashMap h = new HashMap<>(); - h.put("dirname", f.getFileName()); - h.put("last_mod", DisplayUtils.getRelativeTimestamp(this, f)); + h.put("dirname", f); data.add(h); + } } UploaderAdapter sa = new UploaderAdapter(this, data, R.layout.uploader_list_item_layout, new String[] {"dirname"}, - new int[] {R.id.filename, R.id.last_mod}); + new int[] {R.id.filename}, getStorageManager(), getAccount()); mListView.setAdapter(sa); diff --git a/src/com/owncloud/android/ui/adapter/ExpandableUploadListAdapter.java b/src/com/owncloud/android/ui/adapter/ExpandableUploadListAdapter.java index 5abf070a4c94..352c0f1d4a1a 100755 --- a/src/com/owncloud/android/ui/adapter/ExpandableUploadListAdapter.java +++ b/src/com/owncloud/android/ui/adapter/ExpandableUploadListAdapter.java @@ -251,6 +251,7 @@ private View getView(OCUpload[] uploadsItems, int position, View convertView, Vi accountNameTextView.setVisibility(View.VISIBLE); statusTextView.setVisibility(View.VISIBLE); progressBar.setVisibility(View.GONE); + progressBar.setVisibility(View.GONE); /// Update information depending of upload details String status = getStatusText(upload); diff --git a/src/com/owncloud/android/ui/adapter/UploaderAdapter.java b/src/com/owncloud/android/ui/adapter/UploaderAdapter.java index 796959eda409..af83af8b2ade 100644 --- a/src/com/owncloud/android/ui/adapter/UploaderAdapter.java +++ b/src/com/owncloud/android/ui/adapter/UploaderAdapter.java @@ -35,6 +35,7 @@ import com.owncloud.android.datamodel.OCFile; import com.owncloud.android.datamodel.ThumbnailsCacheManager; import com.owncloud.android.datamodel.ThumbnailsCacheManager.AsyncDrawable; +import com.owncloud.android.utils.DisplayUtils; import com.owncloud.android.utils.MimetypeIconUtil; import java.util.HashMap; @@ -74,9 +75,8 @@ public View getView(int position, View convertView, ViewGroup parent) { ImageView fileIcon = (ImageView) vi.findViewById(R.id.thumbnail); fileIcon.setTag(file.getFileId()); - // TODO enable after #1277 is merged -// TextView lastModV = (TextView) vi.findViewById(R.id.last_mod); -// lastModV.setText(DisplayUtils.getRelativeTimestamp(mContext, file)); + TextView lastModV = (TextView) vi.findViewById(R.id.last_mod); + lastModV.setText(DisplayUtils.getRelativeTimestamp(mContext, file)); // get Thumbnail if file is image if (file.isImage() && file.getRemoteId() != null){ diff --git a/src/com/owncloud/android/utils/DisplayUtils.java b/src/com/owncloud/android/utils/DisplayUtils.java index a95a7088285c..73a2632cba77 100644 --- a/src/com/owncloud/android/utils/DisplayUtils.java +++ b/src/com/owncloud/android/utils/DisplayUtils.java @@ -178,7 +178,7 @@ public static CharSequence getRelativeTimestamp(Context context, OCFile file) { } @SuppressWarnings("deprecation") - private static CharSequence getRelativeDateTimeString ( + public static CharSequence getRelativeDateTimeString ( Context c, long time, long minResolution, long transitionResolution, int flags ){ From 9bbd7ee10302072cc7e8e1be84a0ccb69c57d5a2 Mon Sep 17 00:00:00 2001 From: Andy Scherzinger Date: Thu, 31 Mar 2016 18:34:48 +0200 Subject: [PATCH 07/99] proper padding for the choose upload folder buttons --- res/layout/uploader_layout.xml | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/res/layout/uploader_layout.xml b/res/layout/uploader_layout.xml index 38eec2be5da5..e697ca44797f 100644 --- a/res/layout/uploader_layout.xml +++ b/res/layout/uploader_layout.xml @@ -45,7 +45,8 @@ android:layout_width="fill_parent" android:layout_height="wrap_content" android:layout_alignParentBottom="true" - android:orientation="horizontal" > + android:orientation="horizontal" + android:padding="@dimen/standard_padding"> Date: Thu, 31 Mar 2016 18:43:14 +0200 Subject: [PATCH 08/99] fixed menu, since grid view hasn't been part of the uploader screen --- .../android/ui/activity/ReceiveExternalFilesActivity.java | 1 + 1 file changed, 1 insertion(+) diff --git a/src/com/owncloud/android/ui/activity/ReceiveExternalFilesActivity.java b/src/com/owncloud/android/ui/activity/ReceiveExternalFilesActivity.java index fd7beff35640..c1ca5e62373e 100644 --- a/src/com/owncloud/android/ui/activity/ReceiveExternalFilesActivity.java +++ b/src/com/owncloud/android/ui/activity/ReceiveExternalFilesActivity.java @@ -597,6 +597,7 @@ public boolean onCreateOptionsMenu(Menu menu) { MenuInflater inflater = getMenuInflater(); inflater.inflate(R.menu.main_menu, menu); menu.findItem(R.id.action_sort).setVisible(false); + menu.findItem(R.id.action_switch_view).setVisible(false); menu.findItem(R.id.action_sync_account).setVisible(false); return true; } From 8b04d61ff48a852477fb9bfaf400d7c2a47c26b5 Mon Sep 17 00:00:00 2001 From: Andy Scherzinger Date: Thu, 14 Apr 2016 09:55:07 +0200 Subject: [PATCH 09/99] removed duplicate method call --- .../owncloud/android/ui/adapter/ExpandableUploadListAdapter.java | 1 - 1 file changed, 1 deletion(-) diff --git a/src/com/owncloud/android/ui/adapter/ExpandableUploadListAdapter.java b/src/com/owncloud/android/ui/adapter/ExpandableUploadListAdapter.java index 352c0f1d4a1a..5abf070a4c94 100755 --- a/src/com/owncloud/android/ui/adapter/ExpandableUploadListAdapter.java +++ b/src/com/owncloud/android/ui/adapter/ExpandableUploadListAdapter.java @@ -251,7 +251,6 @@ private View getView(OCUpload[] uploadsItems, int position, View convertView, Vi accountNameTextView.setVisibility(View.VISIBLE); statusTextView.setVisibility(View.VISIBLE); progressBar.setVisibility(View.GONE); - progressBar.setVisibility(View.GONE); /// Update information depending of upload details String status = getStatusText(upload); From 1f4e9aa439efb0f36372e6f0f6e81a50aedb51cb Mon Sep 17 00:00:00 2001 From: Andy Scherzinger Date: Thu, 14 Apr 2016 11:34:49 +0200 Subject: [PATCH 10/99] fix after rebase --- .../android/ui/activity/ReceiveExternalFilesActivity.java | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/com/owncloud/android/ui/activity/ReceiveExternalFilesActivity.java b/src/com/owncloud/android/ui/activity/ReceiveExternalFilesActivity.java index c1ca5e62373e..8b20cc500d14 100644 --- a/src/com/owncloud/android/ui/activity/ReceiveExternalFilesActivity.java +++ b/src/com/owncloud/android/ui/activity/ReceiveExternalFilesActivity.java @@ -35,6 +35,7 @@ import android.content.DialogInterface.OnCancelListener; import android.content.DialogInterface.OnClickListener; import android.content.Intent; +import android.content.SharedPreferences; import android.content.res.Resources.NotFoundException; import android.os.Bundle; import android.os.Parcelable; @@ -456,7 +457,7 @@ private void startSyncFolderOperation(OCFile folder) { } private Vector sortFileList(Vector files) { - SharedPreferences sharedPreferences = PreferenceManager + SharedPreferences sharedPreferences = android.preference.PreferenceManager .getDefaultSharedPreferences(this); // Read sorting order, default to sort by name ascending From 94a6bebb6042d498d287e4c70130701e48f64342 Mon Sep 17 00:00:00 2001 From: Andy Scherzinger Date: Thu, 14 Apr 2016 12:01:09 +0200 Subject: [PATCH 11/99] moved the preference accessing to the oC Preference Manager --- .../android/db/PreferenceManager.java | 83 +++++++++++++++---- .../ui/activity/FileDisplayActivity.java | 10 +-- .../ReceiveExternalFilesActivity.java | 4 +- .../ui/adapter/FileListListAdapter.java | 22 ++--- 4 files changed, 78 insertions(+), 41 deletions(-) diff --git a/src/com/owncloud/android/db/PreferenceManager.java b/src/com/owncloud/android/db/PreferenceManager.java index 479632a098c5..75947cbd0152 100644 --- a/src/com/owncloud/android/db/PreferenceManager.java +++ b/src/com/owncloud/android/db/PreferenceManager.java @@ -22,42 +22,48 @@ import android.content.Context; import android.content.SharedPreferences; +import com.owncloud.android.utils.FileStorageUtils; + /** * Helper to simplify reading of Preferences all around the app */ - -public class PreferenceManager { - +public abstract class PreferenceManager { /** * Constant to access value of last path selected by the user to upload a file shared from other app. * Value handled by the app without direct access in the UI. */ private static final String AUTO_PREF__LAST_UPLOAD_PATH = "last_upload_path"; + private static final String AUTO_PREF__SORT_ORDER = "sortOrder"; + private static final String AUTO_PREF__SORT_ASCENDING = "sortAscending"; + private static final String PREF__INSTANT_UPLOADING = "instant_uploading"; + private static final String PREF__INSTANT_VIDEO_UPLOADING = "instant_video_uploading"; + private static final String PREF__INSTANT_UPLOAD_ON_WIFI = "instant_upload_on_wifi"; + private static final String PREF__INSTANT_VIDEO_UPLOAD_ON_WIFI = "instant_video_upload_on_wifi"; public static boolean instantPictureUploadEnabled(Context context) { return android.preference.PreferenceManager.getDefaultSharedPreferences(context).getBoolean( - "instant_uploading", + PREF__INSTANT_UPLOADING, false ); } public static boolean instantVideoUploadEnabled(Context context) { return android.preference.PreferenceManager.getDefaultSharedPreferences(context).getBoolean( - "instant_video_uploading", + PREF__INSTANT_VIDEO_UPLOADING, false ); } public static boolean instantPictureUploadViaWiFiOnly(Context context) { return android.preference.PreferenceManager.getDefaultSharedPreferences(context).getBoolean( - "instant_upload_on_wifi", + PREF__INSTANT_UPLOAD_ON_WIFI, false ); } public static boolean instantVideoUploadViaWiFiOnly(Context context) { return android.preference.PreferenceManager.getDefaultSharedPreferences(context).getBoolean( - "instant_video_upload_on_wifi", + PREF__INSTANT_VIDEO_UPLOAD_ON_WIFI, false ); } @@ -65,27 +71,76 @@ public static boolean instantVideoUploadViaWiFiOnly(Context context) { /** * Gets the path where the user selected to do the last upload of a file shared from other app. * - * @param context Caller {@link Context}, used to access to shared preferences manager. - * @return path Absolute path to a folder, as previously stored by {@link #setLastUploadPath(String, Context)}, - * or empty String if never saved before. + * @param context Caller {@link Context}, used to access to shared preferences manager. + * @return path iAbsolute path to a folder, as previously stored by {@link #setLastUploadPath(String, Context)}, + * or empty String if never saved before. */ public static String getLastUploadPath(Context context) { SharedPreferences appPreferences = android.preference.PreferenceManager - .getDefaultSharedPreferences(context.getApplicationContext()); + .getDefaultSharedPreferences(context.getApplicationContext()); return appPreferences.getString(AUTO_PREF__LAST_UPLOAD_PATH, ""); } /** * Saves the path where the user selected to do the last upload of a file shared from other app. * - * @param path Absolute path to a folder. - * @param context Caller {@link Context}, used to access to shared preferences manager. + * @param path Absolute path to a folder. + * @param context Caller {@link Context}, used to access to shared preferences manager. */ public static void setLastUploadPath(String path, Context context) { SharedPreferences.Editor appPrefs = android.preference.PreferenceManager - .getDefaultSharedPreferences(context.getApplicationContext()).edit(); + .getDefaultSharedPreferences(context.getApplicationContext()).edit(); appPrefs.putString(AUTO_PREF__LAST_UPLOAD_PATH, path); appPrefs.apply(); } + /** + * Gets the sort order which the user has set last. + * + * @param context Caller {@link Context}, used to access to shared preferences manager. + * @return sort order the sort order, default is {@link FileStorageUtils#SORT_NAME} (sort by name) + */ + public static int getSortOrder(Context context) { + SharedPreferences appPreferences = android.preference.PreferenceManager + .getDefaultSharedPreferences(context.getApplicationContext()); + return appPreferences.getInt(AUTO_PREF__SORT_ORDER, FileStorageUtils.SORT_NAME); + } + + /** + * Save the sort order which the user has set last. + * + * @param order the sort order + * @param context Caller {@link Context}, used to access to shared preferences manager. + */ + public static void setSortOrder(int order, Context context) { + SharedPreferences.Editor appPreferences = android.preference.PreferenceManager + .getDefaultSharedPreferences(context.getApplicationContext()).edit(); + appPreferences.putInt(AUTO_PREF__SORT_ORDER, order); + appPreferences.apply(); + } + + /** + * Gets the ascending order flag which the user has set last. + * + * @param context Caller {@link Context}, used to access to shared preferences manager. + * @return ascending order the ascending order, default is true + */ + public static boolean getSortAscending(Context context) { + SharedPreferences appPreferences = android.preference.PreferenceManager + .getDefaultSharedPreferences(context.getApplicationContext()); + return appPreferences.getBoolean(AUTO_PREF__SORT_ASCENDING, true); + } + + /** + * Saves the ascending order flag which the user has set last. + * + * @param ascending flag if sorting is ascending or descending + * @param context Caller {@link Context}, used to access to shared preferences manager. + */ + public static void setSortAscending(boolean ascending, Context context) { + SharedPreferences.Editor appPreferences = android.preference.PreferenceManager + .getDefaultSharedPreferences(context.getApplicationContext()).edit(); + appPreferences.putBoolean(AUTO_PREF__SORT_ASCENDING, true); + appPreferences.apply(); + } } diff --git a/src/com/owncloud/android/ui/activity/FileDisplayActivity.java b/src/com/owncloud/android/ui/activity/FileDisplayActivity.java index dca2fd4a9fcc..59ad388113d6 100644 --- a/src/com/owncloud/android/ui/activity/FileDisplayActivity.java +++ b/src/com/owncloud/android/ui/activity/FileDisplayActivity.java @@ -33,7 +33,6 @@ import android.content.Intent; import android.content.IntentFilter; import android.content.ServiceConnection; -import android.content.SharedPreferences; import android.content.SyncRequest; import android.content.pm.PackageManager; import android.content.res.Resources.NotFoundException; @@ -60,6 +59,7 @@ import com.owncloud.android.R; import com.owncloud.android.datamodel.FileDataStorageManager; import com.owncloud.android.datamodel.OCFile; +import com.owncloud.android.db.PreferenceManager; import com.owncloud.android.files.services.FileDownloader; import com.owncloud.android.files.services.FileDownloader.FileDownloaderBinder; import com.owncloud.android.files.services.FileUploader; @@ -90,7 +90,6 @@ import com.owncloud.android.ui.preview.PreviewVideoActivity; import com.owncloud.android.utils.DisplayUtils; import com.owncloud.android.utils.ErrorMessageAdapter; -import com.owncloud.android.utils.FileStorageUtils; import com.owncloud.android.utils.PermissionUtil; import java.io.File; @@ -564,12 +563,7 @@ public boolean onOptionsItemSelected(MenuItem item) { break; } case R.id.action_sort: { - SharedPreferences appPreferences = PreferenceManager - .getDefaultSharedPreferences(this); - - // Read sorting order, default to sort by name ascending - Integer sortOrder = appPreferences - .getInt("sortOrder", FileStorageUtils.SORT_NAME); + Integer sortOrder = PreferenceManager.getSortOrder(this); AlertDialog.Builder builder = new AlertDialog.Builder(this); builder.setTitle(R.string.actionbar_sort_title) diff --git a/src/com/owncloud/android/ui/activity/ReceiveExternalFilesActivity.java b/src/com/owncloud/android/ui/activity/ReceiveExternalFilesActivity.java index 8b20cc500d14..6620816c583d 100644 --- a/src/com/owncloud/android/ui/activity/ReceiveExternalFilesActivity.java +++ b/src/com/owncloud/android/ui/activity/ReceiveExternalFilesActivity.java @@ -461,8 +461,8 @@ private Vector sortFileList(Vector files) { .getDefaultSharedPreferences(this); // Read sorting order, default to sort by name ascending - FileStorageUtils.mSortOrder = sharedPreferences.getInt("sortOrder", 0); - FileStorageUtils.mSortAscending = sharedPreferences.getBoolean("sortAscending", true); + FileStorageUtils.mSortOrder = PreferenceManager.getSortOrder(this); + FileStorageUtils.mSortAscending = PreferenceManager.getSortAscending(this); files = FileStorageUtils.sortFolder(files); return files; diff --git a/src/com/owncloud/android/ui/adapter/FileListListAdapter.java b/src/com/owncloud/android/ui/adapter/FileListListAdapter.java index 3629ff6740c4..2fca38cadff0 100644 --- a/src/com/owncloud/android/ui/adapter/FileListListAdapter.java +++ b/src/com/owncloud/android/ui/adapter/FileListListAdapter.java @@ -26,11 +26,8 @@ import android.accounts.Account; import android.content.Context; -import android.content.SharedPreferences; import android.graphics.Bitmap; import android.os.Build; -import android.preference.PreferenceManager; -import android.text.format.DateUtils; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; @@ -46,6 +43,7 @@ import com.owncloud.android.datamodel.FileDataStorageManager; import com.owncloud.android.datamodel.OCFile; import com.owncloud.android.datamodel.ThumbnailsCacheManager; +import com.owncloud.android.db.PreferenceManager; import com.owncloud.android.files.services.FileDownloader.FileDownloaderBinder; import com.owncloud.android.files.services.FileUploader.FileUploaderBinder; import com.owncloud.android.services.OperationsService.OperationsServiceBinder; @@ -75,8 +73,6 @@ public class FileListListAdapter extends BaseAdapter implements ListAdapter { private boolean mGridMode; private enum ViewType {LIST_ITEM, GRID_IMAGE, GRID_ITEM }; - - private SharedPreferences mAppPreferences; public FileListListAdapter( boolean justFolders, @@ -89,14 +85,10 @@ public FileListListAdapter( mAccount = AccountUtils.getCurrentOwnCloudAccount(mContext); mTransferServiceGetter = transferServiceGetter; - - mAppPreferences = PreferenceManager - .getDefaultSharedPreferences(mContext); // Read sorting order, default to sort by name ascending - - FileStorageUtils.mSortOrder = mAppPreferences.getInt("sortOrder", 0); - FileStorageUtils.mSortAscending = mAppPreferences.getBoolean("sortAscending", true); + FileStorageUtils.mSortOrder = PreferenceManager.getSortOrder(mContext); + FileStorageUtils.mSortAscending = PreferenceManager.getSortAscending(mContext); // initialise thumbnails cache on background thread new ThumbnailsCacheManager.InitDiskCacheTask().execute(); @@ -430,18 +422,14 @@ public Vector getFolders(Vector files) { public void setSortOrder(Integer order, boolean ascending) { - SharedPreferences.Editor editor = mAppPreferences.edit(); - editor.putInt("sortOrder", order); - editor.putBoolean("sortAscending", ascending); - editor.commit(); + PreferenceManager.setSortOrder(order, mContext); + PreferenceManager.setSortAscending(ascending, mContext); FileStorageUtils.mSortOrder = order; FileStorageUtils.mSortAscending = ascending; - mFiles = FileStorageUtils.sortFolder(mFiles); notifyDataSetChanged(); - } public void setGridMode(boolean gridMode) { From 19c78855a009ac21e50302330bb88ad115dfa94e Mon Sep 17 00:00:00 2001 From: Andy Scherzinger Date: Thu, 14 Apr 2016 12:01:09 +0200 Subject: [PATCH 12/99] moved the preference accessing to the oC Preference Manager --- src/com/owncloud/android/db/PreferenceManager.java | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/com/owncloud/android/db/PreferenceManager.java b/src/com/owncloud/android/db/PreferenceManager.java index 75947cbd0152..e2b45e160712 100644 --- a/src/com/owncloud/android/db/PreferenceManager.java +++ b/src/com/owncloud/android/db/PreferenceManager.java @@ -72,7 +72,7 @@ public static boolean instantVideoUploadViaWiFiOnly(Context context) { * Gets the path where the user selected to do the last upload of a file shared from other app. * * @param context Caller {@link Context}, used to access to shared preferences manager. - * @return path iAbsolute path to a folder, as previously stored by {@link #setLastUploadPath(String, Context)}, + * @return path Absolute path to a folder, as previously stored by {@link #setLastUploadPath(String, Context)}, * or empty String if never saved before. */ public static String getLastUploadPath(Context context) { @@ -135,7 +135,7 @@ public static boolean getSortAscending(Context context) { * Saves the ascending order flag which the user has set last. * * @param ascending flag if sorting is ascending or descending - * @param context Caller {@link Context}, used to access to shared preferences manager. + * @param context Caller {@link Context}, used to access to shared preferences manager. */ public static void setSortAscending(boolean ascending, Context context) { SharedPreferences.Editor appPreferences = android.preference.PreferenceManager From 5c72090ed2875cca939ffb89866fc466de153c66 Mon Sep 17 00:00:00 2001 From: Andy Scherzinger Date: Thu, 14 Apr 2016 13:45:04 +0200 Subject: [PATCH 13/99] removed now unused code --- .../android/ui/activity/ReceiveExternalFilesActivity.java | 3 --- 1 file changed, 3 deletions(-) diff --git a/src/com/owncloud/android/ui/activity/ReceiveExternalFilesActivity.java b/src/com/owncloud/android/ui/activity/ReceiveExternalFilesActivity.java index 6620816c583d..bb9e6394715a 100644 --- a/src/com/owncloud/android/ui/activity/ReceiveExternalFilesActivity.java +++ b/src/com/owncloud/android/ui/activity/ReceiveExternalFilesActivity.java @@ -457,9 +457,6 @@ private void startSyncFolderOperation(OCFile folder) { } private Vector sortFileList(Vector files) { - SharedPreferences sharedPreferences = android.preference.PreferenceManager - .getDefaultSharedPreferences(this); - // Read sorting order, default to sort by name ascending FileStorageUtils.mSortOrder = PreferenceManager.getSortOrder(this); FileStorageUtils.mSortAscending = PreferenceManager.getSortAscending(this); From 26ef68a02a408f3bc0b96ee0cb0fca421c690491 Mon Sep 17 00:00:00 2001 From: Andy Scherzinger Date: Thu, 14 Apr 2016 13:45:31 +0200 Subject: [PATCH 14/99] streamlined PrefManager API for simpler usage --- .../android/db/PreferenceManager.java | 67 +++++++++---------- 1 file changed, 31 insertions(+), 36 deletions(-) diff --git a/src/com/owncloud/android/db/PreferenceManager.java b/src/com/owncloud/android/db/PreferenceManager.java index e2b45e160712..1aee239d5e6b 100644 --- a/src/com/owncloud/android/db/PreferenceManager.java +++ b/src/com/owncloud/android/db/PreferenceManager.java @@ -41,31 +41,19 @@ public abstract class PreferenceManager { private static final String PREF__INSTANT_VIDEO_UPLOAD_ON_WIFI = "instant_video_upload_on_wifi"; public static boolean instantPictureUploadEnabled(Context context) { - return android.preference.PreferenceManager.getDefaultSharedPreferences(context).getBoolean( - PREF__INSTANT_UPLOADING, - false - ); + return getDefaultSharedPreferences(context).getBoolean(PREF__INSTANT_UPLOADING, false); } public static boolean instantVideoUploadEnabled(Context context) { - return android.preference.PreferenceManager.getDefaultSharedPreferences(context).getBoolean( - PREF__INSTANT_VIDEO_UPLOADING, - false - ); + return getDefaultSharedPreferences(context).getBoolean(PREF__INSTANT_VIDEO_UPLOADING, false); } public static boolean instantPictureUploadViaWiFiOnly(Context context) { - return android.preference.PreferenceManager.getDefaultSharedPreferences(context).getBoolean( - PREF__INSTANT_UPLOAD_ON_WIFI, - false - ); + return getDefaultSharedPreferences(context).getBoolean(PREF__INSTANT_UPLOAD_ON_WIFI, false); } public static boolean instantVideoUploadViaWiFiOnly(Context context) { - return android.preference.PreferenceManager.getDefaultSharedPreferences(context).getBoolean( - PREF__INSTANT_VIDEO_UPLOAD_ON_WIFI, - false - ); + return getDefaultSharedPreferences(context).getBoolean(PREF__INSTANT_VIDEO_UPLOAD_ON_WIFI, false); } /** @@ -76,9 +64,7 @@ public static boolean instantVideoUploadViaWiFiOnly(Context context) { * or empty String if never saved before. */ public static String getLastUploadPath(Context context) { - SharedPreferences appPreferences = android.preference.PreferenceManager - .getDefaultSharedPreferences(context.getApplicationContext()); - return appPreferences.getString(AUTO_PREF__LAST_UPLOAD_PATH, ""); + return getDefaultSharedPreferences(context).getString(AUTO_PREF__LAST_UPLOAD_PATH, ""); } /** @@ -88,10 +74,7 @@ public static String getLastUploadPath(Context context) { * @param context Caller {@link Context}, used to access to shared preferences manager. */ public static void setLastUploadPath(String path, Context context) { - SharedPreferences.Editor appPrefs = android.preference.PreferenceManager - .getDefaultSharedPreferences(context.getApplicationContext()).edit(); - appPrefs.putString(AUTO_PREF__LAST_UPLOAD_PATH, path); - appPrefs.apply(); + saveStringPreference(AUTO_PREF__LAST_UPLOAD_PATH, path, context); } /** @@ -101,9 +84,7 @@ public static void setLastUploadPath(String path, Context context) { * @return sort order the sort order, default is {@link FileStorageUtils#SORT_NAME} (sort by name) */ public static int getSortOrder(Context context) { - SharedPreferences appPreferences = android.preference.PreferenceManager - .getDefaultSharedPreferences(context.getApplicationContext()); - return appPreferences.getInt(AUTO_PREF__SORT_ORDER, FileStorageUtils.SORT_NAME); + return getDefaultSharedPreferences(context).getInt(AUTO_PREF__SORT_ORDER, FileStorageUtils.SORT_NAME); } /** @@ -113,10 +94,7 @@ public static int getSortOrder(Context context) { * @param context Caller {@link Context}, used to access to shared preferences manager. */ public static void setSortOrder(int order, Context context) { - SharedPreferences.Editor appPreferences = android.preference.PreferenceManager - .getDefaultSharedPreferences(context.getApplicationContext()).edit(); - appPreferences.putInt(AUTO_PREF__SORT_ORDER, order); - appPreferences.apply(); + saveIntPreference(AUTO_PREF__SORT_ORDER, order, context); } /** @@ -126,9 +104,7 @@ public static void setSortOrder(int order, Context context) { * @return ascending order the ascending order, default is true */ public static boolean getSortAscending(Context context) { - SharedPreferences appPreferences = android.preference.PreferenceManager - .getDefaultSharedPreferences(context.getApplicationContext()); - return appPreferences.getBoolean(AUTO_PREF__SORT_ASCENDING, true); + return getDefaultSharedPreferences(context).getBoolean(AUTO_PREF__SORT_ASCENDING, true); } /** @@ -138,9 +114,28 @@ public static boolean getSortAscending(Context context) { * @param context Caller {@link Context}, used to access to shared preferences manager. */ public static void setSortAscending(boolean ascending, Context context) { - SharedPreferences.Editor appPreferences = android.preference.PreferenceManager - .getDefaultSharedPreferences(context.getApplicationContext()).edit(); - appPreferences.putBoolean(AUTO_PREF__SORT_ASCENDING, true); + saveBooleanPreference(AUTO_PREF__SORT_ASCENDING, ascending, context); + } + + public static void saveBooleanPreference(String key, boolean value, Context context) { + SharedPreferences.Editor appPreferences = getDefaultSharedPreferences(context.getApplicationContext()).edit(); + appPreferences.putBoolean(key, value); + appPreferences.apply(); + } + + public static void saveStringPreference(String key, String value, Context context) { + SharedPreferences.Editor appPreferences = getDefaultSharedPreferences(context.getApplicationContext()).edit(); + appPreferences.putString(key, value); appPreferences.apply(); } + + public static void saveIntPreference(String key, int value, Context context) { + SharedPreferences.Editor appPreferences = getDefaultSharedPreferences(context.getApplicationContext()).edit(); + appPreferences.putInt(key, value); + appPreferences.apply(); + } + + private static SharedPreferences getDefaultSharedPreferences(Context context) { + return android.preference.PreferenceManager.getDefaultSharedPreferences(context.getApplicationContext()); + } } From 89dded113c69ea42ffa3838e69a637f7922bd2b9 Mon Sep 17 00:00:00 2001 From: Andy Scherzinger Date: Wed, 1 Jun 2016 17:37:00 +0200 Subject: [PATCH 15/99] fix preference manager call after rebase --- .../owncloud/android/ui/activity/FileDisplayActivity.java | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/src/com/owncloud/android/ui/activity/FileDisplayActivity.java b/src/com/owncloud/android/ui/activity/FileDisplayActivity.java index 59ad388113d6..009d564b2d12 100644 --- a/src/com/owncloud/android/ui/activity/FileDisplayActivity.java +++ b/src/com/owncloud/android/ui/activity/FileDisplayActivity.java @@ -40,7 +40,6 @@ import android.os.Bundle; import android.os.IBinder; import android.os.Parcelable; -import android.preference.PreferenceManager; import android.support.design.widget.Snackbar; import android.support.v4.app.Fragment; import android.support.v4.app.FragmentManager; @@ -95,6 +94,8 @@ import java.io.File; import java.util.ArrayList; +import static com.owncloud.android.db.PreferenceManager.*; + /** * Displays, what files the user has available in his ownCloud. This is the main view. */ @@ -563,7 +564,7 @@ public boolean onOptionsItemSelected(MenuItem item) { break; } case R.id.action_sort: { - Integer sortOrder = PreferenceManager.getSortOrder(this); + Integer sortOrder = getSortOrder(this); AlertDialog.Builder builder = new AlertDialog.Builder(this); builder.setTitle(R.string.actionbar_sort_title) From 68849c73050a8939fecd7c8f54072d3a6edde01a Mon Sep 17 00:00:00 2001 From: Andy Scherzinger Date: Fri, 10 Jun 2016 10:39:36 +0200 Subject: [PATCH 16/99] code review: fixed minor layout optimizations, set generic preference methods to private visibility --- owncloud-android-library | 2 +- res/layout/uploader_layout.xml | 4 ++-- res/layout/uploader_list_item_layout.xml | 23 +++++++------------ .../android/db/PreferenceManager.java | 6 ++--- 4 files changed, 14 insertions(+), 21 deletions(-) diff --git a/owncloud-android-library b/owncloud-android-library index 954f69de990f..48f35c14b4a1 160000 --- a/owncloud-android-library +++ b/owncloud-android-library @@ -1 +1 @@ -Subproject commit 954f69de990fe1c54bd29a23e52f12e5f41f1c71 +Subproject commit 48f35c14b4a1ce82c9e09c37aaa918bbfbb98315 diff --git a/res/layout/uploader_layout.xml b/res/layout/uploader_layout.xml index e697ca44797f..3e14c2dc1e8e 100644 --- a/res/layout/uploader_layout.xml +++ b/res/layout/uploader_layout.xml @@ -25,8 +25,8 @@ android:gravity="center"> diff --git a/res/layout/uploader_list_item_layout.xml b/res/layout/uploader_list_item_layout.xml index 988c6e952eab..34639a2126d1 100644 --- a/res/layout/uploader_list_item_layout.xml +++ b/res/layout/uploader_list_item_layout.xml @@ -18,25 +18,18 @@ along with this program. If not, see . --> - - - - - + Date: Fri, 10 Jun 2016 13:11:43 +0200 Subject: [PATCH 17/99] revert filtering out files in the external file upload view --- .../android/ui/activity/ReceiveExternalFilesActivity.java | 8 +++----- 1 file changed, 3 insertions(+), 5 deletions(-) diff --git a/src/com/owncloud/android/ui/activity/ReceiveExternalFilesActivity.java b/src/com/owncloud/android/ui/activity/ReceiveExternalFilesActivity.java index bb9e6394715a..22bb26ae700c 100644 --- a/src/com/owncloud/android/ui/activity/ReceiveExternalFilesActivity.java +++ b/src/com/owncloud/android/ui/activity/ReceiveExternalFilesActivity.java @@ -408,11 +408,9 @@ private void populateDirectoryList() { List> data = new LinkedList<>(); for (OCFile f : files) { - if (f.isFolder()) { - HashMap h = new HashMap<>(); - h.put("dirname", f); - data.add(h); - } + HashMap h = new HashMap<>(); + h.put("dirname", f); + data.add(h); } UploaderAdapter sa = new UploaderAdapter(this, From 8c863a642bb54e964731b8d4d0b71d509e1f2ccb Mon Sep 17 00:00:00 2001 From: Andy Scherzinger Date: Mon, 13 Jun 2016 13:41:15 +0200 Subject: [PATCH 18/99] revert, to show app name for upload from other app --- AndroidManifest.xml | 1 - 1 file changed, 1 deletion(-) diff --git a/AndroidManifest.xml b/AndroidManifest.xml index ced6f67253ee..eb352ad22c5b 100644 --- a/AndroidManifest.xml +++ b/AndroidManifest.xml @@ -74,7 +74,6 @@ From 0db0ab1fd563ffd6ca60fea71df6e6dde0b50ace Mon Sep 17 00:00:00 2001 From: Andy Scherzinger Date: Mon, 13 Jun 2016 18:27:44 +0200 Subject: [PATCH 19/99] layouting changes so file list, local list and uploader list look the same --- res/layout/uploader_list_item_layout.xml | 45 ++++++++++++++----- .../ui/adapter/FileListListAdapter.java | 2 +- .../ui/adapter/LocalFileListAdapter.java | 6 +-- .../android/ui/adapter/UploaderAdapter.java | 14 +++++- .../owncloud/android/utils/DisplayUtils.java | 13 ++++-- 5 files changed, 62 insertions(+), 18 deletions(-) diff --git a/res/layout/uploader_list_item_layout.xml b/res/layout/uploader_list_item_layout.xml index 34639a2126d1..70ad5a2c8345 100644 --- a/res/layout/uploader_list_item_layout.xml +++ b/res/layout/uploader_list_item_layout.xml @@ -19,7 +19,7 @@ --> @@ -33,7 +33,7 @@ @@ -43,7 +43,7 @@ android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_gravity="center_vertical" - android:layout_marginLeft="4dp" + android:layout_marginLeft="0dp" android:layout_marginRight="4dp" android:ellipsize="middle" android:singleLine="true" @@ -51,15 +51,40 @@ android:textColor="@color/textColor" android:textSize="16dip" /> - + android:orientation="horizontal"> + + + + + + + + diff --git a/src/com/owncloud/android/ui/adapter/FileListListAdapter.java b/src/com/owncloud/android/ui/adapter/FileListListAdapter.java index 2fca38cadff0..1aca7cd78b60 100644 --- a/src/com/owncloud/android/ui/adapter/FileListListAdapter.java +++ b/src/com/owncloud/android/ui/adapter/FileListListAdapter.java @@ -191,7 +191,7 @@ public View getView(int position, View convertView, ViewGroup parent) { ImageView checkBoxV = (ImageView) view.findViewById(R.id.custom_checkbox); lastModV.setVisibility(View.VISIBLE); - lastModV.setText(DisplayUtils.getRelativeTimestamp(mContext, file)); + lastModV.setText(DisplayUtils.getRelativeTimestamp(mContext, file.getModificationTimestamp())); checkBoxV.setVisibility(View.GONE); diff --git a/src/com/owncloud/android/ui/adapter/LocalFileListAdapter.java b/src/com/owncloud/android/ui/adapter/LocalFileListAdapter.java index fa963fd24e2d..3769a9ab47d2 100644 --- a/src/com/owncloud/android/ui/adapter/LocalFileListAdapter.java +++ b/src/com/owncloud/android/ui/adapter/LocalFileListAdapter.java @@ -124,13 +124,14 @@ public View getView(int position, View convertView, ViewGroup parent) { TextView fileSizeSeparatorV = (TextView) view.findViewById(R.id.file_separator); TextView lastModV = (TextView) view.findViewById(R.id.last_mod); ImageView checkBoxV = (ImageView) view.findViewById(R.id.custom_checkbox); + lastModV.setVisibility(View.VISIBLE); + lastModV.setText(DisplayUtils.getRelativeTimestamp(mContext, file.lastModified())); + if (!file.isDirectory()) { fileSizeSeparatorV.setVisibility(View.VISIBLE); fileSizeV.setVisibility(View.VISIBLE); fileSizeV.setText(DisplayUtils.bytesToHumanReadable(file.length())); - lastModV.setVisibility(View.VISIBLE); - lastModV.setText(DisplayUtils.unixTimeToHumanReadable(file.lastModified())); ListView parentList = (ListView) parent; if (parentList.getChoiceMode() == ListView.CHOICE_MODE_NONE) { checkBoxV.setVisibility(View.GONE); @@ -179,7 +180,6 @@ public View getView(int position, View convertView, ViewGroup parent) { } else { fileSizeSeparatorV.setVisibility(View.GONE); fileSizeV.setVisibility(View.GONE); - lastModV.setVisibility(View.GONE); checkBoxV.setVisibility(View.GONE); } diff --git a/src/com/owncloud/android/ui/adapter/UploaderAdapter.java b/src/com/owncloud/android/ui/adapter/UploaderAdapter.java index af83af8b2ade..e5a4e03b6950 100644 --- a/src/com/owncloud/android/ui/adapter/UploaderAdapter.java +++ b/src/com/owncloud/android/ui/adapter/UploaderAdapter.java @@ -76,7 +76,19 @@ public View getView(int position, View convertView, ViewGroup parent) { fileIcon.setTag(file.getFileId()); TextView lastModV = (TextView) vi.findViewById(R.id.last_mod); - lastModV.setText(DisplayUtils.getRelativeTimestamp(mContext, file)); + lastModV.setText(DisplayUtils.getRelativeTimestamp(mContext, file.getModificationTimestamp())); + + TextView fileSizeV = (TextView) vi.findViewById(R.id.file_size); + TextView fileSizeSeparatorV = (TextView) vi.findViewById(R.id.file_separator); + + if(!file.isFolder()) { + fileSizeV.setVisibility(View.VISIBLE); + fileSizeSeparatorV.setVisibility(View.VISIBLE); + fileSizeV.setText(DisplayUtils.bytesToHumanReadable(file.getFileLength())); + } else { + fileSizeV.setVisibility(View.GONE); + fileSizeSeparatorV.setVisibility(View.GONE); + } // get Thumbnail if file is image if (file.isImage() && file.getRemoteId() != null){ diff --git a/src/com/owncloud/android/utils/DisplayUtils.java b/src/com/owncloud/android/utils/DisplayUtils.java index 73a2632cba77..241fc604c643 100644 --- a/src/com/owncloud/android/utils/DisplayUtils.java +++ b/src/com/owncloud/android/utils/DisplayUtils.java @@ -172,9 +172,16 @@ public static String convertIdn(String url, boolean toASCII) { } } - public static CharSequence getRelativeTimestamp(Context context, OCFile file) { - return getRelativeDateTimeString(context, file.getModificationTimestamp(), - DateUtils.SECOND_IN_MILLIS, DateUtils.WEEK_IN_MILLIS, 0); + /** + * calculates the relative time string based on the given modificaion timestamp. + * + * @param context the app's context + * @param modificationTimestamp the UNIX timestamp of the file modification time. + * @return a relative time string + */ + public static CharSequence getRelativeTimestamp(Context context, long modificationTimestamp) { + return getRelativeDateTimeString(context, modificationTimestamp, DateUtils.SECOND_IN_MILLIS, + DateUtils.WEEK_IN_MILLIS, 0); } @SuppressWarnings("deprecation") From f361398d5fecc6d19776f2a4559613f6ceab6fb2 Mon Sep 17 00:00:00 2001 From: Jenkins for ownCloud Date: Wed, 15 Jun 2016 01:14:37 -0400 Subject: [PATCH 20/99] [tx-robot] updated from transifex --- res/values-ar/strings.xml | 1 - res/values-az/strings.xml | 1 - res/values-bg-rBG/strings.xml | 1 - res/values-bn-rBD/strings.xml | 1 - res/values-ca/strings.xml | 45 ++++++++++++++++++++++++++++++++++- res/values-cs-rCZ/strings.xml | 1 - res/values-da/strings.xml | 1 - res/values-de-rDE/strings.xml | 1 - res/values-de/strings.xml | 1 - res/values-el/strings.xml | 1 - res/values-en-rGB/strings.xml | 1 - res/values-eo/strings.xml | 1 - res/values-es-rAR/strings.xml | 1 - res/values-es-rCL/strings.xml | 1 - res/values-es/strings.xml | 1 - res/values-et-rEE/strings.xml | 1 - res/values-eu/strings.xml | 1 - res/values-fa/strings.xml | 1 - res/values-fi-rFI/strings.xml | 1 - res/values-fr/strings.xml | 1 - res/values-gl/strings.xml | 1 - res/values-he/strings.xml | 1 - res/values-hu-rHU/strings.xml | 1 - res/values-id/strings.xml | 1 - res/values-is/strings.xml | 1 - res/values-it/strings.xml | 3 +-- res/values-ja-rJP/strings.xml | 1 - res/values-ko/strings.xml | 1 - res/values-lt-rLT/strings.xml | 1 - res/values-mk/strings.xml | 1 - res/values-nb-rNO/strings.xml | 1 - res/values-nl/strings.xml | 1 - res/values-nn-rNO/strings.xml | 1 - res/values-oc/strings.xml | 1 - res/values-pl/strings.xml | 1 - res/values-pt-rBR/strings.xml | 1 - res/values-pt-rPT/strings.xml | 1 - res/values-ro/strings.xml | 1 - res/values-ru/strings.xml | 1 - res/values-sk-rSK/strings.xml | 1 - res/values-sl/strings.xml | 1 - res/values-sq/strings.xml | 1 - res/values-sr/strings.xml | 1 - res/values-sv/strings.xml | 1 - res/values-th-rTH/strings.xml | 1 - res/values-tr/strings.xml | 1 - res/values-uk/strings.xml | 1 - res/values-zh-rCN/strings.xml | 1 - res/values-zh-rTW/strings.xml | 3 ++- 49 files changed, 47 insertions(+), 50 deletions(-) diff --git a/res/values-ar/strings.xml b/res/values-ar/strings.xml index 5792934f3fbe..451198d6f008 100644 --- a/res/values-ar/strings.xml +++ b/res/values-ar/strings.xml @@ -55,7 +55,6 @@ الملفات اتصال رفع - اختر مجلد الرفع لم يتم العثور على أي حساب لا توجد حسابات %1$s على جهازك. أنت بحاجة لإعداد حساب في البداية. تهيئة diff --git a/res/values-az/strings.xml b/res/values-az/strings.xml index 2275e17831ef..d894f71fd2a6 100644 --- a/res/values-az/strings.xml +++ b/res/values-az/strings.xml @@ -47,7 +47,6 @@ Fayllar Qoşul Serverə yüklə - Yüklənmə qovluöunu seçin: Hesab tapılmadı Qurulum Çıx diff --git a/res/values-bg-rBG/strings.xml b/res/values-bg-rBG/strings.xml index 02d09d21844e..4780e0af4790 100644 --- a/res/values-bg-rBG/strings.xml +++ b/res/values-bg-rBG/strings.xml @@ -58,7 +58,6 @@ Файлове Свързване Качване - Избери папка за качване: Няма открит профил Все още няма %1$s създаден профила на устройството. Моля да се създаде такъв. Настройка diff --git a/res/values-bn-rBD/strings.xml b/res/values-bn-rBD/strings.xml index 97389645865e..43e2e4b3f80c 100644 --- a/res/values-bn-rBD/strings.xml +++ b/res/values-bn-rBD/strings.xml @@ -38,7 +38,6 @@ ফাইল সংযুক্ত হও আপলোড - আপলোডের ফোলডার পছনদ করেন কোন একাউন্ট খুঁজে পাওয়া গেল না সেট-আপ বন্ধ diff --git a/res/values-ca/strings.xml b/res/values-ca/strings.xml index cb28b0794a7a..a9345ae9904e 100644 --- a/res/values-ca/strings.xml +++ b/res/values-ca/strings.xml @@ -49,6 +49,7 @@ Recorda la ubicació de la unitat compartida Recorda la ubicació de l\'última càrrega Proveu %1$s a un telèfon avançat! + Vull invitar-te a utilitzar %1$s al teu smartphone!\nDescarrega-ho aqui: %2$s Comprova el funcionament del servidor Adreça del servidor https://… Nom d\'usuari @@ -57,7 +58,6 @@ Fitxers Connecta Puja - Seleccioneu la carpeta de pujada: No s\'ha trobat el compte No hi ha comptes %1$s al dispositiu. Primer configureu un compte. Configura @@ -68,6 +68,7 @@ No es pot carregar el fitxer %1$s no té permissos per llegir un dels fitxers rebuts L\' arxiu a carregar no va ser trobat en la seva ubicació. Si us plau verifica si l\'arxiu existeix. + S\'ha produït un error mentre es copiava el fitxer a una carpeta temporal. Sisplau intenta enviar-ho una altra vegada. segons enrere Res per aquí. Pugeu alguna cosa! Carregant... @@ -86,6 +87,7 @@ Baixa Sincronitza L\'arxiu s\'ha canviat de nom a %1$s durant la càrrega + Veure en llista Comparteix No @@ -115,23 +117,35 @@ La pujada ha fallat, us heu de tornar a acreditar Fitxers carregats Actual + Error (toca per tornar a intentar) Carregat Completat S\'ha cancel·lat + Pausat Hi ha un error de connexió + La pujada tornarà a reintentar-se en poc temps Hi ha un error de credencials Hi ha un error de carpetes Hi ha un error en el fitxer No s\'ha trobat el fitxer local Error de permisos + Conflicte + L\'aplicació s\'ha finalitzat Error desconegut + Esperant connectivitat wifi + S\'està esperant per pujar-ho S\'està baixant ... %1$d%% pujant %2$s La baixada ha estat correcte + %1$s descarregat La baixada ha fallat La baixada de %1$s no s\'ha pogut acabar No baixat encara + La Descarrega ha fallat, t\'has de tornar a acreditar Escolliu el compte + La sincronització ha fallat + La Sincronització ha fallat, t\'has de tornar a acreditar + La Sincronització de %1$s no s\'ha pogut completar Contrasenya no vàlida per %1$s S\'han trobat conflictes %1$d mantinguts els arxius que no podien ser sincronitzats @@ -145,6 +159,16 @@ Alguns fitxers no s\'han pogut moure Local: %1$s Remot: %1$s + No hi ha espai suficient per copiar els fitxers sel·leccionats dins la carpeta %1$s. Voldries moure-les en comptes d\'això? + Sisplau introdueix el teu codi d\'accés + Escriviu codi d\'accés + Es requerirà el codi d\'accés cada vegada que s\'iniciï l\'aplicació + Torneu a escriure el codi d\'accés + Elimina el codi d\'accés + Els codis d\'accés no coincideixen + Codi d\'accés incorrecte + Codi d\'accés eliminat + Codi d\'accés guardat reproductor de música %1$s %1$s (sonant) %1$s (carregant) @@ -164,9 +188,12 @@ Botó de rebobinat Botó de reproducció o pausa Botó de reproducció ràpida + Recuperant autorització ... + Intentat accedir ... Sense connexió de xarxa La connexió segura no està disponible. S\'ha establert la connexió + S\'està comprovant la connexió... La configuració del servidor està malformada Ja hi ha un compte al dispositiu pel mateix usuari i mateix servidor L\'usuari introduït no coincideix amb l\'usuari d\'aquest compte @@ -174,6 +201,7 @@ No s\'ha trobat el servidor No s\'ha trobat la instància del servidor El servidor ha trigat massa en respondre + Format de l\'adreça del servidor incorrecte La inicialització SSL ha fallat No s\'ha pogut verificar la identitat SSL del servidor Versió del servidor desconeguda @@ -183,10 +211,14 @@ Autorització sense èxit El servidor d\'autenticació us ha denegat l\'accés La vostra autorització ha vençut. Acrediteu-vos de nou + Escriviu la contrasenya actual La sessió ha vençut. Connecteu-vos de nou + Connectant amb el servidor d\'autentificació... El serivdor no permet aquest mètode d\'autenticació %1$s no permet comptes múltiples El servidor no retorna una id d\'usuari correcta, contacteu amb l\'administrador. + No es pot autenticar en aquest servidor + El compte no existeix en aquest dispositiu encara Reanomena Elimina Esteu segur que voleu eliminar %1$s? @@ -201,11 +233,14 @@ Contingut de l\'arxiu ja sincronitzat La carpeta no s\'ha pogut crear Caràcters no permesos: / \\ < > : \" | ? * + El nom del fitxer conté al menys un caràcter invàlid El Nom de l\'arxiu no pot estar buit Espereu + Comprovant les credencials emmagatzemades S\'ha produït un problema inesperat; proveu una altra aplicació per seleccionar el fitxer No heu seleccionat cap fitxer Envia l\'enllaç a... + Copiant fitxer des de emmagatzemament privat Accés amb oAuth2 Connectant amb el servidor oAuth2... No s\'ha pogut verificar la identitat del lloc web @@ -230,6 +265,8 @@ A: Signatura: Algoritme: + Empremta: + Hi ha un problema carregant el certificat. No s\'ha pogut mostrar el certificat. - No hi ha informació de l\'error Això és un text variable @@ -238,8 +275,14 @@ 389 KB 2012/05/18 12:23 PM 12:23:45 + Pujar les fotos només via WiFi + Pujar videos només via WiFi /CarregaInstantània + Conflicte de fitxers + Quins fitxers vols mantenir? Si seleccioneu les dues versions, el fitxer local tindrà un número afegit al seu nom. Mantén-los ambdós + Versió local + versió del servidor Visualització prèvia d\'imatge Aquesta imatge no es pot mostrar %1$s no s\'ha pogut copiar a la carpeta local %2$s diff --git a/res/values-cs-rCZ/strings.xml b/res/values-cs-rCZ/strings.xml index 7794eb95d550..e0d441666c0b 100644 --- a/res/values-cs-rCZ/strings.xml +++ b/res/values-cs-rCZ/strings.xml @@ -58,7 +58,6 @@ Soubory Připojit Nahrát - Vyberte adresář pro nahrání: Nenalezen žádný účet Na tomto přístroji nejsou žádné %1$s účty. Nejdříve prosím zadejte účet. Nastavení diff --git a/res/values-da/strings.xml b/res/values-da/strings.xml index 9a1fc4ebbe0f..8b8ab77196f6 100644 --- a/res/values-da/strings.xml +++ b/res/values-da/strings.xml @@ -56,7 +56,6 @@ Filer Tilslut Upload - Vælg upload-mappe: Ingen konto fundet Opsætning Afslut diff --git a/res/values-de-rDE/strings.xml b/res/values-de-rDE/strings.xml index 10cba0c17ebd..e847be78b26e 100644 --- a/res/values-de-rDE/strings.xml +++ b/res/values-de-rDE/strings.xml @@ -58,7 +58,6 @@ Dateien Verbinden Hochladen - Uploadordner auswählen: Kein Konto gefunden Es sind keine %1$s-Konten auf Ihrem Gerät eingerichtet. Bitte richten Sie zuerst ein Konto ein. Einrichten diff --git a/res/values-de/strings.xml b/res/values-de/strings.xml index 84dd90e7bcb8..1f8450e2988d 100644 --- a/res/values-de/strings.xml +++ b/res/values-de/strings.xml @@ -58,7 +58,6 @@ Dateien Verbinden Hochladen - Wähle Zielordner: Kein Account gefunden Es sind keine %1$s Konten auf deinem Gerät eingerichtet. Bitte erstelle zuerst ein Konto. Einrichten diff --git a/res/values-el/strings.xml b/res/values-el/strings.xml index cd7a8ca31572..934b02eadc06 100644 --- a/res/values-el/strings.xml +++ b/res/values-el/strings.xml @@ -58,7 +58,6 @@ Αρχεία Σύνδεση Μεταφόρτωση - Επιλέξτε φάκελο μεταφορτώσεων: Δεν βρέθηκε λογαριασμός Δεν υπάρχουν λογαριασμοί %1$s στη συσκευή σας. Παρακαλώ ρυθμίστε πρώτα ένα λογαριασμό. Ρύθμιση diff --git a/res/values-en-rGB/strings.xml b/res/values-en-rGB/strings.xml index 0b1762021e9f..06c886259c9b 100644 --- a/res/values-en-rGB/strings.xml +++ b/res/values-en-rGB/strings.xml @@ -58,7 +58,6 @@ Files Connect Upload - Choose upload folder: No account found There are no %1$s accounts on your device. Please set up an account first. Setup diff --git a/res/values-eo/strings.xml b/res/values-eo/strings.xml index c11287e2288d..060329fc7489 100644 --- a/res/values-eo/strings.xml +++ b/res/values-eo/strings.xml @@ -44,7 +44,6 @@ Dosieroj Konekti Alŝuti - Elektu alŝutan dosierujon: Neniu konto troviĝis Agordi Forlasi diff --git a/res/values-es-rAR/strings.xml b/res/values-es-rAR/strings.xml index 85ccfd208977..c4d57363528a 100644 --- a/res/values-es-rAR/strings.xml +++ b/res/values-es-rAR/strings.xml @@ -49,7 +49,6 @@ Archivos Conectar Subir - Elija la carpeta de subida: No se encontraron cuentas Configurar Salir diff --git a/res/values-es-rCL/strings.xml b/res/values-es-rCL/strings.xml index 197e9b112123..52a2380b030c 100644 --- a/res/values-es-rCL/strings.xml +++ b/res/values-es-rCL/strings.xml @@ -25,7 +25,6 @@ Archivos Conectar Subir - Elija el directorio donde subir los archivos: No se encuentra la cuenta Configuración Salir diff --git a/res/values-es/strings.xml b/res/values-es/strings.xml index 6794972b26b9..d35d9cb7c1a6 100644 --- a/res/values-es/strings.xml +++ b/res/values-es/strings.xml @@ -58,7 +58,6 @@ Archivos Conectar Subir - Escoger carpeta de carga: No se encontró la cuenta No hay %1$s cuentas en tu dispositivo. Por favor añade una cuenta primero. Configuración diff --git a/res/values-et-rEE/strings.xml b/res/values-et-rEE/strings.xml index 4669a5ee8a37..827a07e6dfc3 100644 --- a/res/values-et-rEE/strings.xml +++ b/res/values-et-rEE/strings.xml @@ -58,7 +58,6 @@ Failid Ühenda Lae üles - Vali kataloog serveris: Kontot ei leitud Seadista Lõpeta diff --git a/res/values-eu/strings.xml b/res/values-eu/strings.xml index fdf624f908a1..e66ddcd70999 100644 --- a/res/values-eu/strings.xml +++ b/res/values-eu/strings.xml @@ -53,7 +53,6 @@ Fitxategiak Konektatu Igo - Hautatu igoera karpeta: Ez da konturik aurkitu Konfiguratu Irten diff --git a/res/values-fa/strings.xml b/res/values-fa/strings.xml index 1ed7210f92a6..637746f19e49 100644 --- a/res/values-fa/strings.xml +++ b/res/values-fa/strings.xml @@ -44,7 +44,6 @@ پرونده‌ها اتصال بارگزاری - انتخاب پوشه آپلود: هیچ حسابی یافت نشد نصب خروج diff --git a/res/values-fi-rFI/strings.xml b/res/values-fi-rFI/strings.xml index 3c4b88d759d5..1d82a89f5573 100644 --- a/res/values-fi-rFI/strings.xml +++ b/res/values-fi-rFI/strings.xml @@ -58,7 +58,6 @@ Tiedostot Yhdistä Lähetä - Valitse lähetyskansio: Tiliä ei löytynyt Laitteellasi ei ole %1$s-tilejä. Määritä tilin asetukset ensin. Asetukset diff --git a/res/values-fr/strings.xml b/res/values-fr/strings.xml index e440159e3519..f838ce590f90 100644 --- a/res/values-fr/strings.xml +++ b/res/values-fr/strings.xml @@ -59,7 +59,6 @@ Téléchargez-le ici : %2$s Fichiers Connecter Téléverser - Sélectionner le dossier d\'envoi : Aucun compte n\'a été trouvé Aucun compte %1$s sur l\'appareil. Veuillez configurer un compte au préalable. Configuration diff --git a/res/values-gl/strings.xml b/res/values-gl/strings.xml index 7f15cf9470fa..5e3ad5288a0b 100644 --- a/res/values-gl/strings.xml +++ b/res/values-gl/strings.xml @@ -54,7 +54,6 @@ Descárgueo de aquí: %2$s Ficheiros Conectar Enviar - Escolla o cartafol de envío: Non se atoparon contas Instalación Saír diff --git a/res/values-he/strings.xml b/res/values-he/strings.xml index b00d7750bf83..d3aeda83bb2d 100644 --- a/res/values-he/strings.xml +++ b/res/values-he/strings.xml @@ -58,7 +58,6 @@ קבצים התחברות העלאה - בחירת תיקיית העלאה: לא נמצא חשבון לא מוגדרים חשבונות %1$s במכשיר שלך. יש להגדיר חשבות תחילה. הגדרות diff --git a/res/values-hu-rHU/strings.xml b/res/values-hu-rHU/strings.xml index 696e07402b17..da44f5444be9 100644 --- a/res/values-hu-rHU/strings.xml +++ b/res/values-hu-rHU/strings.xml @@ -50,7 +50,6 @@ Fájlok Kapcsolódás Feltöltés - Válassz feltöltési mappát: Nincs ilyen felhasználói fiók Beállítás Kilépés diff --git a/res/values-id/strings.xml b/res/values-id/strings.xml index 589fe0fea28d..1556f8adc1c1 100644 --- a/res/values-id/strings.xml +++ b/res/values-id/strings.xml @@ -56,7 +56,6 @@ Berkas Sambungkan Unggah - Pilih folder unggah: Tidak ada akun yang ditemukan Pengaturan Keluar diff --git a/res/values-is/strings.xml b/res/values-is/strings.xml index 8711dc56f3e4..16f51000ba49 100644 --- a/res/values-is/strings.xml +++ b/res/values-is/strings.xml @@ -57,7 +57,6 @@ Skrár Tengjast Senda inn - Veldu innsendingamöppu: Enginn notandaaðgangur fannst Það eru engir %1$s aðgangar á tækinu þínu. Settu fyrst upp notandaaðgang. Uppsetning diff --git a/res/values-it/strings.xml b/res/values-it/strings.xml index fb226585ee55..3cdecbc55f30 100644 --- a/res/values-it/strings.xml +++ b/res/values-it/strings.xml @@ -58,7 +58,6 @@ File Connetti Carica - Scegli la cartella da caricare: Nessun account trovato Non ci sono account %1$s sul tuo dispositivo. Configura prima un account. Configurazione @@ -201,7 +200,7 @@ L\'utente digitato non corrisponde all\'utente di questo account Errore sconosciuto Impossibile trovare l\'host - Istanza di il server non trovata + Istanza del server non trovata Il server ha richiesto troppo tempo per rispondere Formato indirizzo del server errato Inizializzazione SSL non riuscita diff --git a/res/values-ja-rJP/strings.xml b/res/values-ja-rJP/strings.xml index 5b42673b1c87..e400f4782997 100644 --- a/res/values-ja-rJP/strings.xml +++ b/res/values-ja-rJP/strings.xml @@ -59,7 +59,6 @@ ファイル 接続 アップロード - アップロードするフォルダーを選択: アカウントが見つかりません 端末に %1$s のアカウントがありません。まずアカウントを登録してください。 設定 diff --git a/res/values-ko/strings.xml b/res/values-ko/strings.xml index f71bd5cfcf19..6713d9ea0b05 100644 --- a/res/values-ko/strings.xml +++ b/res/values-ko/strings.xml @@ -52,7 +52,6 @@ 파일 접속 업로드 - 업로드 폴더 선택: 계정 없음 설정 끝내기 diff --git a/res/values-lt-rLT/strings.xml b/res/values-lt-rLT/strings.xml index c04af8208fcb..2776c8df4a68 100644 --- a/res/values-lt-rLT/strings.xml +++ b/res/values-lt-rLT/strings.xml @@ -52,7 +52,6 @@ Failai Prisijungti Įkelti - Nustatyti įkėlimų aplanką: Paskyrų nerasta Nustatymai Išeiti diff --git a/res/values-mk/strings.xml b/res/values-mk/strings.xml index fe2b1d23abd5..0d2dd06273b6 100644 --- a/res/values-mk/strings.xml +++ b/res/values-mk/strings.xml @@ -51,7 +51,6 @@ Датотеки Поврзи се Подигни - Избери папка за префрлање: Не е пронајдена сметка Нагодување Прекини diff --git a/res/values-nb-rNO/strings.xml b/res/values-nb-rNO/strings.xml index 09d5fb6129cc..14eb03c99dfb 100644 --- a/res/values-nb-rNO/strings.xml +++ b/res/values-nb-rNO/strings.xml @@ -58,7 +58,6 @@ Filer Koble til Last opp - Velg opplastingsmappe: Ingen konto funnet Det finnes ingen %1$s-kontoer på enheten din. Sett opp en konto først. Oppsett diff --git a/res/values-nl/strings.xml b/res/values-nl/strings.xml index 195c69e0640a..5bf50349b58b 100644 --- a/res/values-nl/strings.xml +++ b/res/values-nl/strings.xml @@ -59,7 +59,6 @@ Download hier: %2$s Bestanden Verbinden Uploaden - Kies upload map: Geen account gevonden Er zijn geen %1$s accounts op dit apparaat. Stel eerst een account in. Configureren diff --git a/res/values-nn-rNO/strings.xml b/res/values-nn-rNO/strings.xml index 8c7d0db234ac..23c0672ce11a 100644 --- a/res/values-nn-rNO/strings.xml +++ b/res/values-nn-rNO/strings.xml @@ -53,7 +53,6 @@ Filer Kopla til Last opp - Vel opplastingsmappe: Fann ingen konto Det finst ingen %1$s-kontoar på eininga di. Ver venleg og set opp ein konto først. Oppsett diff --git a/res/values-oc/strings.xml b/res/values-oc/strings.xml index 440fb40e246f..4f4dea106dc7 100644 --- a/res/values-oc/strings.xml +++ b/res/values-oc/strings.xml @@ -54,7 +54,6 @@ Telecargatz-lo aicí : %2$s Fichièrs Connectar Mandar - Seleccionar lo dorsièr de mandadís : Cap de compte es pas estat trobat Configuracion Quitar diff --git a/res/values-pl/strings.xml b/res/values-pl/strings.xml index 06e392f4af34..39a291c85aa0 100644 --- a/res/values-pl/strings.xml +++ b/res/values-pl/strings.xml @@ -58,7 +58,6 @@ Pliki Połącz Wyślij - Wybierz folder do wysłania: Nie znaleziono konta Brak kont %1$s na Twoim urządzeniu. Załóż konto. Ustawienia diff --git a/res/values-pt-rBR/strings.xml b/res/values-pt-rBR/strings.xml index b5bb5f2f6693..6684e63ee13b 100644 --- a/res/values-pt-rBR/strings.xml +++ b/res/values-pt-rBR/strings.xml @@ -58,7 +58,6 @@ Arquivos Conectar Enviar - Escolher pasta para enviar: Nenhuma conta encontrada Não existe nenhuma conta %1$s em seu aparelho. Por favor configure uma conta primeiro. Instalação diff --git a/res/values-pt-rPT/strings.xml b/res/values-pt-rPT/strings.xml index 9a9c8ac1d70d..54af6d3c050d 100644 --- a/res/values-pt-rPT/strings.xml +++ b/res/values-pt-rPT/strings.xml @@ -58,7 +58,6 @@ Ficheiros Ligar Carregar - Escolha a pasta de envio: Nenhuma conta encontrada Não existem as contas %1$s no seu dispositivo. Por favor, configure primeiro uma conta. Configurar diff --git a/res/values-ro/strings.xml b/res/values-ro/strings.xml index 85b5421e6ad9..8fe224dd2564 100644 --- a/res/values-ro/strings.xml +++ b/res/values-ro/strings.xml @@ -58,7 +58,6 @@ Fișiere Conectare Încărcare - Alegeţi dosarul pentru încărcare Nici un cont găsit Nu există conturi %1$s pe dispozitivul tău. Te rugăm să configurezi unul mai întâi. Configurare diff --git a/res/values-ru/strings.xml b/res/values-ru/strings.xml index 2d9bd4f688ce..f7f165c22fbc 100644 --- a/res/values-ru/strings.xml +++ b/res/values-ru/strings.xml @@ -59,7 +59,6 @@ Файлы Подключиться Загрузить - Выберите каталог для загрузки Учётная запись не найдена На вашем устройстве нет аккаунтов %1$s. Пожалуйста выполните настройку аккаунта. Настройка diff --git a/res/values-sk-rSK/strings.xml b/res/values-sk-rSK/strings.xml index fa01ab231840..3ba7b6591ec7 100644 --- a/res/values-sk-rSK/strings.xml +++ b/res/values-sk-rSK/strings.xml @@ -53,7 +53,6 @@ Súbory Pripojiť Nahrať - Vyberte priečinok pre nahrávanie: Účet sa nenašiel Nastavenie Koniec diff --git a/res/values-sl/strings.xml b/res/values-sl/strings.xml index e467bcbdb2ec..64ed78527c5b 100644 --- a/res/values-sl/strings.xml +++ b/res/values-sl/strings.xml @@ -58,7 +58,6 @@ Datoteke Poveži Pošlji - Izbor mape za pošiljanje: Uporabniškega računa ni mogoče najti Za %1$s ni določenega računa. Pred nadaljevanjem ga je treba ustvariti. Nastavi diff --git a/res/values-sq/strings.xml b/res/values-sq/strings.xml index b567180a4422..30c51d7af748 100644 --- a/res/values-sq/strings.xml +++ b/res/values-sq/strings.xml @@ -58,7 +58,6 @@ Kartela Lidhuni Ngarkoni - Zgjidhni dosje ngarkimi: S\’u gjet llogari S’ka llogari %1$s te pajisja juaj. Ju lutemi, së pari krijoni një llogari. Rregullim diff --git a/res/values-sr/strings.xml b/res/values-sr/strings.xml index b20cd483abcd..dc768fd2bd1a 100644 --- a/res/values-sr/strings.xml +++ b/res/values-sr/strings.xml @@ -58,7 +58,6 @@ Фајлови Повежи се Отпреми - Изаберите фасциклу отпремања: Нема налога Нема %1$s налога на вашем уређају. Најпре подесите налог. Подеси diff --git a/res/values-sv/strings.xml b/res/values-sv/strings.xml index 999e72d83abc..04b1fb66c252 100644 --- a/res/values-sv/strings.xml +++ b/res/values-sv/strings.xml @@ -58,7 +58,6 @@ Filer Anslut Ladda upp - Välj mapp för uppladdning: Hittade inget konto Det finns inga %1$s-konton på din enhet. Lägg till ett konto först Skapa diff --git a/res/values-th-rTH/strings.xml b/res/values-th-rTH/strings.xml index 97b7238ac5c2..6936f097e766 100644 --- a/res/values-th-rTH/strings.xml +++ b/res/values-th-rTH/strings.xml @@ -58,7 +58,6 @@ ไฟล์ เชื่อมต่อ อัพโหลด - เลือกโฟลเดอร์ที่ต้องการอัพโหลด: ไม่พบบัญชีที่ต้องการ ไม่มีบัญชีผู้ใช้ %1$s ในอุปกรณ์ของคุณ กรุณาตั้งค่าบัญชีผู้ใช้ก่อน ตั้งค่า diff --git a/res/values-tr/strings.xml b/res/values-tr/strings.xml index bfadd47c15cb..0ff29d71d076 100644 --- a/res/values-tr/strings.xml +++ b/res/values-tr/strings.xml @@ -58,7 +58,6 @@ Dosyalar Bağlan Yükle - Yükleme klasörünü seçin: Hesap bulunamadı Cihazınızda hiç %1$s hesabı yok. Lütfen ilk olarak bir hesap ayarlayın. Kurulum diff --git a/res/values-uk/strings.xml b/res/values-uk/strings.xml index 4f3e0d4c0523..1899a5fe5d73 100644 --- a/res/values-uk/strings.xml +++ b/res/values-uk/strings.xml @@ -55,7 +55,6 @@ Файли З\'єднати Відвантажити - Оберіть теку для завантаження: Не знайдено облікового запису Налаштування Вийти diff --git a/res/values-zh-rCN/strings.xml b/res/values-zh-rCN/strings.xml index e64b69038d96..662489e5deee 100644 --- a/res/values-zh-rCN/strings.xml +++ b/res/values-zh-rCN/strings.xml @@ -58,7 +58,6 @@ 文件 连接 上传 - 选择上传文件夹: 未找到账号 设备上无 %1$s 账号,需要先创建一个账号。 设置 diff --git a/res/values-zh-rTW/strings.xml b/res/values-zh-rTW/strings.xml index 48752321bf36..dacb75941c1e 100644 --- a/res/values-zh-rTW/strings.xml +++ b/res/values-zh-rTW/strings.xml @@ -58,7 +58,6 @@ 檔案 連線 上傳 - 選取上傳資料夾: 找不到帳號 無%1$s帳號,請先建立帳號。 設定 @@ -223,6 +222,8 @@ 無法驗證這個伺服器 帳號目前不存在於本裝置 + 設定為離線可用 + 取消設定為離線可用 重新命名 移除 您真的要移除 %1$s ? From 6333e305588729bef2543ce3f6c78ecf3c4a9207 Mon Sep 17 00:00:00 2001 From: Jenkins for ownCloud Date: Thu, 16 Jun 2016 01:14:13 -0400 Subject: [PATCH 21/99] [tx-robot] updated from transifex --- res/values-ca/strings.xml | 40 +++++++++++++++++++++++++++++++++++ res/values-cs-rCZ/strings.xml | 1 + res/values-de-rDE/strings.xml | 1 + res/values-de/strings.xml | 1 + res/values-es/strings.xml | 1 + res/values-he/strings.xml | 1 + res/values-it/strings.xml | 1 + res/values-pt-rBR/strings.xml | 1 + res/values-sq/strings.xml | 1 + 9 files changed, 48 insertions(+) diff --git a/res/values-ca/strings.xml b/res/values-ca/strings.xml index a9345ae9904e..b9681de34022 100644 --- a/res/values-ca/strings.xml +++ b/res/values-ca/strings.xml @@ -287,11 +287,20 @@ Aquesta imatge no es pot mostrar %1$s no s\'ha pogut copiar a la carpeta local %2$s La compartició no es troba disponible al vostre servidor. Contacteu amb l\'administrador. + No es pot compartir. Assegureu-vos que el fitxer existeix S\'ha produït un error en intentar compartir aquest fitxer o carpeta + No es pot des-compartir. Assegureu-vos que el fitxer existeix S\'ha produït un error en intentar deixar de compartir aquest fitxer o carpeta + No es pot actualitzar. Assegureu-vos que el fitxer existeix + S\'ha produït un error en tractar d\'actualitzar la compartició + Escriviu una contrasenya + Heu d\'escriure una contrasenya Envia Copia l\'enllaç S\'ha copiat al porta-retalls + No s\'ha rebut cap text per copiar-lo al porta-retalls + Error inesperat quan es copiava al porta-retalls + Text copiat des de %1$s Error crític: no es poden realitzar operacions Hi ha hagut un error mentre es connectava al servidor. Hi ha hagut un error esperant al servidor, l\'operació no s\'ha pogut realitzar @@ -303,6 +312,7 @@ per eliminar aquest fitxer per compartir aquest fitxer per deixar de compartir aquest fitxer + per actualitzar aquesta compartició per crear el fitxer per pujar fitxers en aquesta carpeta El fitxer ja no està disponible en el servidor @@ -310,22 +320,52 @@ Afegeix compte La connexió segura està essent redirigida a través d\'una ruta insegura Registre + Enviar història + Carregant dades... Es requereix autenticació Contrasenya incorrecta Moure + Res per aquí. Pots afegir una carpeta! Escull + No es pot moure. Assegureu-vos que el fitxer existeix + El fitxer ja existeix a la carpeta de destinació + per moure aquest fitxer + No es pot copiar. Assegureu-vos que el fitxer existeix + El fitxer ja existeix a la carpeta de destinació + per copiar aquest fitxer + Pujades instantanies Detalls + compartit + amb tú Adreça del servidor + Nom d\'usuari + 1 carpeta + 1 fitxer + 1 fitxer, 1 carpeta + Copiar fitxer + Moure fitxer Compartir + Comparteix amb usuaris i grups + No s\'han compartit dades amb usuaris encara + Afegeix usuari o group Comparteix l\'enllaç Estableix la data de venciment Protegir amb contrasenya + Assegurat Permetre edició + Comparteix amb ... Cerca + Cerca usuaris i grups pot compartir pot editar crea canvi elimina Deixar de compartir + Fet + Vista de graella + Vista de Llista + Gestió d\'espai + Neteja dades + Alguns fitxers no s\'han pogut esborrar diff --git a/res/values-cs-rCZ/strings.xml b/res/values-cs-rCZ/strings.xml index e0d441666c0b..730bbf5749ee 100644 --- a/res/values-cs-rCZ/strings.xml +++ b/res/values-cs-rCZ/strings.xml @@ -58,6 +58,7 @@ Soubory Připojit Nahrát + Vybrat adresář k nahrávání Nenalezen žádný účet Na tomto přístroji nejsou žádné %1$s účty. Nejdříve prosím zadejte účet. Nastavení diff --git a/res/values-de-rDE/strings.xml b/res/values-de-rDE/strings.xml index e847be78b26e..7bf616b9ec36 100644 --- a/res/values-de-rDE/strings.xml +++ b/res/values-de-rDE/strings.xml @@ -58,6 +58,7 @@ Dateien Verbinden Hochladen + Hochladeordner auswählen Kein Konto gefunden Es sind keine %1$s-Konten auf Ihrem Gerät eingerichtet. Bitte richten Sie zuerst ein Konto ein. Einrichten diff --git a/res/values-de/strings.xml b/res/values-de/strings.xml index 1f8450e2988d..10cd22e34d5d 100644 --- a/res/values-de/strings.xml +++ b/res/values-de/strings.xml @@ -58,6 +58,7 @@ Dateien Verbinden Hochladen + Hochladeordner auswählen Kein Account gefunden Es sind keine %1$s Konten auf deinem Gerät eingerichtet. Bitte erstelle zuerst ein Konto. Einrichten diff --git a/res/values-es/strings.xml b/res/values-es/strings.xml index d35d9cb7c1a6..9f128050d1ff 100644 --- a/res/values-es/strings.xml +++ b/res/values-es/strings.xml @@ -58,6 +58,7 @@ Archivos Conectar Subir + Elige carpeta de subida No se encontró la cuenta No hay %1$s cuentas en tu dispositivo. Por favor añade una cuenta primero. Configuración diff --git a/res/values-he/strings.xml b/res/values-he/strings.xml index d3aeda83bb2d..feb7916b5534 100644 --- a/res/values-he/strings.xml +++ b/res/values-he/strings.xml @@ -58,6 +58,7 @@ קבצים התחברות העלאה + יש לבחור בתיקיית העלאה לא נמצא חשבון לא מוגדרים חשבונות %1$s במכשיר שלך. יש להגדיר חשבות תחילה. הגדרות diff --git a/res/values-it/strings.xml b/res/values-it/strings.xml index 3cdecbc55f30..2c23a41b1e94 100644 --- a/res/values-it/strings.xml +++ b/res/values-it/strings.xml @@ -58,6 +58,7 @@ File Connetti Carica + Scegli la cartella di caricamento Nessun account trovato Non ci sono account %1$s sul tuo dispositivo. Configura prima un account. Configurazione diff --git a/res/values-pt-rBR/strings.xml b/res/values-pt-rBR/strings.xml index 6684e63ee13b..4c59e400c9c8 100644 --- a/res/values-pt-rBR/strings.xml +++ b/res/values-pt-rBR/strings.xml @@ -58,6 +58,7 @@ Arquivos Conectar Enviar + Escolher pasta para envio Nenhuma conta encontrada Não existe nenhuma conta %1$s em seu aparelho. Por favor configure uma conta primeiro. Instalação diff --git a/res/values-sq/strings.xml b/res/values-sq/strings.xml index 30c51d7af748..20e0d73393a8 100644 --- a/res/values-sq/strings.xml +++ b/res/values-sq/strings.xml @@ -58,6 +58,7 @@ Kartela Lidhuni Ngarkoni + Zgjidhni dosje ngarkimi S\’u gjet llogari S’ka llogari %1$s te pajisja juaj. Ju lutemi, së pari krijoni një llogari. Rregullim From a74901203b7888174f937c5c9de96cce5e2f75e6 Mon Sep 17 00:00:00 2001 From: "David A. Velasco" Date: Mon, 6 Jun 2016 18:28:20 +0200 Subject: [PATCH 22/99] Read and save display name when account is created --- owncloud-android-library | 2 +- .../authentication/AuthenticatorActivity.java | 15 ++++++++++++++- .../authentication/AuthenticatorAsyncTask.java | 12 +++++++++--- .../android/datamodel/ThumbnailsCacheManager.java | 7 +++++-- .../android/files/services/FileDownloader.java | 6 +++++- .../android/files/services/FileUploader.java | 6 +++++- .../android/services/OperationsService.java | 7 +++++-- .../android/services/SyncFolderHandler.java | 5 ++++- .../syncadapter/AbstractOwnCloudSyncAdapter.java | 6 ++++-- .../android/ui/activity/FileActivity.java | 6 ++++-- .../android/utils/GetShareWithUsersAsyncTask.java | 7 +++++-- 11 files changed, 61 insertions(+), 18 deletions(-) diff --git a/owncloud-android-library b/owncloud-android-library index 48f35c14b4a1..afe65bdc3f3b 160000 --- a/owncloud-android-library +++ b/owncloud-android-library @@ -1 +1 @@ -Subproject commit 48f35c14b4a1ce82c9e09c37aaa918bbfbb98315 +Subproject commit afe65bdc3f3bdbc0491eb91c028600ceec12003f diff --git a/src/com/owncloud/android/authentication/AuthenticatorActivity.java b/src/com/owncloud/android/authentication/AuthenticatorActivity.java index c925d21ba8d8..f8de77e8eaa9 100644 --- a/src/com/owncloud/android/authentication/AuthenticatorActivity.java +++ b/src/com/owncloud/android/authentication/AuthenticatorActivity.java @@ -66,6 +66,7 @@ import com.owncloud.android.R; import com.owncloud.android.authentication.SsoWebViewClient.SsoWebViewClientListener; import com.owncloud.android.lib.common.OwnCloudAccount; +import com.owncloud.android.lib.common.OwnCloudAccountStorageManager; import com.owncloud.android.lib.common.OwnCloudClientManagerFactory; import com.owncloud.android.lib.common.OwnCloudCredentials; import com.owncloud.android.lib.common.OwnCloudCredentialsFactory; @@ -1502,7 +1503,7 @@ private void updateAccountAuthentication() throws AccountNotFoundException { } // remove managed clients for this account to enforce creation with fresh credentials - OwnCloudAccount ocAccount = new OwnCloudAccount(mAccount, this); + OwnCloudAccount ocAccount = OwnCloudAccountStorageManager.getOwnCloudAccount(mAccount, this); OwnCloudClientManagerFactory.getDefaultSingleton().removeClientFor(ocAccount); setAccountAuthenticatorResult(response); @@ -1594,6 +1595,18 @@ private boolean createAccount(RemoteOperationResult authResult) { mAccountMgr.setUserData( mAccount, Constants.KEY_OC_BASE_URL, mServerInfo.mBaseUrl ); + if (authResult.getData() != null) { + try { + String displayName = (String) authResult.getData().get(0); + mAccountMgr.setUserData( + mAccount, Constants.KEY_DISPLAY_NAME, displayName + ); + } catch (ClassCastException c) { + Log_OC.w(TAG, "Couldn't get display name for " + username); + } + } else { + Log_OC.w(TAG, "Couldn't get display name for " + username); + } if (isSaml) { mAccountMgr.setUserData(mAccount, Constants.KEY_SUPPORTS_SAML_WEB_SSO, "TRUE"); diff --git a/src/com/owncloud/android/authentication/AuthenticatorAsyncTask.java b/src/com/owncloud/android/authentication/AuthenticatorAsyncTask.java index a25ade8b6968..6dee4cdb5663 100644 --- a/src/com/owncloud/android/authentication/AuthenticatorAsyncTask.java +++ b/src/com/owncloud/android/authentication/AuthenticatorAsyncTask.java @@ -30,6 +30,7 @@ import com.owncloud.android.lib.common.network.RedirectionPath; import com.owncloud.android.lib.common.operations.RemoteOperationResult; import com.owncloud.android.lib.resources.files.ExistenceCheckRemoteOperation; +import com.owncloud.android.lib.resources.users.GetRemoteUserNameOperation; import java.lang.ref.WeakReference; @@ -44,11 +45,10 @@ public class AuthenticatorAsyncTask extends AsyncTask mListener; - protected Activity mActivity; public AuthenticatorAsyncTask(Activity activity) { mContext = activity.getApplicationContext(); - mListener = new WeakReference((OnAuthenticatorTaskListener)activity); + mListener = new WeakReference<>((OnAuthenticatorTaskListener)activity); } @Override @@ -64,7 +64,7 @@ protected RemoteOperationResult doInBackground(Object... params) { OwnCloudClient client = OwnCloudClientFactory.createOwnCloudClient(uri, mContext, true); client.setCredentials(credentials); - // Operation + // Operation - try credentials ExistenceCheckRemoteOperation operation = new ExistenceCheckRemoteOperation( REMOTE_PATH, mContext, @@ -78,6 +78,12 @@ protected RemoteOperationResult doInBackground(Object... params) { result.setLastPermanentLocation(permanentLocation); } + // Operation - get display name + if (result.isSuccess()) { + GetRemoteUserNameOperation remoteUserNameOperation = new GetRemoteUserNameOperation(); + result = remoteUserNameOperation.execute(client); + } + } else { result = new RemoteOperationResult(RemoteOperationResult.ResultCode.UNKNOWN_ERROR); } diff --git a/src/com/owncloud/android/datamodel/ThumbnailsCacheManager.java b/src/com/owncloud/android/datamodel/ThumbnailsCacheManager.java index 4ad7317306c5..980832e65dfd 100644 --- a/src/com/owncloud/android/datamodel/ThumbnailsCacheManager.java +++ b/src/com/owncloud/android/datamodel/ThumbnailsCacheManager.java @@ -46,6 +46,7 @@ import com.owncloud.android.R; import com.owncloud.android.authentication.AccountUtils; import com.owncloud.android.lib.common.OwnCloudAccount; +import com.owncloud.android.lib.common.OwnCloudAccountStorageManager; import com.owncloud.android.lib.common.OwnCloudClient; import com.owncloud.android.lib.common.OwnCloudClientManagerFactory; import com.owncloud.android.lib.common.utils.Log_OC; @@ -168,8 +169,10 @@ protected Bitmap doInBackground(Object... params) { try { if (mAccount != null) { - OwnCloudAccount ocAccount = new OwnCloudAccount(mAccount, - MainApp.getAppContext()); + OwnCloudAccount ocAccount = OwnCloudAccountStorageManager.getOwnCloudAccount( + mAccount, + MainApp.getAppContext() + ); mClient = OwnCloudClientManagerFactory.getDefaultSingleton(). getClientFor(ocAccount, MainApp.getAppContext()); } diff --git a/src/com/owncloud/android/files/services/FileDownloader.java b/src/com/owncloud/android/files/services/FileDownloader.java index cbaea61d9bbf..5fd841c6dcf9 100644 --- a/src/com/owncloud/android/files/services/FileDownloader.java +++ b/src/com/owncloud/android/files/services/FileDownloader.java @@ -43,6 +43,7 @@ import com.owncloud.android.datamodel.FileDataStorageManager; import com.owncloud.android.datamodel.OCFile; import com.owncloud.android.lib.common.OwnCloudAccount; +import com.owncloud.android.lib.common.OwnCloudAccountStorageManager; import com.owncloud.android.lib.common.OwnCloudClient; import com.owncloud.android.lib.common.OwnCloudClientManagerFactory; import com.owncloud.android.lib.common.network.OnDatatransferProgressListener; @@ -411,7 +412,10 @@ private void downloadFile(String downloadKey) { // always get client from client manager, to get fresh credentials in case // of update - OwnCloudAccount ocAccount = new OwnCloudAccount(mCurrentAccount, this); + OwnCloudAccount ocAccount = OwnCloudAccountStorageManager.getOwnCloudAccount( + mCurrentAccount, + this + ); mDownloadClient = OwnCloudClientManagerFactory.getDefaultSingleton(). getClientFor(ocAccount, this); diff --git a/src/com/owncloud/android/files/services/FileUploader.java b/src/com/owncloud/android/files/services/FileUploader.java index e467f5d7c76d..f6268f98a88c 100644 --- a/src/com/owncloud/android/files/services/FileUploader.java +++ b/src/com/owncloud/android/files/services/FileUploader.java @@ -53,6 +53,7 @@ import com.owncloud.android.db.OCUpload; import com.owncloud.android.db.UploadResult; import com.owncloud.android.lib.common.OwnCloudAccount; +import com.owncloud.android.lib.common.OwnCloudAccountStorageManager; import com.owncloud.android.lib.common.OwnCloudClient; import com.owncloud.android.lib.common.OwnCloudClientManagerFactory; import com.owncloud.android.lib.common.network.OnDatatransferProgressListener; @@ -907,7 +908,10 @@ public void uploadFile(String uploadKey) { } // else, reuse storage manager from previous operation // always get client from client manager, to get fresh credentials in case of update - OwnCloudAccount ocAccount = new OwnCloudAccount(mCurrentAccount, this); + OwnCloudAccount ocAccount = OwnCloudAccountStorageManager.getOwnCloudAccount( + mCurrentAccount, + this + ); mUploadClient = OwnCloudClientManagerFactory.getDefaultSingleton(). getClientFor(ocAccount, this); diff --git a/src/com/owncloud/android/services/OperationsService.java b/src/com/owncloud/android/services/OperationsService.java index d34ae93d02af..9ee72fe0886f 100644 --- a/src/com/owncloud/android/services/OperationsService.java +++ b/src/com/owncloud/android/services/OperationsService.java @@ -40,6 +40,7 @@ import com.owncloud.android.datamodel.FileDataStorageManager; import com.owncloud.android.datamodel.OCFile; import com.owncloud.android.lib.common.OwnCloudAccount; +import com.owncloud.android.lib.common.OwnCloudAccountStorageManager; import com.owncloud.android.lib.common.OwnCloudClient; import com.owncloud.android.lib.common.OwnCloudClientManagerFactory; import com.owncloud.android.lib.common.OwnCloudCredentials; @@ -447,8 +448,10 @@ private void nextOperation() { if (mLastTarget == null || !mLastTarget.equals(next.first)) { mLastTarget = next.first; if (mLastTarget.mAccount != null) { - OwnCloudAccount ocAccount = new OwnCloudAccount(mLastTarget.mAccount, - mService); + OwnCloudAccount ocAccount = OwnCloudAccountStorageManager.getOwnCloudAccount( + mLastTarget.mAccount, + mService + ); mOwnCloudClient = OwnCloudClientManagerFactory.getDefaultSingleton(). getClientFor(ocAccount, mService); diff --git a/src/com/owncloud/android/services/SyncFolderHandler.java b/src/com/owncloud/android/services/SyncFolderHandler.java index 3d23b6eead38..4bc7fdb42ae0 100644 --- a/src/com/owncloud/android/services/SyncFolderHandler.java +++ b/src/com/owncloud/android/services/SyncFolderHandler.java @@ -32,6 +32,7 @@ import com.owncloud.android.files.services.FileDownloader; import com.owncloud.android.files.services.IndexedForest; import com.owncloud.android.lib.common.OwnCloudAccount; +import com.owncloud.android.lib.common.OwnCloudAccountStorageManager; import com.owncloud.android.lib.common.OwnCloudClient; import com.owncloud.android.lib.common.OwnCloudClientManagerFactory; import com.owncloud.android.lib.common.operations.RemoteOperationResult; @@ -115,7 +116,9 @@ private void doOperation(Account account, String remotePath) { } // else, reuse storage manager from previous operation // always get client from client manager, to get fresh credentials in case of update - OwnCloudAccount ocAccount = new OwnCloudAccount(account, mService); + OwnCloudAccount ocAccount = OwnCloudAccountStorageManager.getOwnCloudAccount( + account, mService + ); mOwnCloudClient = OwnCloudClientManagerFactory.getDefaultSingleton(). getClientFor(ocAccount, mService); diff --git a/src/com/owncloud/android/syncadapter/AbstractOwnCloudSyncAdapter.java b/src/com/owncloud/android/syncadapter/AbstractOwnCloudSyncAdapter.java index 8c7442c24ee4..6e2f686412da 100644 --- a/src/com/owncloud/android/syncadapter/AbstractOwnCloudSyncAdapter.java +++ b/src/com/owncloud/android/syncadapter/AbstractOwnCloudSyncAdapter.java @@ -25,6 +25,7 @@ import java.io.IOException; import com.owncloud.android.datamodel.FileDataStorageManager; +import com.owncloud.android.lib.common.OwnCloudAccountStorageManager; import com.owncloud.android.lib.common.accounts.AccountUtils; import com.owncloud.android.lib.common.accounts.AccountUtils.AccountNotFoundException; import com.owncloud.android.lib.common.OwnCloudAccount; @@ -100,8 +101,9 @@ public FileDataStorageManager getStorageManager() { protected void initClientForCurrentAccount() throws OperationCanceledException, AuthenticatorException, IOException, AccountNotFoundException { - AccountUtils.constructFullURLForAccount(getContext(), account); - OwnCloudAccount ocAccount = new OwnCloudAccount(account, getContext()); + OwnCloudAccount ocAccount = OwnCloudAccountStorageManager.getOwnCloudAccount( + account, getContext() + ); mClient = OwnCloudClientManagerFactory.getDefaultSingleton(). getClientFor(ocAccount, getContext()); } diff --git a/src/com/owncloud/android/ui/activity/FileActivity.java b/src/com/owncloud/android/ui/activity/FileActivity.java index 5d7edebed99a..61111de3edea 100644 --- a/src/com/owncloud/android/ui/activity/FileActivity.java +++ b/src/com/owncloud/android/ui/activity/FileActivity.java @@ -63,6 +63,7 @@ import com.owncloud.android.files.services.FileUploader; import com.owncloud.android.files.services.FileUploader.FileUploaderBinder; import com.owncloud.android.lib.common.OwnCloudAccount; +import com.owncloud.android.lib.common.OwnCloudAccountStorageManager; import com.owncloud.android.lib.common.OwnCloudClient; import com.owncloud.android.lib.common.OwnCloudClientManagerFactory; import com.owncloud.android.lib.common.OwnCloudCredentials; @@ -826,8 +827,9 @@ protected void requestCredentialsUpdate(Context context, Account account) { account = getAccount(); } OwnCloudClient client; - OwnCloudAccount ocAccount = - new OwnCloudAccount(account, context); + OwnCloudAccount ocAccount = OwnCloudAccountStorageManager.getOwnCloudAccount( + account, context + ); client = (OwnCloudClientManagerFactory.getDefaultSingleton(). removeClientFor(ocAccount)); if (client != null) { diff --git a/src/com/owncloud/android/utils/GetShareWithUsersAsyncTask.java b/src/com/owncloud/android/utils/GetShareWithUsersAsyncTask.java index a5f696eb12a7..342707b19436 100644 --- a/src/com/owncloud/android/utils/GetShareWithUsersAsyncTask.java +++ b/src/com/owncloud/android/utils/GetShareWithUsersAsyncTask.java @@ -28,6 +28,7 @@ import com.owncloud.android.datamodel.FileDataStorageManager; import com.owncloud.android.datamodel.OCFile; import com.owncloud.android.lib.common.OwnCloudAccount; +import com.owncloud.android.lib.common.OwnCloudAccountStorageManager; import com.owncloud.android.lib.common.OwnCloudClient; import com.owncloud.android.lib.common.OwnCloudClientManagerFactory; import com.owncloud.android.lib.common.operations.OnRemoteOperationListener; @@ -64,8 +65,10 @@ protected Pair doInBackground(Object... try { // Get shares request operation = new GetSharesForFileOperation(file.getRemotePath(), false, false); - OwnCloudAccount ocAccount = new OwnCloudAccount(account, - MainApp.getAppContext()); + OwnCloudAccount ocAccount = OwnCloudAccountStorageManager.getOwnCloudAccount( + account, + MainApp.getAppContext() + ); OwnCloudClient client = OwnCloudClientManagerFactory.getDefaultSingleton(). getClientFor(ocAccount, MainApp.getAppContext()); result = operation.execute(client, fileDataStorageManager); From 0f64fe48cde67f2b4577dda0d04eb81b0d35e751 Mon Sep 17 00:00:00 2001 From: "David A. Velasco" Date: Thu, 9 Jun 2016 11:04:59 +0200 Subject: [PATCH 23/99] Undo buggy refactoring; too much to do in that sense to get it works --- owncloud-android-library | 2 +- .../android/authentication/AuthenticatorActivity.java | 3 +-- .../owncloud/android/datamodel/ThumbnailsCacheManager.java | 3 +-- src/com/owncloud/android/files/services/FileDownloader.java | 3 +-- src/com/owncloud/android/files/services/FileUploader.java | 3 +-- src/com/owncloud/android/services/OperationsService.java | 6 +----- src/com/owncloud/android/services/SyncFolderHandler.java | 5 +---- .../android/syncadapter/AbstractOwnCloudSyncAdapter.java | 6 +----- src/com/owncloud/android/ui/activity/FileActivity.java | 5 +---- .../owncloud/android/utils/GetShareWithUsersAsyncTask.java | 3 +-- 10 files changed, 10 insertions(+), 29 deletions(-) diff --git a/owncloud-android-library b/owncloud-android-library index afe65bdc3f3b..06f27a7c796d 160000 --- a/owncloud-android-library +++ b/owncloud-android-library @@ -1 +1 @@ -Subproject commit afe65bdc3f3bdbc0491eb91c028600ceec12003f +Subproject commit 06f27a7c796dcec57f1705ca8f59fa340c589135 diff --git a/src/com/owncloud/android/authentication/AuthenticatorActivity.java b/src/com/owncloud/android/authentication/AuthenticatorActivity.java index f8de77e8eaa9..3a99bdbc4df3 100644 --- a/src/com/owncloud/android/authentication/AuthenticatorActivity.java +++ b/src/com/owncloud/android/authentication/AuthenticatorActivity.java @@ -66,7 +66,6 @@ import com.owncloud.android.R; import com.owncloud.android.authentication.SsoWebViewClient.SsoWebViewClientListener; import com.owncloud.android.lib.common.OwnCloudAccount; -import com.owncloud.android.lib.common.OwnCloudAccountStorageManager; import com.owncloud.android.lib.common.OwnCloudClientManagerFactory; import com.owncloud.android.lib.common.OwnCloudCredentials; import com.owncloud.android.lib.common.OwnCloudCredentialsFactory; @@ -1503,7 +1502,7 @@ private void updateAccountAuthentication() throws AccountNotFoundException { } // remove managed clients for this account to enforce creation with fresh credentials - OwnCloudAccount ocAccount = OwnCloudAccountStorageManager.getOwnCloudAccount(mAccount, this); + OwnCloudAccount ocAccount = new OwnCloudAccount(mAccount, this); OwnCloudClientManagerFactory.getDefaultSingleton().removeClientFor(ocAccount); setAccountAuthenticatorResult(response); diff --git a/src/com/owncloud/android/datamodel/ThumbnailsCacheManager.java b/src/com/owncloud/android/datamodel/ThumbnailsCacheManager.java index 980832e65dfd..f34fc5a62ea4 100644 --- a/src/com/owncloud/android/datamodel/ThumbnailsCacheManager.java +++ b/src/com/owncloud/android/datamodel/ThumbnailsCacheManager.java @@ -46,7 +46,6 @@ import com.owncloud.android.R; import com.owncloud.android.authentication.AccountUtils; import com.owncloud.android.lib.common.OwnCloudAccount; -import com.owncloud.android.lib.common.OwnCloudAccountStorageManager; import com.owncloud.android.lib.common.OwnCloudClient; import com.owncloud.android.lib.common.OwnCloudClientManagerFactory; import com.owncloud.android.lib.common.utils.Log_OC; @@ -169,7 +168,7 @@ protected Bitmap doInBackground(Object... params) { try { if (mAccount != null) { - OwnCloudAccount ocAccount = OwnCloudAccountStorageManager.getOwnCloudAccount( + OwnCloudAccount ocAccount = new OwnCloudAccount( mAccount, MainApp.getAppContext() ); diff --git a/src/com/owncloud/android/files/services/FileDownloader.java b/src/com/owncloud/android/files/services/FileDownloader.java index 5fd841c6dcf9..f3ac5a00489e 100644 --- a/src/com/owncloud/android/files/services/FileDownloader.java +++ b/src/com/owncloud/android/files/services/FileDownloader.java @@ -43,7 +43,6 @@ import com.owncloud.android.datamodel.FileDataStorageManager; import com.owncloud.android.datamodel.OCFile; import com.owncloud.android.lib.common.OwnCloudAccount; -import com.owncloud.android.lib.common.OwnCloudAccountStorageManager; import com.owncloud.android.lib.common.OwnCloudClient; import com.owncloud.android.lib.common.OwnCloudClientManagerFactory; import com.owncloud.android.lib.common.network.OnDatatransferProgressListener; @@ -412,7 +411,7 @@ private void downloadFile(String downloadKey) { // always get client from client manager, to get fresh credentials in case // of update - OwnCloudAccount ocAccount = OwnCloudAccountStorageManager.getOwnCloudAccount( + OwnCloudAccount ocAccount = new OwnCloudAccount( mCurrentAccount, this ); diff --git a/src/com/owncloud/android/files/services/FileUploader.java b/src/com/owncloud/android/files/services/FileUploader.java index f6268f98a88c..c78a5b1eddec 100644 --- a/src/com/owncloud/android/files/services/FileUploader.java +++ b/src/com/owncloud/android/files/services/FileUploader.java @@ -53,7 +53,6 @@ import com.owncloud.android.db.OCUpload; import com.owncloud.android.db.UploadResult; import com.owncloud.android.lib.common.OwnCloudAccount; -import com.owncloud.android.lib.common.OwnCloudAccountStorageManager; import com.owncloud.android.lib.common.OwnCloudClient; import com.owncloud.android.lib.common.OwnCloudClientManagerFactory; import com.owncloud.android.lib.common.network.OnDatatransferProgressListener; @@ -908,7 +907,7 @@ public void uploadFile(String uploadKey) { } // else, reuse storage manager from previous operation // always get client from client manager, to get fresh credentials in case of update - OwnCloudAccount ocAccount = OwnCloudAccountStorageManager.getOwnCloudAccount( + OwnCloudAccount ocAccount = new OwnCloudAccount( mCurrentAccount, this ); diff --git a/src/com/owncloud/android/services/OperationsService.java b/src/com/owncloud/android/services/OperationsService.java index 9ee72fe0886f..ee09ad054218 100644 --- a/src/com/owncloud/android/services/OperationsService.java +++ b/src/com/owncloud/android/services/OperationsService.java @@ -40,7 +40,6 @@ import com.owncloud.android.datamodel.FileDataStorageManager; import com.owncloud.android.datamodel.OCFile; import com.owncloud.android.lib.common.OwnCloudAccount; -import com.owncloud.android.lib.common.OwnCloudAccountStorageManager; import com.owncloud.android.lib.common.OwnCloudClient; import com.owncloud.android.lib.common.OwnCloudClientManagerFactory; import com.owncloud.android.lib.common.OwnCloudCredentials; @@ -448,10 +447,7 @@ private void nextOperation() { if (mLastTarget == null || !mLastTarget.equals(next.first)) { mLastTarget = next.first; if (mLastTarget.mAccount != null) { - OwnCloudAccount ocAccount = OwnCloudAccountStorageManager.getOwnCloudAccount( - mLastTarget.mAccount, - mService - ); + OwnCloudAccount ocAccount = new OwnCloudAccount(mLastTarget.mAccount, mService); mOwnCloudClient = OwnCloudClientManagerFactory.getDefaultSingleton(). getClientFor(ocAccount, mService); diff --git a/src/com/owncloud/android/services/SyncFolderHandler.java b/src/com/owncloud/android/services/SyncFolderHandler.java index 4bc7fdb42ae0..3d23b6eead38 100644 --- a/src/com/owncloud/android/services/SyncFolderHandler.java +++ b/src/com/owncloud/android/services/SyncFolderHandler.java @@ -32,7 +32,6 @@ import com.owncloud.android.files.services.FileDownloader; import com.owncloud.android.files.services.IndexedForest; import com.owncloud.android.lib.common.OwnCloudAccount; -import com.owncloud.android.lib.common.OwnCloudAccountStorageManager; import com.owncloud.android.lib.common.OwnCloudClient; import com.owncloud.android.lib.common.OwnCloudClientManagerFactory; import com.owncloud.android.lib.common.operations.RemoteOperationResult; @@ -116,9 +115,7 @@ private void doOperation(Account account, String remotePath) { } // else, reuse storage manager from previous operation // always get client from client manager, to get fresh credentials in case of update - OwnCloudAccount ocAccount = OwnCloudAccountStorageManager.getOwnCloudAccount( - account, mService - ); + OwnCloudAccount ocAccount = new OwnCloudAccount(account, mService); mOwnCloudClient = OwnCloudClientManagerFactory.getDefaultSingleton(). getClientFor(ocAccount, mService); diff --git a/src/com/owncloud/android/syncadapter/AbstractOwnCloudSyncAdapter.java b/src/com/owncloud/android/syncadapter/AbstractOwnCloudSyncAdapter.java index 6e2f686412da..bb07a5ac1bad 100644 --- a/src/com/owncloud/android/syncadapter/AbstractOwnCloudSyncAdapter.java +++ b/src/com/owncloud/android/syncadapter/AbstractOwnCloudSyncAdapter.java @@ -25,8 +25,6 @@ import java.io.IOException; import com.owncloud.android.datamodel.FileDataStorageManager; -import com.owncloud.android.lib.common.OwnCloudAccountStorageManager; -import com.owncloud.android.lib.common.accounts.AccountUtils; import com.owncloud.android.lib.common.accounts.AccountUtils.AccountNotFoundException; import com.owncloud.android.lib.common.OwnCloudAccount; import com.owncloud.android.lib.common.OwnCloudClient; @@ -101,9 +99,7 @@ public FileDataStorageManager getStorageManager() { protected void initClientForCurrentAccount() throws OperationCanceledException, AuthenticatorException, IOException, AccountNotFoundException { - OwnCloudAccount ocAccount = OwnCloudAccountStorageManager.getOwnCloudAccount( - account, getContext() - ); + OwnCloudAccount ocAccount = new OwnCloudAccount(account, getContext()); mClient = OwnCloudClientManagerFactory.getDefaultSingleton(). getClientFor(ocAccount, getContext()); } diff --git a/src/com/owncloud/android/ui/activity/FileActivity.java b/src/com/owncloud/android/ui/activity/FileActivity.java index 61111de3edea..a0db0dba633b 100644 --- a/src/com/owncloud/android/ui/activity/FileActivity.java +++ b/src/com/owncloud/android/ui/activity/FileActivity.java @@ -63,7 +63,6 @@ import com.owncloud.android.files.services.FileUploader; import com.owncloud.android.files.services.FileUploader.FileUploaderBinder; import com.owncloud.android.lib.common.OwnCloudAccount; -import com.owncloud.android.lib.common.OwnCloudAccountStorageManager; import com.owncloud.android.lib.common.OwnCloudClient; import com.owncloud.android.lib.common.OwnCloudClientManagerFactory; import com.owncloud.android.lib.common.OwnCloudCredentials; @@ -827,9 +826,7 @@ protected void requestCredentialsUpdate(Context context, Account account) { account = getAccount(); } OwnCloudClient client; - OwnCloudAccount ocAccount = OwnCloudAccountStorageManager.getOwnCloudAccount( - account, context - ); + OwnCloudAccount ocAccount = new OwnCloudAccount(account, context); client = (OwnCloudClientManagerFactory.getDefaultSingleton(). removeClientFor(ocAccount)); if (client != null) { diff --git a/src/com/owncloud/android/utils/GetShareWithUsersAsyncTask.java b/src/com/owncloud/android/utils/GetShareWithUsersAsyncTask.java index 342707b19436..76bfb7d5b052 100644 --- a/src/com/owncloud/android/utils/GetShareWithUsersAsyncTask.java +++ b/src/com/owncloud/android/utils/GetShareWithUsersAsyncTask.java @@ -28,7 +28,6 @@ import com.owncloud.android.datamodel.FileDataStorageManager; import com.owncloud.android.datamodel.OCFile; import com.owncloud.android.lib.common.OwnCloudAccount; -import com.owncloud.android.lib.common.OwnCloudAccountStorageManager; import com.owncloud.android.lib.common.OwnCloudClient; import com.owncloud.android.lib.common.OwnCloudClientManagerFactory; import com.owncloud.android.lib.common.operations.OnRemoteOperationListener; @@ -65,7 +64,7 @@ protected Pair doInBackground(Object... try { // Get shares request operation = new GetSharesForFileOperation(file.getRemotePath(), false, false); - OwnCloudAccount ocAccount = OwnCloudAccountStorageManager.getOwnCloudAccount( + OwnCloudAccount ocAccount = new OwnCloudAccount( account, MainApp.getAppContext() ); From 70e24ceabe9dff5101b460d618bc78c1483d66ee Mon Sep 17 00:00:00 2001 From: "David A. Velasco" Date: Thu, 9 Jun 2016 11:05:19 +0200 Subject: [PATCH 24/99] Show display name in account selector --- .../owncloud/android/ui/activity/Preferences.java | 14 ++++++++++++-- 1 file changed, 12 insertions(+), 2 deletions(-) diff --git a/src/com/owncloud/android/ui/activity/Preferences.java b/src/com/owncloud/android/ui/activity/Preferences.java index f7ce28a5efca..cafa27fcce44 100644 --- a/src/com/owncloud/android/ui/activity/Preferences.java +++ b/src/com/owncloud/android/ui/activity/Preferences.java @@ -74,6 +74,7 @@ import com.owncloud.android.files.FileOperationsHelper; import com.owncloud.android.files.services.FileDownloader; import com.owncloud.android.files.services.FileUploader; +import com.owncloud.android.lib.common.OwnCloudAccount; import com.owncloud.android.lib.common.utils.Log_OC; import com.owncloud.android.services.OperationsService; import com.owncloud.android.ui.RadioButtonPreference; @@ -748,8 +749,17 @@ private void addAccountsCheckboxPreferences() { for (Account a : accounts) { RadioButtonPreference accountPreference = new RadioButtonPreference(this); accountPreference.setKey(a.name); - // Handle internationalized domain names - accountPreference.setTitle(DisplayUtils.convertIdn(a.name, false)); + try { + OwnCloudAccount oca = new OwnCloudAccount(a, this); + accountPreference.setTitle(oca.getDisplayName()); + } catch (com.owncloud.android.lib.common.accounts.AccountUtils.AccountNotFoundException e) { + Log_OC.w( + TAG, + "Account not found right after being read :\\ ; using account name instead of display name" + ); + // Handle internationalized domain names + accountPreference.setTitle(DisplayUtils.convertIdn(a.name, false)); + } mAccountsPrefCategory.addPreference(accountPreference); // Check the current account that is being used From 95152a36e8dabf80c13523d7cd4290068a2b6b4f Mon Sep 17 00:00:00 2001 From: "David A. Velasco" Date: Thu, 9 Jun 2016 11:12:13 +0200 Subject: [PATCH 25/99] Show display name in navigation drawer --- .../owncloud/android/ui/activity/FileActivity.java | 13 +++++++++++-- 1 file changed, 11 insertions(+), 2 deletions(-) diff --git a/src/com/owncloud/android/ui/activity/FileActivity.java b/src/com/owncloud/android/ui/activity/FileActivity.java index a0db0dba633b..f45b95208a4f 100644 --- a/src/com/owncloud/android/ui/activity/FileActivity.java +++ b/src/com/owncloud/android/ui/activity/FileActivity.java @@ -456,8 +456,17 @@ public void onDrawerOpened(View drawerView) { protected void setUsernameInDrawer(View navigationDrawerLayout, Account account) { if (navigationDrawerLayout != null && account != null) { TextView username = (TextView) navigationDrawerLayout.findViewById(R.id.drawer_username); - int lastAtPos = account.name.lastIndexOf("@"); - username.setText(account.name.substring(0, lastAtPos)); + + try { + OwnCloudAccount oca = new OwnCloudAccount(account, this); + username.setText(oca.getDisplayName()); + + } catch (com.owncloud.android.lib.common.accounts.AccountUtils.AccountNotFoundException e) { + Log_OC.w(TAG, "Couldn't read display name of account; using account name instead"); + + int lastAtPos = account.name.lastIndexOf("@"); + username.setText(account.name.substring(0, lastAtPos)); + } } } From 3584666cf6d8d1376b1cf3f6c1b9345ce15c74e9 Mon Sep 17 00:00:00 2001 From: "David A. Velasco" Date: Fri, 10 Jun 2016 12:27:30 +0200 Subject: [PATCH 26/99] Added operation to sync display name --- .../operations/GetUserProfileOperation.java | 71 +++++++++++++++++++ 1 file changed, 71 insertions(+) create mode 100644 src/com/owncloud/android/operations/GetUserProfileOperation.java diff --git a/src/com/owncloud/android/operations/GetUserProfileOperation.java b/src/com/owncloud/android/operations/GetUserProfileOperation.java new file mode 100644 index 000000000000..0a5e78c5aec8 --- /dev/null +++ b/src/com/owncloud/android/operations/GetUserProfileOperation.java @@ -0,0 +1,71 @@ +/** + * ownCloud Android client application + * + * @author David A. Velasco + * Copyright (C) 2016 ownCloud Inc. + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License version 2, + * as published by the Free Software Foundation. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + * + */ +package com.owncloud.android.operations; + +import android.accounts.Account; +import android.accounts.AccountManager; + +import com.owncloud.android.MainApp; +import com.owncloud.android.lib.common.OwnCloudClient; +import com.owncloud.android.lib.common.accounts.AccountUtils; +import com.owncloud.android.lib.common.operations.RemoteOperationResult; +import com.owncloud.android.lib.resources.status.GetRemoteStatusOperation; +import com.owncloud.android.lib.resources.status.OwnCloudVersion; +import com.owncloud.android.lib.resources.users.GetRemoteUserNameOperation; +import com.owncloud.android.operations.common.SyncOperation; + +import java.util.ArrayList; + +/** + * Get and save user's profile from the server. + * + * Currently only retrieves the display name. + */ +public class GetUserProfileOperation extends SyncOperation { + + /** + * Performs the operation. + * + * Target user account is implicit in 'client'. + * + * Stored account is implicit in {@link #getStorageManager()}. + * + * @return Result of the operation. If successful, includes an instance of + * {@link String} with the display name retrieved from the server. + * Call {@link RemoteOperationResult#getData()}.get(0) to get it. + */ + @Override + protected RemoteOperationResult run(OwnCloudClient client) { + + // get display name + GetRemoteUserNameOperation getDisplayName = new GetRemoteUserNameOperation(); + RemoteOperationResult result = getDisplayName.execute(client); + + if (result.isSuccess()) { + // store display name with account data + AccountManager accountManager = AccountManager.get(MainApp.getAppContext()); + String displayName = (String) result.getData().get(0); + Account storedAccount = getStorageManager().getAccount(); + accountManager.setUserData(storedAccount, AccountUtils.Constants.KEY_DISPLAY_NAME, displayName); + } + return result; + } + +} From 0913e3f23488447d360ba6ad726521dc94d0a5dc Mon Sep 17 00:00:00 2001 From: "David A. Velasco" Date: Fri, 10 Jun 2016 14:46:35 +0200 Subject: [PATCH 27/99] Display name is sync'ed whenever a refresh of root folder occurs --- .../operations/RefreshFolderOperation.java | 17 +++++++++---- .../ui/activity/FileDisplayActivity.java | 24 ++++++++++++------- 2 files changed, 28 insertions(+), 13 deletions(-) diff --git a/src/com/owncloud/android/operations/RefreshFolderOperation.java b/src/com/owncloud/android/operations/RefreshFolderOperation.java index 5a11da38cdaa..912262c8614d 100644 --- a/src/com/owncloud/android/operations/RefreshFolderOperation.java +++ b/src/com/owncloud/android/operations/RefreshFolderOperation.java @@ -187,7 +187,7 @@ protected RemoteOperationResult run(OwnCloudClient client) { if (OCFile.ROOT_PATH.equals(mLocalFolder.getRemotePath()) && !mSyncFullAccount) { updateOCVersion(client); - + updateUserProfile(); } result = checkForChanges(client); @@ -226,7 +226,6 @@ protected RemoteOperationResult run(OwnCloudClient client) { } - private void updateOCVersion(OwnCloudClient client) { UpdateOCVersionOperation update = new UpdateOCVersionOperation(mAccount, mContext); RemoteOperationResult result = update.execute(client); @@ -235,14 +234,24 @@ private void updateOCVersion(OwnCloudClient client) { // Update Capabilities for this account if (update.getOCVersion().isVersionWithCapabilitiesAPI()) { - updateCapabilities(client); + updateCapabilities(); } else { Log_OC.d(TAG, "Capabilities API disabled"); } } } - private void updateCapabilities(OwnCloudClient client){ + private void updateUserProfile() { + GetUserProfileOperation update = new GetUserProfileOperation(); + RemoteOperationResult result = update.execute(mStorageManager, mContext); + if (!result.isSuccess()) { + Log_OC.w(TAG, "Couldn't update user profile from server"); + } else { + Log_OC.i(TAG, "Got display name: " + result.getData().get(0)); + } + } + + private void updateCapabilities(){ GetCapabilitiesOperarion getCapabilities = new GetCapabilitiesOperarion(); RemoteOperationResult result = getCapabilities.execute(mStorageManager,mContext); if (!result.isSuccess()){ diff --git a/src/com/owncloud/android/ui/activity/FileDisplayActivity.java b/src/com/owncloud/android/ui/activity/FileDisplayActivity.java index 009d564b2d12..339a45bf9290 100644 --- a/src/com/owncloud/android/ui/activity/FileDisplayActivity.java +++ b/src/com/owncloud/android/ui/activity/FileDisplayActivity.java @@ -977,22 +977,28 @@ public void onReceive(Context context, Intent intent) { .equals(event)); if (RefreshFolderOperation.EVENT_SINGLE_FOLDER_CONTENTS_SYNCED. - equals(event) &&/// TODO refactor and make common + equals(event)) { - synchResult != null && !synchResult.isSuccess()) { + if (synchResult != null && !synchResult.isSuccess()) { + /// TODO refactor and make common - if(ResultCode.UNAUTHORIZED.equals(synchResult.getCode()) || - (synchResult.isException() && synchResult.getException() - instanceof AuthenticatorException)) { + if (ResultCode.UNAUTHORIZED.equals(synchResult.getCode()) || + (synchResult.isException() && synchResult.getException() + instanceof AuthenticatorException)) { - requestCredentialsUpdate(context); + requestCredentialsUpdate(context); - } else if(RemoteOperationResult.ResultCode.SSL_RECOVERABLE_PEER_UNVERIFIED.equals( - synchResult.getCode())) { + } else if (RemoteOperationResult.ResultCode.SSL_RECOVERABLE_PEER_UNVERIFIED.equals( + synchResult.getCode())) { + + showUntrustedCertDialog(synchResult); + } - showUntrustedCertDialog(synchResult); } + if (synchFolderRemotePath.equals(OCFile.ROOT_PATH)) { + setUsernameInDrawer(mDrawerLayout, getAccount()); + } } } From 282f62b735927f57a3d1996270929ef55897a8ba Mon Sep 17 00:00:00 2001 From: "David A. Velasco" Date: Mon, 13 Jun 2016 14:05:43 +0200 Subject: [PATCH 28/99] Updated after renaming operation in OC library --- owncloud-android-library | 2 +- .../authentication/AuthenticatorActivity.java | 9 +++++---- .../authentication/AuthenticatorAsyncTask.java | 4 ++-- .../operations/GetUserProfileOperation.java | 17 +++++++++-------- .../android/services/OperationsService.java | 4 ++-- 5 files changed, 19 insertions(+), 17 deletions(-) diff --git a/owncloud-android-library b/owncloud-android-library index 06f27a7c796d..75667c67f445 160000 --- a/owncloud-android-library +++ b/owncloud-android-library @@ -1 +1 @@ -Subproject commit 06f27a7c796dcec57f1705ca8f59fa340c589135 +Subproject commit 75667c67f4455217c1843d576f6c471280c409f4 diff --git a/src/com/owncloud/android/authentication/AuthenticatorActivity.java b/src/com/owncloud/android/authentication/AuthenticatorActivity.java index 3a99bdbc4df3..42f99b211fe5 100644 --- a/src/com/owncloud/android/authentication/AuthenticatorActivity.java +++ b/src/com/owncloud/android/authentication/AuthenticatorActivity.java @@ -79,7 +79,8 @@ import com.owncloud.android.lib.common.operations.RemoteOperationResult.ResultCode; import com.owncloud.android.lib.common.utils.Log_OC; import com.owncloud.android.lib.resources.status.OwnCloudVersion; -import com.owncloud.android.lib.resources.users.GetRemoteUserNameOperation; +import com.owncloud.android.lib.resources.users.GetRemoteUserInfoOperation; +import com.owncloud.android.lib.resources.users.GetRemoteUserInfoOperation.UserInfo; import com.owncloud.android.operations.DetectAuthenticationMethodOperation.AuthenticationMethod; import com.owncloud.android.operations.GetServerInfoOperation; import com.owncloud.android.operations.OAuth2GetAccessToken; @@ -1030,7 +1031,7 @@ public void onRemoteOperationFinish(RemoteOperation operation, RemoteOperationRe } else if (operation instanceof OAuth2GetAccessToken) { onGetOAuthAccessTokenFinish(result); - } else if (operation instanceof GetRemoteUserNameOperation) { + } else if (operation instanceof GetRemoteUserInfoOperation) { onGetUserNameFinish(result); } @@ -1596,9 +1597,9 @@ private boolean createAccount(RemoteOperationResult authResult) { ); if (authResult.getData() != null) { try { - String displayName = (String) authResult.getData().get(0); + UserInfo userInfo = (UserInfo) authResult.getData().get(0); mAccountMgr.setUserData( - mAccount, Constants.KEY_DISPLAY_NAME, displayName + mAccount, Constants.KEY_DISPLAY_NAME, userInfo.mDisplayName ); } catch (ClassCastException c) { Log_OC.w(TAG, "Couldn't get display name for " + username); diff --git a/src/com/owncloud/android/authentication/AuthenticatorAsyncTask.java b/src/com/owncloud/android/authentication/AuthenticatorAsyncTask.java index 6dee4cdb5663..09997c72552d 100644 --- a/src/com/owncloud/android/authentication/AuthenticatorAsyncTask.java +++ b/src/com/owncloud/android/authentication/AuthenticatorAsyncTask.java @@ -30,7 +30,7 @@ import com.owncloud.android.lib.common.network.RedirectionPath; import com.owncloud.android.lib.common.operations.RemoteOperationResult; import com.owncloud.android.lib.resources.files.ExistenceCheckRemoteOperation; -import com.owncloud.android.lib.resources.users.GetRemoteUserNameOperation; +import com.owncloud.android.lib.resources.users.GetRemoteUserInfoOperation; import java.lang.ref.WeakReference; @@ -80,7 +80,7 @@ protected RemoteOperationResult doInBackground(Object... params) { // Operation - get display name if (result.isSuccess()) { - GetRemoteUserNameOperation remoteUserNameOperation = new GetRemoteUserNameOperation(); + GetRemoteUserInfoOperation remoteUserNameOperation = new GetRemoteUserInfoOperation(); result = remoteUserNameOperation.execute(client); } diff --git a/src/com/owncloud/android/operations/GetUserProfileOperation.java b/src/com/owncloud/android/operations/GetUserProfileOperation.java index 0a5e78c5aec8..e1a55569d8ac 100644 --- a/src/com/owncloud/android/operations/GetUserProfileOperation.java +++ b/src/com/owncloud/android/operations/GetUserProfileOperation.java @@ -26,13 +26,10 @@ import com.owncloud.android.lib.common.OwnCloudClient; import com.owncloud.android.lib.common.accounts.AccountUtils; import com.owncloud.android.lib.common.operations.RemoteOperationResult; -import com.owncloud.android.lib.resources.status.GetRemoteStatusOperation; -import com.owncloud.android.lib.resources.status.OwnCloudVersion; -import com.owncloud.android.lib.resources.users.GetRemoteUserNameOperation; +import com.owncloud.android.lib.resources.users.GetRemoteUserInfoOperation; +import com.owncloud.android.lib.resources.users.GetRemoteUserInfoOperation.UserInfo; import com.owncloud.android.operations.common.SyncOperation; -import java.util.ArrayList; - /** * Get and save user's profile from the server. * @@ -55,15 +52,19 @@ public class GetUserProfileOperation extends SyncOperation { protected RemoteOperationResult run(OwnCloudClient client) { // get display name - GetRemoteUserNameOperation getDisplayName = new GetRemoteUserNameOperation(); + GetRemoteUserInfoOperation getDisplayName = new GetRemoteUserInfoOperation(); RemoteOperationResult result = getDisplayName.execute(client); if (result.isSuccess()) { // store display name with account data AccountManager accountManager = AccountManager.get(MainApp.getAppContext()); - String displayName = (String) result.getData().get(0); + UserInfo userInfo = (UserInfo) result.getData().get(0); Account storedAccount = getStorageManager().getAccount(); - accountManager.setUserData(storedAccount, AccountUtils.Constants.KEY_DISPLAY_NAME, displayName); + accountManager.setUserData( + storedAccount, + AccountUtils.Constants.KEY_DISPLAY_NAME, + userInfo.mDisplayName + ); } return result; } diff --git a/src/com/owncloud/android/services/OperationsService.java b/src/com/owncloud/android/services/OperationsService.java index ee09ad054218..0925cb6e3603 100644 --- a/src/com/owncloud/android/services/OperationsService.java +++ b/src/com/owncloud/android/services/OperationsService.java @@ -51,7 +51,7 @@ import com.owncloud.android.lib.common.utils.Log_OC; import com.owncloud.android.lib.resources.shares.ShareType; import com.owncloud.android.lib.resources.status.OwnCloudVersion; -import com.owncloud.android.lib.resources.users.GetRemoteUserNameOperation; +import com.owncloud.android.lib.resources.users.GetRemoteUserInfoOperation; import com.owncloud.android.operations.CheckCurrentCredentialsOperation; import com.owncloud.android.operations.CopyFileOperation; import com.owncloud.android.operations.CreateFolderOperation; @@ -642,7 +642,7 @@ private void nextOperation() { } else if (action.equals(ACTION_GET_USER_NAME)) { // Get User Name - operation = new GetRemoteUserNameOperation(); + operation = new GetRemoteUserInfoOperation(); } else if (action.equals(ACTION_RENAME)) { // Rename file or folder From ea3cf41b99e2e621fa50ca5268382fcdecb81383 Mon Sep 17 00:00:00 2001 From: "David A. Velasco" Date: Wed, 15 Jun 2016 10:22:24 +0200 Subject: [PATCH 29/99] Show display name in account selector of ReceiveExternalFilesActivity.java --- owncloud-android-library | 2 +- .../android/ui/activity/FileActivity.java | 3 +-- .../android/ui/activity/Preferences.java | 10 ++++++---- .../ReceiveExternalFilesActivity.java | 20 +++++++++++++------ 4 files changed, 22 insertions(+), 13 deletions(-) diff --git a/owncloud-android-library b/owncloud-android-library index 75667c67f445..4d80ca096dd6 160000 --- a/owncloud-android-library +++ b/owncloud-android-library @@ -1 +1 @@ -Subproject commit 75667c67f4455217c1843d576f6c471280c409f4 +Subproject commit 4d80ca096dd68d718d68517d9ae52510007f8582 diff --git a/src/com/owncloud/android/ui/activity/FileActivity.java b/src/com/owncloud/android/ui/activity/FileActivity.java index f45b95208a4f..f90f4922abf7 100644 --- a/src/com/owncloud/android/ui/activity/FileActivity.java +++ b/src/com/owncloud/android/ui/activity/FileActivity.java @@ -456,12 +456,11 @@ public void onDrawerOpened(View drawerView) { protected void setUsernameInDrawer(View navigationDrawerLayout, Account account) { if (navigationDrawerLayout != null && account != null) { TextView username = (TextView) navigationDrawerLayout.findViewById(R.id.drawer_username); - try { OwnCloudAccount oca = new OwnCloudAccount(account, this); username.setText(oca.getDisplayName()); - } catch (com.owncloud.android.lib.common.accounts.AccountUtils.AccountNotFoundException e) { + } catch (Exception e) { Log_OC.w(TAG, "Couldn't read display name of account; using account name instead"); int lastAtPos = account.name.lastIndexOf("@"); diff --git a/src/com/owncloud/android/ui/activity/Preferences.java b/src/com/owncloud/android/ui/activity/Preferences.java index cafa27fcce44..5171b6922607 100644 --- a/src/com/owncloud/android/ui/activity/Preferences.java +++ b/src/com/owncloud/android/ui/activity/Preferences.java @@ -745,14 +745,16 @@ private void addAccountsCheckboxPreferences() { null); } else { - + OwnCloudAccount oca; for (Account a : accounts) { RadioButtonPreference accountPreference = new RadioButtonPreference(this); accountPreference.setKey(a.name); try { - OwnCloudAccount oca = new OwnCloudAccount(a, this); - accountPreference.setTitle(oca.getDisplayName()); - } catch (com.owncloud.android.lib.common.accounts.AccountUtils.AccountNotFoundException e) { + oca = new OwnCloudAccount(a, this); + accountPreference.setTitle( + oca.getDisplayName() + " @ " + DisplayUtils.convertIdn(oca.getBaseUri().getHost(), false) + ); + } catch (Exception e) { Log_OC.w( TAG, "Account not found right after being read :\\ ; using account name instead of display name" diff --git a/src/com/owncloud/android/ui/activity/ReceiveExternalFilesActivity.java b/src/com/owncloud/android/ui/activity/ReceiveExternalFilesActivity.java index 22bb26ae700c..8957082febfb 100644 --- a/src/com/owncloud/android/ui/activity/ReceiveExternalFilesActivity.java +++ b/src/com/owncloud/android/ui/activity/ReceiveExternalFilesActivity.java @@ -59,6 +59,7 @@ import com.owncloud.android.datamodel.OCFile; import com.owncloud.android.db.PreferenceManager; import com.owncloud.android.files.services.FileUploader; +import com.owncloud.android.lib.common.OwnCloudAccount; import com.owncloud.android.lib.common.operations.RemoteOperation; import com.owncloud.android.lib.common.operations.RemoteOperationResult; import com.owncloud.android.lib.common.operations.RemoteOperationResult.ResultCode; @@ -265,14 +266,21 @@ public void onClick(DialogInterface dialog, int which) { }); return builder.create(); case DIALOG_MULTIPLE_ACCOUNT: - CharSequence ac[] = new CharSequence[ - mAccountManager.getAccountsByType(MainApp.getAccountType()).length]; - for (int i = 0; i < ac.length; ++i) { - ac[i] = DisplayUtils.convertIdn( - mAccountManager.getAccountsByType(MainApp.getAccountType())[i].name, false); + Account accounts[] = mAccountManager.getAccountsByType(MainApp.getAccountType()); + CharSequence dialogItems[] = new CharSequence[accounts.length]; + OwnCloudAccount oca; + for (int i = 0; i < dialogItems.length; ++i) { + try { + oca = new OwnCloudAccount(accounts[i], this); + dialogItems[i] = + oca.getDisplayName() + " @ " + DisplayUtils.convertIdn(oca.getBaseUri().getHost(), false); + } catch (Exception e) { + Log_OC.w(TAG, "Couldn't read display name of account; using account name instead"); + dialogItems[i] = DisplayUtils.convertIdn(accounts[i].name, false); + } } builder.setTitle(R.string.common_choose_account); - builder.setItems(ac, new OnClickListener() { + builder.setItems(dialogItems, new OnClickListener() { @Override public void onClick(DialogInterface dialog, int which) { setAccount(mAccountManager.getAccountsByType(MainApp.getAccountType())[which]); From aa2b113ea585a845b2655e79cf17857d306a2744 Mon Sep 17 00:00:00 2001 From: "David A. Velasco" Date: Wed, 15 Jun 2016 10:37:23 +0200 Subject: [PATCH 30/99] Show display name in list of uploads --- .../ui/adapter/ExpandableUploadListAdapter.java | 16 +++++++++++++++- 1 file changed, 15 insertions(+), 1 deletion(-) diff --git a/src/com/owncloud/android/ui/adapter/ExpandableUploadListAdapter.java b/src/com/owncloud/android/ui/adapter/ExpandableUploadListAdapter.java index 5abf070a4c94..0d2063ceec63 100755 --- a/src/com/owncloud/android/ui/adapter/ExpandableUploadListAdapter.java +++ b/src/com/owncloud/android/ui/adapter/ExpandableUploadListAdapter.java @@ -19,6 +19,7 @@ */ package com.owncloud.android.ui.adapter; +import android.accounts.Account; import android.content.Context; import android.database.DataSetObserver; import android.graphics.Bitmap; @@ -36,6 +37,7 @@ import android.widget.Toast; import com.owncloud.android.R; +import com.owncloud.android.authentication.AccountUtils; import com.owncloud.android.datamodel.OCFile; import com.owncloud.android.datamodel.ThumbnailsCacheManager; import com.owncloud.android.datamodel.UploadsStorageManager; @@ -43,6 +45,7 @@ import com.owncloud.android.db.OCUpload; import com.owncloud.android.db.UploadResult; import com.owncloud.android.files.services.FileUploader; +import com.owncloud.android.lib.common.OwnCloudAccount; import com.owncloud.android.lib.common.network.OnDatatransferProgressListener; import com.owncloud.android.lib.common.utils.Log_OC; import com.owncloud.android.ui.activity.FileActivity; @@ -238,7 +241,18 @@ private View getView(OCUpload[] uploadsItems, int position, View convertView, Vi uploadDateTextView.setText(dateString); TextView accountNameTextView = (TextView) view.findViewById(R.id.upload_account); - accountNameTextView.setText(upload.getAccountName()); + try { + OwnCloudAccount oca = new OwnCloudAccount( + AccountUtils.getOwnCloudAccountByName(mParentActivity, upload.getAccountName()), + mParentActivity + ); + accountNameTextView.setText( + oca.getDisplayName() + " @ " + DisplayUtils.convertIdn(oca.getBaseUri().getHost(), false) + ); + } catch (Exception e) { + Log_OC.w(TAG, "Couldn't get display name for account, using old style"); + accountNameTextView.setText(upload.getAccountName()); + } TextView statusTextView = (TextView) view.findViewById(R.id.upload_status); From 037535256e1d9d184b593d7868972631e4d475b9 Mon Sep 17 00:00:00 2001 From: "David A. Velasco" Date: Thu, 16 Jun 2016 11:16:43 +0200 Subject: [PATCH 31/99] Recovered full port and path in accounts naming to distinguish instances in the same host --- src/com/owncloud/android/ui/activity/Preferences.java | 3 ++- .../ui/activity/ReceiveExternalFilesActivity.java | 7 ++++++- .../android/ui/adapter/ExpandableUploadListAdapter.java | 9 ++++----- 3 files changed, 12 insertions(+), 7 deletions(-) diff --git a/src/com/owncloud/android/ui/activity/Preferences.java b/src/com/owncloud/android/ui/activity/Preferences.java index 5171b6922607..95d5d96b00b3 100644 --- a/src/com/owncloud/android/ui/activity/Preferences.java +++ b/src/com/owncloud/android/ui/activity/Preferences.java @@ -752,7 +752,8 @@ private void addAccountsCheckboxPreferences() { try { oca = new OwnCloudAccount(a, this); accountPreference.setTitle( - oca.getDisplayName() + " @ " + DisplayUtils.convertIdn(oca.getBaseUri().getHost(), false) + oca.getDisplayName() + " @ " + + DisplayUtils.convertIdn(a.name.substring(a.name.lastIndexOf("@") + 1), false) ); } catch (Exception e) { Log_OC.w( diff --git a/src/com/owncloud/android/ui/activity/ReceiveExternalFilesActivity.java b/src/com/owncloud/android/ui/activity/ReceiveExternalFilesActivity.java index 8957082febfb..821d7dd9f52e 100644 --- a/src/com/owncloud/android/ui/activity/ReceiveExternalFilesActivity.java +++ b/src/com/owncloud/android/ui/activity/ReceiveExternalFilesActivity.java @@ -273,7 +273,12 @@ public void onClick(DialogInterface dialog, int which) { try { oca = new OwnCloudAccount(accounts[i], this); dialogItems[i] = - oca.getDisplayName() + " @ " + DisplayUtils.convertIdn(oca.getBaseUri().getHost(), false); + oca.getDisplayName() + " @ " + + DisplayUtils.convertIdn( + accounts[i].name.substring(accounts[i].name.lastIndexOf("@") + 1), + false + ); + } catch (Exception e) { Log_OC.w(TAG, "Couldn't read display name of account; using account name instead"); dialogItems[i] = DisplayUtils.convertIdn(accounts[i].name, false); diff --git a/src/com/owncloud/android/ui/adapter/ExpandableUploadListAdapter.java b/src/com/owncloud/android/ui/adapter/ExpandableUploadListAdapter.java index 0d2063ceec63..92829267e9ca 100755 --- a/src/com/owncloud/android/ui/adapter/ExpandableUploadListAdapter.java +++ b/src/com/owncloud/android/ui/adapter/ExpandableUploadListAdapter.java @@ -242,12 +242,11 @@ private View getView(OCUpload[] uploadsItems, int position, View convertView, Vi TextView accountNameTextView = (TextView) view.findViewById(R.id.upload_account); try { - OwnCloudAccount oca = new OwnCloudAccount( - AccountUtils.getOwnCloudAccountByName(mParentActivity, upload.getAccountName()), - mParentActivity - ); + Account account = AccountUtils.getOwnCloudAccountByName(mParentActivity, upload.getAccountName()); + OwnCloudAccount oca = new OwnCloudAccount(account, mParentActivity); accountNameTextView.setText( - oca.getDisplayName() + " @ " + DisplayUtils.convertIdn(oca.getBaseUri().getHost(), false) + oca.getDisplayName() + " @ " + + DisplayUtils.convertIdn(account.name.substring(account.name.lastIndexOf("@") + 1), false) ); } catch (Exception e) { Log_OC.w(TAG, "Couldn't get display name for account, using old style"); From 21272fe4a9005528445e042d6e6a7f4ab9a42e69 Mon Sep 17 00:00:00 2001 From: "David A. Velasco" Date: Thu, 16 Jun 2016 12:15:24 +0200 Subject: [PATCH 32/99] Fixed NULL account name after app upgrade --- owncloud-android-library | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/owncloud-android-library b/owncloud-android-library index 4d80ca096dd6..0ce18350cfdf 160000 --- a/owncloud-android-library +++ b/owncloud-android-library @@ -1 +1 @@ -Subproject commit 4d80ca096dd68d718d68517d9ae52510007f8582 +Subproject commit 0ce18350cfdf246ecad91aab8345c5141c12339c From 18fa5730093d3ce55e9658e3ff566ebeaba2b062 Mon Sep 17 00:00:00 2001 From: Jenkins for ownCloud Date: Fri, 17 Jun 2016 01:14:15 -0400 Subject: [PATCH 33/99] [tx-robot] updated from transifex --- res/values-nl/strings.xml | 3 +++ 1 file changed, 3 insertions(+) diff --git a/res/values-nl/strings.xml b/res/values-nl/strings.xml index 5bf50349b58b..da6268185e11 100644 --- a/res/values-nl/strings.xml +++ b/res/values-nl/strings.xml @@ -59,6 +59,7 @@ Download hier: %2$s Bestanden Verbinden Uploaden + Kies een uploadmap Geen account gevonden Er zijn geen %1$s accounts op dit apparaat. Stel eerst een account in. Configureren @@ -225,6 +226,8 @@ Hieronder staan de lokale bestanden en de externe bestanden in %5$s waar ze naar Kan niet authenticeren tegen deze server Het account bestaat nog niet in dit apparaat + Instellen als beschikbaar offline + Instellen als niet beschikbaar offline Hernoemen Verwijderen Wilt u %1$s werkelijk verwijderen? From 39a2d79841abb9d052904d3672af6dc3854a51c5 Mon Sep 17 00:00:00 2001 From: Jenkins for ownCloud Date: Sun, 19 Jun 2016 01:13:46 -0400 Subject: [PATCH 34/99] [tx-robot] updated from transifex --- res/values-ru/strings.xml | 1 + 1 file changed, 1 insertion(+) diff --git a/res/values-ru/strings.xml b/res/values-ru/strings.xml index f7f165c22fbc..0b277e9e5c8e 100644 --- a/res/values-ru/strings.xml +++ b/res/values-ru/strings.xml @@ -59,6 +59,7 @@ Файлы Подключиться Загрузить + Выбрать каталог для загрузки Учётная запись не найдена На вашем устройстве нет аккаунтов %1$s. Пожалуйста выполните настройку аккаунта. Настройка From 674a09433410dc12658363be330e43539adaf739 Mon Sep 17 00:00:00 2001 From: Jenkins for ownCloud Date: Mon, 20 Jun 2016 01:13:38 -0400 Subject: [PATCH 35/99] [tx-robot] updated from transifex --- res/values-pl/strings.xml | 1 + 1 file changed, 1 insertion(+) diff --git a/res/values-pl/strings.xml b/res/values-pl/strings.xml index 39a291c85aa0..30aa06ebd58c 100644 --- a/res/values-pl/strings.xml +++ b/res/values-pl/strings.xml @@ -58,6 +58,7 @@ Pliki Połącz Wyślij + Wybierz folder do wgrywania plików Nie znaleziono konta Brak kont %1$s na Twoim urządzeniu. Załóż konto. Ustawienia From 9e65ac036587e9cc473fa82c3bd24baa49a40f9a Mon Sep 17 00:00:00 2001 From: Jenkins for ownCloud Date: Wed, 22 Jun 2016 01:14:06 -0400 Subject: [PATCH 36/99] [tx-robot] updated from transifex --- res/values-lb/strings.xml | 102 +++++++++++++++++++++++++++++++++++++- res/values-sv/strings.xml | 3 ++ 2 files changed, 104 insertions(+), 1 deletion(-) diff --git a/res/values-lb/strings.xml b/res/values-lb/strings.xml index a9c6c2a191a8..69ce6379b6ed 100644 --- a/res/values-lb/strings.xml +++ b/res/values-lb/strings.xml @@ -1,6 +1,6 @@ - %1$s Android-App + %1$s Android-App Versioun %1$s Kont opfrëschen Eroplueden @@ -21,22 +21,31 @@ Biggest - Smallest--> + All d\'Fichieren + Astellungen + Zoumaachen Opmaachen Allgemeng Méi Konten + Konte geréieren + Passwuert gespaart Biller direkt eroplueden Biller vum Fotoapparat direkt eroplueden Videoen direkt eroplueden Biller vun der Kamera direkt eroplueden Heiduerch gi Problemer protokolléiert Hei ginn déi enregistréiert Protokoller ugewisen + Historique läschen Hëllef Engem Frënd recommendéieren Feedback Impressum + Gedeelte Plaz verhalen + Déi leschte gedeelten eropgeluede Plaz verhalen + Versich %1$s op dengem Smartphone! Server-Adress https://… Benotzernumm Passwuert @@ -44,39 +53,61 @@ Fichieren Verbannen Eroplueden + Dossier fir eropzelueden auswielen Keen Account fonnt Setup Erausgoen + Kee Fichier fir eropzeluede + Fichier kann net eropgeluede ginn + %1$s huet keng Erlaabnis fir den erhalene Fichier ze liesen + Beim Kopéiere vun dësem Fichier op den temporäre Dossier ass e Feeler opgetrueden. Wann ech gelift versicht et nach eng Kéier ze schécken. Sekonnen hier Hei ass näischt. Lued eppes erop! + Et gëtt gelueden + Et gouf keng App fir dësen Typ vu Fichier fonnt! + Et gi keng Fichieren fir dësen Dossier. Dossier Dossieren Fichier Fichieren + Tippt op e Fichier fir zousätzlech Informatiounen unzeweisen. Gréisst: Typ: Erstallt: Geännert: Eroflueden + Synchroniséieren Deelen Jo Nee OK + Synchronisatioun ofbriechen Ofbriechen Zeréck Feeler + Onbekannt Onbekannte Feeler Iwwer Passwuert änneren + De Kont läschen Kont uleeën Dossiersnumm: Lueden erop ... + %1$d%% eroplueden %2$s Eroplueden ofgeschloss + %1$s eropgelueden Eropluede feelgeschloen Eropluede vun %1$s konnt net ofgeschloss ginn + Aktuell + Feelgeschloen (Tipp fir nees ze probéieren) + Eropgelueden + Erfëllt + Gepaust + Verbindungs Feeler Onbekannte Feeler Lueden erof … Eroflueden ofgeschloss + %1$s erofgelueden Erofluede feelgeschloen Erofluede vun %1$s konnt net ofgeschloss ginn Nach net erofgelueden @@ -90,6 +121,15 @@ Verschidde Fichiere konnten net geréckelt ginn Lokal: %1$s Um Server: %1$s + Gëff w.e.g. däi Passwuert an + Passwuert aginn + D\'Passwuert gëtt all Kéiers gefrot wann d\'App gestart gëtt + Gëff w.e.g. däi Passwuert nach emol an + D\'Passwuert läschen + D\'Passwierder sinn net d\'selwecht + Ongëltegt Passwuert + Passwuert geläscht + Passwuert gespeichert %1$s Musek-Programm %1$s (spillt of) %1$s (lued) @@ -123,6 +163,8 @@ Falsche Benotzernumm oder falscht Passwuert Authoriséierung net erfollegräich Accès duerch den Authoriséierungsserver verweigert + Deng Autorisatioun ass ofgelaf. W.e.g. autoriséier dech nach emol + W.e.g dat aktuellt Passwuert aginn Deng Sessioun ass ofgelaf. Connectéier dech nei w.e.g. De Server ënnerstëtzt dës Authentifizéierungsmethod net Ëmbenennen @@ -160,6 +202,8 @@ Un: Signatur: Algorithmus: + Fangerofdrock: + Et gëtt e Problem fir de Certificat ze lueden. Den Zertifikat konnt net ugewise ginn. - Keng Informatioun iwwer de Feeler Dëst ass e Plazhaler @@ -168,15 +212,26 @@ 389kB 18.05.2012 12:23 12:23:45 + D\'Biller nëmmen iwwer WiFi eroplueden + D\'Videoen nëmmen iwwer WiFi eroplueden Béid halen + Lokal Versioun + Server Versioun Biller-Virschau Dëst Bild kann net ugewise ginn %1$s konnt net an de lokalen Dossier %2$s kopéiert ginn + Pad eroplueden + Konnt net gedeelt ginn. Kontrolléier w.e.g. ob de Fichier existéiert + Beim Deele vun dësem Fichier oder Dossier ass e Feeler opgetrueden + Konnt net ongedeelt ginn. Kontrolléier w.e.g. ob de Fichier existéiert + Beim Zesummeleeë vun dësem Fichier oder Dossier ass e Feeler opgetrueden + Konnt net aktualiséiert ginn. Kontrolléier w.e.g. ob de Fichier existéiert E Passwuert aginn Du muss e Passwuert aginn Schécken Link kopéieren An d\'Tëschenoflag kopéiert + Den Text vum %1$s ass kopéiert ginn Kritesche Feeler: D\'Operatioune konnten net ausgeféiert ginn Bei der Connectioun mam Server ass e Feeler opgetrueden. Beim Waarden op de Server ass e Feeler opgetrueden, d\'Operatioun konnt net duerchgeféiert ginn @@ -194,7 +249,9 @@ Konten Kont dobäisetzen Protokoller + Historique schécken Protokoller vun der %1$s-Android-App + Donnée gi gelueden ... Authentifizéierung néideg Falscht Passwuert Réckelen @@ -205,17 +262,60 @@ De Fichier existéiert schonn am Zildossier Beim Réckele vun dësem Fichier oder Dossier ass e Feeler opgetrueden fir dëse Fichier ze réckelen + Konnt net kopéieren. Kontrolléier w.e.g. ob de Fichier existéiert + Et ass net méiglech, den Dossier an en Ënnerdossier vu sech selwer ze réckelen De Fichier existéiert schonn am Zildossier + Beim Versuch dëse Fichier oder Dossier ze kopéieren ass e Feeler opgetrueden + Fir dese Fichier ze kopéieren + Direkt eropgeluede Fichieren Detailer + Video Pad eroplueden + Synchroniséierung vum %1$s Dossier konnt net ofgeschloss ginn + gedeelt + Mat dir %1$s huet \"%2$s\" mat dir gedeelt + \"%1$s\" gouf mat dir gedeelt Connectioun opfrëschen Server-Adress + Net genuch Memoire + Benotzernumm + 1 Dossier + %1$d Dossieren + 1 Fichier + 1 Fichier, 1 Dossier + 1 Fichier, %1$d Dossieren + %1$d Fichieren + 1 Fichier, %1$d Dossieren + %1$d Fichieren, %2$d Dossieren + Den original Fichier gëtt ... + Den original Fichier gëtt ... + Fichier kopéieren + Fichier réckelen + Am original Dossier gehalen + An den App Fichier geréckelt + Gedeelt + %1$s deelen + Mat Benotzer a Gruppen deelen + Nach keng Donnéeë mat Benotzer gedeelt + Benotzer oder Grupp bäisetzen Link deelen Verfallsdatum setzen Passwuertgeschützt + Geséchert + De Link kréien + Deele mat + Mam %1$s deelen Sichen + Benotzer a Gruppe sichen + %1$s (Grupp) kann deelen kann änneren erstellen + änneren läschen + Deelen ophalen + gemaacht + Donnéeë läschen + Verschidde Fichiere konnten net geläscht ginn. + De Fichier konnt net am lokale Fichier System fonnt ginn diff --git a/res/values-sv/strings.xml b/res/values-sv/strings.xml index 04b1fb66c252..755b5436b365 100644 --- a/res/values-sv/strings.xml +++ b/res/values-sv/strings.xml @@ -58,6 +58,7 @@ Filer Anslut Ladda upp + Välj mapp för uppladdning Hittade inget konto Det finns inga %1$s-konton på din enhet. Lägg till ett konto först Skapa @@ -222,6 +223,8 @@ Det går inte att autentisera mot denna server Det finns inget konto på denna enhet än + Sätt som tillgänglig offline + Ta bort som tillgänglig offline Byt namn Radera Vill du verkligen ta bort %1$s? From aa118551e31000f565455225d70889af350fff7c Mon Sep 17 00:00:00 2001 From: Jenkins for ownCloud Date: Thu, 23 Jun 2016 01:13:52 -0400 Subject: [PATCH 37/99] [tx-robot] updated from transifex --- res/values-pt-rBR/strings.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/res/values-pt-rBR/strings.xml b/res/values-pt-rBR/strings.xml index 4c59e400c9c8..3c7a0f607ef6 100644 --- a/res/values-pt-rBR/strings.xml +++ b/res/values-pt-rBR/strings.xml @@ -2,7 +2,7 @@ %1$s Aplicativo Android versão %1$s - Atualização de conta + Atualizar conta Enviar Conteúdo de outros apps Arquivos From 784f6f928deac8b3bceea6d36a803a19139f2eb6 Mon Sep 17 00:00:00 2001 From: jabarros Date: Tue, 21 Jun 2016 09:22:54 +0200 Subject: [PATCH 38/99] Fix build gradle to generate release unsigned apk --- build.gradle | 4 +++- oc_jb_workaround/build.gradle | 4 +++- 2 files changed, 6 insertions(+), 2 deletions(-) diff --git a/build.gradle b/build.gradle index 63980d4145e6..9c9bbea0bf29 100644 --- a/build.gradle +++ b/build.gradle @@ -136,7 +136,9 @@ android { buildTypes { release { - signingConfig signingConfigs.release + if (System.env.OC_RELEASE_KEYSTORE) { + signingConfig signingConfigs.release + } } } diff --git a/oc_jb_workaround/build.gradle b/oc_jb_workaround/build.gradle index 205fcadecbcc..1dee746d4701 100644 --- a/oc_jb_workaround/build.gradle +++ b/oc_jb_workaround/build.gradle @@ -53,7 +53,9 @@ android { buildTypes { release { - signingConfig signingConfigs.release + if (System.env.OC_RELEASE_KEYSTORE) { + signingConfig signingConfigs.release + } } } From 1183e51c198edbe90c9a93e2a8687a9a0d98d6dc Mon Sep 17 00:00:00 2001 From: tobiasKaminsky Date: Thu, 23 Jun 2016 21:10:58 +0200 Subject: [PATCH 39/99] Merge remote-tracking branch 'owncloud/multiSelect' into multiSelectOwncloud # Conflicts: # res/drawable-hdpi/ic_checkbox_marked.png # res/drawable-mdpi/ic_checkbox_marked.png # res/drawable-xhdpi/ic_checkbox_marked.png # res/drawable-xxhdpi/ic_checkbox_marked.png # res/layout/grid_image.xml # res/values/strings.xml # src/com/owncloud/android/notifications/NotificationBuilderWithProgressBar.java # src/com/owncloud/android/ui/activity/FileDisplayActivity.java # src/com/owncloud/android/ui/adapter/FileListListAdapter.java # src/com/owncloud/android/ui/dialog/RemoveFileDialogFragment.java # src/com/owncloud/android/ui/fragment/OCFileListFragment.java --- res/layout/grid_image.xml | 10 + res/layout/grid_item.xml | 10 +- res/layout/list_item.xml | 43 ++- res/menu/file_actions_menu.xml | 12 +- res/values/setup.xml | 7 +- res/values/strings.xml | 5 +- res/values/styles.xml | 2 + .../android/files/FileMenuFilter.java | 100 ++++- .../android/files/FileOperationsHelper.java | 17 +- .../files/services/FileDownloader.java | 21 ++ .../android/files/services/FileUploader.java | 21 ++ .../android/services/OperationsService.java | 27 +- .../android/ui/activity/FileActivity.java | 15 +- .../ui/activity/FileDisplayActivity.java | 62 ++- .../ui/activity/FolderPickerActivity.java | 10 +- .../ReceiveExternalFilesActivity.java | 12 +- .../ui/adapter/FileListListAdapter.java | 211 ++++++++--- .../ui/dialog/RemoveFileDialogFragment.java | 11 +- .../ui/fragment/ExtendedListFragment.java | 19 +- .../ui/fragment/OCFileListFragment.java | 353 ++++++++++-------- user_manual/ocdoc | 2 +- 21 files changed, 665 insertions(+), 305 deletions(-) diff --git a/res/layout/grid_image.xml b/res/layout/grid_image.xml index 5bde885c8170..f60c985aaeed 100644 --- a/res/layout/grid_image.xml +++ b/res/layout/grid_image.xml @@ -64,6 +64,16 @@ android:layout_marginBottom="4dp" android:layout_marginRight="4dp" android:src="@drawable/ic_available_offline" /> + + \ No newline at end of file diff --git a/res/layout/grid_item.xml b/res/layout/grid_item.xml index c66144a5cfa8..c80fc87315b5 100644 --- a/res/layout/grid_item.xml +++ b/res/layout/grid_item.xml @@ -65,7 +65,15 @@ android:layout_marginRight="2dp" android:src="@drawable/ic_available_offline" /> - + diff --git a/res/layout/list_item.xml b/res/layout/list_item.xml index 97afe4dde55c..3b670df83e28 100644 --- a/res/layout/list_item.xml +++ b/res/layout/list_item.xml @@ -121,26 +121,35 @@ - - - + android:paddingRight="@dimen/standard_padding"> + + + + + + + #000000 - + + + #757575 + #616161 + #ECECEC + true diff --git a/res/values/strings.xml b/res/values/strings.xml index 0219ae96a079..22a0aa74c012 100644 --- a/res/values/strings.xml +++ b/res/values/strings.xml @@ -234,7 +234,7 @@ Unset as available offline Rename Remove - "Do you really want to remove %1$s?" + "Do you really want to remove %1$s?" "Do you really want to remove %1$s and its contents?" Local only "Removal succeeded" @@ -455,5 +455,8 @@ Additional permissions required to upload & download files. The file was not found in the local file system + Do you really want to remove the selected items? + Do you really want to remove the selected items and their contents? + selected items diff --git a/res/values/styles.xml b/res/values/styles.xml index 7820d15e3459..f145797bf42d 100644 --- a/res/values/styles.xml +++ b/res/values/styles.xml @@ -24,6 +24,8 @@ From ecf1f9e3da844b7dade60969e1bb056f22aebd96 Mon Sep 17 00:00:00 2001 From: Andy Scherzinger Date: Wed, 20 Jul 2016 13:09:56 +0200 Subject: [PATCH 96/99] proper status bar coloring for multi select mode, cleanup logging --- res/layout/toolbar_standard.xml | 1 - .../android/ui/activity/ToolbarActivity.java | 16 ++++++++-- .../ui/fragment/OCFileListFragment.java | 32 ++++++++++--------- .../owncloud/android/utils/DisplayUtils.java | 30 +++++++++++++++-- 4 files changed, 58 insertions(+), 21 deletions(-) diff --git a/res/layout/toolbar_standard.xml b/res/layout/toolbar_standard.xml index fbe23e5368ff..77c076c9ccc3 100644 --- a/res/layout/toolbar_standard.xml +++ b/res/layout/toolbar_standard.xml @@ -38,7 +38,6 @@ android:layout_width="match_parent" android:layout_height="4dp" android:layout_margin="0dp" - android:background="@color/primary" android:indeterminate="false" android:indeterminateOnly="false" android:padding="0dp" diff --git a/src/com/owncloud/android/ui/activity/ToolbarActivity.java b/src/com/owncloud/android/ui/activity/ToolbarActivity.java index 1bed10b2605b..b8b34378fbd0 100644 --- a/src/com/owncloud/android/ui/activity/ToolbarActivity.java +++ b/src/com/owncloud/android/ui/activity/ToolbarActivity.java @@ -19,11 +19,11 @@ package com.owncloud.android.ui.activity; -import android.accounts.AccountManagerFuture; +import android.graphics.PorterDuff; import android.os.Bundle; +import android.support.annotation.ColorInt; import android.support.v4.content.ContextCompat; import android.support.v7.app.ActionBar; -import android.support.v7.app.AppCompatActivity; import android.support.v7.widget.Toolbar; import android.view.View; import android.widget.ProgressBar; @@ -118,4 +118,16 @@ public boolean isRoot(OCFile file) { public void setIndeterminate(boolean indeterminate) { mProgressBar.setIndeterminate(indeterminate); } + + /** + * Set the background to to progress bar of the toolbar. The resource should refer to + * a Drawable object or 0 to remove the background.# + * + * @param color The identifier of the color. + * @attr ref android.R.styleable#View_background + */ + public void setProgressBarBackgroundColor(@ColorInt int color) { + mProgressBar.setBackgroundColor(color); + mProgressBar.getProgressDrawable().setColorFilter(color, PorterDuff.Mode.SRC_IN); + } } diff --git a/src/com/owncloud/android/ui/fragment/OCFileListFragment.java b/src/com/owncloud/android/ui/fragment/OCFileListFragment.java index 23182991b781..3e740dbcf291 100644 --- a/src/com/owncloud/android/ui/fragment/OCFileListFragment.java +++ b/src/com/owncloud/android/ui/fragment/OCFileListFragment.java @@ -36,7 +36,6 @@ import android.view.MenuItem; import android.view.View; import android.view.ViewGroup; -import android.view.Window; import android.widget.AbsListView; import android.widget.AdapterView; import android.widget.ListView; @@ -64,6 +63,7 @@ import com.owncloud.android.ui.preview.PreviewImageFragment; import com.owncloud.android.ui.preview.PreviewMediaFragment; import com.owncloud.android.ui.preview.PreviewTextFragment; +import com.owncloud.android.utils.DisplayUtils; import com.owncloud.android.utils.FileStorageUtils; import java.io.File; @@ -99,8 +99,10 @@ public class OCFileListFragment extends ExtendedListFragment { private FileListListAdapter mAdapter; private boolean mJustFolders; - private int mStatusBarColorActionMode; - private int mStatusBarColor; + private int mSystemBarActionModeColor; + private int mSystemBarColor; + private int mProgressBarActionModeColor; + private int mProgressBarColor; private boolean mHideFab = true; private boolean miniFabClicked = false; @@ -110,7 +112,10 @@ public class OCFileListFragment extends ExtendedListFragment { public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setHasOptionsMenu(true); - mStatusBarColorActionMode = getResources().getColor(R.color.action_mode_status_bar_background); + mSystemBarActionModeColor = getResources().getColor(R.color.action_mode_status_bar_background); + mSystemBarColor = getResources().getColor(R.color.primary_dark); + mProgressBarActionModeColor = getResources().getColor(R.color.action_mode_background); + mProgressBarColor = getResources().getColor(R.color.primary); } /** @@ -119,7 +124,7 @@ public void onCreate(Bundle savedInstanceState) { @Override public void onAttach(Context context) { super.onAttach(context); - Log_OC.e(TAG, "onAttach"); + Log_OC.i(TAG, "onAttach"); try { mContainerActivity = (FileFragment.ContainerActivity) context; @@ -166,7 +171,7 @@ public void onDetach() { @Override public void onActivityCreated(Bundle savedInstanceState) { super.onActivityCreated(savedInstanceState); - Log_OC.e(TAG, "onActivityCreated() start"); + Log_OC.i(TAG, "onActivityCreated() start"); if (savedInstanceState != null) { mFile = savedInstanceState.getParcelable(KEY_FILE); @@ -321,7 +326,7 @@ private void recordMiniFabClick() { // only record if it hasn't been done already at some other time if(!miniFabClicked) { final SharedPreferences sp = PreferenceManager.getDefaultSharedPreferences(getActivity()); - sp.edit().putLong(KEY_FAB_EVER_CLICKED, 1).commit(); + sp.edit().putLong(KEY_FAB_EVER_CLICKED, 1).apply(); miniFabClicked = true; } } @@ -362,11 +367,8 @@ public boolean onCreateActionMode(ActionMode mode, Menu menu) { mode.invalidate(); //set gray color - if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) { - Window w = getActivity().getWindow(); - mStatusBarColor = w.getStatusBarColor(); - w.setStatusBarColor(mStatusBarColorActionMode); - } + DisplayUtils.colorStatusBar(getActivity(), mSystemBarActionModeColor); + DisplayUtils.colorToolbarProgressBar(getActivity(), mProgressBarActionModeColor); // hide FAB in multi selection mode setFabEnabled(false); @@ -391,6 +393,7 @@ public boolean onPrepareActionMode(ActionMode mode, Menu menu) { getActivity() ); mf.filter(menu); + return true; } @@ -404,9 +407,8 @@ public void onDestroyActionMode(ActionMode mode) { mActiveActionMode = null; // reset to previous color - if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) { - getActivity().getWindow().setStatusBarColor(mStatusBarColor); - } + DisplayUtils.colorStatusBar(getActivity(), mSystemBarColor); + DisplayUtils.colorToolbarProgressBar(getActivity(), mProgressBarColor); // show FAB on multi selection mode exit if(!mHideFab) { diff --git a/src/com/owncloud/android/utils/DisplayUtils.java b/src/com/owncloud/android/utils/DisplayUtils.java index 8d83fbb0439d..dd55db2ec939 100644 --- a/src/com/owncloud/android/utils/DisplayUtils.java +++ b/src/com/owncloud/android/utils/DisplayUtils.java @@ -32,15 +32,15 @@ import android.graphics.PorterDuff; import android.graphics.drawable.Drawable; import android.os.Build; +import android.support.annotation.ColorInt; import android.support.design.widget.Snackbar; +import android.support.v4.app.FragmentActivity; import android.support.v4.content.ContextCompat; import android.text.format.DateUtils; import android.view.Display; import android.view.View; -import android.widget.ImageView; import android.widget.ProgressBar; import android.widget.SeekBar; -import android.widget.TextView; import com.owncloud.android.MainApp; import com.owncloud.android.R; @@ -49,11 +49,11 @@ import com.owncloud.android.datamodel.ThumbnailsCacheManager; import com.owncloud.android.lib.common.utils.Log_OC; import com.owncloud.android.ui.TextDrawable; +import com.owncloud.android.ui.activity.ToolbarActivity; import java.math.BigDecimal; import java.net.IDN; import java.text.DateFormat; -import java.util.Calendar; import java.util.Date; import java.util.HashMap; import java.util.Map; @@ -289,6 +289,30 @@ public static void colorSnackbar(Context context, Snackbar snackbar) { snackbar.setActionTextColor(ContextCompat.getColor(context, R.color.white)); } + /** + * Sets the color of the status bar to {@code color} on devices with OS version lollipop or higher. + * + * @param fragmentActivity fragment activity + * @param color the color + */ + public static void colorStatusBar(FragmentActivity fragmentActivity, @ColorInt int color) { + if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) { + fragmentActivity.getWindow().setStatusBarColor(color); + } + } + + /** + * Sets the color of the progressbar to {@code color} within the given toolbar. + * + * @param activity the toolbar activity instance + * @param progressBarColor the color to be used for the toolbar's progress bar + */ + public static void colorToolbarProgressBar(FragmentActivity activity, int progressBarColor) { + if(activity instanceof ToolbarActivity) { + ((ToolbarActivity) activity).setProgressBarBackgroundColor(progressBarColor); + } + } + public interface AvatarGenerationListener { void avatarGenerated(Drawable avatarDrawable, Object callContext); boolean shouldCallGeneratedCallback(String tag, Object callContext); From 71a44db0ddfa0c28acd4c80df2e8bb4d07dc2101 Mon Sep 17 00:00:00 2001 From: Andy Scherzinger Date: Wed, 20 Jul 2016 14:24:03 +0200 Subject: [PATCH 97/99] CR changes --- .../android/files/FileMenuFilter.java | 23 ++++++++++--------- .../ui/activity/FileDisplayActivity.java | 22 +++++++++--------- .../ReceiveExternalFilesActivity.java | 16 ++----------- .../adapter/ExpandableUploadListAdapter.java | 17 ++++---------- .../ui/dialog/RemoveFilesDialogFragment.java | 9 ++++---- .../owncloud/android/utils/DisplayUtils.java | 22 ++++++++++++++++++ 6 files changed, 57 insertions(+), 52 deletions(-) diff --git a/src/com/owncloud/android/files/FileMenuFilter.java b/src/com/owncloud/android/files/FileMenuFilter.java index f2cb0f63e36e..4189cd8b3c4a 100644 --- a/src/com/owncloud/android/files/FileMenuFilter.java +++ b/src/com/owncloud/android/files/FileMenuFilter.java @@ -35,6 +35,8 @@ import java.util.ArrayList; import java.util.Arrays; +import java.util.Collection; +import java.util.Iterator; import java.util.List; /** @@ -45,7 +47,7 @@ public class FileMenuFilter { private static final int SINGLE_SELECT_ITEMS = 1; - private List mFiles; + private Collection mFiles; private ComponentsGetter mComponentsGetter; private Account mAccount; private Context mContext; @@ -53,12 +55,12 @@ public class FileMenuFilter { /** * Constructor * - * @param targetFiles List of {@link OCFile} file targets of the action to filter in the {@link Menu}. + * @param targetFiles Collection of {@link OCFile} file targets of the action to filter in the {@link Menu}. * @param account ownCloud {@link Account} holding targetFile. * @param cg Accessor to app components, needed to access synchronization services * @param context Android {@link Context}, needed to access build setup resources. */ - public FileMenuFilter(List targetFiles, Account account, ComponentsGetter cg, + public FileMenuFilter(Collection targetFiles, Account account, ComponentsGetter cg, Context context) { mFiles = targetFiles; mAccount = account; @@ -261,8 +263,8 @@ private boolean anyFileSynchronizing() { private boolean anyFileSynchronizing(OperationsServiceBinder opsBinder) { boolean synchronizing = false; if (opsBinder != null) { - for (int i=0; !synchronizing && i < mFiles.size(); i++) { - synchronizing = opsBinder.isSynchronizing(mAccount, mFiles.get(i)); + for (Iterator iterator = mFiles.iterator(); !synchronizing && iterator.hasNext();) { + synchronizing = opsBinder.isSynchronizing(mAccount, iterator.next()); } } return synchronizing; @@ -271,8 +273,8 @@ private boolean anyFileSynchronizing(OperationsServiceBinder opsBinder) { private boolean anyFileDownloading(FileDownloaderBinder downloaderBinder) { boolean downloading = false; if (downloaderBinder != null) { - for (int i=0; !downloading && i < mFiles.size(); i++) { - downloading = downloaderBinder.isDownloading(mAccount, mFiles.get(i)); + for (Iterator iterator = mFiles.iterator(); !downloading && iterator.hasNext();) { + downloading = downloaderBinder.isDownloading(mAccount, iterator.next()); } } return downloading; @@ -281,8 +283,8 @@ private boolean anyFileDownloading(FileDownloaderBinder downloaderBinder) { private boolean anyFileUploading(FileUploaderBinder uploaderBinder) { boolean uploading = false; if (uploaderBinder != null) { - for (int i=0; !uploading && i < mFiles.size(); i++) { - uploading = uploaderBinder.isUploading(mAccount, mFiles.get(i)); + for (Iterator iterator = mFiles.iterator(); !uploading && iterator.hasNext();) { + uploading = uploaderBinder.isUploading(mAccount, iterator.next()); } } return uploading; @@ -293,7 +295,7 @@ private boolean isSingleSelection() { } private boolean isSingleFile() { - return isSingleSelection() && !mFiles.get(0).isFolder(); + return isSingleSelection() && !mFiles.iterator().next().isFolder(); } private boolean allFiles() { @@ -335,5 +337,4 @@ private boolean allUnfavorites() { } return true; } - } diff --git a/src/com/owncloud/android/ui/activity/FileDisplayActivity.java b/src/com/owncloud/android/ui/activity/FileDisplayActivity.java index c500abdcbaca..046a17b684b7 100644 --- a/src/com/owncloud/android/ui/activity/FileDisplayActivity.java +++ b/src/com/owncloud/android/ui/activity/FileDisplayActivity.java @@ -40,20 +40,16 @@ import android.os.Bundle; import android.os.IBinder; import android.os.Parcelable; -import android.support.design.widget.NavigationView; import android.support.design.widget.Snackbar; import android.support.v4.app.Fragment; import android.support.v4.app.FragmentManager; import android.support.v4.app.FragmentTransaction; import android.support.v4.content.ContextCompat; -import android.support.v4.view.GravityCompat; import android.support.v7.app.AlertDialog; -import android.support.v7.widget.Toolbar; import android.view.Menu; import android.view.MenuInflater; import android.view.MenuItem; import android.view.View; -import android.widget.ProgressBar; import android.widget.Toast; import com.owncloud.android.MainApp; @@ -94,9 +90,9 @@ import java.io.File; import java.util.ArrayList; -import java.util.List; +import java.util.Collection; -import static com.owncloud.android.db.PreferenceManager.*; +import static com.owncloud.android.db.PreferenceManager.getSortOrder; /** * Displays, what files the user has available in his ownCloud. This is the main view. @@ -970,9 +966,7 @@ public void onReceive(Context context, Intent intent) { if (synchResult != null && !synchResult.isSuccess()) { /// TODO refactor and make common - if (ResultCode.UNAUTHORIZED.equals(synchResult.getCode()) || - (synchResult.isException() && synchResult.getException() - instanceof AuthenticatorException)) { + if (checkForRemoteOperationError(synchResult)) { requestCredentialsUpdate(context); @@ -1007,6 +1001,12 @@ public void onReceive(Context context, Intent intent) { } } + private boolean checkForRemoteOperationError(RemoteOperationResult syncResult) { + return ResultCode.UNAUTHORIZED.equals(syncResult.getCode()) || + (syncResult.isException() && syncResult.getException() + instanceof AuthenticatorException); + } + /** * Show a text message on screen view for notifying user if content is * loading or folder is empty @@ -1745,9 +1745,9 @@ public void cancelTransference(OCFile file) { /** * Request stopping all upload/download operations in progress over the given {@link OCFile} files. * - * @param files list of {@link OCFile} files which operations are wanted to be cancel + * @param files collection of {@link OCFile} files which operations are wanted to be cancel */ - public void cancelTransference(List files) { + public void cancelTransference(Collection files) { for(OCFile file: files) { cancelTransference(file); } diff --git a/src/com/owncloud/android/ui/activity/ReceiveExternalFilesActivity.java b/src/com/owncloud/android/ui/activity/ReceiveExternalFilesActivity.java index 12570ee6af99..5193c28b4358 100644 --- a/src/com/owncloud/android/ui/activity/ReceiveExternalFilesActivity.java +++ b/src/com/owncloud/android/ui/activity/ReceiveExternalFilesActivity.java @@ -35,7 +35,6 @@ import android.content.DialogInterface.OnClickListener; import android.content.Intent; import android.content.IntentFilter; -import android.content.SharedPreferences; import android.content.res.Resources.NotFoundException; import android.os.Bundle; import android.os.Parcelable; @@ -269,19 +268,8 @@ public void onClick(DialogInterface dialog, int which) { CharSequence dialogItems[] = new CharSequence[accounts.length]; OwnCloudAccount oca; for (int i = 0; i < dialogItems.length; ++i) { - try { - oca = new OwnCloudAccount(accounts[i], this); - dialogItems[i] = - oca.getDisplayName() + " @ " + - DisplayUtils.convertIdn( - accounts[i].name.substring(accounts[i].name.lastIndexOf("@") + 1), - false - ); - - } catch (Exception e) { - Log_OC.w(TAG, "Couldn't read display name of account; using account name instead"); - dialogItems[i] = DisplayUtils.convertIdn(accounts[i].name, false); - } + dialogItems[i] = DisplayUtils.getAccountNameDisplayText( + this, accounts[i], accounts[i].name, DisplayUtils.convertIdn(accounts[i].name, false)); } builder.setTitle(R.string.common_choose_account); builder.setItems(dialogItems, new OnClickListener() { diff --git a/src/com/owncloud/android/ui/adapter/ExpandableUploadListAdapter.java b/src/com/owncloud/android/ui/adapter/ExpandableUploadListAdapter.java index 2a8ba14fa25e..459a16ca9a3a 100755 --- a/src/com/owncloud/android/ui/adapter/ExpandableUploadListAdapter.java +++ b/src/com/owncloud/android/ui/adapter/ExpandableUploadListAdapter.java @@ -45,7 +45,6 @@ import com.owncloud.android.db.OCUpload; import com.owncloud.android.db.UploadResult; import com.owncloud.android.files.services.FileUploader; -import com.owncloud.android.lib.common.OwnCloudAccount; import com.owncloud.android.lib.common.network.OnDatatransferProgressListener; import com.owncloud.android.lib.common.utils.Log_OC; import com.owncloud.android.ui.activity.FileActivity; @@ -241,17 +240,11 @@ private View getView(OCUpload[] uploadsItems, int position, View convertView, Vi uploadDateTextView.setText(dateString); TextView accountNameTextView = (TextView) view.findViewById(R.id.upload_account); - try { - Account account = AccountUtils.getOwnCloudAccountByName(mParentActivity, upload.getAccountName()); - OwnCloudAccount oca = new OwnCloudAccount(account, mParentActivity); - accountNameTextView.setText( - oca.getDisplayName() + " @ " + - DisplayUtils.convertIdn(account.name.substring(account.name.lastIndexOf("@") + 1), false) - ); - } catch (Exception e) { - Log_OC.w(TAG, "Couldn't get display name for account, using old style"); - accountNameTextView.setText(upload.getAccountName()); - } + Account account = AccountUtils.getOwnCloudAccountByName(mParentActivity, upload.getAccountName()); + accountNameTextView.setText( + DisplayUtils.getAccountNameDisplayText( + mParentActivity, account, account.name, upload.getAccountName()) + ); TextView statusTextView = (TextView) view.findViewById(R.id.upload_status); diff --git a/src/com/owncloud/android/ui/dialog/RemoveFilesDialogFragment.java b/src/com/owncloud/android/ui/dialog/RemoveFilesDialogFragment.java index 92dbd9fd7480..a3e726168275 100644 --- a/src/com/owncloud/android/ui/dialog/RemoveFilesDialogFragment.java +++ b/src/com/owncloud/android/ui/dialog/RemoveFilesDialogFragment.java @@ -35,11 +35,12 @@ import com.owncloud.android.ui.dialog.ConfirmationDialogFragment.ConfirmationDialogFragmentListener; import java.util.ArrayList; +import java.util.Collection; public class RemoveFilesDialogFragment extends ConfirmationDialogFragment implements ConfirmationDialogFragmentListener { - private ArrayList mTargetFiles; + private Collection mTargetFiles; private static final String ARG_TARGET_FILES = "TARGET_FILES"; @@ -58,9 +59,9 @@ public static RemoveFilesDialogFragment newInstance(ArrayList files) { boolean containsDown = false; boolean containsFavorite = false; for (OCFile file: files) { - if (file.isFolder()) containsFolder = true; - if (file.isDown()) containsDown = true; - if (file.isFavorite()) containsFavorite = true; + containsFolder |= file.isFolder(); + containsDown |= file.isDown(); + containsFavorite |= file.isFavorite(); } if (files.size() == 1) { diff --git a/src/com/owncloud/android/utils/DisplayUtils.java b/src/com/owncloud/android/utils/DisplayUtils.java index dd55db2ec939..c9a81a9a614e 100644 --- a/src/com/owncloud/android/utils/DisplayUtils.java +++ b/src/com/owncloud/android/utils/DisplayUtils.java @@ -47,6 +47,7 @@ import com.owncloud.android.datamodel.FileDataStorageManager; import com.owncloud.android.datamodel.OCFile; import com.owncloud.android.datamodel.ThumbnailsCacheManager; +import com.owncloud.android.lib.common.OwnCloudAccount; import com.owncloud.android.lib.common.utils.Log_OC; import com.owncloud.android.ui.TextDrawable; import com.owncloud.android.ui.activity.ToolbarActivity; @@ -173,6 +174,27 @@ public static String convertIdn(String url, boolean toASCII) { } } + /** + * creates the display string for an account. + * + * @param context the actual activity + * @param savedAccount the actual, saved account + * @param accountName the account name + * @param fallbackString String to be used in case of an error + * @return the display string for the given account data + */ + public static String getAccountNameDisplayText(Context context, Account savedAccount, String accountName, String + fallbackString) { + try { + return new OwnCloudAccount(savedAccount, context).getDisplayName() + + " @ " + + convertIdn(accountName.substring(accountName.lastIndexOf("@") + 1), false); + } catch (Exception e) { + Log_OC.w(TAG, "Couldn't get display name for account, using old style"); + return fallbackString; + } + } + /** * calculates the relative time string based on the given modificaion timestamp. * From 573f95d11069f53bd8659bacb9a4007df0fe1a72 Mon Sep 17 00:00:00 2001 From: Andy Scherzinger Date: Wed, 20 Jul 2016 15:33:08 +0200 Subject: [PATCH 98/99] fixes after merge --- .../android/ui/adapter/FileListListAdapter.java | 12 +++++------- .../android/ui/fragment/OCFileListFragment.java | 4 ---- 2 files changed, 5 insertions(+), 11 deletions(-) diff --git a/src/com/owncloud/android/ui/adapter/FileListListAdapter.java b/src/com/owncloud/android/ui/adapter/FileListListAdapter.java index e957342ee589..0f8faddc645d 100644 --- a/src/com/owncloud/android/ui/adapter/FileListListAdapter.java +++ b/src/com/owncloud/android/ui/adapter/FileListListAdapter.java @@ -23,16 +23,11 @@ package com.owncloud.android.ui.adapter; -import java.util.ArrayList; -import java.util.Vector; - import android.accounts.Account; import android.content.Context; import android.graphics.Bitmap; -import android.graphics.BitmapFactory; -import android.graphics.Canvas; -import android.graphics.Paint; -import android.os.Build; +import android.graphics.Color; +import android.util.SparseBooleanArray; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; @@ -58,6 +53,9 @@ import com.owncloud.android.utils.FileStorageUtils; import com.owncloud.android.utils.MimetypeIconUtil; +import java.util.ArrayList; +import java.util.Vector; + /** * This Adapter populates a ListView with all files and folders in an ownCloud diff --git a/src/com/owncloud/android/ui/fragment/OCFileListFragment.java b/src/com/owncloud/android/ui/fragment/OCFileListFragment.java index 48f6a69d98f7..3e740dbcf291 100644 --- a/src/com/owncloud/android/ui/fragment/OCFileListFragment.java +++ b/src/com/owncloud/android/ui/fragment/OCFileListFragment.java @@ -677,10 +677,6 @@ private void updateLayout() { } else { if (!file.isHidden()) { filesCount++; - - if (file.isImage() || file.isVideo()) { - imagesCount++; - } } } } From 9474658bcde9121a70c281f68b17930bafe7af7d Mon Sep 17 00:00:00 2001 From: Andy Scherzinger Date: Wed, 20 Jul 2016 15:55:11 +0200 Subject: [PATCH 99/99] bumped support lib to latest version of 23 --- build.gradle | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/build.gradle b/build.gradle index 1a2e0b093018..f88f80a678f2 100644 --- a/build.gradle +++ b/build.gradle @@ -17,7 +17,7 @@ buildscript { apply plugin: 'com.android.application' ext { - supportLibraryVersion = '23.1.1' + supportLibraryVersion = '23.4.0' } repositories { @@ -54,6 +54,9 @@ dependencies { // Android JUnit Runner androidTestCompile 'com.android.support.test:runner:0.5' + // Android Annotation Support + androidTestCompile "com.android.support:support-annotations:${supportLibraryVersion}" + // Espresso core androidTestCompile 'com.android.support.test.espresso:espresso-core:2.2.2'