mirror of
https://github.com/nextcloud/android.git
synced 2024-10-23 12:36:04 +03:00
Show the 'search' layout in phone and tablet
This commit is contained in:
parent
bc5687b74a
commit
905b68b4ec
18 changed files with 633 additions and 223 deletions
|
@ -1,4 +1,5 @@
|
||||||
<?xml version="1.0" encoding="utf-8"?><!--
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
|
<!--
|
||||||
ownCloud Android client application
|
ownCloud Android client application
|
||||||
|
|
||||||
Copyright (C) 2012 Bartek Przybylski
|
Copyright (C) 2012 Bartek Przybylski
|
||||||
|
@ -15,10 +16,15 @@
|
||||||
|
|
||||||
You should have received a copy of the GNU General Public License
|
You should have received a copy of the GNU General Public License
|
||||||
along with this program. If not, see <http://www.gnu.org/licenses/>.
|
along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||||
-->
|
-->
|
||||||
<manifest package="com.owncloud.android"
|
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
|
||||||
|
package="com.owncloud.android"
|
||||||
android:versionCode="10800000"
|
android:versionCode="10800000"
|
||||||
android:versionName="1.8.0" xmlns:android="http://schemas.android.com/apk/res/android">
|
android:versionName="1.8.0" >
|
||||||
|
|
||||||
|
<uses-sdk
|
||||||
|
android:minSdkVersion="14"
|
||||||
|
android:targetSdkVersion="22" />
|
||||||
|
|
||||||
<uses-permission android:name="android.permission.GET_ACCOUNTS" />
|
<uses-permission android:name="android.permission.GET_ACCOUNTS" />
|
||||||
<uses-permission android:name="android.permission.USE_CREDENTIALS" />
|
<uses-permission android:name="android.permission.USE_CREDENTIALS" />
|
||||||
|
@ -31,44 +37,42 @@
|
||||||
<uses-permission android:name="android.permission.WRITE_SYNC_SETTINGS" />
|
<uses-permission android:name="android.permission.WRITE_SYNC_SETTINGS" />
|
||||||
<uses-permission android:name="android.permission.BROADCAST_STICKY" />
|
<uses-permission android:name="android.permission.BROADCAST_STICKY" />
|
||||||
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
|
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
|
||||||
<uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED"/>
|
<uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED" />
|
||||||
<uses-permission android:name="android.permission.WAKE_LOCK"/>
|
<uses-permission android:name="android.permission.WAKE_LOCK" />
|
||||||
|
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
|
||||||
|
|
||||||
<uses-sdk
|
<android:uses-permission android:name="android.permission.READ_PHONE_STATE" />
|
||||||
android:minSdkVersion="14"
|
<android:uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
|
||||||
android:targetSdkVersion="22" />
|
|
||||||
|
|
||||||
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"></uses-permission>
|
|
||||||
|
|
||||||
<application
|
<application
|
||||||
android:name=".MainApp"
|
android:name=".MainApp"
|
||||||
android:icon="@drawable/icon"
|
android:icon="@drawable/icon"
|
||||||
android:label="@string/app_name"
|
android:label="@string/app_name"
|
||||||
android:theme="@style/Theme.ownCloud">
|
android:theme="@style/Theme.ownCloud" >
|
||||||
<activity
|
<activity
|
||||||
android:name=".ui.activity.FileDisplayActivity"
|
android:name=".ui.activity.FileDisplayActivity"
|
||||||
android:label="@string/app_name">
|
android:label="@string/app_name" >
|
||||||
<intent-filter>
|
<intent-filter>
|
||||||
<action android:name="android.intent.action.MAIN" />
|
<action android:name="android.intent.action.MAIN" />
|
||||||
|
|
||||||
<category android:name="android.intent.category.LAUNCHER" />
|
<category android:name="android.intent.category.LAUNCHER" />
|
||||||
</intent-filter>
|
</intent-filter>
|
||||||
</activity>
|
</activity>
|
||||||
<activity android:name=".ui.activity.UploadFilesActivity"></activity>
|
<activity android:name=".ui.activity.UploadFilesActivity" />
|
||||||
<activity android:name=".ui.activity.Uploader">
|
<activity android:name=".ui.activity.Uploader" >
|
||||||
<intent-filter>
|
<intent-filter>
|
||||||
<action android:name="android.intent.action.SEND"></action>
|
<action android:name="android.intent.action.SEND" />
|
||||||
|
|
||||||
<category android:name="android.intent.category.DEFAULT"></category>
|
<category android:name="android.intent.category.DEFAULT" />
|
||||||
|
|
||||||
<data android:mimeType="*/*"></data>
|
<data android:mimeType="*/*" />
|
||||||
</intent-filter>
|
</intent-filter>
|
||||||
<intent-filter>
|
<intent-filter>
|
||||||
<action android:name="android.intent.action.SEND_MULTIPLE"></action>
|
<action android:name="android.intent.action.SEND_MULTIPLE" />
|
||||||
|
|
||||||
<category android:name="android.intent.category.DEFAULT"></category>
|
<category android:name="android.intent.category.DEFAULT" />
|
||||||
|
|
||||||
<data android:mimeType="*/*"></data>
|
|
||||||
|
|
||||||
|
<data android:mimeType="*/*" />
|
||||||
</intent-filter>
|
</intent-filter>
|
||||||
</activity>
|
</activity>
|
||||||
<activity
|
<activity
|
||||||
|
@ -77,18 +81,16 @@
|
||||||
</activity>
|
</activity>
|
||||||
<activity
|
<activity
|
||||||
android:name=".ui.preview.PreviewImageActivity"
|
android:name=".ui.preview.PreviewImageActivity"
|
||||||
android:theme="@style/Theme.ownCloud.Overlay"
|
android:theme="@style/Theme.ownCloud.Overlay" />
|
||||||
/>
|
|
||||||
|
|
||||||
<activity
|
<activity
|
||||||
android:name=".ui.preview.PreviewVideoActivity"
|
android:name=".ui.preview.PreviewVideoActivity"
|
||||||
android:label="@string/app_name"
|
android:label="@string/app_name"
|
||||||
android:theme="@style/Theme.ownCloud.Fullscreen"></activity>
|
android:theme="@style/Theme.ownCloud.Fullscreen" />
|
||||||
|
|
||||||
<service
|
<service
|
||||||
android:name=".authentication.AccountAuthenticatorService"
|
android:name=".authentication.AccountAuthenticatorService"
|
||||||
android:exported="true">
|
android:exported="true" >
|
||||||
<intent-filter android:priority="100">
|
<intent-filter android:priority="100" >
|
||||||
<action android:name="android.accounts.AccountAuthenticator" />
|
<action android:name="android.accounts.AccountAuthenticator" />
|
||||||
</intent-filter>
|
</intent-filter>
|
||||||
|
|
||||||
|
@ -98,7 +100,7 @@
|
||||||
</service>
|
</service>
|
||||||
<service
|
<service
|
||||||
android:name=".syncadapter.FileSyncService"
|
android:name=".syncadapter.FileSyncService"
|
||||||
android:exported="true">
|
android:exported="true" >
|
||||||
<intent-filter>
|
<intent-filter>
|
||||||
<action android:name="android.content.SyncAdapter" />
|
<action android:name="android.content.SyncAdapter" />
|
||||||
</intent-filter>
|
</intent-filter>
|
||||||
|
@ -114,13 +116,13 @@
|
||||||
android:enabled="true"
|
android:enabled="true"
|
||||||
android:exported="false"
|
android:exported="false"
|
||||||
android:label="@string/sync_string_files"
|
android:label="@string/sync_string_files"
|
||||||
android:syncable="true"></provider>
|
android:syncable="true" />
|
||||||
|
|
||||||
<activity
|
<activity
|
||||||
android:name=".authentication.AuthenticatorActivity"
|
android:name=".authentication.AuthenticatorActivity"
|
||||||
android:exported="true"
|
android:exported="true"
|
||||||
android:theme="@style/Theme.ownCloud.noActionBar"
|
android:launchMode="singleTask"
|
||||||
android:launchMode="singleTask">
|
android:theme="@style/Theme.ownCloud.noActionBar" >
|
||||||
<intent-filter>
|
<intent-filter>
|
||||||
<action android:name="android.intent.action.VIEW" />
|
<action android:name="android.intent.action.VIEW" />
|
||||||
|
|
||||||
|
@ -131,6 +133,7 @@
|
||||||
</intent-filter>
|
</intent-filter>
|
||||||
<intent-filter>
|
<intent-filter>
|
||||||
<action android:name="com.owncloud.android.workaround.accounts.CREATE" />
|
<action android:name="com.owncloud.android.workaround.accounts.CREATE" />
|
||||||
|
|
||||||
<category android:name="android.intent.category.DEFAULT" />
|
<category android:name="android.intent.category.DEFAULT" />
|
||||||
</intent-filter>
|
</intent-filter>
|
||||||
</activity>
|
</activity>
|
||||||
|
@ -141,48 +144,53 @@
|
||||||
<service android:name=".media.MediaService" />
|
<service android:name=".media.MediaService" />
|
||||||
|
|
||||||
<activity android:name=".ui.activity.PassCodeActivity" />
|
<activity android:name=".ui.activity.PassCodeActivity" />
|
||||||
<activity android:name=".ui.activity.ConflictsResolveActivity"/>
|
<activity android:name=".ui.activity.ConflictsResolveActivity" />
|
||||||
<activity android:name=".ui.activity.GenericExplanationActivity"/>
|
<activity android:name=".ui.activity.GenericExplanationActivity" />
|
||||||
<activity android:name=".ui.activity.ErrorsWhileCopyingHandlerActivity"/>
|
<activity android:name=".ui.activity.ErrorsWhileCopyingHandlerActivity" />
|
||||||
|
<activity android:name=".ui.activity.LogHistoryActivity" />
|
||||||
|
|
||||||
<activity android:name=".ui.activity.LogHistoryActivity"/>
|
<receiver android:name=".files.InstantUploadBroadcastReceiver" >
|
||||||
|
|
||||||
<receiver android:name=".files.InstantUploadBroadcastReceiver">
|
|
||||||
<intent-filter>
|
<intent-filter>
|
||||||
|
|
||||||
<!-- unofficially supported by many Android phones but not by HTC devices: -->
|
<!-- unofficially supported by many Android phones but not by HTC devices: -->
|
||||||
<action android:name="com.android.camera.NEW_PICTURE" />
|
<action android:name="com.android.camera.NEW_PICTURE" />
|
||||||
<!-- officially supported since Android 4.0 (SDK 14, works even for HTC devices): -->
|
<!-- officially supported since Android 4.0 (SDK 14, works even for HTC devices): -->
|
||||||
<action android:name="android.hardware.action.NEW_PICTURE" />
|
<action android:name="android.hardware.action.NEW_PICTURE" />
|
||||||
|
|
||||||
<data android:mimeType="image/*" />
|
<data android:mimeType="image/*" />
|
||||||
</intent-filter>
|
</intent-filter>
|
||||||
<intent-filter>
|
<intent-filter>
|
||||||
<action android:name="android.hardware.action.NEW_VIDEO" />
|
<action android:name="android.hardware.action.NEW_VIDEO" />
|
||||||
|
|
||||||
<data android:mimeType="video/*" />
|
<data android:mimeType="video/*" />
|
||||||
</intent-filter>
|
</intent-filter>
|
||||||
<intent-filter>
|
<intent-filter>
|
||||||
<action android:name="android.net.conn.CONNECTIVITY_CHANGE" />
|
<action android:name="android.net.conn.CONNECTIVITY_CHANGE" />
|
||||||
</intent-filter>
|
</intent-filter>
|
||||||
</receiver>
|
</receiver>
|
||||||
<receiver android:name=".files.BootupBroadcastReceiver">
|
<receiver android:name=".files.BootupBroadcastReceiver" >
|
||||||
<intent-filter>
|
<intent-filter>
|
||||||
<action android:name="android.intent.action.BOOT_COMPLETED" />
|
<action android:name="android.intent.action.BOOT_COMPLETED" />
|
||||||
</intent-filter>
|
</intent-filter>
|
||||||
</receiver>
|
</receiver>
|
||||||
<service android:name=".services.observer.FileObserverService"/>
|
|
||||||
|
<service android:name=".services.observer.FileObserverService" />
|
||||||
|
|
||||||
<activity
|
<activity
|
||||||
android:name=".ui.activity.CopyToClipboardActivity"
|
android:name=".ui.activity.CopyToClipboardActivity"
|
||||||
android:label="@string/copy_link"
|
android:icon="@drawable/copy_link"
|
||||||
android:icon="@drawable/copy_link"/>
|
android:label="@string/copy_link" />
|
||||||
|
|
||||||
<activity
|
<activity
|
||||||
android:name=".ui.activity.FolderPickerActivity"
|
android:name=".ui.activity.FolderPickerActivity"
|
||||||
android:label="@string/app_name"/>
|
android:label="@string/app_name" />
|
||||||
|
|
||||||
<activity
|
<activity
|
||||||
android:name=".ui.activity.UploadPathActivity"
|
android:name=".ui.activity.UploadPathActivity"
|
||||||
android:label="@string/app_name"/>
|
android:label="@string/app_name" />
|
||||||
|
<activity
|
||||||
|
android:name=".ui.activity.ShareActivity"
|
||||||
|
android:label="@string/share_dialog_title"
|
||||||
|
android:theme="@style/Theme.ownCloud.Dialog" >
|
||||||
|
</activity>
|
||||||
</application>
|
</application>
|
||||||
|
|
||||||
</manifest>
|
</manifest>
|
||||||
|
|
|
@ -20,10 +20,11 @@ repositories {
|
||||||
|
|
||||||
dependencies {
|
dependencies {
|
||||||
compile name: 'touch-image-view'
|
compile name: 'touch-image-view'
|
||||||
compile 'com.android.support:support-v4:22.2.1'
|
|
||||||
compile project(':owncloud-android-library')
|
compile project(':owncloud-android-library')
|
||||||
|
compile 'com.android.support:support-v4:22.2.1'
|
||||||
compile 'com.jakewharton:disklrucache:2.0.2'
|
compile 'com.jakewharton:disklrucache:2.0.2'
|
||||||
compile 'com.android.support:appcompat-v7:22.2.1'
|
compile 'com.android.support:appcompat-v7:22.2.1'
|
||||||
|
compile 'com.android.support:design:22.2.1'
|
||||||
}
|
}
|
||||||
|
|
||||||
android {
|
android {
|
||||||
|
@ -68,3 +69,7 @@ android {
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -1,4 +1,20 @@
|
||||||
<?xml version="1.0" encoding="utf-8"?>
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
|
<!--
|
||||||
|
ownCloud Android client application
|
||||||
|
Copyright (C) 2015 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 <http://www.gnu.org/licenses/>.
|
||||||
|
-->
|
||||||
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
|
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
|
||||||
android:layout_width="match_parent"
|
android:layout_width="match_parent"
|
||||||
android:layout_height="match_parent"
|
android:layout_height="match_parent"
|
||||||
|
|
|
@ -1,8 +1,27 @@
|
||||||
<?xml version="1.0" encoding="utf-8"?>
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
|
<!--
|
||||||
|
ownCloud Android client application
|
||||||
|
Copyright (C) 2015 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 <http://www.gnu.org/licenses/>.
|
||||||
|
-->
|
||||||
|
|
||||||
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
|
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
|
||||||
android:layout_width="match_parent"
|
android:layout_width="match_parent"
|
||||||
android:layout_height="match_parent"
|
android:layout_height="match_parent"
|
||||||
android:orientation="vertical">
|
android:orientation="vertical"
|
||||||
|
android:id="@+id/search_layout"
|
||||||
|
android:minWidth="200dp">
|
||||||
|
|
||||||
<SearchView
|
<SearchView
|
||||||
android:layout_width="match_parent"
|
android:layout_width="match_parent"
|
||||||
|
@ -11,8 +30,9 @@
|
||||||
android:hint="@string/share_search"/>
|
android:hint="@string/share_search"/>
|
||||||
|
|
||||||
<ListView
|
<ListView
|
||||||
android:layout_width="wrap_content"
|
android:layout_width="match_parent"
|
||||||
android:layout_height="wrap_content"
|
android:layout_height="match_parent"
|
||||||
android:id="@+id/searchUsersListView" />
|
android:id="@+id/searchUsersListView"
|
||||||
|
android:scrollbars="vertical"/>
|
||||||
|
|
||||||
</LinearLayout>
|
</LinearLayout>
|
||||||
|
|
44
res/layout/share_activity.xml
Normal file
44
res/layout/share_activity.xml
Normal file
|
@ -0,0 +1,44 @@
|
||||||
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
|
<!--
|
||||||
|
ownCloud Android client application
|
||||||
|
Copyright (C) 2015 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 <http://www.gnu.org/licenses/>.
|
||||||
|
-->
|
||||||
|
|
||||||
|
<android.support.design.widget.CoordinatorLayout
|
||||||
|
xmlns:android="http://schemas.android.com/apk/res/android"
|
||||||
|
xmlns:app="http://schemas.android.com/apk/res-auto"
|
||||||
|
xmlns:tools="http://schemas.android.com/tools"
|
||||||
|
android:layout_width="match_parent"
|
||||||
|
android:layout_height="match_parent"
|
||||||
|
tools:context="com.owncloud.android.ui.activity.ShareActivity">
|
||||||
|
|
||||||
|
<android.support.design.widget.AppBarLayout
|
||||||
|
android:layout_height="wrap_content"
|
||||||
|
android:layout_width="match_parent" android:theme="@style/Theme.ownCloud.AppBarOverlay">
|
||||||
|
|
||||||
|
<android.support.v7.widget.Toolbar android:id="@+id/toolbar"
|
||||||
|
android:layout_width="match_parent" android:layout_height="?attr/actionBarSize"
|
||||||
|
android:background="?attr/colorPrimary"
|
||||||
|
app:popupTheme="@style/Theme.ownCloud.PopupOverlay" />
|
||||||
|
|
||||||
|
</android.support.design.widget.AppBarLayout>
|
||||||
|
|
||||||
|
<FrameLayout
|
||||||
|
android:layout_width="match_parent"
|
||||||
|
android:layout_height="match_parent"
|
||||||
|
android:id="@+id/share_fragment_container">
|
||||||
|
</FrameLayout>
|
||||||
|
|
||||||
|
</android.support.design.widget.CoordinatorLayout>
|
|
@ -1,110 +0,0 @@
|
||||||
<?xml version="1.0" encoding="utf-8"?>
|
|
||||||
<!--
|
|
||||||
ownCloud Android client application
|
|
||||||
Copyright (C) 2015 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 <http://www.gnu.org/licenses/>.
|
|
||||||
-->
|
|
||||||
|
|
||||||
<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
|
|
||||||
xmlns:tools="http://schemas.android.com/tools"
|
|
||||||
android:layout_width="match_parent"
|
|
||||||
android:layout_height="match_parent"
|
|
||||||
tools:context="com.owncloud.android.ui.dialog.ShareFileDialogFragment">
|
|
||||||
|
|
||||||
<ScrollView
|
|
||||||
android:id="@+id/shareScrollView"
|
|
||||||
android:layout_width="match_parent"
|
|
||||||
android:layout_height="match_parent"
|
|
||||||
android:fillViewport="true">
|
|
||||||
|
|
||||||
<LinearLayout
|
|
||||||
android:layout_width="match_parent"
|
|
||||||
android:layout_height="wrap_content"
|
|
||||||
android:orientation="vertical"
|
|
||||||
android:layout_marginBottom="8dp">
|
|
||||||
|
|
||||||
<RelativeLayout
|
|
||||||
android:id="@+id/shareHeaderContainer"
|
|
||||||
android:layout_width="match_parent"
|
|
||||||
android:layout_height="wrap_content"
|
|
||||||
android:layout_margin="8dp">
|
|
||||||
|
|
||||||
<ImageView
|
|
||||||
android:id="@+id/shareFileIcon"
|
|
||||||
android:layout_width="wrap_content"
|
|
||||||
android:layout_height="wrap_content"
|
|
||||||
android:src="@drawable/file"
|
|
||||||
android:layout_margin="8dp"
|
|
||||||
android:maxHeight="96dp"
|
|
||||||
android:maxWidth="96dp"/>
|
|
||||||
|
|
||||||
<TextView
|
|
||||||
android:id="@+id/shareFileName"
|
|
||||||
android:layout_width="wrap_content"
|
|
||||||
android:layout_height="wrap_content"
|
|
||||||
android:text="@string/placeholder_filename"
|
|
||||||
android:textAppearance="?android:attr/textAppearanceLarge"
|
|
||||||
android:layout_marginTop="39dp"
|
|
||||||
android:layout_alignParentTop="true"
|
|
||||||
android:layout_toRightOf="@+id/shareFileIcon"
|
|
||||||
android:layout_toEndOf="@+id/shareFileIcon" />
|
|
||||||
|
|
||||||
<TextView
|
|
||||||
android:layout_width="wrap_content"
|
|
||||||
android:layout_height="wrap_content"
|
|
||||||
android:textAppearance="?android:attr/textAppearanceMedium"
|
|
||||||
android:text="@string/placeholder_filesize"
|
|
||||||
android:id="@+id/shareFileSize"
|
|
||||||
android:layout_below="@+id/shareFileName"
|
|
||||||
android:layout_toRightOf="@+id/shareFileIcon"
|
|
||||||
android:layout_toEndOf="@+id/shareFileIcon"
|
|
||||||
android:layout_marginTop="12dp" />
|
|
||||||
|
|
||||||
</RelativeLayout>
|
|
||||||
|
|
||||||
<TextView
|
|
||||||
android:layout_width="match_parent"
|
|
||||||
android:layout_height="wrap_content"
|
|
||||||
android:textAppearance="?android:attr/textAppearanceMedium"
|
|
||||||
android:text="@string/share_with_user_section_title"
|
|
||||||
android:id="@+id/shareWithUsersSectionTitle"
|
|
||||||
android:layout_gravity="left"
|
|
||||||
android:padding="8dp"
|
|
||||||
android:background="@color/actionbar_start_color"
|
|
||||||
android:textColor="@color/white"/>
|
|
||||||
|
|
||||||
<ListView
|
|
||||||
android:layout_width="match_parent"
|
|
||||||
android:layout_height="wrap_content"
|
|
||||||
android:id="@+id/shareUsersList"
|
|
||||||
android:visibility="gone" />
|
|
||||||
|
|
||||||
<TextView
|
|
||||||
android:layout_width="match_parent"
|
|
||||||
android:layout_height="wrap_content"
|
|
||||||
android:id="@+id/shareNoUsers"
|
|
||||||
android:text="@string/share_no_users"
|
|
||||||
android:padding="12dp" />
|
|
||||||
|
|
||||||
<android.support.v7.widget.AppCompatButton
|
|
||||||
android:id="@+id/addUserButton"
|
|
||||||
style="@style/ownCloud.Button"
|
|
||||||
android:layout_width="match_parent"
|
|
||||||
android:layout_height="wrap_content"
|
|
||||||
android:layout_gravity="center_horizontal"
|
|
||||||
android:text="@string/share_add_user_or_group"
|
|
||||||
android:contentDescription="shareAddUserButton"/>
|
|
||||||
</LinearLayout>
|
|
||||||
</ScrollView>
|
|
||||||
</FrameLayout>
|
|
108
res/layout/share_file_layout.xml
Normal file
108
res/layout/share_file_layout.xml
Normal file
|
@ -0,0 +1,108 @@
|
||||||
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
|
<!--
|
||||||
|
ownCloud Android client application
|
||||||
|
Copyright (C) 2015 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 <http://www.gnu.org/licenses/>.
|
||||||
|
-->
|
||||||
|
<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
|
||||||
|
xmlns:tools="http://schemas.android.com/tools"
|
||||||
|
android:layout_width="match_parent"
|
||||||
|
android:layout_height="match_parent"
|
||||||
|
xmlns:app="http://schemas.android.com/apk/res-auto"
|
||||||
|
tools:context="com.owncloud.android.ui.fragment.ShareFileFragment">
|
||||||
|
|
||||||
|
<LinearLayout
|
||||||
|
android:layout_width="match_parent"
|
||||||
|
android:layout_height="match_parent"
|
||||||
|
android:background="@color/background_material_light"
|
||||||
|
android:orientation="vertical">
|
||||||
|
|
||||||
|
<RelativeLayout
|
||||||
|
android:id="@+id/shareHeaderContainer"
|
||||||
|
android:layout_width="match_parent"
|
||||||
|
android:layout_height="wrap_content"
|
||||||
|
android:layout_marginTop="8dp"
|
||||||
|
android:layout_marginBottom="8dp"
|
||||||
|
android:background="@color/background_color">
|
||||||
|
|
||||||
|
<ImageView
|
||||||
|
android:id="@+id/shareFileIcon"
|
||||||
|
android:layout_width="wrap_content"
|
||||||
|
android:layout_height="wrap_content"
|
||||||
|
android:maxWidth="96dp"
|
||||||
|
android:layout_margin="12dp"
|
||||||
|
android:src="@drawable/file" />
|
||||||
|
|
||||||
|
<TextView
|
||||||
|
android:id="@+id/shareFileName"
|
||||||
|
android:layout_width="wrap_content"
|
||||||
|
android:layout_height="wrap_content"
|
||||||
|
android:text="@string/placeholder_filename"
|
||||||
|
android:textAppearance="?android:attr/textAppearanceLarge"
|
||||||
|
android:layout_marginTop="39dp"
|
||||||
|
android:layout_alignParentTop="true"
|
||||||
|
android:layout_toRightOf="@+id/shareFileIcon"
|
||||||
|
android:layout_toEndOf="@+id/shareFileIcon" />
|
||||||
|
|
||||||
|
<TextView
|
||||||
|
android:layout_width="wrap_content"
|
||||||
|
android:layout_height="wrap_content"
|
||||||
|
android:textAppearance="?android:attr/textAppearanceMedium"
|
||||||
|
android:text="@string/placeholder_filesize"
|
||||||
|
android:id="@+id/shareFileSize"
|
||||||
|
android:layout_below="@+id/shareFileName"
|
||||||
|
android:layout_toRightOf="@+id/shareFileIcon"
|
||||||
|
android:layout_toEndOf="@+id/shareFileIcon"
|
||||||
|
android:layout_marginTop="12dp" />
|
||||||
|
|
||||||
|
</RelativeLayout>
|
||||||
|
|
||||||
|
<TextView
|
||||||
|
android:layout_width="match_parent"
|
||||||
|
android:layout_height="wrap_content"
|
||||||
|
android:textAppearance="?android:attr/textAppearanceMedium"
|
||||||
|
android:text="@string/share_with_user_section_title"
|
||||||
|
android:id="@+id/shareWithUsersSectionTitle"
|
||||||
|
android:layout_gravity="left"
|
||||||
|
android:padding="8dp"
|
||||||
|
android:background="@color/actionbar_start_color"
|
||||||
|
android:textColor="@color/white"/>
|
||||||
|
|
||||||
|
<ListView
|
||||||
|
android:layout_width="match_parent"
|
||||||
|
android:layout_height="wrap_content"
|
||||||
|
android:id="@+id/shareUsersList"
|
||||||
|
android:visibility="gone"
|
||||||
|
android:scrollbars="vertical"/>
|
||||||
|
|
||||||
|
<TextView
|
||||||
|
android:layout_width="match_parent"
|
||||||
|
android:layout_height="wrap_content"
|
||||||
|
android:id="@+id/shareNoUsers"
|
||||||
|
android:text="@string/share_no_users"
|
||||||
|
android:padding="12dp" />
|
||||||
|
|
||||||
|
<android.support.design.widget.FloatingActionButton
|
||||||
|
android:id="@+id/addUserButton"
|
||||||
|
android:layout_width="wrap_content"
|
||||||
|
android:layout_height="wrap_content"
|
||||||
|
android:layout_gravity="bottom|end"
|
||||||
|
android:layout_margin="@dimen/fab_margin"
|
||||||
|
android:src="@android:drawable/ic_input_add"
|
||||||
|
android:contentDescription="shareAddUserButton"
|
||||||
|
app:backgroundTint="@color/actionbar_start_color"
|
||||||
|
app:rippleColor="@color/background_color" />
|
||||||
|
|
||||||
|
</LinearLayout>
|
||||||
|
</FrameLayout>
|
|
@ -18,5 +18,11 @@
|
||||||
-->
|
-->
|
||||||
<resources xmlns:android="http://schemas.android.com/apk/res/android">
|
<resources xmlns:android="http://schemas.android.com/apk/res/android">
|
||||||
<style name="ProgressDialogTheme" parent="ownCloud.Dialog">
|
<style name="ProgressDialogTheme" parent="ownCloud.Dialog">
|
||||||
|
</style>>
|
||||||
|
<style name="Theme.ownCloud.NoActionBar">
|
||||||
|
<item name="windowActionBar">false</item>
|
||||||
|
<item name="windowNoTitle">true</item>
|
||||||
|
<item name="android:windowDrawsSystemBarBackgrounds">true</item>
|
||||||
|
<item name="android:statusBarColor">@android:color/transparent</item>
|
||||||
</style>
|
</style>
|
||||||
</resources>
|
</resources>
|
6
res/values-w820dp/dimens.xml
Normal file
6
res/values-w820dp/dimens.xml
Normal file
|
@ -0,0 +1,6 @@
|
||||||
|
<resources>
|
||||||
|
<!-- Example customization of dimensions originally defined in res/values/dimens.xml
|
||||||
|
(such as screen margins) for screens with more than 820dp of available width. This
|
||||||
|
would include 7" and 10" devices in landscape (~960dp and ~1280dp respectively). -->
|
||||||
|
<dimen name="activity_horizontal_margin">64dp</dimen>
|
||||||
|
</resources>
|
5
res/values/dimens.xml
Normal file
5
res/values/dimens.xml
Normal file
|
@ -0,0 +1,5 @@
|
||||||
|
<resources>
|
||||||
|
<dimen name="app_bar_height">180dp</dimen>
|
||||||
|
<dimen name="fab_margin">16dp</dimen>
|
||||||
|
<dimen name="text_margin">16dp</dimen>
|
||||||
|
</resources>
|
|
@ -224,4 +224,10 @@
|
||||||
|
|
||||||
<color name="setup_text_hint">#777777</color>
|
<color name="setup_text_hint">#777777</color>
|
||||||
<color name="setup_text_typed">#000000</color>
|
<color name="setup_text_typed">#000000</color>
|
||||||
|
<style name="Theme.ownCloud.NoActionBar">
|
||||||
|
<item name="windowActionBar">false</item>
|
||||||
|
<item name="windowNoTitle">true</item>
|
||||||
|
</style>
|
||||||
|
<style name="Theme.ownCloud.AppBarOverlay" parent="ThemeOverlay.AppCompat.Dark.ActionBar" />
|
||||||
|
<style name="Theme.ownCloud.PopupOverlay" parent="ThemeOverlay.AppCompat.Light" />
|
||||||
</resources>
|
</resources>
|
|
@ -43,7 +43,7 @@ import com.owncloud.android.lib.resources.status.OwnCloudVersion;
|
||||||
import com.owncloud.android.services.OperationsService;
|
import com.owncloud.android.services.OperationsService;
|
||||||
import com.owncloud.android.services.observer.FileObserverService;
|
import com.owncloud.android.services.observer.FileObserverService;
|
||||||
import com.owncloud.android.ui.activity.FileActivity;
|
import com.owncloud.android.ui.activity.FileActivity;
|
||||||
import com.owncloud.android.ui.dialog.ShareFileDialogFragment;
|
import com.owncloud.android.ui.activity.ShareActivity;
|
||||||
import com.owncloud.android.ui.dialog.ShareLinkToDialog;
|
import com.owncloud.android.ui.dialog.ShareLinkToDialog;
|
||||||
|
|
||||||
import org.apache.http.protocol.HTTP;
|
import org.apache.http.protocol.HTTP;
|
||||||
|
@ -226,9 +226,10 @@ public class FileOperationsHelper {
|
||||||
}
|
}
|
||||||
|
|
||||||
public void showShareFile(OCFile file){
|
public void showShareFile(OCFile file){
|
||||||
ShareFileDialogFragment dialog =
|
Intent intent = new Intent(mFileActivity, ShareActivity.class);
|
||||||
ShareFileDialogFragment.newInstance(file, mFileActivity.getAccount());
|
intent.putExtra(mFileActivity.EXTRA_FILE, file);
|
||||||
dialog.show(mFileActivity.getSupportFragmentManager(), mFileActivity.DIALOG_SHARE_FILE);
|
intent.putExtra(mFileActivity.EXTRA_ACCOUNT, mFileActivity.getAccount());
|
||||||
|
mFileActivity.startActivity(intent);
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -100,7 +100,6 @@ public class FileActivity extends AppCompatActivity
|
||||||
public static final String TAG = FileActivity.class.getSimpleName();
|
public static final String TAG = FileActivity.class.getSimpleName();
|
||||||
|
|
||||||
private static final String DIALOG_WAIT_TAG = "DIALOG_WAIT";
|
private static final String DIALOG_WAIT_TAG = "DIALOG_WAIT";
|
||||||
public static final String DIALOG_SHARE_FILE = "DIALOG_SHARE_FILE";
|
|
||||||
|
|
||||||
private static final String KEY_WAITING_FOR_OP_ID = "WAITING_FOR_OP_ID";
|
private static final String KEY_WAITING_FOR_OP_ID = "WAITING_FOR_OP_ID";
|
||||||
private static final String DIALOG_SHARE_PASSWORD = "DIALOG_SHARE_PASSWORD";
|
private static final String DIALOG_SHARE_PASSWORD = "DIALOG_SHARE_PASSWORD";
|
||||||
|
|
|
@ -90,8 +90,6 @@ import com.owncloud.android.services.observer.FileObserverService;
|
||||||
import com.owncloud.android.syncadapter.FileSyncAdapter;
|
import com.owncloud.android.syncadapter.FileSyncAdapter;
|
||||||
import com.owncloud.android.ui.dialog.ConfirmationDialogFragment;
|
import com.owncloud.android.ui.dialog.ConfirmationDialogFragment;
|
||||||
import com.owncloud.android.ui.dialog.CreateFolderDialogFragment;
|
import com.owncloud.android.ui.dialog.CreateFolderDialogFragment;
|
||||||
import com.owncloud.android.ui.dialog.ShareFileDialogFragment;
|
|
||||||
import com.owncloud.android.ui.dialog.SharePasswordDialogFragment;
|
|
||||||
import com.owncloud.android.ui.dialog.SslUntrustedCertDialog;
|
import com.owncloud.android.ui.dialog.SslUntrustedCertDialog;
|
||||||
import com.owncloud.android.ui.dialog.SslUntrustedCertDialog.OnSslUntrustedCertListener;
|
import com.owncloud.android.ui.dialog.SslUntrustedCertDialog.OnSslUntrustedCertListener;
|
||||||
import com.owncloud.android.ui.dialog.UploadSourceDialogFragment;
|
import com.owncloud.android.ui.dialog.UploadSourceDialogFragment;
|
||||||
|
@ -1237,9 +1235,10 @@ public class FileDisplayActivity extends HookActivity
|
||||||
*/
|
*/
|
||||||
@Override
|
@Override
|
||||||
public void showShareFile(OCFile file) {
|
public void showShareFile(OCFile file) {
|
||||||
ShareFileDialogFragment dialog =
|
Intent intent = new Intent(this, ShareActivity.class);
|
||||||
ShareFileDialogFragment.newInstance(file, getAccount());
|
intent.putExtra(EXTRA_FILE, file);
|
||||||
dialog.show(getSupportFragmentManager(), DIALOG_SHARE_FILE);
|
intent.putExtra(EXTRA_ACCOUNT, getAccount());
|
||||||
|
startActivity(intent);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
|
138
src/com/owncloud/android/ui/activity/ShareActivity.java
Normal file
138
src/com/owncloud/android/ui/activity/ShareActivity.java
Normal file
|
@ -0,0 +1,138 @@
|
||||||
|
/**
|
||||||
|
* ownCloud Android client application
|
||||||
|
*
|
||||||
|
* @author masensio
|
||||||
|
* Copyright (C) 2015 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 <http://www.gnu.org/licenses/>.
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
|
||||||
|
package com.owncloud.android.ui.activity;
|
||||||
|
|
||||||
|
import android.accounts.Account;
|
||||||
|
import android.net.Uri;
|
||||||
|
import android.os.Bundle;
|
||||||
|
import android.support.v4.app.FragmentTransaction;
|
||||||
|
import android.support.v7.app.AppCompatActivity;
|
||||||
|
import android.support.v7.widget.Toolbar;
|
||||||
|
|
||||||
|
import com.owncloud.android.R;
|
||||||
|
import com.owncloud.android.datamodel.OCFile;
|
||||||
|
import com.owncloud.android.ui.fragment.SearchFragment;
|
||||||
|
import com.owncloud.android.ui.fragment.ShareFileFragment;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Activity for sharing files
|
||||||
|
*/
|
||||||
|
|
||||||
|
public class ShareActivity extends AppCompatActivity
|
||||||
|
implements ShareFileFragment.OnShareFragmentInteractionListener,
|
||||||
|
SearchFragment.OnSearchFragmentInteractionListener {
|
||||||
|
|
||||||
|
private static final String TAG_SHARE_FRAGMENT = "SHARE_FRAGMENT";
|
||||||
|
private static final String TAG_SEARCH_FRAGMENT = "SEARCH_USER_AND_GROUPS_FRAGMENT";
|
||||||
|
|
||||||
|
private Account mAccount;
|
||||||
|
private OCFile mFile;
|
||||||
|
|
||||||
|
private ShareFileFragment mShareFileFragment;
|
||||||
|
private SearchFragment mSearchFragment;
|
||||||
|
|
||||||
|
@Override
|
||||||
|
protected void onCreate(Bundle savedInstanceState) {
|
||||||
|
super.onCreate(savedInstanceState);
|
||||||
|
setContentView(R.layout.share_activity);
|
||||||
|
Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar);
|
||||||
|
setSupportActionBar(toolbar);
|
||||||
|
|
||||||
|
FragmentTransaction ft = getSupportFragmentManager().beginTransaction();
|
||||||
|
|
||||||
|
if (savedInstanceState != null) {
|
||||||
|
mFile = savedInstanceState.getParcelable(FileActivity.EXTRA_FILE);
|
||||||
|
mAccount = savedInstanceState.getParcelable(FileActivity.EXTRA_ACCOUNT);
|
||||||
|
|
||||||
|
mShareFileFragment = (ShareFileFragment) getSupportFragmentManager().
|
||||||
|
getFragment(savedInstanceState, TAG_SHARE_FRAGMENT);
|
||||||
|
mSearchFragment = (SearchFragment) getSupportFragmentManager().
|
||||||
|
getFragment(savedInstanceState, TAG_SEARCH_FRAGMENT);
|
||||||
|
|
||||||
|
if (mShareFileFragment != null){
|
||||||
|
ft.replace(R.id.share_fragment_container, mShareFileFragment, TAG_SHARE_FRAGMENT);
|
||||||
|
|
||||||
|
if (mSearchFragment != null){
|
||||||
|
ft.hide(mShareFileFragment);
|
||||||
|
ft.add(R.id.share_fragment_container, mSearchFragment, TAG_SEARCH_FRAGMENT);
|
||||||
|
ft.addToBackStack(TAG_SEARCH_FRAGMENT);
|
||||||
|
}
|
||||||
|
ft.commit();
|
||||||
|
}
|
||||||
|
|
||||||
|
} else {
|
||||||
|
// Read Extras
|
||||||
|
mFile = getIntent().getParcelableExtra(FileActivity.EXTRA_FILE);
|
||||||
|
mAccount = getIntent().getParcelableExtra(FileActivity.EXTRA_ACCOUNT);
|
||||||
|
|
||||||
|
// Add Share fragment
|
||||||
|
mShareFileFragment = ShareFileFragment.newInstance(mFile, mAccount);
|
||||||
|
ft.replace(R.id.share_fragment_container, mShareFileFragment, TAG_SHARE_FRAGMENT);
|
||||||
|
ft.commit();
|
||||||
|
|
||||||
|
mSearchFragment = null;
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
protected void onSaveInstanceState(Bundle outState) {
|
||||||
|
super.onSaveInstanceState(outState);
|
||||||
|
outState.putParcelable(FileActivity.EXTRA_FILE, mFile);
|
||||||
|
outState.putParcelable(FileActivity.EXTRA_ACCOUNT, mAccount);
|
||||||
|
|
||||||
|
//Save the fragment's instance
|
||||||
|
getSupportFragmentManager().putFragment(outState, TAG_SHARE_FRAGMENT, mShareFileFragment);
|
||||||
|
if (mSearchFragment != null) {
|
||||||
|
getSupportFragmentManager().putFragment(outState, TAG_SEARCH_FRAGMENT, mSearchFragment);
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void showSearchUsersAndGroups() {
|
||||||
|
FragmentTransaction ft = getSupportFragmentManager().beginTransaction();
|
||||||
|
mSearchFragment = SearchFragment.newInstance(mFile, mAccount);
|
||||||
|
ft.hide(mShareFileFragment);
|
||||||
|
ft.add(R.id.share_fragment_container, mSearchFragment, TAG_SEARCH_FRAGMENT);
|
||||||
|
ft.addToBackStack(TAG_SEARCH_FRAGMENT);
|
||||||
|
ft.commit();
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void onBackPressed() {
|
||||||
|
super.onBackPressed();
|
||||||
|
if (mSearchFragment != null){
|
||||||
|
getSupportFragmentManager().popBackStackImmediate();
|
||||||
|
mSearchFragment = null;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void onShareFragmentInteraction(Uri uri) {
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void onSearchFragmentInteraction(Uri uri) {
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
138
src/com/owncloud/android/ui/fragment/SearchFragment.java
Normal file
138
src/com/owncloud/android/ui/fragment/SearchFragment.java
Normal file
|
@ -0,0 +1,138 @@
|
||||||
|
/**
|
||||||
|
* ownCloud Android client application
|
||||||
|
*
|
||||||
|
* @author masensio
|
||||||
|
* Copyright (C) 2015 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 <http://www.gnu.org/licenses/>.
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
|
||||||
|
package com.owncloud.android.ui.fragment;
|
||||||
|
|
||||||
|
import android.accounts.Account;
|
||||||
|
import android.app.Activity;
|
||||||
|
import android.net.Uri;
|
||||||
|
import android.os.Bundle;
|
||||||
|
import android.support.v4.app.Fragment;
|
||||||
|
import android.view.LayoutInflater;
|
||||||
|
import android.view.View;
|
||||||
|
import android.view.ViewGroup;
|
||||||
|
|
||||||
|
import com.owncloud.android.R;
|
||||||
|
import com.owncloud.android.datamodel.OCFile;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Fragment for Searching users and groups
|
||||||
|
*
|
||||||
|
* A simple {@link Fragment} subclass.
|
||||||
|
* Activities that contain this fragment must implement the
|
||||||
|
* {@link SearchFragment.OnSearchFragmentInteractionListener} interface
|
||||||
|
* to handle interaction events.
|
||||||
|
* Use the {@link SearchFragment#newInstance} factory method to
|
||||||
|
* create an instance of this fragment.
|
||||||
|
*/
|
||||||
|
public class SearchFragment extends Fragment {
|
||||||
|
private static final String TAG = ShareFileFragment.class.getSimpleName();
|
||||||
|
|
||||||
|
// the fragment initialization parameters
|
||||||
|
private static final String ARG_FILE = "FILE";
|
||||||
|
private static final String ARG_ACCOUNT = "ACCOUNT";
|
||||||
|
|
||||||
|
// Parameters
|
||||||
|
private OCFile mFile;
|
||||||
|
private Account mAccount;
|
||||||
|
|
||||||
|
private OnSearchFragmentInteractionListener mListener;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Public factory method to create new SearchFragment instances.
|
||||||
|
*
|
||||||
|
* @param fileToShare An {@link OCFile} to show in the fragment
|
||||||
|
* @param account An ownCloud account
|
||||||
|
* @return A new instance of fragment SearchFragment.
|
||||||
|
*/
|
||||||
|
// TODO: Rename and change types and number of parameters
|
||||||
|
public static SearchFragment newInstance(OCFile fileToShare, Account account) {
|
||||||
|
SearchFragment fragment = new SearchFragment();
|
||||||
|
Bundle args = new Bundle();
|
||||||
|
args.putParcelable(ARG_FILE, fileToShare);
|
||||||
|
args.putParcelable(ARG_ACCOUNT, account);
|
||||||
|
fragment.setArguments(args);
|
||||||
|
return fragment;
|
||||||
|
}
|
||||||
|
|
||||||
|
public SearchFragment() {
|
||||||
|
// Required empty public constructor
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void onCreate(Bundle savedInstanceState) {
|
||||||
|
super.onCreate(savedInstanceState);
|
||||||
|
if (getArguments() != null) {
|
||||||
|
mFile = getArguments().getParcelable(ARG_FILE);
|
||||||
|
mAccount = getArguments().getParcelable(ARG_ACCOUNT);
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public View onCreateView(LayoutInflater inflater, ViewGroup container,
|
||||||
|
Bundle savedInstanceState) {
|
||||||
|
// Inflate the layout for this fragment
|
||||||
|
View view = inflater.inflate(R.layout.search_users_groups_layout, container, false);
|
||||||
|
|
||||||
|
return view;
|
||||||
|
}
|
||||||
|
|
||||||
|
// TODO: Rename method, update argument and hook method into UI event
|
||||||
|
public void onButtonPressed(Uri uri) {
|
||||||
|
if (mListener != null) {
|
||||||
|
mListener.onSearchFragmentInteraction(uri);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void onAttach(Activity activity) {
|
||||||
|
super.onAttach(activity);
|
||||||
|
try {
|
||||||
|
mListener = (OnSearchFragmentInteractionListener) activity;
|
||||||
|
} catch (ClassCastException e) {
|
||||||
|
throw new ClassCastException(activity.toString()
|
||||||
|
+ " must implement OnFragmentInteractionListener");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void onDetach() {
|
||||||
|
super.onDetach();
|
||||||
|
mListener = null;
|
||||||
|
}
|
||||||
|
|
||||||
|
// TODO: review if it is necessary
|
||||||
|
/**
|
||||||
|
* This interface must be implemented by activities that contain this
|
||||||
|
* fragment to allow an interaction in this fragment to be communicated
|
||||||
|
* to the activity and potentially other fragments contained in that
|
||||||
|
* activity.
|
||||||
|
* <p/>
|
||||||
|
* See the Android Training lesson <a href=
|
||||||
|
* "http://developer.android.com/training/basics/fragments/communicating.html"
|
||||||
|
* >Communicating with Other Fragments</a> for more information.
|
||||||
|
*/
|
||||||
|
public interface OnSearchFragmentInteractionListener {
|
||||||
|
// TODO: Update argument type and name
|
||||||
|
public void onSearchFragmentInteraction(Uri uri);
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
|
@ -18,19 +18,18 @@
|
||||||
*
|
*
|
||||||
*/
|
*/
|
||||||
|
|
||||||
package com.owncloud.android.ui.dialog;
|
package com.owncloud.android.ui.fragment;
|
||||||
|
|
||||||
import android.accounts.Account;
|
import android.accounts.Account;
|
||||||
import android.app.Dialog;
|
import android.app.Activity;
|
||||||
import android.content.DialogInterface;
|
|
||||||
import android.graphics.Bitmap;
|
import android.graphics.Bitmap;
|
||||||
import android.net.Uri;
|
import android.net.Uri;
|
||||||
import android.os.Bundle;
|
import android.os.Bundle;
|
||||||
import android.app.Fragment;
|
import android.support.design.widget.FloatingActionButton;
|
||||||
import android.support.v4.app.DialogFragment;
|
import android.support.v4.app.Fragment;
|
||||||
import android.support.v7.app.AlertDialog;
|
|
||||||
import android.view.LayoutInflater;
|
import android.view.LayoutInflater;
|
||||||
import android.view.View;
|
import android.view.View;
|
||||||
|
import android.view.ViewGroup;
|
||||||
import android.widget.ImageView;
|
import android.widget.ImageView;
|
||||||
import android.widget.TextView;
|
import android.widget.TextView;
|
||||||
|
|
||||||
|
@ -41,20 +40,17 @@ import com.owncloud.android.utils.DisplayUtils;
|
||||||
import com.owncloud.android.utils.MimetypeIconUtil;
|
import com.owncloud.android.utils.MimetypeIconUtil;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
* Fragment for Sharing a file with users
|
||||||
|
*
|
||||||
* A simple {@link Fragment} subclass.
|
* A simple {@link Fragment} subclass.
|
||||||
* Activities that contain this fragment must implement the
|
* Activities that contain this fragment must implement the
|
||||||
* {@link ShareFileDialogFragment.OnFragmentInteractionListener} interface
|
* {@link ShareFileFragment.OnShareFragmentInteractionListener} interface
|
||||||
* to handle interaction events.
|
* to handle interaction events.
|
||||||
* Use the {@link ShareFileDialogFragment#newInstance} factory method to
|
* Use the {@link ShareFileFragment#newInstance} factory method to
|
||||||
* create an instance of this fragment.
|
* create an instance of this fragment.
|
||||||
*
|
|
||||||
* Dialog Fragment to show the share options of a file/folder
|
|
||||||
*
|
|
||||||
* Search the users and share with them
|
|
||||||
*/
|
*/
|
||||||
public class ShareFileDialogFragment extends DialogFragment
|
public class ShareFileFragment extends Fragment {
|
||||||
implements DialogInterface.OnClickListener{
|
private static final String TAG = ShareFileFragment.class.getSimpleName();
|
||||||
private static final String TAG = ShareFileDialogFragment.class.getSimpleName();
|
|
||||||
|
|
||||||
// the fragment initialization parameters
|
// the fragment initialization parameters
|
||||||
private static final String ARG_FILE = "FILE";
|
private static final String ARG_FILE = "FILE";
|
||||||
|
@ -64,17 +60,17 @@ public class ShareFileDialogFragment extends DialogFragment
|
||||||
private OCFile mFile;
|
private OCFile mFile;
|
||||||
private Account mAccount;
|
private Account mAccount;
|
||||||
|
|
||||||
private OnFragmentInteractionListener mListener;
|
private OnShareFragmentInteractionListener mListener;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Public factory method to create new ShareFileDialogFragment instances.
|
* Public factory method to create new ShareFileFragment instances.
|
||||||
*
|
*
|
||||||
* @param fileToShare An {@link OCFile} to show in the fragment
|
* @param fileToShare An {@link OCFile} to show in the fragment
|
||||||
* @param account An ownCloud account
|
* @param account An ownCloud account
|
||||||
* @return A new instance of fragment ShareFragment.
|
* @return A new instance of fragment ShareFileFragment.
|
||||||
*/
|
*/
|
||||||
public static ShareFileDialogFragment newInstance(OCFile fileToShare, Account account) {
|
public static ShareFileFragment newInstance(OCFile fileToShare, Account account) {
|
||||||
ShareFileDialogFragment fragment = new ShareFileDialogFragment();
|
ShareFileFragment fragment = new ShareFileFragment();
|
||||||
Bundle args = new Bundle();
|
Bundle args = new Bundle();
|
||||||
args.putParcelable(ARG_FILE, fileToShare);
|
args.putParcelable(ARG_FILE, fileToShare);
|
||||||
args.putParcelable(ARG_ACCOUNT, account);
|
args.putParcelable(ARG_ACCOUNT, account);
|
||||||
|
@ -82,7 +78,7 @@ public class ShareFileDialogFragment extends DialogFragment
|
||||||
return fragment;
|
return fragment;
|
||||||
}
|
}
|
||||||
|
|
||||||
public ShareFileDialogFragment() {
|
public ShareFileFragment() {
|
||||||
// Required empty public constructor
|
// Required empty public constructor
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -96,11 +92,10 @@ public class ShareFileDialogFragment extends DialogFragment
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public Dialog onCreateDialog(Bundle savedInstanceState) {
|
public View onCreateView(LayoutInflater inflater, ViewGroup container,
|
||||||
|
Bundle savedInstanceState) {
|
||||||
// Inflate the layout for the dialog
|
// Inflate the layout for this fragment
|
||||||
LayoutInflater inflater = getActivity().getLayoutInflater();
|
View view = inflater.inflate(R.layout.share_file_layout, container, false);
|
||||||
View view = inflater.inflate(R.layout.share_file_dialog, null);
|
|
||||||
|
|
||||||
// Setup layout
|
// Setup layout
|
||||||
// Image
|
// Image
|
||||||
|
@ -125,21 +120,45 @@ public class ShareFileDialogFragment extends DialogFragment
|
||||||
size.setText(DisplayUtils.bytesToHumanReadable(mFile.getFileLength()));
|
size.setText(DisplayUtils.bytesToHumanReadable(mFile.getFileLength()));
|
||||||
}
|
}
|
||||||
|
|
||||||
// Build the dialog
|
// Add User Button
|
||||||
AlertDialog.Builder builder = new AlertDialog.Builder(getActivity());
|
FloatingActionButton addUserGroupButton = (FloatingActionButton)
|
||||||
builder.setView(view)
|
view.findViewById(R.id.addUserButton);
|
||||||
.setPositiveButton(R.string.common_ok, this)
|
addUserGroupButton.setOnClickListener(new View.OnClickListener() {
|
||||||
.setTitle(R.string.share_dialog_title);
|
@Override
|
||||||
|
public void onClick(View view) {
|
||||||
|
// Show Search Fragment
|
||||||
|
mListener.showSearchUsersAndGroups();
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
Dialog d = builder.create();
|
return view;
|
||||||
return d;
|
}
|
||||||
|
|
||||||
|
// TODO: Rename method, update argument and hook method into UI event
|
||||||
|
public void onButtonPressed(Uri uri) {
|
||||||
|
if (mListener != null) {
|
||||||
|
mListener.onShareFragmentInteraction(uri);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void onClick(DialogInterface dialog, int which) {
|
public void onAttach(Activity activity) {
|
||||||
|
super.onAttach(activity);
|
||||||
|
try {
|
||||||
|
mListener = (OnShareFragmentInteractionListener) activity;
|
||||||
|
} catch (ClassCastException e) {
|
||||||
|
throw new ClassCastException(activity.toString()
|
||||||
|
+ " must implement OnShareFragmentInteractionListener");
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void onDetach() {
|
||||||
|
super.onDetach();
|
||||||
|
mListener = null;
|
||||||
|
}
|
||||||
|
|
||||||
|
// TODO: review if it is necessary
|
||||||
/**
|
/**
|
||||||
* This interface must be implemented by activities that contain this
|
* This interface must be implemented by activities that contain this
|
||||||
* fragment to allow an interaction in this fragment to be communicated
|
* fragment to allow an interaction in this fragment to be communicated
|
||||||
|
@ -150,9 +169,10 @@ public class ShareFileDialogFragment extends DialogFragment
|
||||||
* "http://developer.android.com/training/basics/fragments/communicating.html"
|
* "http://developer.android.com/training/basics/fragments/communicating.html"
|
||||||
* >Communicating with Other Fragments</a> for more information.
|
* >Communicating with Other Fragments</a> for more information.
|
||||||
*/
|
*/
|
||||||
public interface OnFragmentInteractionListener {
|
public interface OnShareFragmentInteractionListener {
|
||||||
// TODO: Update argument type and name
|
public void showSearchUsersAndGroups();
|
||||||
public void onFragmentInteraction(Uri uri);
|
|
||||||
|
public void onShareFragmentInteraction(Uri uri);
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
|
@ -59,7 +59,7 @@ import com.owncloud.android.operations.SynchronizeFileOperation;
|
||||||
import com.owncloud.android.operations.UnshareLinkOperation;
|
import com.owncloud.android.operations.UnshareLinkOperation;
|
||||||
import com.owncloud.android.ui.activity.FileActivity;
|
import com.owncloud.android.ui.activity.FileActivity;
|
||||||
import com.owncloud.android.ui.activity.FileDisplayActivity;
|
import com.owncloud.android.ui.activity.FileDisplayActivity;
|
||||||
import com.owncloud.android.ui.dialog.ShareFileDialogFragment;
|
import com.owncloud.android.ui.activity.ShareActivity;
|
||||||
import com.owncloud.android.ui.fragment.FileFragment;
|
import com.owncloud.android.ui.fragment.FileFragment;
|
||||||
|
|
||||||
|
|
||||||
|
@ -407,9 +407,10 @@ public class PreviewImageActivity extends FileActivity implements
|
||||||
*/
|
*/
|
||||||
@Override
|
@Override
|
||||||
public void showShareFile(OCFile file) {
|
public void showShareFile(OCFile file) {
|
||||||
ShareFileDialogFragment dialog =
|
Intent intent = new Intent(this, ShareActivity.class);
|
||||||
ShareFileDialogFragment.newInstance(file, getAccount());
|
intent.putExtra(EXTRA_FILE, file);
|
||||||
dialog.show(getSupportFragmentManager(), DIALOG_SHARE_FILE);
|
intent.putExtra(EXTRA_ACCOUNT, getAccount());
|
||||||
|
startActivity(intent);
|
||||||
}
|
}
|
||||||
private void requestForDownload(OCFile file) {
|
private void requestForDownload(OCFile file) {
|
||||||
if (mDownloaderBinder == null) {
|
if (mDownloaderBinder == null) {
|
||||||
|
|
Loading…
Reference in a new issue