Add new string for share_groups_indicator
[pub/Android/ownCloud.git] / src / com / owncloud / android / ui / activity / ShareActivity.java
1 /**
2 * ownCloud Android client application
3 *
4 * @author masensio
5 * @author David A. Velasco
6 * Copyright (C) 2015 ownCloud Inc.
7 *
8 * This program is free software: you can redistribute it and/or modify
9 * it under the terms of the GNU General Public License version 2,
10 * as published by the Free Software Foundation.
11 *
12 * This program is distributed in the hope that it will be useful,
13 * but WITHOUT ANY WARRANTY; without even the implied warranty of
14 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
15 * GNU General Public License for more details.
16 *
17 * You should have received a copy of the GNU General Public License
18 * along with this program. If not, see <http://www.gnu.org/licenses/>.
19 *
20 */
21
22 package com.owncloud.android.ui.activity;
23
24 import android.accounts.Account;
25 import android.app.SearchManager;
26 import android.content.Intent;
27 import android.net.Uri;
28 import android.os.Bundle;
29 import android.support.v4.app.Fragment;
30 import android.support.v4.app.FragmentManager;
31 import android.support.v4.app.FragmentTransaction;
32 import android.support.v7.app.AppCompatActivity;
33 import android.widget.Toast;
34
35 import com.owncloud.android.R;
36 import com.owncloud.android.datamodel.OCFile;
37 import com.owncloud.android.ui.dialog.LoadingDialog;
38 import com.owncloud.android.ui.fragment.SearchFragment;
39 import com.owncloud.android.ui.fragment.ShareFileFragment;
40
41 /**
42 * Activity for sharing files
43 */
44
45 public class ShareActivity extends AppCompatActivity
46 implements ShareFileFragment.OnShareFragmentInteractionListener,
47 SearchFragment.OnSearchFragmentInteractionListener {
48
49 private static final String TAG_SHARE_FRAGMENT = "SHARE_FRAGMENT";
50 private static final String TAG_SEARCH_FRAGMENT = "SEARCH_USER_AND_GROUPS_FRAGMENT";
51
52 private static final String DIALOG_WAIT_LOAD_DATA = "DIALOG_WAIT_LOAD_DATA";
53
54 private Account mAccount;
55 private OCFile mFile;
56
57 private ShareFileFragment mShareFileFragment;
58 private SearchFragment mSearchFragment;
59
60 @Override
61 protected void onCreate(Bundle savedInstanceState) {
62 super.onCreate(savedInstanceState);
63 setContentView(R.layout.share_activity);
64
65 FragmentTransaction ft = getSupportFragmentManager().beginTransaction();
66
67 if (savedInstanceState != null) {
68 mFile = savedInstanceState.getParcelable(FileActivity.EXTRA_FILE);
69 mAccount = savedInstanceState.getParcelable(FileActivity.EXTRA_ACCOUNT);
70
71 mShareFileFragment = (ShareFileFragment) getSupportFragmentManager().
72 getFragment(savedInstanceState, TAG_SHARE_FRAGMENT);
73 mSearchFragment = (SearchFragment) getSupportFragmentManager().
74 getFragment(savedInstanceState, TAG_SEARCH_FRAGMENT);
75
76 if (mShareFileFragment != null){
77 ft.replace(R.id.share_fragment_container, mShareFileFragment, TAG_SHARE_FRAGMENT);
78
79 if (mSearchFragment != null){
80 ft.hide(mShareFileFragment);
81 ft.add(R.id.share_fragment_container, mSearchFragment, TAG_SEARCH_FRAGMENT);
82 ft.addToBackStack(TAG_SEARCH_FRAGMENT);
83 }
84 ft.commit();
85 }
86
87 } else {
88 // Read Extras
89 mFile = getIntent().getParcelableExtra(FileActivity.EXTRA_FILE);
90 mAccount = getIntent().getParcelableExtra(FileActivity.EXTRA_ACCOUNT);
91
92 // Add Share fragment
93 mShareFileFragment = ShareFileFragment.newInstance(mFile, mAccount);
94 ft.replace(R.id.share_fragment_container, mShareFileFragment, TAG_SHARE_FRAGMENT);
95 ft.commit();
96
97 mSearchFragment = null;
98 }
99
100 handleIntent(getIntent());
101 }
102
103
104 @Override
105 protected void onNewIntent(Intent intent) {
106 setIntent(intent);
107 handleIntent(intent);
108 }
109
110
111 private void handleIntent(Intent intent) {
112 // Verify the action and get the query
113 if (Intent.ACTION_SEARCH.equals(intent.getAction())) {
114 String query = intent.getStringExtra(SearchManager.QUERY);
115 doMySearch(query);
116 }
117 }
118
119 private void doMySearch(String query) {
120 // TODO implement
121 Toast.makeText(this, "You want to search for [" + query + "]", Toast.LENGTH_SHORT).show();
122 }
123
124 @Override
125 protected void onSaveInstanceState(Bundle outState) {
126 super.onSaveInstanceState(outState);
127 outState.putParcelable(FileActivity.EXTRA_FILE, mFile);
128 outState.putParcelable(FileActivity.EXTRA_ACCOUNT, mAccount);
129
130 //Save the fragment's instance
131 getSupportFragmentManager().putFragment(outState, TAG_SHARE_FRAGMENT, mShareFileFragment);
132 if (mSearchFragment != null) {
133 getSupportFragmentManager().putFragment(outState, TAG_SEARCH_FRAGMENT, mSearchFragment);
134 }
135
136 }
137
138 @Override
139 public void showSearchUsersAndGroups() {
140 FragmentTransaction ft = getSupportFragmentManager().beginTransaction();
141 mSearchFragment = SearchFragment.newInstance(mFile, mAccount);
142 ft.hide(mShareFileFragment);
143 ft.add(R.id.share_fragment_container, mSearchFragment, TAG_SEARCH_FRAGMENT);
144 ft.addToBackStack(TAG_SEARCH_FRAGMENT);
145 ft.commit();
146 }
147
148 @Override
149 public void onBackPressed() {
150 super.onBackPressed();
151 if (mSearchFragment != null){
152 getSupportFragmentManager().popBackStackImmediate();
153 mSearchFragment = null;
154 }
155 }
156
157 @Override
158 public void onShareFragmentInteraction(Uri uri) {
159
160 }
161
162 @Override
163 public void onSearchFragmentInteraction(Uri uri) {
164
165 }
166
167 /**
168 * Show waiting for loading data
169 */
170 public void showWaitingLoadDialog() {
171 // Construct dialog
172 LoadingDialog loading = new LoadingDialog(
173 getResources().getString(R.string.common_loading));
174 FragmentManager fm = getSupportFragmentManager();
175 FragmentTransaction ft = fm.beginTransaction();
176 loading.show(ft, DIALOG_WAIT_LOAD_DATA);
177
178 }
179
180
181 /**
182 * Dismiss waiting for loading data
183 */
184 public void dismissWaitingLoadDialog(){
185 Fragment frag = getSupportFragmentManager().findFragmentByTag(DIALOG_WAIT_LOAD_DATA);
186 if (frag != null) {
187 LoadingDialog loading = (LoadingDialog) frag;
188 loading.dismiss();
189 }
190 }
191 }