mirror of
https://github.com/nextcloud/android.git
synced 2024-11-23 21:55:48 +03:00
implementation of #1193 - optimizing the uploader layout and taking user configured sorting into account
This commit is contained in:
parent
932c66d4c5
commit
d74f5fdc2a
7 changed files with 100 additions and 56 deletions
|
@ -73,7 +73,9 @@
|
|||
<activity android:name=".ui.activity.UploadFilesActivity" />
|
||||
<activity android:name=".ui.activity.ReceiveExternalFilesActivity"
|
||||
android:taskAffinity=""
|
||||
android:excludeFromRecents="true">
|
||||
android:excludeFromRecents="true"
|
||||
android:label="@string/uploader_top_message"
|
||||
android:theme="@style/Theme.ownCloud">
|
||||
<intent-filter>
|
||||
<action android:name="android.intent.action.SEND" />
|
||||
|
||||
|
|
|
@ -18,25 +18,19 @@
|
|||
along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
-->
|
||||
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
android:layout_height="wrap_content" android:orientation="vertical"
|
||||
android:layout_width="wrap_content" android:background="#fefefe"
|
||||
android:layout_height="wrap_content"
|
||||
android:orientation="vertical"
|
||||
android:layout_width="wrap_content"
|
||||
android:gravity="center">
|
||||
|
||||
<TextView android:layout_width="fill_parent"
|
||||
android:text="@string/uploader_top_message"
|
||||
android:layout_height="wrap_content"
|
||||
android:id="@+id/drawer_username"
|
||||
android:textColor="@android:color/black"
|
||||
android:gravity="center_horizontal">
|
||||
</TextView>
|
||||
|
||||
<FrameLayout android:layout_height="fill_parent"
|
||||
<FrameLayout
|
||||
android:layout_height="fill_parent"
|
||||
android:layout_width="fill_parent"
|
||||
android:id="@+id/frameLayout1"
|
||||
android:layout_below="@+id/drawer_username"
|
||||
android:layout_above="@+id/linearLayout1">
|
||||
android:id="@+id/upload_list"
|
||||
android:layout_above="@+id/upload_actions">
|
||||
|
||||
<ListView android:id="@android:id/list"
|
||||
<ListView
|
||||
android:id="@android:id/list"
|
||||
android:layout_width="fill_parent"
|
||||
android:layout_height="fill_parent"
|
||||
android:divider="@color/list_divider_background"
|
||||
|
@ -46,7 +40,7 @@
|
|||
</FrameLayout>
|
||||
|
||||
<LinearLayout
|
||||
android:id="@+id/linearLayout1"
|
||||
android:id="@+id/upload_actions"
|
||||
android:layout_width="fill_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_alignParentBottom="true"
|
||||
|
|
|
@ -17,28 +17,57 @@
|
|||
You should have received a copy of the GNU General Public License
|
||||
along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
-->
|
||||
<LinearLayout
|
||||
xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
android:layout_width="fill_parent"
|
||||
android:background="#fefefe"
|
||||
android:orientation="horizontal"
|
||||
android:layout_height="72dp"
|
||||
android:padding="@dimen/standard_padding">
|
||||
|
||||
<ImageView
|
||||
android:layout_width="@dimen/file_icon_size"
|
||||
android:layout_height="@dimen/file_icon_size"
|
||||
android:layout_gravity="center_vertical|center"
|
||||
android:src="@drawable/ic_menu_archive"
|
||||
android:id="@+id/thumbnail"
|
||||
android:layout_marginRight="@dimen/standard_padding"/>
|
||||
|
||||
<TextView
|
||||
android:text="TextView"
|
||||
android:layout_width="fill_parent"
|
||||
android:id="@+id/filename"
|
||||
android:layout_height="wrap_content"
|
||||
android:textColor="@android:color/black"
|
||||
android:textSize="16sp" />
|
||||
|
||||
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
android:layout_width="fill_parent"
|
||||
android:layout_height="56dp"
|
||||
android:background="@drawable/list_selector"
|
||||
android:orientation="horizontal">
|
||||
|
||||
<LinearLayout
|
||||
android:layout_width="56dp"
|
||||
android:layout_height="56dp"
|
||||
android:orientation="horizontal">
|
||||
|
||||
<ImageView
|
||||
android:id="@+id/thumbnail"
|
||||
android:layout_width="@dimen/file_icon_size"
|
||||
android:layout_height="@dimen/file_icon_size"
|
||||
android:layout_gravity="center_vertical"
|
||||
android:layout_marginLeft="12dp"
|
||||
android:src="@drawable/ic_menu_archive" />
|
||||
|
||||
</LinearLayout>
|
||||
|
||||
<LinearLayout
|
||||
android:layout_width="0dp"
|
||||
android:layout_height="match_parent"
|
||||
android:layout_weight="1"
|
||||
android:gravity="center_vertical"
|
||||
android:orientation="vertical">
|
||||
|
||||
<TextView
|
||||
android:id="@+id/filename"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_gravity="center_vertical"
|
||||
android:layout_marginLeft="4dp"
|
||||
android:layout_marginRight="4dp"
|
||||
android:ellipsize="middle"
|
||||
android:singleLine="true"
|
||||
android:text="TextView"
|
||||
android:textColor="@color/textColor"
|
||||
android:textSize="16dip" />
|
||||
|
||||
<TextView
|
||||
android:id="@+id/last_mod"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_marginLeft="4dp"
|
||||
android:layout_marginRight="4dp"
|
||||
android:text="TextView"
|
||||
android:textColor="@color/list_item_lastmod_and_filesize_text"
|
||||
android:textSize="12dip" />
|
||||
|
||||
</LinearLayout>
|
||||
|
||||
</LinearLayout>
|
||||
|
|
|
@ -61,7 +61,7 @@
|
|||
<string name="sync_string_files">Files</string>
|
||||
<string name="setup_btn_connect">Connect</string>
|
||||
<string name="uploader_btn_upload_text">Upload</string>
|
||||
<string name="uploader_top_message">Choose upload folder:</string>
|
||||
<string name="uploader_top_message">Choose upload folder</string>
|
||||
<string name="uploader_wrn_no_account_title">No account found</string>
|
||||
<string name="uploader_wrn_no_account_text">There are no %1$s accounts on your device. Please set up an account first.</string>
|
||||
<string name="uploader_wrn_no_account_setup_btn_text">Setup</string>
|
||||
|
|
|
@ -73,6 +73,7 @@ import com.owncloud.android.ui.fragment.TaskRetainerFragment;
|
|||
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 class ReceiveExternalFilesActivity extends FileActivity
|
|||
Log_OC.d(TAG, "on item click");
|
||||
// TODO Enable when "On Device" is recovered ?
|
||||
Vector<OCFile> tmpfiles = getStorageManager().getFolderContent(mFile /*, false*/);
|
||||
tmpfiles = sortFileList(tmpfiles);
|
||||
|
||||
if (tmpfiles.size() <= 0) return;
|
||||
// filter on dirtype
|
||||
Vector<OCFile> files = new Vector<>();
|
||||
|
@ -378,15 +381,16 @@ public class ReceiveExternalFilesActivity extends FileActivity
|
|||
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 @@ public class ReceiveExternalFilesActivity extends FileActivity
|
|||
if (mFile != null) {
|
||||
// TODO Enable when "On Device" is recovered ?
|
||||
Vector<OCFile> files = getStorageManager().getFolderContent(mFile/*, false*/);
|
||||
List<HashMap<String, OCFile>> data = new LinkedList<>();
|
||||
files = sortFileList(files);
|
||||
|
||||
List<HashMap<String, Object>> data = new LinkedList<>();
|
||||
for (OCFile f : files) {
|
||||
HashMap<String, OCFile> h = new HashMap<>();
|
||||
h.put("dirname", f);
|
||||
if (f.isFolder()) {
|
||||
HashMap<String, Object> h = new HashMap<>();
|
||||
h.put("dirname", f.getFileName());
|
||||
h.put("last_mod", DisplayUtils.getRelativeTimestamp(this, f));
|
||||
data.add(h);
|
||||
}
|
||||
|
||||
|
@ -409,7 +417,7 @@ public class ReceiveExternalFilesActivity extends FileActivity
|
|||
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 @@ public class ReceiveExternalFilesActivity extends FileActivity
|
|||
synchFolderOp.execute(getAccount(), this, null, null);
|
||||
}
|
||||
|
||||
private Vector<OCFile> sortFileList(Vector<OCFile> 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<String> dirs) {
|
||||
String full_path = "";
|
||||
|
|
|
@ -199,7 +199,7 @@ public class FileListListAdapter extends BaseAdapter implements ListAdapter {
|
|||
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 class FileListListAdapter extends BaseAdapter implements ListAdapter {
|
|||
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;
|
||||
|
|
|
@ -172,8 +172,13 @@ public class DisplayUtils {
|
|||
}
|
||||
}
|
||||
|
||||
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
|
||||
){
|
||||
|
||||
|
|
Loading…
Reference in a new issue