浏览代码

hide empty upload groups

Luke Owncloud 10 年之前
父节点
当前提交
61de793925

+ 1 - 0
res/values/strings.xml

@@ -66,6 +66,7 @@
     <string name="file_list_empty">Nothing in here. Upload something!</string>
     <string name="file_list_loading">Loading...</string>
     <string name="local_file_list_empty">There are no files in this folder.</string>
+    <string name="upload_list_empty">No uploads available.</string>
     <string name="file_list_folder">folder</string>
     <string name="file_list_folders">folders</string>
     <string name="file_list_file">file</string>

+ 23 - 6
src/com/owncloud/android/ui/adapter/ExpandableUploadListAdapter.java

@@ -244,7 +244,7 @@ public class ExpandableUploadListAdapter extends BaseExpandableListAdapter imple
 
     @Override
     public Object getChild(int groupPosition, int childPosition) {
-        return mUploadGroups[groupPosition].items[childPosition];
+        return mUploadGroups[(int) getGroupId(groupPosition)].items[childPosition];
     }
 
     @Override
@@ -255,27 +255,44 @@ public class ExpandableUploadListAdapter extends BaseExpandableListAdapter imple
     @Override
     public View getChildView(int groupPosition, int childPosition, boolean isLastChild, View convertView,
             ViewGroup parent) {
-        return getView(mUploadGroups[groupPosition].items, childPosition, convertView, parent);
+        return getView(mUploadGroups[(int) getGroupId(groupPosition)].items, childPosition, convertView, parent);
     }
 
     @Override
     public int getChildrenCount(int groupPosition) {
-        return mUploadGroups[groupPosition].items.length;
+        return mUploadGroups[(int) getGroupId(groupPosition)].items.length;
     }
 
     @Override
     public Object getGroup(int groupPosition) {
-        return mUploadGroups[groupPosition];
+        return mUploadGroups[(int) getGroupId(groupPosition)];
     }
 
     @Override
     public int getGroupCount() {
-        return mUploadGroups.length;
+        int size = 0;
+        for (UploadGroup uploadGroup : mUploadGroups) {
+            if(uploadGroup.items.length > 0) {
+                size++;
+            }
+        }
+        return size;
     }
 
+    /**
+     * Returns the groupId (that is, index in mUploadGroups) for group at position groupPosition (0-based).
+     * Could probably be done more intuitive but this tested methods works as intended.
+     */
     @Override
     public long getGroupId(int groupPosition) {
-        return groupPosition;
+        int id = -1;
+        for (int i = 0; i <= groupPosition; ) {
+            id++;
+            if(mUploadGroups[id].items.length > 0){
+                i++;
+            }
+        }
+        return id;
     }
 
     @Override

+ 2 - 1
src/com/owncloud/android/ui/fragment/UploadListFragment.java

@@ -32,6 +32,7 @@ import android.widget.BaseExpandableListAdapter;
 import android.widget.ExpandableListView;
 import android.widget.ExpandableListView.ExpandableListContextMenuInfo;
 import android.widget.ListView;
+import android.widget.TextView;
 
 import com.owncloud.android.R;
 import com.owncloud.android.db.UploadDbObject;
@@ -61,10 +62,10 @@ public class UploadListFragment extends ExpandableListFragment {
     public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
         View v = super.onCreateView(inflater, container, savedInstanceState);
         getListView().setChoiceMode(ListView.CHOICE_MODE_MULTIPLE);
+        setMessageForEmptyList(getString(R.string.upload_list_empty));
         return v;
     }
 
-
     @Override
     public void onAttach(Activity activity) {
         super.onAttach(activity);