├── .gitignore ├── .idea ├── compiler.xml ├── copyright │ └── profiles_settings.xml ├── encodings.xml ├── gradle.xml ├── misc.xml ├── modules.xml ├── runConfigurations.xml └── vcs.xml ├── README.md ├── app ├── .gitignore ├── build.gradle ├── libs │ ├── jackson-annotations.jar │ ├── jackson-core.jar │ └── jackson-databind.jar ├── proguard-rules.pro └── src │ ├── androidTest │ └── java │ │ └── ApplicationTest.java │ ├── main │ ├── AndroidManifest.xml │ ├── ic_launcher-web.png │ ├── ic_launcher_xiandian-web.png │ ├── ic_xiandian-web.png │ ├── java │ │ └── com │ │ │ └── xiandian │ │ │ └── openstack │ │ │ └── cloud │ │ │ └── swiftstorage │ │ │ ├── AppState.java │ │ │ ├── LoginActivity.java │ │ │ ├── MainActivity.java │ │ │ ├── RegisterActivity.java │ │ │ ├── WelcomeActivity.java │ │ │ ├── application │ │ │ └── Tpapplication.java │ │ │ ├── base │ │ │ └── TaskResult.java │ │ │ ├── fragment │ │ │ ├── CategoryFragment.java │ │ │ ├── GarbageFragment.java │ │ │ ├── ImgFragment.java │ │ │ ├── ImggridviewFragment.java │ │ │ ├── ImglistviewFragment.java │ │ │ ├── MainFragment.java │ │ │ ├── MyFragmentPagerAdapter.java │ │ │ ├── SFileData.java │ │ │ ├── SFileEditable.java │ │ │ ├── SFileEditableImpl.java │ │ │ ├── SFileListViewAdapter.java │ │ │ ├── VideoFragment.java │ │ │ ├── VideogridviewFragment.java │ │ │ └── VideolistviewFragment.java │ │ │ ├── fs │ │ │ ├── OSSFile.java │ │ │ ├── OSSFileSystem.java │ │ │ └── SFile.java │ │ │ └── utils │ │ │ ├── Constants.java │ │ │ ├── DisplayUtils.java │ │ │ ├── FileIconHelper.java │ │ │ ├── FileUtils.java │ │ │ ├── GraphicsUtil.java │ │ │ ├── PromptDialogUtil.java │ │ │ └── Sort_dialog.java │ └── res │ │ ├── drawable-v21 │ │ ├── ic_action_share.xml │ │ ├── ic_file_doc.xml │ │ ├── ic_file_folder.xml │ │ ├── ic_file_music.xml │ │ ├── ic_file_others.xml │ │ ├── ic_file_pic.xml │ │ ├── ic_file_video.xml │ │ ├── ic_menu_camera.xml │ │ ├── ic_menu_doc.xml │ │ ├── ic_menu_gallery.xml │ │ ├── ic_menu_manage.xml │ │ ├── ic_menu_music.xml │ │ ├── ic_menu_pic.xml │ │ ├── ic_menu_recycle.xml │ │ ├── ic_menu_send.xml │ │ ├── ic_menu_setting.xml │ │ ├── ic_menu_slideshow.xml │ │ ├── ic_menu_swiftstorage.xml │ │ ├── ic_menu_video.xml │ │ └── side_nav_bar.xml │ │ ├── drawable │ │ ├── ic_action_copy.xml │ │ ├── ic_action_create_dir.xml │ │ ├── ic_action_details.xml │ │ ├── ic_action_download.xml │ │ ├── ic_action_empty.xml │ │ ├── ic_action_grid_thumbnail.xml │ │ ├── ic_action_license.xml │ │ ├── ic_action_move.xml │ │ ├── ic_action_open.xml │ │ ├── ic_action_record_audio.xml │ │ ├── ic_action_record_video.xml │ │ ├── ic_action_recycle.xml │ │ ├── ic_action_rename.xml │ │ ├── ic_action_restore.xml │ │ ├── ic_action_search.xml │ │ ├── ic_action_select_all.xml │ │ ├── ic_action_setting.xml │ │ ├── ic_action_share.xml │ │ ├── ic_action_sort.xml │ │ ├── ic_action_sort_name.xml │ │ ├── ic_action_sort_size.xml │ │ ├── ic_action_sort_time.xml │ │ ├── ic_action_take_photo.xml │ │ ├── ic_action_unselect_all.xml │ │ ├── ic_action_upload.xml │ │ ├── ic_file_doc.xml │ │ ├── ic_file_folder.xml │ │ ├── ic_file_music.xml │ │ ├── ic_file_others.xml │ │ ├── ic_file_pic.xml │ │ ├── ic_file_video.xml │ │ ├── ic_menu_camera.xml │ │ ├── ic_menu_doc.xml │ │ ├── ic_menu_gallery.xml │ │ ├── ic_menu_manage.xml │ │ ├── ic_menu_music.xml │ │ ├── ic_menu_pic.xml │ │ ├── ic_menu_recycle.xml │ │ ├── ic_menu_send.xml │ │ ├── ic_menu_setting.xml │ │ ├── ic_menu_slideshow.xml │ │ ├── ic_menu_swiftstorage.xml │ │ ├── ic_menu_video.xml │ │ └── welcome.png │ │ ├── layout │ │ ├── activity_main.xml │ │ ├── activity_register.xml │ │ ├── activity_sort_dialog.xml │ │ ├── activity_welcome.xml │ │ ├── app_bar_main.xml │ │ ├── content_main.xml │ │ ├── fragment_category.xml │ │ ├── fragment_garbage.xml │ │ ├── fragment_main.xml │ │ ├── grad_item.xml │ │ ├── img_video.xml │ │ ├── img_videogridview.xml │ │ ├── input_text_edit_dialog.xml │ │ ├── login.xml │ │ ├── login_option_setting.xml │ │ ├── main_list_item.xml │ │ └── nav_header_main.xml │ │ ├── menu │ │ ├── activity_main_drawer.xml │ │ ├── login_option.xml │ │ └── main.xml │ │ ├── mipmap-hdpi │ │ └── ic_xiandian.png │ │ ├── mipmap-mdpi │ │ └── ic_xiandian.png │ │ ├── mipmap-xhdpi │ │ └── ic_xiandian.png │ │ ├── mipmap-xxhdpi │ │ └── ic_xiandian.png │ │ ├── mipmap-xxxhdpi │ │ └── ic_xiandian.png │ │ ├── values-v21 │ │ └── styles.xml │ │ ├── values-w820dp │ │ └── dimens.xml │ │ └── values │ │ ├── attrs.xml │ │ ├── colors.xml │ │ ├── dimens.xml │ │ ├── drawables.xml │ │ ├── strings.xml │ │ └── styles.xml │ └── test │ └── java │ └── ExampleUnitTest.java ├── build.gradle ├── gradle.properties ├── gradle └── wrapper │ ├── gradle-wrapper.jar │ └── gradle-wrapper.properties ├── gradlew ├── gradlew.bat ├── openstack-java-jdk ├── .gitignore ├── build.gradle ├── libs │ ├── jackson-annotations.jar │ ├── jackson-core.jar │ └── jackson-databind.jar └── src │ └── main │ └── java │ ├── com │ ├── woorea │ │ └── openstack │ │ │ ├── base │ │ │ └── client │ │ │ │ ├── Entity.java │ │ │ │ ├── HttpMethod.java │ │ │ │ ├── OpenStackClient.java │ │ │ │ ├── OpenStackClientConnector.java │ │ │ │ ├── OpenStackRequest.java │ │ │ │ ├── OpenStackResponse.java │ │ │ │ ├── OpenStackResponseException.java │ │ │ │ ├── OpenStackResponseStatus.java │ │ │ │ ├── OpenStackSimpleTokenProvider.java │ │ │ │ └── OpenStackTokenProvider.java │ │ │ ├── keystone │ │ │ ├── Keystone.java │ │ │ ├── api │ │ │ │ ├── EndpointsResource.java │ │ │ │ ├── RolesResource.java │ │ │ │ ├── ServicesResource.java │ │ │ │ ├── TenantsResource.java │ │ │ │ ├── TokensResource.java │ │ │ │ └── UsersResource.java │ │ │ ├── model │ │ │ │ ├── Access.java │ │ │ │ ├── Authentication.java │ │ │ │ ├── Endpoint.java │ │ │ │ ├── Endpoints.java │ │ │ │ ├── Error.java │ │ │ │ ├── Extra.java │ │ │ │ ├── Link.java │ │ │ │ ├── Role.java │ │ │ │ ├── Roles.java │ │ │ │ ├── Service.java │ │ │ │ ├── Services.java │ │ │ │ ├── Tenant.java │ │ │ │ ├── Tenants.java │ │ │ │ ├── Token.java │ │ │ │ ├── User.java │ │ │ │ ├── Users.java │ │ │ │ └── authentication │ │ │ │ │ ├── AccessKey.java │ │ │ │ │ ├── TokenAuthentication.java │ │ │ │ │ └── UsernamePassword.java │ │ │ ├── utils │ │ │ │ ├── KeystoneTokenProvider.java │ │ │ │ └── KeystoneUtils.java │ │ │ └── v3 │ │ │ │ ├── Keystone.java │ │ │ │ ├── api │ │ │ │ ├── CredentialsResources.java │ │ │ │ ├── DomainGroupRolesResource.java │ │ │ │ ├── DomainUserRolesResource.java │ │ │ │ ├── DomainsResource.java │ │ │ │ ├── EndpointsResource.java │ │ │ │ ├── GenericResource.java │ │ │ │ ├── GroupUsersResource.java │ │ │ │ ├── GroupsResource.java │ │ │ │ ├── PoliciesResource.java │ │ │ │ ├── ProjectGroupRolesResource.java │ │ │ │ ├── ProjectRolesResource.java │ │ │ │ ├── ProjectUserRolesResource.java │ │ │ │ ├── ProjectsResource.java │ │ │ │ ├── RolesResource.java │ │ │ │ ├── ServicesResource.java │ │ │ │ ├── TokensResource.java │ │ │ │ └── UsersResource.java │ │ │ │ └── model │ │ │ │ ├── Authentication.java │ │ │ │ ├── Credential.java │ │ │ │ ├── Credentials.java │ │ │ │ ├── Domain.java │ │ │ │ ├── Domains.java │ │ │ │ ├── Endpoint.java │ │ │ │ ├── Endpoints.java │ │ │ │ ├── Group.java │ │ │ │ ├── Groups.java │ │ │ │ ├── Policies.java │ │ │ │ ├── Policy.java │ │ │ │ ├── Project.java │ │ │ │ ├── Projects.java │ │ │ │ ├── Role.java │ │ │ │ ├── Roles.java │ │ │ │ ├── Service.java │ │ │ │ ├── Services.java │ │ │ │ ├── Token.java │ │ │ │ ├── User.java │ │ │ │ └── Users.java │ │ │ └── swift │ │ │ ├── Swift.java │ │ │ ├── api │ │ │ ├── AccountResource.java │ │ │ ├── ContainerResource.java │ │ │ └── ContainersResource.java │ │ │ ├── deserializer │ │ │ ├── ContainersDeserializer.java │ │ │ └── ObjectsDeserializer.java │ │ │ └── model │ │ │ ├── Account.java │ │ │ ├── Container.java │ │ │ ├── Containers.java │ │ │ ├── Object.java │ │ │ ├── ObjectDownload.java │ │ │ ├── ObjectForUpload.java │ │ │ └── Objects.java │ └── xiandian │ │ └── openstack │ │ └── cloud │ │ └── swiftstorage │ │ └── sdk │ │ ├── connector │ │ ├── AndroidOpenStackClientConnector.java │ │ └── AndroidOpenStackResponse.java │ │ ├── service │ │ └── OpenStackClientService.java │ │ └── test │ │ └── OpenStackSDKTest.java │ └── org │ └── apache │ └── http │ └── util │ ├── Consts.java │ └── EncodingUtils.java ├── projectFilesBackup └── .idea │ └── workspace.xml └── settings.gradle /.gitignore: -------------------------------------------------------------------------------- 1 | *.iml 2 | .gradle 3 | /local.properties 4 | /.idea/workspace.xml 5 | /.idea/libraries 6 | .DS_Store 7 | /build 8 | /captures 9 | -------------------------------------------------------------------------------- /.idea/compiler.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | -------------------------------------------------------------------------------- /.idea/copyright/profiles_settings.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | -------------------------------------------------------------------------------- /.idea/encodings.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | -------------------------------------------------------------------------------- /.idea/gradle.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 19 | 20 | -------------------------------------------------------------------------------- /.idea/misc.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 19 | 29 | 30 | 31 | 32 | 33 | 34 | 35 | 36 | 37 | 38 | 39 | 40 | 41 | 42 | 43 | 44 | 46 | -------------------------------------------------------------------------------- /.idea/modules.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | -------------------------------------------------------------------------------- /.idea/runConfigurations.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 11 | 12 | -------------------------------------------------------------------------------- /.idea/vcs.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | CloudStorage_android 2 | =================================== 3 | 一个云计算比赛用的app开发项目
4 | 大概是第一次用安卓做开发项目
5 | 所以还有很懂地方不会的说
6 | 所以麻烦各位大佬加以指导了qwq
7 | 8 | 设计架构 9 | ----------------------------------- 10 | 系统功能是基于 OpenStack Swif实现的
11 | 12 | 1、 Swift 云存储云端服务:能够连接 OpenStack Swift 云存储,需要在 Android 端引入
13 | SDK,同样使用上面的 SDK(openstack-java-sdk_v1.1.jar)。目前 SDK 是成熟的工
14 | 程,直接引入即可。实现的原理基于 HTTP 协议连接云存储 Swift Restful 服务。同
15 | 样使用封装的 OpenStackClientService 进行异步网络操作。
16 | 17 | 2、 登录:还原和登录各定义一个 Activity。Swift 账户管理使用 Keystone 完成,这里需
18 | 要 Keystone 的访问 SDK,openstack-java-sdk 提供了对 OpenStack 各服务访问的接
19 | 口,可以直接使用。
20 | 21 | 3、 文件系统:目前 SDK 提供了对 Swift 云存储的操作,云存储不是一种文件系统(File
22 | System),为了实现文件,基于 Swift 的 SDK 接口,封装模拟文件操作的类文件系
23 | 统,命名为 OssFilesystem。
24 | 25 | 4、 主界面:使用一个 Activity 来完成主界面,导航通过 NavigationView 控件实现、文
26 | 件列表通过 Fragment 来实现。不同的分类操作不同,我们使用不同的 Fragment 实
27 | 现,降低程序的复杂性。
28 | 29 | 5、 所有文档:实现展示所有文件类别,采用 Fragment。
30 | 31 | 6、 分类:实现文档、图片、视频分类的文件列表,采用 Fragment
32 | 33 | 7、 回收站:实现回收站的文件列表,采用 Fragment。
34 | 35 | 8、 文件上传:上传本地文件,实现一个本地存储文件导航选择窗口 Activity,完成文
36 | 件选择和上传
39 | 了提供性能,对当前操作文件路径进行缓存,跟踪状态信息。
40 | 41 |
42 | -------------------------------------------------------------------------------- /app/.gitignore: -------------------------------------------------------------------------------- 1 | /build 2 | -------------------------------------------------------------------------------- /app/build.gradle: -------------------------------------------------------------------------------- 1 | apply plugin: 'com.android.application' 2 | 3 | android { 4 | compileSdkVersion 23 5 | buildToolsVersion "23.0.3" 6 | 7 | defaultConfig { 8 | applicationId "com.xiandian.openstack.cloud.swiftstorage" 9 | minSdkVersion 13 10 | targetSdkVersion 22 11 | versionCode 1 12 | versionName "1.0" 13 | } 14 | buildTypes { 15 | release { 16 | minifyEnabled false 17 | proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro' 18 | } 19 | } 20 | } 21 | 22 | dependencies { 23 | compile fileTree(dir: 'libs', include: ['*.jar']) 24 | compile project(':openstack-java-jdk') 25 | compile files('libs/jackson-annotations.jar') 26 | compile files('libs/jackson-core.jar') 27 | compile files('libs/jackson-databind.jar') 28 | compile 'com.android.support:appcompat-v7:23.0.0' 29 | compile 'com.android.support:design:23.0.0' 30 | compile 'com.android.support:support-v4:23.0.0' 31 | } 32 | -------------------------------------------------------------------------------- /app/libs/jackson-annotations.jar: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kuriaki-Nanami/CloudStorage_android/24585a5660d5148f6b8910c3d8204fca0b879191/app/libs/jackson-annotations.jar -------------------------------------------------------------------------------- /app/libs/jackson-core.jar: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kuriaki-Nanami/CloudStorage_android/24585a5660d5148f6b8910c3d8204fca0b879191/app/libs/jackson-core.jar -------------------------------------------------------------------------------- /app/libs/jackson-databind.jar: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kuriaki-Nanami/CloudStorage_android/24585a5660d5148f6b8910c3d8204fca0b879191/app/libs/jackson-databind.jar -------------------------------------------------------------------------------- /app/proguard-rules.pro: -------------------------------------------------------------------------------- 1 | # Add project specific ProGuard rules here. 2 | # By default, the flags in this file are appended to flags specified 3 | # in C:\Users\soongxueyong\AppData\Local\Android\sdk/tools/proguard/proguard-android.txt 4 | # You can edit the include path and order by changing the proguardFiles 5 | # directive in build.gradle. 6 | # 7 | # For more details, see 8 | # http://developer.android.com/guide/developing/tools/proguard.html 9 | 10 | # Add any project specific keep options here: 11 | 12 | # If your project uses WebView with JS, uncomment the following 13 | # and specify the fully qualified class name to the JavaScript interface 14 | # class: 15 | #-keepclassmembers class fqcn.of.javascript.interface.for.webview { 16 | # public *; 17 | #} 18 | -------------------------------------------------------------------------------- /app/src/androidTest/java/ApplicationTest.java: -------------------------------------------------------------------------------- 1 | import android.app.Application; 2 | import android.test.ApplicationTestCase; 3 | 4 | /** 5 | * Testing Fundamentals 6 | */ 7 | public class ApplicationTest extends ApplicationTestCase { 8 | public ApplicationTest() { 9 | super(Application.class); 10 | } 11 | } -------------------------------------------------------------------------------- /app/src/main/AndroidManifest.xml: -------------------------------------------------------------------------------- 1 | 2 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 23 | 27 | 32 | 37 | 38 | 39 | 40 | 41 | 42 | 43 | 44 | 45 | 46 | -------------------------------------------------------------------------------- /app/src/main/ic_launcher-web.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kuriaki-Nanami/CloudStorage_android/24585a5660d5148f6b8910c3d8204fca0b879191/app/src/main/ic_launcher-web.png -------------------------------------------------------------------------------- /app/src/main/ic_launcher_xiandian-web.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kuriaki-Nanami/CloudStorage_android/24585a5660d5148f6b8910c3d8204fca0b879191/app/src/main/ic_launcher_xiandian-web.png -------------------------------------------------------------------------------- /app/src/main/ic_xiandian-web.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kuriaki-Nanami/CloudStorage_android/24585a5660d5148f6b8910c3d8204fca0b879191/app/src/main/ic_xiandian-web.png -------------------------------------------------------------------------------- /app/src/main/java/com/xiandian/openstack/cloud/swiftstorage/WelcomeActivity.java: -------------------------------------------------------------------------------- 1 | package com.xiandian.openstack.cloud.swiftstorage; 2 | 3 | import android.app.Activity; 4 | import android.content.Intent; 5 | import android.os.Bundle; 6 | import android.view.View; 7 | import android.view.ViewGroup; 8 | import android.view.animation.AlphaAnimation; 9 | import android.view.animation.Animation; 10 | 11 | /** 12 | * 欢迎视图。展示一个图片。 13 | */ 14 | public class WelcomeActivity extends Activity { 15 | 16 | @Override 17 | protected void onCreate(Bundle savedInstanceState) { 18 | super.onCreate(savedInstanceState); 19 | setContentView(R.layout.activity_welcome); 20 | 21 | //渐变展示启动屏 22 | AlphaAnimation alphaAnimation = new AlphaAnimation(0.5f,1.0f); 23 | alphaAnimation.setDuration(1000); 24 | getRootView().startAnimation(alphaAnimation); 25 | alphaAnimation.setAnimationListener(new Animation.AnimationListener() 26 | { 27 | @Override 28 | public void onAnimationEnd(Animation arg0) { 29 | startActivity(new Intent(WelcomeActivity.this, 30 | LoginActivity.class)); 31 | finish(); 32 | } 33 | @Override 34 | public void onAnimationRepeat(Animation animation) {} 35 | @Override 36 | public void onAnimationStart(Animation animation) {} 37 | 38 | }); 39 | 40 | } 41 | 42 | private View getRootView() 43 | { 44 | return ((ViewGroup)findViewById(android.R.id.content)).getChildAt(0); 45 | } 46 | } 47 | -------------------------------------------------------------------------------- /app/src/main/java/com/xiandian/openstack/cloud/swiftstorage/application/Tpapplication.java: -------------------------------------------------------------------------------- 1 | package com.xiandian.openstack.cloud.swiftstorage.application; 2 | 3 | import android.app.Application; 4 | import android.content.res.Configuration; 5 | 6 | import java.util.LinkedList; 7 | import java.util.List; 8 | 9 | /** 10 | * Created by 62566 on 2016/9/13. 11 | */ 12 | public class Tpapplication extends Application { 13 | private String globalVar; 14 | private Application instance; 15 | private List activities; 16 | 17 | /** 18 | * 在创建应用程序时调用,可以重写这个方法来实例化应用程序单态,以及创建和实例化任何应用 19 | * 程序状态变量或共享资源 20 | */ 21 | @Override 22 | public void onCreate() { 23 | super.onCreate(); 24 | activities = new LinkedList(); 25 | 26 | } 27 | /** 28 | * 作为onLowMemory的一个特定于应用程序的替代选择,在android4.0时引入, 29 | * 在程序运行时决定当前应用程序应该尝试减少其内存开销时(通常在它进入后台时)调用 30 | * 它包含一个level参数,用于提供请求的上下文 31 | */ 32 | @Override 33 | public void onTrimMemory(int level) { 34 | super.onTrimMemory(level); 35 | } 36 | 37 | /** 38 | * 与Activity不同,在配置改变时,应用程序对象不会被终止和重启。 39 | * 如果应用程序使用的值依赖于特定的配置,则重写这个方法来重新加载这些值,或者在应用程序级别处理这些值的改变 40 | */ 41 | @Override 42 | public void onConfigurationChanged(Configuration newConfig) { 43 | super.onConfigurationChanged(newConfig); 44 | } 45 | 46 | /** 47 | * 当系统处于资源匮乏时,具有良好行为的应用程序可以释放额外的内存。 48 | * 这个方法一般只会在后台进程已经终止,但是前台应用程序仍然缺少内存时调用。 49 | * 我们可以重写这个程序来清空缓存或者释放不必要的资源 50 | */ 51 | @Override 52 | public void onLowMemory() { 53 | super.onLowMemory(); 54 | } 55 | } -------------------------------------------------------------------------------- /app/src/main/java/com/xiandian/openstack/cloud/swiftstorage/base/TaskResult.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright (c) 2014, 2015, XIANDIAN and/or its affiliates. All rights reserved. 3 | * XIANDIAN PROPRIETARY/CONFIDENTIAL. Use is subject to license terms. 4 | * 5 | */ 6 | package com.xiandian.openstack.cloud.swiftstorage.base; 7 | 8 | /** 9 | * 异步任务执行结果封装。包括正常结果或异常。 10 | * 11 | * @author 云计算应用与开发项目组 12 | * @since  V1.0 13 | */ 14 | public class TaskResult { 15 | 16 | /** 异常. */ 17 | private Exception exception; 18 | 19 | /** 数据类型. */ 20 | private T result; 21 | 22 | /** 23 | * 创建任务结果。 24 | * 25 | * @param result 26 | * the result 27 | */ 28 | public TaskResult(final T result) { 29 | this.result = result; 30 | } 31 | 32 | /** 33 | * 创建任务结果。 34 | * 35 | * @param result 36 | * the result 37 | */ 38 | public TaskResult(final Exception exception) { 39 | this.exception = exception; 40 | } 41 | 42 | /** 43 | * 是否有异常。 44 | * 45 | * @return true, 正常。 46 | */ 47 | public final boolean isValid() { 48 | return exception == null; 49 | } 50 | 51 | /** 52 | *获得异常。 53 | * 54 | * @return the exception 55 | */ 56 | public final Exception getException() { 57 | return exception; 58 | } 59 | 60 | /** 61 | * Gets the result. 62 | * 63 | * @return the result 64 | */ 65 | public final T getResult() { 66 | return result; 67 | } 68 | } 69 | -------------------------------------------------------------------------------- /app/src/main/java/com/xiandian/openstack/cloud/swiftstorage/fragment/MyFragmentPagerAdapter.java: -------------------------------------------------------------------------------- 1 | package com.xiandian.openstack.cloud.swiftstorage.fragment; 2 | 3 | import android.support.v4.app.Fragment; 4 | import android.support.v4.app.FragmentManager; 5 | import android.support.v4.app.FragmentPagerAdapter; 6 | 7 | import java.util.ArrayList; 8 | 9 | 10 | public class MyFragmentPagerAdapter extends FragmentPagerAdapter { 11 | private ArrayList fragmentsList; 12 | 13 | public MyFragmentPagerAdapter(FragmentManager fm) { 14 | super(fm); 15 | } 16 | 17 | public MyFragmentPagerAdapter(FragmentManager fm, ArrayList fragments) { 18 | super(fm); 19 | this.fragmentsList = fragments; 20 | } 21 | 22 | @Override 23 | public int getCount() { 24 | return fragmentsList.size(); 25 | } 26 | 27 | @Override 28 | public Fragment getItem(int arg0) { 29 | return fragmentsList.get(arg0); 30 | } 31 | 32 | @Override 33 | public int getItemPosition(Object object) { 34 | return super.getItemPosition(object); 35 | } 36 | 37 | } 38 | -------------------------------------------------------------------------------- /app/src/main/java/com/xiandian/openstack/cloud/swiftstorage/fragment/SFileEditable.java: -------------------------------------------------------------------------------- 1 | package com.xiandian.openstack.cloud.swiftstorage.fragment; 2 | 3 | import android.app.AlertDialog; 4 | import android.content.DialogInterface; 5 | import android.widget.EditText; 6 | import android.widget.Toast; 7 | 8 | import com.xiandian.openstack.cloud.swiftstorage.fs.SFile; 9 | import com.xiandian.openstack.cloud.swiftstorage.sdk.service.OpenStackClientService; 10 | 11 | import static com.xiandian.openstack.cloud.swiftstorage.R.id.start; 12 | 13 | /** 14 | * 操作实现,具体由各Fragment来实现。 15 | * 默认MainFragment有个通用实现,各个部分,有自己的实现方式。 16 | * 17 | * @author 云计算应用与开发项目组 18 | * @since  V1.0 19 | */ 20 | public interface SFileEditable { 21 | 22 | /** 23 | * 根据给定内容,搜索文件。 24 | * @param fileName 支持通配符的字串 25 | */ 26 | public void search(String fileName); 27 | 28 | /////////////////////获取跟文件系统,并填充listView的任务/////////////////////> 29 | 30 | /** 31 | * 分享 32 | */ 33 | void share(); 34 | 35 | /** 36 | * 全选 37 | */ 38 | public void selectAll(); 39 | 40 | /** 41 | * 取消全选 42 | */ 43 | public void unselectAll(); 44 | 45 | /** 46 | * 打开一个文件。 47 | * @param filePath 48 | */ 49 | public void openFile(SFile filePath); 50 | 51 | 52 | 53 | 54 | 55 | /** 56 | * 创建一个目录。 57 | * @param filePath 58 | */ 59 | 60 | public void createDir(String filePath); 61 | 62 | /** 63 | * 上传文件,回调给当前Activity。 64 | */ 65 | public void upload(); 66 | 67 | /** 68 | * 下载本地,保存在自己存储空间中。 69 | */ 70 | public void download(); 71 | 72 | /** 73 | * 拍照,并回传到Activity。 74 | */ 75 | public void takePhoto(); 76 | 77 | /** 78 | * 拍视频,并回传到Activity 79 | */ 80 | void recordvideo(); 81 | 82 | /** 83 | * 录音,并回传到Activity 84 | */ 85 | void recordaudio(); 86 | 87 | /** 88 | * 改名。 89 | * @param oldFilePath 90 | * @param newFilePath 91 | */ 92 | 93 | public void rename(String oldFilePath, String newFilePath); 94 | 95 | /** 96 | * 复制文件到另外一个路径。 97 | * @param fromPath 98 | * @param toPath 99 | */ 100 | public void copy(String fromPath, String toPath); 101 | 102 | /** 103 | * 移动一个文件,从一个路径去另外一个路径。 104 | * @param fromPath 105 | * @param toPath 106 | */ 107 | public void move(String fromPath, String toPath); 108 | 109 | /** 110 | * 删除文件到回收站。 111 | * @param filePath 112 | */ 113 | public void recycle(String filePath); 114 | 115 | /** 116 | * 对文件进行排序。 117 | * @param type 118 | * @param ascend 119 | */ 120 | public void sort(); 121 | 122 | 123 | /** 124 | * 详细信息。 125 | * @param type 126 | * @param ascend 127 | */ 128 | public void details(int type, boolean ascend); 129 | 130 | /** 131 | * 刷新当前视口。 132 | */ 133 | public void refresh(); 134 | 135 | 136 | void restroe(); 137 | 138 | void empty(); 139 | } 140 | -------------------------------------------------------------------------------- /app/src/main/java/com/xiandian/openstack/cloud/swiftstorage/fragment/SFileEditableImpl.java: -------------------------------------------------------------------------------- 1 | package com.xiandian.openstack.cloud.swiftstorage.fragment; 2 | 3 | import com.xiandian.openstack.cloud.swiftstorage.fs.SFile; 4 | 5 | /** 6 | * 默认的实现。实际上是Fragement编辑交集。 7 | * 8 | * @author 云计算应用与开发项目组 9 | * @since  V1.0 10 | */ 11 | public class SFileEditableImpl implements SFileEditable { 12 | @Override 13 | public void search(String fileName) { 14 | 15 | } 16 | 17 | @Override 18 | public void share() { 19 | 20 | } 21 | 22 | @Override 23 | public void selectAll() { 24 | 25 | } 26 | 27 | @Override 28 | public void unselectAll() { 29 | 30 | } 31 | 32 | @Override 33 | public void openFile(SFile filePath) { 34 | 35 | } 36 | 37 | @Override 38 | public void createDir(String filePath) { 39 | 40 | } 41 | 42 | @Override 43 | public void upload() { 44 | 45 | } 46 | 47 | @Override 48 | public void download() { 49 | 50 | } 51 | 52 | @Override 53 | public void takePhoto() { 54 | 55 | } 56 | 57 | @Override 58 | public void recordvideo() { 59 | 60 | } 61 | 62 | @Override 63 | public void recordaudio() { 64 | 65 | } 66 | 67 | @Override 68 | public void rename(String oldFilePath, String newFilePath) { 69 | 70 | } 71 | 72 | @Override 73 | public void copy(String fromPath, String toPath) { 74 | 75 | } 76 | 77 | @Override 78 | public void move(String fromPath, String toPath) { 79 | 80 | } 81 | 82 | @Override 83 | public void recycle(String filePath) { 84 | 85 | } 86 | 87 | @Override 88 | public void sort() { 89 | 90 | } 91 | 92 | @Override 93 | public void details(int type, boolean ascend) { 94 | 95 | } 96 | 97 | @Override 98 | public void refresh() 99 | { 100 | 101 | } 102 | 103 | @Override 104 | public void restroe() { 105 | 106 | } 107 | 108 | @Override 109 | public void empty() { 110 | 111 | } 112 | } 113 | -------------------------------------------------------------------------------- /app/src/main/java/com/xiandian/openstack/cloud/swiftstorage/fs/SFile.java: -------------------------------------------------------------------------------- 1 | package com.xiandian.openstack.cloud.swiftstorage.fs; 2 | 3 | 4 | import com.woorea.openstack.swift.model.Object; 5 | 6 | import java.util.Calendar; 7 | import java.util.Collection; 8 | 9 | /** 10 | * 模拟文件系统的File Java接口定义。 11 | * 12 | * @author 云计算应用与开发项目组 13 | * @since  V1.0 14 | */ 15 | public interface SFile{ 16 | 17 | /** 18 | * 获取当前节点下的目录。 19 | * @return 20 | */ 21 | public Collection listDirectories() ; 22 | 23 | 24 | /** 25 | * 获取当前节点下的文件。 26 | * @return 27 | */ 28 | public Collection listFiles(); 29 | 30 | 31 | /** 32 | * 增加文件。 33 | * @param name 34 | * @param obj 35 | */ 36 | public void putFile(String name, SFile obj); 37 | 38 | 39 | /** 40 | * 增加目录。 41 | * @param name 42 | * @param obj 43 | */ 44 | public void putDirectory(String name, SFile obj); 45 | 46 | 47 | /** 48 | * 获取当前文件或目录对应的云存储对象。 49 | * @return 50 | */ 51 | public Object getSwiftObject() ; 52 | 53 | 54 | /** 55 | *设置当前文件或目录对应的云存储对象。 56 | * @param metaData 57 | */ 58 | public void setSwiftObject(Object metaData); 59 | 60 | 61 | /** 62 | * 是否有云存储对象数据? 63 | * @return 64 | */ 65 | public boolean hasData(); 66 | 67 | 68 | /** 69 | * 获得名称(包含路径)。 70 | * @return 71 | */ 72 | public String getName(); 73 | 74 | 75 | /** 76 | * 获得最后修改时间。 77 | * 78 | * @return 79 | */ 80 | public Calendar getLastModified(); 81 | 82 | 83 | /** 84 | * 获得父节点。 85 | * @return 86 | */ 87 | public SFile getParent() ; 88 | 89 | 90 | /** 91 | * 92 | * @param parent 93 | * @return 94 | */ 95 | public void setParent(SFile parent) ; 96 | 97 | 98 | /** 99 | * 获得根节点。 100 | * 101 | * @return 102 | */ 103 | public SFile getRoot(); 104 | 105 | 106 | /** 107 | * 调试信息。 108 | * @param ident 109 | * @return 110 | */ 111 | public String toString(String ident); 112 | 113 | 114 | /** 115 | * 内容类型。(http contenttype) 116 | * @return 117 | */ 118 | public String getContentType(); 119 | 120 | 121 | /** 122 | * 长度,自生的长度,目录为0,文件有自己大小。 123 | * @return 124 | */ 125 | public int getSize(); 126 | 127 | /** 128 | * 判断是文件还是文件夹。 129 | */ 130 | public boolean isFile(); 131 | 132 | } -------------------------------------------------------------------------------- /app/src/main/java/com/xiandian/openstack/cloud/swiftstorage/utils/Constants.java: -------------------------------------------------------------------------------- 1 | package com.xiandian.openstack.cloud.swiftstorage.utils; 2 | 3 | import java.io.IOException; 4 | import java.io.InputStream; 5 | import java.io.OutputStream; 6 | 7 | /** 8 | * 模拟文件系统的File Java接口定义。 9 | * 10 | * @author 云计算应用与开发项目组 11 | * @since  V1.0 12 | */ 13 | public class Constants { 14 | 15 | //类型Key 16 | public static final String CATEGORY_TYPE = "Category_Type"; 17 | /** 18 | * 常用的文档类型格式。通常"text/"开头。再加Office文档、pdf文档。 19 | */ 20 | public static final String[] MIME_DOC = { 21 | "text/", 22 | "application/pdf", //"pdf" 23 | "application/msword",//doc 24 | "application/vnd.openxmlformats-officedocument.wordprocessingml.document",// "docx 25 | "application/vnd.openxmlformats-officedocument.wordprocessingml.template",// "dotx 26 | "application/vnd.ms-excel",//xls 27 | "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet",// "xlsx 28 | "application/vnd.openxmlformats-officedocument.spreadsheetml.template",// "xltx 29 | "application/vnd.ms-powerpoint",//ppt 30 | "application/vnd.openxmlformats-officedocument.presentationml.presentation",// "pptx" 31 | "application/vnd.openxmlformats-officedocument.presentationml.template",// "potx" 32 | "application/xhtml+xml"//xhtml 33 | }; 34 | 35 | /** 36 | * 常用的图片类型格式,通常"image/"开头。 37 | */ 38 | public static final String[] MIME_IMAGE = { 39 | "image/" 40 | }; 41 | 42 | /** 43 | * 常用的视频类型格式,通常以"image/"开头。 44 | */ 45 | public static final String[] MIME_VIDEO = { 46 | "video/" 47 | }; 48 | 49 | /** 50 | * 常用的音频类型格式,通常以"audio/"开头。 51 | */ 52 | public static final String[] MIME_AUDIO = { 53 | "audio/" 54 | }; 55 | 56 | 57 | 58 | } 59 | -------------------------------------------------------------------------------- /app/src/main/java/com/xiandian/openstack/cloud/swiftstorage/utils/FileIconHelper.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright (c) 2014, 2015, XIANDIAN and/or its affiliates. All rights reserved. 3 | * XIANDIAN PROPRIETARY/CONFIDENTIAL. Use is subject to license terms. 4 | * 5 | */ 6 | package com.xiandian.openstack.cloud.swiftstorage.utils; 7 | 8 | import android.content.Context; 9 | import android.graphics.Bitmap; 10 | import android.graphics.BitmapFactory; 11 | import android.media.ThumbnailUtils; 12 | 13 | public class FileIconHelper { 14 | //图片工具类 15 | private Context mContext; 16 | private static final int MICRO_KIND = 3; 17 | 18 | public FileIconHelper(Context _context){ 19 | this.mContext=_context; 20 | } 21 | 22 | public Bitmap getImageThumbnail(String path) { 23 | // 图片缩略图 24 | Bitmap bitmap = null; 25 | BitmapFactory.Options options = new BitmapFactory.Options(); 26 | options.inPreferredConfig = Bitmap.Config.ARGB_4444; 27 | options.inPurgeable = true; 28 | options.inInputShareable = true; 29 | options.inJustDecodeBounds = true; 30 | bitmap = BitmapFactory.decodeFile(path, options); 31 | options.inJustDecodeBounds = false; // 设为 false 32 | // 计算缩放比 33 | int h = options.outHeight; 34 | int w = options.outWidth; 35 | int beWidth = w / 32; 36 | int beHeight = h / 32; 37 | int be = 1; 38 | if (beWidth < beHeight) { 39 | be = beWidth; 40 | } else { 41 | be = beHeight; 42 | } 43 | if (be <= 0) { 44 | be = 1; 45 | } 46 | options.inSampleSize = be; 47 | try { 48 | bitmap=BitmapFactory.decodeFile(path,options); 49 | bitmap=ThumbnailUtils.extractThumbnail( 50 | bitmap, 32, 32, ThumbnailUtils.OPTIONS_RECYCLE_INPUT); 51 | } catch (OutOfMemoryError e) { 52 | // TODO Auto-generated catch block 53 | e.printStackTrace(); 54 | } 55 | return bitmap; 56 | } 57 | 58 | public Bitmap getVideoThumbnail(String path) { 59 | Bitmap bitmap=null; 60 | try { 61 | bitmap=ThumbnailUtils.createVideoThumbnail(path,MICRO_KIND); 62 | bitmap = ThumbnailUtils.extractThumbnail( 63 | bitmap, 32, 32, ThumbnailUtils.OPTIONS_RECYCLE_INPUT); 64 | } catch (OutOfMemoryError e) { 65 | // TODO Auto-generated catch block 66 | e.printStackTrace(); 67 | } 68 | return bitmap; 69 | } 70 | 71 | public void destoryBimap(Bitmap mBitmap) { 72 | // TODO Auto-generated method stub 73 | if (mBitmap != null && !mBitmap.isRecycled()) { 74 | mBitmap.recycle(); 75 | mBitmap = null; 76 | } 77 | } 78 | 79 | 80 | 81 | } 82 | -------------------------------------------------------------------------------- /app/src/main/java/com/xiandian/openstack/cloud/swiftstorage/utils/PromptDialogUtil.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright (c) 2014, 2015, XIANDIAN and/or its affiliates. All rights reserved. 3 | * XIANDIAN PROPRIETARY/CONFIDENTIAL. Use is subject to license terms. 4 | * 5 | */ 6 | package com.xiandian.openstack.cloud.swiftstorage.utils; 7 | 8 | import android.app.AlertDialog; 9 | import android.content.Context; 10 | import android.content.DialogInterface; 11 | import android.content.Intent; 12 | import android.widget.Toast; 13 | 14 | /** 15 | * 错误输出帮助类 16 | * @author 云计算应用与开发项目组 17 | * @since  V1.0 18 | */ 19 | public class PromptDialogUtil { 20 | 21 | /** 22 | * Show error dialog. 23 | * 24 | * @param context 25 | * the context 26 | * @param title 27 | * the title 28 | * @param e 29 | * the e 30 | * @param onOK 31 | * the on ok 32 | */ 33 | public static void showErrorDialog(final Context context, String title, 34 | Exception e, final Intent onOK) { 35 | showDialog(context, title, e.getMessage() != null ? e.getMessage() : e 36 | .getClass().getName(), onOK); 37 | } 38 | 39 | /** 40 | * Show error dialog. 41 | * 42 | * @param context 43 | * the context 44 | * @param ressource 45 | * the ressource 46 | * @param e 47 | * the e 48 | * @param onOK 49 | * the on ok 50 | */ 51 | public static void showErrorDialog(final Context context, int ressource, 52 | Exception e, final Intent onOK) { 53 | e.printStackTrace(); 54 | Toast.makeText(context, "错误: " + e.getLocalizedMessage(), 55 | Toast.LENGTH_LONG).show(); 56 | } 57 | 58 | /** 59 | * Show dialog. 60 | * 61 | * @param context 62 | * the context 63 | * @param title 64 | * the title 65 | * @param message 66 | * the message 67 | * @param onOK 68 | * the on ok 69 | */ 70 | public static void showDialog(final Context context, String title, 71 | String message, final Intent onOK) { 72 | AlertDialog alertDialog = new AlertDialog.Builder(context).create(); 73 | alertDialog.setTitle(title); 74 | alertDialog.setMessage(message); 75 | if (onOK != null) { 76 | alertDialog.setButton(DialogInterface.BUTTON_POSITIVE, "OK", 77 | new DialogInterface.OnClickListener() { 78 | public void onClick(DialogInterface dialog, int which) { 79 | context.startActivity(onOK); 80 | return; 81 | } 82 | }); 83 | } 84 | alertDialog.show(); 85 | } 86 | 87 | } 88 | -------------------------------------------------------------------------------- /app/src/main/java/com/xiandian/openstack/cloud/swiftstorage/utils/Sort_dialog.java: -------------------------------------------------------------------------------- 1 | package com.xiandian.openstack.cloud.swiftstorage.utils; 2 | 3 | import android.app.Dialog; 4 | import android.content.Context; 5 | import android.os.Bundle; 6 | 7 | import com.xiandian.openstack.cloud.swiftstorage.R; 8 | 9 | public class Sort_dialog extends Dialog{ 10 | Context context; 11 | public Sort_dialog(Context context) { 12 | super(context); 13 | this.context=context; 14 | } 15 | @Override 16 | protected void onCreate(Bundle savedInstanceState) { 17 | // TODO Auto-generated method stub 18 | super.onCreate(savedInstanceState); 19 | this.setContentView(R.layout.activity_sort_dialog); 20 | } 21 | protected Sort_dialog(Context context, boolean cancelable, OnCancelListener cancelListener) { 22 | super(context, cancelable, cancelListener); 23 | } 24 | } 25 | -------------------------------------------------------------------------------- /app/src/main/res/drawable-v21/ic_action_share.xml: -------------------------------------------------------------------------------- 1 | 6 | 9 | 10 | -------------------------------------------------------------------------------- /app/src/main/res/drawable-v21/ic_file_doc.xml: -------------------------------------------------------------------------------- 1 | 6 | 9 | 10 | -------------------------------------------------------------------------------- /app/src/main/res/drawable-v21/ic_file_folder.xml: -------------------------------------------------------------------------------- 1 | 6 | 9 | 10 | -------------------------------------------------------------------------------- /app/src/main/res/drawable-v21/ic_file_music.xml: -------------------------------------------------------------------------------- 1 | 6 | 9 | 10 | -------------------------------------------------------------------------------- /app/src/main/res/drawable-v21/ic_file_others.xml: -------------------------------------------------------------------------------- 1 | 6 | 9 | 10 | -------------------------------------------------------------------------------- /app/src/main/res/drawable-v21/ic_file_pic.xml: -------------------------------------------------------------------------------- 1 | 6 | 9 | 10 | -------------------------------------------------------------------------------- /app/src/main/res/drawable-v21/ic_file_video.xml: -------------------------------------------------------------------------------- 1 | 6 | 9 | 10 | -------------------------------------------------------------------------------- /app/src/main/res/drawable-v21/ic_menu_camera.xml: -------------------------------------------------------------------------------- 1 | 6 | 9 | 12 | 13 | -------------------------------------------------------------------------------- /app/src/main/res/drawable-v21/ic_menu_doc.xml: -------------------------------------------------------------------------------- 1 | 6 | 9 | 10 | -------------------------------------------------------------------------------- /app/src/main/res/drawable-v21/ic_menu_gallery.xml: -------------------------------------------------------------------------------- 1 | 6 | 9 | 10 | -------------------------------------------------------------------------------- /app/src/main/res/drawable-v21/ic_menu_manage.xml: -------------------------------------------------------------------------------- 1 | 6 | 9 | -------------------------------------------------------------------------------- /app/src/main/res/drawable-v21/ic_menu_music.xml: -------------------------------------------------------------------------------- 1 | 6 | 9 | 10 | -------------------------------------------------------------------------------- /app/src/main/res/drawable-v21/ic_menu_pic.xml: -------------------------------------------------------------------------------- 1 | 6 | 9 | 10 | -------------------------------------------------------------------------------- /app/src/main/res/drawable-v21/ic_menu_recycle.xml: -------------------------------------------------------------------------------- 1 | 6 | 9 | 10 | -------------------------------------------------------------------------------- /app/src/main/res/drawable-v21/ic_menu_send.xml: -------------------------------------------------------------------------------- 1 | 6 | 9 | 10 | -------------------------------------------------------------------------------- /app/src/main/res/drawable-v21/ic_menu_setting.xml: -------------------------------------------------------------------------------- 1 | 6 | 9 | 10 | -------------------------------------------------------------------------------- /app/src/main/res/drawable-v21/ic_menu_slideshow.xml: -------------------------------------------------------------------------------- 1 | 6 | 9 | 10 | -------------------------------------------------------------------------------- /app/src/main/res/drawable-v21/ic_menu_swiftstorage.xml: -------------------------------------------------------------------------------- 1 | 6 | 9 | 10 | -------------------------------------------------------------------------------- /app/src/main/res/drawable-v21/ic_menu_video.xml: -------------------------------------------------------------------------------- 1 | 6 | 9 | 10 | -------------------------------------------------------------------------------- /app/src/main/res/drawable-v21/side_nav_bar.xml: -------------------------------------------------------------------------------- 1 | 3 | 9 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/ic_action_copy.xml: -------------------------------------------------------------------------------- 1 | 6 | 9 | 10 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/ic_action_create_dir.xml: -------------------------------------------------------------------------------- 1 | 6 | 9 | 10 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/ic_action_details.xml: -------------------------------------------------------------------------------- 1 | 6 | 9 | 10 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/ic_action_download.xml: -------------------------------------------------------------------------------- 1 | 6 | 9 | 10 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/ic_action_empty.xml: -------------------------------------------------------------------------------- 1 | 6 | 9 | 10 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/ic_action_grid_thumbnail.xml: -------------------------------------------------------------------------------- 1 | 6 | 9 | 10 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/ic_action_license.xml: -------------------------------------------------------------------------------- 1 | 6 | 9 | 10 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/ic_action_move.xml: -------------------------------------------------------------------------------- 1 | 6 | 9 | 10 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/ic_action_open.xml: -------------------------------------------------------------------------------- 1 | 6 | 9 | 10 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/ic_action_record_audio.xml: -------------------------------------------------------------------------------- 1 | 6 | 9 | 10 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/ic_action_record_video.xml: -------------------------------------------------------------------------------- 1 | 6 | 9 | 10 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/ic_action_recycle.xml: -------------------------------------------------------------------------------- 1 | 6 | 9 | 10 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/ic_action_rename.xml: -------------------------------------------------------------------------------- 1 | 6 | 9 | 13 | 14 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/ic_action_restore.xml: -------------------------------------------------------------------------------- 1 | 6 | 9 | 10 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/ic_action_search.xml: -------------------------------------------------------------------------------- 1 | 6 | 9 | 10 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/ic_action_select_all.xml: -------------------------------------------------------------------------------- 1 | 6 | 9 | 10 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/ic_action_setting.xml: -------------------------------------------------------------------------------- 1 | 6 | 9 | 10 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/ic_action_share.xml: -------------------------------------------------------------------------------- 1 | 6 | 9 | 10 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/ic_action_sort.xml: -------------------------------------------------------------------------------- 1 | 6 | 9 | 10 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/ic_action_sort_name.xml: -------------------------------------------------------------------------------- 1 | 6 | 9 | 10 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/ic_action_sort_size.xml: -------------------------------------------------------------------------------- 1 | 6 | 9 | 10 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/ic_action_sort_time.xml: -------------------------------------------------------------------------------- 1 | 6 | 9 | 10 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/ic_action_take_photo.xml: -------------------------------------------------------------------------------- 1 | 6 | 9 | 12 | 13 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/ic_action_unselect_all.xml: -------------------------------------------------------------------------------- 1 | 6 | 9 | 10 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/ic_action_upload.xml: -------------------------------------------------------------------------------- 1 | 6 | 9 | 10 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/ic_file_doc.xml: -------------------------------------------------------------------------------- 1 | 6 | 9 | 10 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/ic_file_folder.xml: -------------------------------------------------------------------------------- 1 | 6 | 9 | 10 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/ic_file_music.xml: -------------------------------------------------------------------------------- 1 | 6 | 9 | 10 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/ic_file_others.xml: -------------------------------------------------------------------------------- 1 | 6 | 9 | 10 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/ic_file_pic.xml: -------------------------------------------------------------------------------- 1 | 6 | 9 | 10 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/ic_file_video.xml: -------------------------------------------------------------------------------- 1 | 6 | 9 | 10 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/ic_menu_camera.xml: -------------------------------------------------------------------------------- 1 | 6 | 9 | 12 | 13 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/ic_menu_doc.xml: -------------------------------------------------------------------------------- 1 | 6 | 9 | 10 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/ic_menu_gallery.xml: -------------------------------------------------------------------------------- 1 | 6 | 9 | 10 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/ic_menu_manage.xml: -------------------------------------------------------------------------------- 1 | 6 | 9 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/ic_menu_music.xml: -------------------------------------------------------------------------------- 1 | 6 | 9 | 10 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/ic_menu_pic.xml: -------------------------------------------------------------------------------- 1 | 6 | 9 | 10 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/ic_menu_recycle.xml: -------------------------------------------------------------------------------- 1 | 6 | 9 | 10 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/ic_menu_send.xml: -------------------------------------------------------------------------------- 1 | 6 | 9 | 10 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/ic_menu_setting.xml: -------------------------------------------------------------------------------- 1 | 6 | 9 | 10 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/ic_menu_slideshow.xml: -------------------------------------------------------------------------------- 1 | 6 | 9 | 10 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/ic_menu_swiftstorage.xml: -------------------------------------------------------------------------------- 1 | 6 | 9 | 10 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/ic_menu_video.xml: -------------------------------------------------------------------------------- 1 | 6 | 9 | 10 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/welcome.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kuriaki-Nanami/CloudStorage_android/24585a5660d5148f6b8910c3d8204fca0b879191/app/src/main/res/drawable/welcome.png -------------------------------------------------------------------------------- /app/src/main/res/layout/activity_main.xml: -------------------------------------------------------------------------------- 1 | 2 | 10 | 11 | 15 | 16 | 25 | 26 | 27 | -------------------------------------------------------------------------------- /app/src/main/res/layout/activity_register.xml: -------------------------------------------------------------------------------- 1 | 2 | 9 | 10 | 11 | 12 | 16 | 17 | 25 | 26 | 27 | 31 | 32 | 40 | 41 | 45 | 46 | 54 | 55 | 60 | 61 |