From 0f0f02776d0ad014225c7cbcf3056532fa69b17f Mon Sep 17 00:00:00 2001 From: Thialfihar Date: Sat, 17 Apr 2010 19:10:39 +0000 Subject: wrapped file dialogs into class in preparation for proper file picking --- src/org/thialfihar/android/apg/FileDialog.java | 42 ++++++++++++++++++++++++++ 1 file changed, 42 insertions(+) create mode 100644 src/org/thialfihar/android/apg/FileDialog.java (limited to 'src/org/thialfihar/android/apg/FileDialog.java') diff --git a/src/org/thialfihar/android/apg/FileDialog.java b/src/org/thialfihar/android/apg/FileDialog.java new file mode 100644 index 000000000..ab1a6fc01 --- /dev/null +++ b/src/org/thialfihar/android/apg/FileDialog.java @@ -0,0 +1,42 @@ +package org.thialfihar.android.apg; + +import android.app.AlertDialog; +import android.content.Context; +import android.content.DialogInterface; +import android.widget.EditText; + +public class FileDialog { + + public static interface OnClickListener { + public void onCancelClick(); + public void onOkClick(String filename); + } + + public static AlertDialog build(Context context, String title, String message, + String defaultFile, OnClickListener onClickListener) { + AlertDialog.Builder alert = new AlertDialog.Builder(context); + + alert.setTitle(title); + alert.setMessage(message); + + final EditText input = new EditText(context); + input.setText(defaultFile); + alert.setView(input); + + final OnClickListener clickListener = onClickListener; + + alert.setPositiveButton(android.R.string.ok, new DialogInterface.OnClickListener() { + public void onClick(DialogInterface dialog, int id) { + clickListener.onOkClick(input.getText().toString()); + } + }); + + alert.setNegativeButton(android.R.string.cancel, + new DialogInterface.OnClickListener() { + public void onClick(DialogInterface dialog, int id) { + clickListener.onCancelClick(); + } + }); + return alert.create(); + } +} -- cgit v1.2.3 From de6743e4f5aeb7ad25ceb17a56ab0aeef59c95e8 Mon Sep 17 00:00:00 2001 From: Thialfihar Date: Sat, 17 Apr 2010 19:12:21 +0000 Subject: copyright header in new file --- src/org/thialfihar/android/apg/FileDialog.java | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) (limited to 'src/org/thialfihar/android/apg/FileDialog.java') diff --git a/src/org/thialfihar/android/apg/FileDialog.java b/src/org/thialfihar/android/apg/FileDialog.java index ab1a6fc01..a1662bea4 100644 --- a/src/org/thialfihar/android/apg/FileDialog.java +++ b/src/org/thialfihar/android/apg/FileDialog.java @@ -1,3 +1,19 @@ +/* + * Copyright (C) 2010 Thialfihar + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + package org.thialfihar.android.apg; import android.app.AlertDialog; -- cgit v1.2.3 From 09741b02863b138846f3747a19dc40a3518b9aa0 Mon Sep 17 00:00:00 2001 From: Thialfihar Date: Sat, 17 Apr 2010 23:36:47 +0000 Subject: use OI File Manager intents to handle open/save file selection --- src/org/thialfihar/android/apg/FileDialog.java | 73 +++++++++++++++++++++++--- 1 file changed, 66 insertions(+), 7 deletions(-) (limited to 'src/org/thialfihar/android/apg/FileDialog.java') diff --git a/src/org/thialfihar/android/apg/FileDialog.java b/src/org/thialfihar/android/apg/FileDialog.java index a1662bea4..c2e7ec4b3 100644 --- a/src/org/thialfihar/android/apg/FileDialog.java +++ b/src/org/thialfihar/android/apg/FileDialog.java @@ -16,34 +16,66 @@ package org.thialfihar.android.apg; +import org.openintents.intents.FileManager; + +import android.app.Activity; import android.app.AlertDialog; +import android.content.ActivityNotFoundException; import android.content.Context; import android.content.DialogInterface; +import android.content.Intent; +import android.net.Uri; +import android.view.LayoutInflater; +import android.view.View; import android.widget.EditText; +import android.widget.ImageButton; +import android.widget.Toast; public class FileDialog { + public static final int REQUEST_CODE_PICK_FILE_OR_DIRECTORY = 12345; + private static EditText mInput; + private static ImageButton mBrowse; + private static Activity mActivity; + private static String mFileManagerTitle; + private static String mFileManagerButton; public static interface OnClickListener { public void onCancelClick(); public void onOkClick(String filename); } - public static AlertDialog build(Context context, String title, String message, - String defaultFile, OnClickListener onClickListener) { - AlertDialog.Builder alert = new AlertDialog.Builder(context); + public static AlertDialog build(Activity activity, String title, String message, + String defaultFile, OnClickListener onClickListener, + String fileManagerTitle, String fileManagerButton) { + LayoutInflater inflater = + (LayoutInflater) activity.getSystemService(Context.LAYOUT_INFLATER_SERVICE); + AlertDialog.Builder alert = new AlertDialog.Builder(activity); alert.setTitle(title); alert.setMessage(message); - final EditText input = new EditText(context); - input.setText(defaultFile); - alert.setView(input); + View view = (View) inflater.inflate(R.layout.file_dialog, null); + + mActivity = activity; + mInput = (EditText) view.findViewById(R.id.input); + mInput.setText(defaultFile); + mBrowse = (ImageButton) view.findViewById(R.id.btn_browse); + mBrowse.setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View v) { + openFile(); + } + }); + mFileManagerTitle = fileManagerTitle; + mFileManagerButton = fileManagerButton; + + alert.setView(view); final OnClickListener clickListener = onClickListener; alert.setPositiveButton(android.R.string.ok, new DialogInterface.OnClickListener() { public void onClick(DialogInterface dialog, int id) { - clickListener.onOkClick(input.getText().toString()); + clickListener.onOkClick(mInput.getText().toString()); } }); @@ -55,4 +87,31 @@ public class FileDialog { }); return alert.create(); } + + public static void setFilename(String filename) { + if (mInput != null) { + mInput.setText(filename); + } + } + + /** + * Opens the file manager to select a file to open. + */ + private static void openFile() { + String fileName = mInput.getText().toString(); + + Intent intent = new Intent(FileManager.ACTION_PICK_FILE); + + intent.setData(Uri.parse("file://" + fileName)); + + intent.putExtra(FileManager.EXTRA_TITLE, mFileManagerTitle); + intent.putExtra(FileManager.EXTRA_BUTTON_TEXT, mFileManagerButton); + + try { + mActivity.startActivityForResult(intent, REQUEST_CODE_PICK_FILE_OR_DIRECTORY); + } catch (ActivityNotFoundException e) { + // No compatible file manager was found. + Toast.makeText(mActivity, R.string.no_filemanager_installed, Toast.LENGTH_SHORT).show(); + } + } } -- cgit v1.2.3 From d5c5a2c43b3ffda4183cf8d57eb585613ed4906e Mon Sep 17 00:00:00 2001 From: Thialfihar Date: Mon, 19 Apr 2010 02:12:13 +0000 Subject: major restructuring, moving dialog, message, menu, option menu, task, type IDs into Id in a similar structure as the generated R, also introducing a BaseActivity class that almost all activities derive from, which generates some common dialogs, handles the progress update, thread management, and thread communication also adding first draft of encrypt file activity, not very functional yet --- src/org/thialfihar/android/apg/FileDialog.java | 19 +++++++++---------- 1 file changed, 9 insertions(+), 10 deletions(-) (limited to 'src/org/thialfihar/android/apg/FileDialog.java') diff --git a/src/org/thialfihar/android/apg/FileDialog.java b/src/org/thialfihar/android/apg/FileDialog.java index c2e7ec4b3..653ca1005 100644 --- a/src/org/thialfihar/android/apg/FileDialog.java +++ b/src/org/thialfihar/android/apg/FileDialog.java @@ -32,8 +32,7 @@ import android.widget.ImageButton; import android.widget.Toast; public class FileDialog { - public static final int REQUEST_CODE_PICK_FILE_OR_DIRECTORY = 12345; - private static EditText mInput; + private static EditText mFilename; private static ImageButton mBrowse; private static Activity mActivity; private static String mFileManagerTitle; @@ -57,8 +56,8 @@ public class FileDialog { View view = (View) inflater.inflate(R.layout.file_dialog, null); mActivity = activity; - mInput = (EditText) view.findViewById(R.id.input); - mInput.setText(defaultFile); + mFilename = (EditText) view.findViewById(R.id.input); + mFilename.setText(defaultFile); mBrowse = (ImageButton) view.findViewById(R.id.btn_browse); mBrowse.setOnClickListener(new View.OnClickListener() { @Override @@ -75,7 +74,7 @@ public class FileDialog { alert.setPositiveButton(android.R.string.ok, new DialogInterface.OnClickListener() { public void onClick(DialogInterface dialog, int id) { - clickListener.onOkClick(mInput.getText().toString()); + clickListener.onOkClick(mFilename.getText().toString()); } }); @@ -89,8 +88,8 @@ public class FileDialog { } public static void setFilename(String filename) { - if (mInput != null) { - mInput.setText(filename); + if (mFilename != null) { + mFilename.setText(filename); } } @@ -98,17 +97,17 @@ public class FileDialog { * Opens the file manager to select a file to open. */ private static void openFile() { - String fileName = mInput.getText().toString(); + String filename = mFilename.getText().toString(); Intent intent = new Intent(FileManager.ACTION_PICK_FILE); - intent.setData(Uri.parse("file://" + fileName)); + intent.setData(Uri.parse("file://" + filename)); intent.putExtra(FileManager.EXTRA_TITLE, mFileManagerTitle); intent.putExtra(FileManager.EXTRA_BUTTON_TEXT, mFileManagerButton); try { - mActivity.startActivityForResult(intent, REQUEST_CODE_PICK_FILE_OR_DIRECTORY); + mActivity.startActivityForResult(intent, Id.request.filename); } catch (ActivityNotFoundException e) { // No compatible file manager was found. Toast.makeText(mActivity, R.string.no_filemanager_installed, Toast.LENGTH_SHORT).show(); -- cgit v1.2.3 From 26cf672d67219ea81c920ef96f6c0756682a7635 Mon Sep 17 00:00:00 2001 From: Thialfihar Date: Mon, 19 Apr 2010 13:56:43 +0000 Subject: set svn:ignore for bin directory and .project/.classpath asymmetric file encryption working, some more cleanup, introduced an application directory to encrypt to by default --- src/org/thialfihar/android/apg/FileDialog.java | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) (limited to 'src/org/thialfihar/android/apg/FileDialog.java') diff --git a/src/org/thialfihar/android/apg/FileDialog.java b/src/org/thialfihar/android/apg/FileDialog.java index 653ca1005..891606362 100644 --- a/src/org/thialfihar/android/apg/FileDialog.java +++ b/src/org/thialfihar/android/apg/FileDialog.java @@ -37,6 +37,7 @@ public class FileDialog { private static Activity mActivity; private static String mFileManagerTitle; private static String mFileManagerButton; + private static int mRequestCode; public static interface OnClickListener { public void onCancelClick(); @@ -45,7 +46,8 @@ public class FileDialog { public static AlertDialog build(Activity activity, String title, String message, String defaultFile, OnClickListener onClickListener, - String fileManagerTitle, String fileManagerButton) { + String fileManagerTitle, String fileManagerButton, + int requestCode) { LayoutInflater inflater = (LayoutInflater) activity.getSystemService(Context.LAYOUT_INFLATER_SERVICE); AlertDialog.Builder alert = new AlertDialog.Builder(activity); @@ -67,6 +69,7 @@ public class FileDialog { }); mFileManagerTitle = fileManagerTitle; mFileManagerButton = fileManagerButton; + mRequestCode = requestCode; alert.setView(view); @@ -107,7 +110,7 @@ public class FileDialog { intent.putExtra(FileManager.EXTRA_BUTTON_TEXT, mFileManagerButton); try { - mActivity.startActivityForResult(intent, Id.request.filename); + mActivity.startActivityForResult(intent, mRequestCode); } catch (ActivityNotFoundException e) { // No compatible file manager was found. Toast.makeText(mActivity, R.string.no_filemanager_installed, Toast.LENGTH_SHORT).show(); -- cgit v1.2.3 From b527ae8b6d3239dc5ade65dec424d30856bc77e5 Mon Sep 17 00:00:00 2001 From: Thialfihar Date: Thu, 13 May 2010 20:41:32 +0000 Subject: a lot of renaming of IDs, following a strict naming scheme again, moved most strings into string.xml in preparation for internationalization, APG.java still has to be changed to allow that, as it isn't Context aware in most methods --- src/org/thialfihar/android/apg/FileDialog.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'src/org/thialfihar/android/apg/FileDialog.java') diff --git a/src/org/thialfihar/android/apg/FileDialog.java b/src/org/thialfihar/android/apg/FileDialog.java index 891606362..22d64fc84 100644 --- a/src/org/thialfihar/android/apg/FileDialog.java +++ b/src/org/thialfihar/android/apg/FileDialog.java @@ -113,7 +113,7 @@ public class FileDialog { mActivity.startActivityForResult(intent, mRequestCode); } catch (ActivityNotFoundException e) { // No compatible file manager was found. - Toast.makeText(mActivity, R.string.no_filemanager_installed, Toast.LENGTH_SHORT).show(); + Toast.makeText(mActivity, R.string.oiFilemanagerNotInstalled, Toast.LENGTH_SHORT).show(); } } } -- cgit v1.2.3 From ca5416532f6ead3acce5f5240c57454b12f36079 Mon Sep 17 00:00:00 2001 From: Thialfihar Date: Tue, 1 Jun 2010 21:28:30 +0000 Subject: support ASTRO and others for the file selection --- src/org/thialfihar/android/apg/FileDialog.java | 13 ++++++------- 1 file changed, 6 insertions(+), 7 deletions(-) (limited to 'src/org/thialfihar/android/apg/FileDialog.java') diff --git a/src/org/thialfihar/android/apg/FileDialog.java b/src/org/thialfihar/android/apg/FileDialog.java index 22d64fc84..b6bbbf3f1 100644 --- a/src/org/thialfihar/android/apg/FileDialog.java +++ b/src/org/thialfihar/android/apg/FileDialog.java @@ -16,8 +16,6 @@ package org.thialfihar.android.apg; -import org.openintents.intents.FileManager; - import android.app.Activity; import android.app.AlertDialog; import android.content.ActivityNotFoundException; @@ -48,6 +46,8 @@ public class FileDialog { String defaultFile, OnClickListener onClickListener, String fileManagerTitle, String fileManagerButton, int requestCode) { + // TODO: fileManagerTitle and fileManagerButton are deprecated, no use for them right now, + // but maybe the Intent now used will someday support them again, so leaving them in LayoutInflater inflater = (LayoutInflater) activity.getSystemService(Context.LAYOUT_INFLATER_SERVICE); AlertDialog.Builder alert = new AlertDialog.Builder(activity); @@ -102,18 +102,17 @@ public class FileDialog { private static void openFile() { String filename = mFilename.getText().toString(); - Intent intent = new Intent(FileManager.ACTION_PICK_FILE); + Intent intent = new Intent(Intent.ACTION_GET_CONTENT); + intent.addCategory(Intent.CATEGORY_OPENABLE); intent.setData(Uri.parse("file://" + filename)); - - intent.putExtra(FileManager.EXTRA_TITLE, mFileManagerTitle); - intent.putExtra(FileManager.EXTRA_BUTTON_TEXT, mFileManagerButton); + intent.setType("*/*"); try { mActivity.startActivityForResult(intent, mRequestCode); } catch (ActivityNotFoundException e) { // No compatible file manager was found. - Toast.makeText(mActivity, R.string.oiFilemanagerNotInstalled, Toast.LENGTH_SHORT).show(); + Toast.makeText(mActivity, R.string.noFilemanagerInstalled, Toast.LENGTH_SHORT).show(); } } } -- cgit v1.2.3