1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
|
package de.blinkt.openvpn;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.IOException;
import android.app.ActionBar;
import android.app.ActionBar.Tab;
import android.app.Activity;
import android.app.AlertDialog;
import android.app.AlertDialog.Builder;
import android.app.Fragment;
import android.app.FragmentTransaction;
import android.content.Context;
import android.content.Intent;
import android.os.Bundle;
public class FileSelect extends Activity {
public static final String RESULT_DATA = "RESULT_PATH";
public static final String START_DATA = "START_DATA";
public static final String INLINE_TAG = "[[INLINE]]";
private FileSelectionFragment mFSFragment;
private InlineFileTab mInlineFragment;
private String mData;
private Tab inlineFileTab;
private Tab fileExplorerTab;
public void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
setContentView(R.layout.file_dialog);
mData = getIntent().getStringExtra(START_DATA);
ActionBar bar = getActionBar();
bar.setNavigationMode(ActionBar.NAVIGATION_MODE_TABS);
fileExplorerTab = bar.newTab().setText(R.string.file_explorer_tab);
inlineFileTab = bar.newTab().setText(R.string.inline_file_tab);
mFSFragment = new FileSelectionFragment();
mInlineFragment = new InlineFileTab();
fileExplorerTab.setTabListener(new MyTabsListener<FileSelectionFragment>(this, mFSFragment));
inlineFileTab.setTabListener(new MyTabsListener<InlineFileTab>(this, mInlineFragment));
bar.addTab(fileExplorerTab);
bar.addTab(inlineFileTab);
}
protected class MyTabsListener<T extends Fragment> implements ActionBar.TabListener
{
private Fragment mFragment;
private boolean mAdded=false;
public MyTabsListener( Activity activity, Fragment fragment){
this.mFragment = fragment;
}
public void onTabSelected(Tab tab, FragmentTransaction ft) {
// Check if the fragment is already initialized
if (!mAdded) {
// If not, instantiate and add it to the activity
ft.add(android.R.id.content, mFragment);
mAdded =true;
} else {
// If it exists, simply attach it in order to show it
ft.attach(mFragment);
}
}
@Override
public void onTabUnselected(Tab tab, FragmentTransaction ft) {
ft.detach(mFragment);
}
@Override
public void onTabReselected(Tab tab, FragmentTransaction ft) {
}
}
public void importFile(String path) {
File ifile = new File(path);
Exception fe = null;
try {
FileInputStream fis = new FileInputStream(ifile);
String data =INLINE_TAG;
byte buf[] =new byte[16384];
int len=fis.read(buf);
while(len >0) {
data += new String(buf,0,len);
len=fis.read(buf);
}
mData =data;
mInlineFragment.setData(data);
getActionBar().selectTab(inlineFileTab);
} catch (FileNotFoundException e) {
fe = e;
} catch (IOException e) {
fe =e;
}
if(fe!=null) {
Builder ab = new AlertDialog.Builder(this);
ab.setTitle(R.string.error_importing_file);
ab.setMessage(getString(R.string.import_error_message) + "\n" + fe.getLocalizedMessage());
ab.setPositiveButton(android.R.string.ok, null);
ab.show();
}
}
public void setFile(String path) {
Intent intent = new Intent();
intent.putExtra(RESULT_DATA, mData);
setResult(Activity.RESULT_OK,intent);
finish();
}
public String getSelectPath() {
if(mData.startsWith(INLINE_TAG))
return mData;
else
return "/mnt/sdcard";
}
public CharSequence getInlineData() {
if(mData.startsWith(INLINE_TAG))
return mData.substring(INLINE_TAG.length());
else
return "";
}
public void saveInlineData(String string) {
Intent intent = new Intent();
intent.putExtra(RESULT_DATA, mData);
setResult(Activity.RESULT_OK,intent);
finish();
}
}
|