1 /* ownCloud Android client application
2 * Copyright (C) 2011 Bartek Przybylski
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.
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.
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/>.
19 package eu
.alefzero
.owncloud
.ui
.activity
;
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
;
43 * Displays, what files the user has available in his ownCloud.
44 * @author Bartek Przybylski
48 public class FileDisplayActivity
extends android
.support
.v4
.app
.FragmentActivity
implements OnNavigationListener
{
49 private ArrayAdapter
<String
> mDirectories
;
51 private static final int DIALOG_CHOOSE_ACCOUNT
= 0;
53 public void pushPath(String path
) {
54 mDirectories
.insert(path
, 0);
57 public boolean popPath() {
58 mDirectories
.remove(mDirectories
.getItem(0));
59 return !mDirectories
.isEmpty();
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);
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());
81 public boolean onOptionsItemSelected(MenuItem item
) {
82 switch (item
.getItemId()) {
83 case R
.id
.settingsItem
:
84 Intent i
= new Intent(this, Preferences
.class);
92 protected Dialog
onCreateDialog(int id
) {
94 case DIALOG_CHOOSE_ACCOUNT
:
95 return createChooseAccountDialog();
97 throw new IllegalArgumentException("Unknown dialog id: " + id
);
102 public boolean onCreateOptionsMenu(Menu menu
) {
103 MenuInflater inflater
= getMenuInflater();
104 inflater
.inflate(R
.menu
.menu
, menu
);
108 private Dialog
createChooseAccountDialog() {
109 final AccountManager accMan
= AccountManager
.get(this);
110 CharSequence
[] items
= new CharSequence
[accMan
.getAccountsByType(AccountAuthenticator
.ACCOUNT_TYPE
).length
];
112 for (Account a
: accMan
.getAccountsByType(AccountAuthenticator
.ACCOUNT_TYPE
)) {
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];
125 builder
.setOnCancelListener(new OnCancelListener() {
126 public void onCancel(DialogInterface dialog
) {
127 FileDisplayActivity
.this.finish();
130 AlertDialog alert
= builder
.create();
135 public boolean onNavigationItemSelected(int itemPosition
, long itemId
) {
136 int i
= itemPosition
;
144 public void onBackPressed() {
146 if (mDirectories
.getCount() == 0)
148 super.onBackPressed();
151 ((FileList
)getSupportFragmentManager().findFragmentById(id
.file_list_container
)).onBackPressed();