first download & preview scratch, removing unused code, changing noncompatible code
[pub/Android/ownCloud.git] / src / eu / alefzero / owncloud / ui / activity / FileDisplayActivity.java
1 /* ownCloud Android client application
2 * Copyright (C) 2011 Bartek Przybylski
3 *
4 * This program is free software: you can redistribute it and/or modify
5 * it under the terms of the GNU General Public License as published by
6 * the Free Software Foundation, either version 3 of the License, or
7 * (at your option) any later version.
8 *
9 * This program is distributed in the hope that it will be useful,
10 * but WITHOUT ANY WARRANTY; without even the implied warranty of
11 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
12 * GNU General Public License for more details.
13 *
14 * You should have received a copy of the GNU General Public License
15 * along with this program. If not, see <http://www.gnu.org/licenses/>.
16 *
17 */
18
19 package eu.alefzero.owncloud.ui.activity;
20
21 import android.accounts.Account;
22 import android.accounts.AccountManager;
23 import android.app.AlertDialog;
24 import android.app.Dialog;
25 import android.app.ActionBar.OnNavigationListener;
26 import android.content.DialogInterface;
27 import android.content.Intent;
28 import android.content.DialogInterface.OnCancelListener;
29 import android.content.res.Configuration;
30 import android.os.Bundle;
31 import android.support.v4.app.FragmentTransaction;
32 import android.support.v4.view.Menu;
33 import android.support.v4.view.MenuItem;
34 import android.view.MenuInflater;
35 import android.widget.ArrayAdapter;
36 import eu.alefzero.owncloud.R;
37 import eu.alefzero.owncloud.R.id;
38 import eu.alefzero.owncloud.authenticator.AccountAuthenticator;
39 import eu.alefzero.owncloud.ui.fragment.FileDetail;
40 import eu.alefzero.owncloud.ui.fragment.FileList;
41
42 /**
43 * Displays, what files the user has available in his ownCloud.
44 * @author Bartek Przybylski
45 *
46 */
47
48 public class FileDisplayActivity extends android.support.v4.app.FragmentActivity implements OnNavigationListener {
49 private ArrayAdapter<String> mDirectories;
50
51 private static final int DIALOG_CHOOSE_ACCOUNT = 0;
52
53 public void pushPath(String path) {
54 mDirectories.insert(path, 0);
55 }
56
57 public boolean popPath() {
58 mDirectories.remove(mDirectories.getItem(0));
59 return !mDirectories.isEmpty();
60 }
61
62 @Override
63 public void onCreate(Bundle savedInstanceState) {
64 super.onCreate(savedInstanceState);
65 mDirectories = new ArrayAdapter<String>(this, android.R.layout.simple_spinner_dropdown_item);
66 mDirectories.add("/");
67 setContentView(R.layout.files);
68 getActionBar().setNavigationMode(android.support.v4.app.ActionBar.NAVIGATION_MODE_LIST);
69 getActionBar().setDisplayShowTitleEnabled(false);
70 getActionBar().setListNavigationCallbacks(mDirectories, this);
71
72 FragmentTransaction ft = getSupportFragmentManager().beginTransaction();
73 ft.add(R.id.file_list_container, new FileList());
74 if (getResources().getConfiguration().orientation == Configuration.ORIENTATION_LANDSCAPE) {
75 ft.add(R.id.fileDetail, new FileDetail());
76 }
77 ft.commit();
78 }
79
80 @Override
81 public boolean onOptionsItemSelected(MenuItem item) {
82 switch (item.getItemId()) {
83 case R.id.settingsItem :
84 Intent i = new Intent(this, Preferences.class);
85 startActivity(i);
86 break;
87 }
88 return true;
89 }
90
91 @Override
92 protected Dialog onCreateDialog(int id) {
93 switch (id) {
94 case DIALOG_CHOOSE_ACCOUNT:
95 return createChooseAccountDialog();
96 default:
97 throw new IllegalArgumentException("Unknown dialog id: " + id);
98 }
99 }
100
101 @Override
102 public boolean onCreateOptionsMenu(Menu menu) {
103 MenuInflater inflater = getMenuInflater();
104 inflater.inflate(R.menu.menu, menu);
105 return true;
106 }
107
108 private Dialog createChooseAccountDialog() {
109 final AccountManager accMan = AccountManager.get(this);
110 CharSequence[] items = new CharSequence[accMan.getAccountsByType(AccountAuthenticator.ACCOUNT_TYPE).length];
111 int i = 0;
112 for (Account a : accMan.getAccountsByType(AccountAuthenticator.ACCOUNT_TYPE)) {
113 items[i++] = a.name;
114 }
115
116 AlertDialog.Builder builder = new AlertDialog.Builder(this);
117 builder.setTitle(R.string.common_choose_account);
118 builder.setCancelable(true);
119 builder.setItems(items, new DialogInterface.OnClickListener() {
120 public void onClick(DialogInterface dialog, int item) {
121 //mAccount = accMan.getAccountsByType(AccountAuthenticator.ACCOUNT_TYPE)[item];
122 dialog.dismiss();
123 }
124 });
125 builder.setOnCancelListener(new OnCancelListener() {
126 public void onCancel(DialogInterface dialog) {
127 FileDisplayActivity.this.finish();
128 }
129 });
130 AlertDialog alert = builder.create();
131 return alert;
132 }
133
134 @Override
135 public boolean onNavigationItemSelected(int itemPosition, long itemId) {
136 int i = itemPosition;
137 while (i-- != 0) {
138 onBackPressed();
139 }
140 return true;
141 }
142
143 @Override
144 public void onBackPressed() {
145 popPath();
146 if (mDirectories.getCount() == 0)
147 {
148 super.onBackPressed();
149 return;
150 }
151 ((FileList)getSupportFragmentManager().findFragmentById(id.file_list_container)).onBackPressed();
152 }
153 }