</activity>
<activity android:name=".Preference" android:label="@string/preference_name">
</activity>
- <activity android:name=".ExtensionActivity"
+ <activity android:name=".extension.ExtensionActivity"
android:label="@string/extent_name"
android:screenOrientation="landscape">
<intent-filter>
import android.view.SurfaceHolder;
import android.view.SurfaceView;
+import jp.sourceforge.gokigen.memoma.drawers.ICanvasDrawer;
+
/**
* 描画するくらす
*
*/
public interface IObjectSelectionReceiver
{
- public abstract int touchedVacantArea();
- public abstract int touchUppedVacantArea();
- public abstract void objectCreated();
- public abstract boolean objectSelected(Integer key);
- public abstract void objectSelectedContext(Integer key);
-
+ int touchedVacantArea();
+ int touchUppedVacantArea();
+ void objectCreated();
+ boolean objectSelected(Integer key);
+ void objectSelectedContext(Integer key);
}
/**
* クラスの準備
- * @param receiver
- * @param initialMessage
+ *
*/
public void prepare(ISelectionItemReceiver receiver, ISelectionItemHolder holder, String titleMessage)
{
import android.view.MenuItem;
import android.view.Window;
+import jp.sourceforge.gokigen.memoma.fileio.MeMoMaDataInOutManager;
+
/**
* メイン画面の処理
*
import android.widget.ImageButton;
import android.widget.SeekBar;
+import jp.sourceforge.gokigen.memoma.dialogs.ConfirmationDialog;
+import jp.sourceforge.gokigen.memoma.dialogs.CreditDialog;
+import jp.sourceforge.gokigen.memoma.dialogs.TextEditDialog;
+import jp.sourceforge.gokigen.memoma.drawers.MeMoMaCanvasDrawer;
+import jp.sourceforge.gokigen.memoma.extension.ExtensionActivity;
+import jp.sourceforge.gokigen.memoma.fileio.MeMoMaDataInOutManager;
+import jp.sourceforge.gokigen.memoma.holders.LineStyleHolder;
+import jp.sourceforge.gokigen.memoma.holders.MeMoMaConnectLineHolder;
+import jp.sourceforge.gokigen.memoma.holders.MeMoMaObjectHolder;
+import jp.sourceforge.gokigen.memoma.holders.OperationModeHolder;
+
/**
* メモま! のメイン画面処理
*
import android.os.AsyncTask;
import android.util.Log;
+import jp.sourceforge.gokigen.memoma.holders.MeMoMaObjectHolder;
+
/**
* オブジェクトの位置を整列するクラス (非同期処理を実行)
*
import android.widget.TextView;
import android.widget.CompoundButton;
+import jp.sourceforge.gokigen.memoma.drawers.MeMoMaCanvasDrawer;
+import jp.sourceforge.gokigen.memoma.holders.MeMoMaObjectHolder;
+
/**
* オブジェクトのデータを入力するダイアログを表示する
*
private SeekBar borderColorView = null;
private CheckBox fillObjectView = null;
private GradientDrawable backgroundShape = null;
- private int backgroundColor = MeMoMaCanvasDrawer.BACKGROUND_COLOR_DEFAULT;
+ private int backgroundColor = MeMoMaCanvasDrawer.BACKGROUND_COLOR_DEFAULT;
private int currentObjectDrawStyle = MeMoMaObjectHolder.DRAWSTYLE_RECTANGLE;
private float textFontSize = 6.0f;
/**
* オブジェクトにデータを設定する
- * @param label
- * @param detail
- * @param labelColor
- * @param borderColor
- * @param size
+ *
*/
public void setObjectData(String label, String detail, int progress, boolean boldText, boolean fillObject, boolean userCheck, int drawStyle)
{
import android.view.View;
import android.widget.ImageButton;
+import jp.sourceforge.gokigen.memoma.holders.LineStyleHolder;
+
/**
* 接続線の形状を選択するダイアログを表示する
*
-package jp.sourceforge.gokigen.memoma;
+package jp.sourceforge.gokigen.memoma.dialogs;
import android.app.AlertDialog;
import android.app.Dialog;
import android.view.View;
import android.widget.TextView;
+import jp.sourceforge.gokigen.memoma.R;
+
/**
* はい か いいえ を入力するダイアログを準備する
*
*/
public class ConfirmationDialog
{
- private Context context = null;
+ private Context context;
private IResultReceiver resultReceiver = null;
private String message = "";
private String title = "";
/**
* クラスの準備
- * @param receiver
- * @param initialMessage
+ *
*/
public void prepare(IResultReceiver receiver, int titleIcon, String titleMessage, String confirmMessage)
{
/**
* 確認ダイアログを応答する
- * @return
+ *
*/
public Dialog getDialog()
{
LayoutInflater inflater = (LayoutInflater) context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
+ if (inflater == null)
+ {
+ return (null);
+ }
final View layout = inflater.inflate(R.layout.confirmationdialog, null);
AlertDialog.Builder builder = new AlertDialog.Builder(context);
- final TextView textView = (TextView) layout.findViewById(R.id.confirm_message);
+ final TextView textView = layout.findViewById(R.id.confirm_message);
// 表示するデータ(アイコン、ダイアログタイトル、メッセージ)を準備する
if (icon != 0)
{
public void onClick(DialogInterface dialog, int id)
{
- boolean ret = false;
if (resultReceiver != null)
{
resultReceiver.acceptConfirmation();
}
- if (ret == true)
- {
- dialog.dismiss();
- }
- else
- {
- dialog.cancel();
- }
+ dialog.cancel();
System.gc();
}
});
{
public void onClick(DialogInterface dialog, int id)
{
- boolean ret = false;
if (resultReceiver != null)
{
resultReceiver.rejectConfirmation();
}
- if (ret == true)
- {
- dialog.dismiss();
- }
- else
- {
- dialog.cancel();
- }
+ dialog.cancel();
System.gc();
}
});
public interface IResultReceiver
{
- public abstract void acceptConfirmation();
- public abstract void rejectConfirmation();
+ void acceptConfirmation();
+ void rejectConfirmation();
}
}
-package jp.sourceforge.gokigen.memoma;
+package jp.sourceforge.gokigen.memoma.dialogs;
import android.app.Activity;
import android.app.AlertDialog;
import android.content.Context;
import android.view.LayoutInflater;
import android.view.View;
-import android.view.ViewGroup;
import android.widget.TextView;
+import jp.sourceforge.gokigen.memoma.R;
+
/**
* クレジットを表示する
*
*/
public class CreditDialog
{
- private Activity context = null;
+ private Activity context;
/**
* コンストラクタ
- * @param arg
+ *
*/
public CreditDialog(Activity arg)
{
/**
* ダイアログを応答する
- * @return
+ *
*/
public Dialog getDialog()
{
LayoutInflater inflater = (LayoutInflater) context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
- View layout = inflater.inflate(R.layout.creditdialog, (ViewGroup) null); // ?? http://www.mail-archive.com/android-developers@googlegroups.com/msg162003.html より
- //View layout = inflater.inflate(R.layout.creditdialog, (ViewGroup) context.findViewById(R.id.layout_root));
+ if (inflater == null)
+ {
+ return (null);
+ }
+ View layout = inflater.inflate(R.layout.creditdialog, null); // ?? http://www.mail-archive.com/android-developers@googlegroups.com/msg162003.html より
+ //View layout = inflater.inflate(R.layout.creditdialog, context.findViewById(R.id.layout_root));
- TextView text = (TextView) layout.findViewById(R.id.creditmessage);
+ TextView text = layout.findViewById(R.id.creditmessage);
text.setText(context.getString(R.string.app_credit));
// ImageView image = (ImageView) layout.findViewById(R.id.crediticon);
// image.setImageResource(R.drawable.icon);
-package jp.sourceforge.gokigen.memoma;
+package jp.sourceforge.gokigen.memoma.dialogs;
import android.app.AlertDialog;
import android.app.Dialog;
import android.widget.AdapterView;
import android.widget.ListView;
+import jp.sourceforge.gokigen.memoma.fileio.ExternalStorageFileUtility;
+import jp.sourceforge.gokigen.memoma.holders.MeMoMaDataFileHolder;
+import jp.sourceforge.gokigen.memoma.R;
+
/**
* ファイル選択ダイアログ
*
-package jp.sourceforge.gokigen.memoma;
+package jp.sourceforge.gokigen.memoma.dialogs;
import android.app.AlertDialog;
import android.app.Dialog;
import android.view.View;
import android.widget.TextView;
+import jp.sourceforge.gokigen.memoma.Main;
+import jp.sourceforge.gokigen.memoma.R;
+
/**
* テキスト編集のダイアログ
*
-package jp.sourceforge.gokigen.memoma;
+package jp.sourceforge.gokigen.memoma.dialogs;
import android.app.Activity;
import android.content.SharedPreferences;
*/
public class TextEditReceiver implements TextEditDialog.ITextEditResultReceiver
{
- Activity parent = null;
- String textId = null;
- int textResId = -1;
+ private Activity parent;
+ private String textId;
+ private int textResId;
/**
* コンストラクタ
SharedPreferences preferences = PreferenceManager.getDefaultSharedPreferences(parent);
SharedPreferences.Editor editor = preferences.edit();
editor.putString(textId, message);
- editor.commit();
+ editor.apply();
if (textResId != 0)
{
// 画面表示の更新
- final TextView infoText = (TextView) parent.findViewById(textResId);
+ final TextView infoText = parent.findViewById(textResId);
infoText.setText(message);
}
else
-package jp.sourceforge.gokigen.memoma;
+package jp.sourceforge.gokigen.memoma.drawers;
import android.graphics.Canvas;
import android.view.MotionEvent;
-package jp.sourceforge.gokigen.memoma;
+package jp.sourceforge.gokigen.memoma.drawers;
import java.util.Enumeration;
import android.app.Activity;
import android.widget.SeekBar;
import android.widget.TextView;
+import jp.sourceforge.gokigen.memoma.GokigenSurfaceView;
+import jp.sourceforge.gokigen.memoma.IObjectSelectionReceiver;
+import jp.sourceforge.gokigen.memoma.fileio.ImageLoader;
+import jp.sourceforge.gokigen.memoma.Main;
+import jp.sourceforge.gokigen.memoma.R;
+import jp.sourceforge.gokigen.memoma.holders.LineStyleHolder;
+import jp.sourceforge.gokigen.memoma.holders.MeMoMaConnectLineHolder;
+import jp.sourceforge.gokigen.memoma.holders.MeMoMaObjectHolder;
+import jp.sourceforge.gokigen.memoma.holders.OperationModeHolder;
+
/**
* メモまの描画クラス
*
* @author MRSa
*
*/
-public class MeMoMaCanvasDrawer implements ICanvasDrawer, GestureDetector.OnGestureListener, ScaleGestureDetector.OnScaleGestureListener, SeekBar.OnSeekBarChangeListener
+public class MeMoMaCanvasDrawer implements ICanvasDrawer, GestureDetector.OnGestureListener, ScaleGestureDetector.OnScaleGestureListener, SeekBar.OnSeekBarChangeListener
{
public static final float OBJECTLABEL_MARGIN = 8.0f;
public static final float OBJECTLABEL_MARGIN_WIDTH = 24.0f;
else // オブジェクト非選択時の表示
{
int data = selectionReceiver.touchedVacantArea();
- if (data ==OperationModeHolder.OPERATIONMODE_MOVE)
+ if (data == OperationModeHolder.OPERATIONMODE_MOVE)
{
// 移動モードのとき... (表示領域を移動させる)
drawTransX = (tempPosX - downPosX);
/**
* オブジェクト(1個)を表示する
- *
- * @param canvas
- * @param paint
- * @param pos
+ *
*/
private void drawObject(Canvas canvas, MeMoMaObjectHolder.PositionObject object, boolean isMoving, float offsetX, float offsetY)
{
-package jp.sourceforge.gokigen.memoma;
+package jp.sourceforge.gokigen.memoma.drawers;
import android.graphics.Canvas;
import android.graphics.Color;
import android.graphics.Path;
import android.graphics.RectF;
+import jp.sourceforge.gokigen.memoma.drawers.MeMoMaCanvasDrawer;
+import jp.sourceforge.gokigen.memoma.holders.MeMoMaObjectHolder;
+
/**
* めもまのオブジェクト・ライン・ラベルを描画するメソッド群
* (現在のところ、MeMoMaCanvasDrawerクラスから追い出してきただけ...)
* @param paint
* @param x1
* @param y1
- * @param checkVaule
+ * @param checkValue
* @param isXaxis
*/
static public void drawArrowTree(Canvas canvas, Paint paint, float x1, float y1, float checkValue, boolean isXaxis)
}
// 文字をちょっと影付きにする
+ paint.setStyle(Paint.Style.FILL_AND_STROKE);
paint.setShadowLayer(0.5f, 0.5f, 0.5f, Color.DKGRAY);
// ユーザチェックの描画
-package jp.sourceforge.gokigen.memoma;
+package jp.sourceforge.gokigen.memoma.extension;
import android.app.Activity;
import android.app.Dialog;
import android.view.Menu;
import android.view.MenuItem;
+import jp.sourceforge.gokigen.memoma.R;
+
/**
*
* @author MRSa
protected void onPrepareDialog(int id, Dialog dialog)
{
listener.onPrepareDialog(id, dialog);
- return;
}
/**
-package jp.sourceforge.gokigen.memoma;
+package jp.sourceforge.gokigen.memoma.extension;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import android.widget.ListView;
import android.widget.Toast;
+import jp.sourceforge.gokigen.memoma.fileio.ExternalStorageFileUtility;
+import jp.sourceforge.gokigen.memoma.dialogs.FileSelectionDialog;
+import jp.sourceforge.gokigen.memoma.Main;
+import jp.sourceforge.gokigen.memoma.holders.MeMoMaConnectLineHolder;
+import jp.sourceforge.gokigen.memoma.fileio.MeMoMaFileExportCsvProcess;
+import jp.sourceforge.gokigen.memoma.fileio.MeMoMaFileImportCsvProcess;
+import jp.sourceforge.gokigen.memoma.fileio.MeMoMaFileLoadingProcess;
+import jp.sourceforge.gokigen.memoma.holders.MeMoMaObjectHolder;
+import jp.sourceforge.gokigen.memoma.R;
+import jp.sourceforge.gokigen.memoma.SharedIntentInvoker;
+import jp.sourceforge.gokigen.memoma.SymbolListArrayAdapter;
+import jp.sourceforge.gokigen.memoma.SymbolListArrayItem;
+
/**
* リスト形式で表示・エクスポート
*
/**
* 詳細データを表示する。
- *
- * @param title
- * @param url
+ *
*/
private void showDetailData(String first, String second, String third)
{
-package jp.sourceforge.gokigen.memoma;
+package jp.sourceforge.gokigen.memoma.fileio;
import android.os.Environment;
import android.util.Log;
import java.text.SimpleDateFormat;
import java.util.Calendar;
+import jp.sourceforge.gokigen.memoma.Main;
+
/**
* 外部ストレージにデータを記録するために使うユーティリティ
*
-package jp.sourceforge.gokigen.memoma;
+package jp.sourceforge.gokigen.memoma.fileio;
import java.io.File;
import java.io.InputStream;
import android.util.Log;
import android.widget.ImageView;
+import jp.sourceforge.gokigen.memoma.Main;
+import jp.sourceforge.gokigen.memoma.R;
+
/**
* 画像イメージを読み込む
*
-package jp.sourceforge.gokigen.memoma;
+package jp.sourceforge.gokigen.memoma.fileio;
import java.text.SimpleDateFormat;
import java.util.Calendar;
import android.util.Log;
import android.widget.Toast;
+import jp.sourceforge.gokigen.memoma.GokigenSurfaceView;
+import jp.sourceforge.gokigen.memoma.Main;
+import jp.sourceforge.gokigen.memoma.MeMoMaListener;
+import jp.sourceforge.gokigen.memoma.R;
+import jp.sourceforge.gokigen.memoma.SharedIntentInvoker;
+import jp.sourceforge.gokigen.memoma.drawers.MeMoMaCanvasDrawer;
+import jp.sourceforge.gokigen.memoma.holders.MeMoMaDataFileHolder;
+import jp.sourceforge.gokigen.memoma.holders.MeMoMaObjectHolder;
+
public class MeMoMaDataInOutManager implements MeMoMaFileSavingProcess.ISavingStatusHolder, MeMoMaFileSavingProcess.IResultReceiver, MeMoMaFileLoadingProcess.IResultReceiver, ActionBar.OnNavigationListener, ObjectLayoutCaptureExporter.ICaptureLayoutExporter
{
private Activity parent = null;
-package jp.sourceforge.gokigen.memoma;
+package jp.sourceforge.gokigen.memoma.fileio;
import java.io.File;
import java.io.FileWriter;
import android.os.AsyncTask;
import android.util.Log;
+import jp.sourceforge.gokigen.memoma.Main;
+import jp.sourceforge.gokigen.memoma.R;
+import jp.sourceforge.gokigen.memoma.holders.MeMoMaObjectHolder;
+
/**
* データをファイルに保存するとき用 アクセスラッパ (非同期処理を実行)
*
public class MeMoMaFileExportCsvProcess extends AsyncTask<MeMoMaObjectHolder, Integer, String>
{
private IResultReceiver receiver = null;
- private ExternalStorageFileUtility fileUtility = null;
+ private ExternalStorageFileUtility fileUtility = null;
private String exportedFileName = null;
ProgressDialog savingDialog = null;
-package jp.sourceforge.gokigen.memoma;
+package jp.sourceforge.gokigen.memoma.fileio;
import java.io.BufferedReader;
import java.io.FileReader;
import android.preference.PreferenceManager;
import android.util.Log;
+import jp.sourceforge.gokigen.memoma.Main;
+import jp.sourceforge.gokigen.memoma.R;
+import jp.sourceforge.gokigen.memoma.holders.MeMoMaObjectHolder;
+
/**
* データをファイルに保存するとき用 アクセスラッパ (非同期処理を実行)
*
{
private Context parent = null;
private IResultReceiver receiver = null;
- private ExternalStorageFileUtility fileUtility = null;
+ private ExternalStorageFileUtility fileUtility = null;
private String targetFileName = null;
private String fileSavedResult = "";
private ProgressDialog importingDialog = null;
-package jp.sourceforge.gokigen.memoma;
+package jp.sourceforge.gokigen.memoma.fileio;
import java.io.File;
import java.io.FileReader;
import android.util.Log;
import android.util.Xml;
+import jp.sourceforge.gokigen.memoma.Main;
+import jp.sourceforge.gokigen.memoma.holders.MeMoMaConnectLineHolder;
+import jp.sourceforge.gokigen.memoma.holders.MeMoMaObjectHolder;
+
/**
* データをファイルに保存するとき用 アクセスラッパ (非同期処理を実行)
*
-package jp.sourceforge.gokigen.memoma;
+package jp.sourceforge.gokigen.memoma.fileio;
import java.io.File;
import java.io.FileWriter;
import android.util.Log;
import android.util.Xml;
+import jp.sourceforge.gokigen.memoma.Main;
+import jp.sourceforge.gokigen.memoma.holders.MeMoMaConnectLineHolder;
+import jp.sourceforge.gokigen.memoma.holders.MeMoMaObjectHolder;
+
/**
* データをファイルに保存するエンジン部分
*
-package jp.sourceforge.gokigen.memoma;
+package jp.sourceforge.gokigen.memoma.fileio;
import android.app.ProgressDialog;
import android.content.Context;
import android.preference.PreferenceManager;
import android.util.Log;
+import jp.sourceforge.gokigen.memoma.Main;
+import jp.sourceforge.gokigen.memoma.R;
+import jp.sourceforge.gokigen.memoma.holders.MeMoMaObjectHolder;
+
/**
* データをファイルに保存するとき用 アクセスラッパ (非同期処理を実行)
*
-package jp.sourceforge.gokigen.memoma;
+package jp.sourceforge.gokigen.memoma.fileio;
import java.io.File;
import java.io.FileOutputStream;
import android.util.Log;
import android.view.Display;
+import jp.sourceforge.gokigen.memoma.Main;
+import jp.sourceforge.gokigen.memoma.R;
+import jp.sourceforge.gokigen.memoma.drawers.MeMoMaCanvasDrawer;
+import jp.sourceforge.gokigen.memoma.holders.MeMoMaObjectHolder;
+
/**
* データをファイルに保存するとき用 アクセスラッパ (非同期処理を実行)
* Viewの情報を画像形式(png形式)で保存する。
private Activity parent = null;
private ICaptureLayoutExporter receiver = null;
- private ExternalStorageFileUtility fileUtility = null;
+ private ExternalStorageFileUtility fileUtility = null;
private String exportedFileName = null;
private MeMoMaObjectHolder objectHolder = null;
private MeMoMaCanvasDrawer canvasDrawer = null;
-package jp.sourceforge.gokigen.memoma;
+package jp.sourceforge.gokigen.memoma.fileio;
import java.io.File;
import java.io.FileOutputStream;
import android.util.Log;
import android.view.View;
+import jp.sourceforge.gokigen.memoma.Main;
+import jp.sourceforge.gokigen.memoma.R;
+
/**
* データをファイルに保存するとき用 アクセスラッパ (非同期処理を実行)
* Viewの情報を画像形式(png形式)で保存する。
public class ViewCaptureExporter extends AsyncTask<String, Integer, String>
{
private ICaptureExporter receiver = null;
- private ExternalStorageFileUtility fileUtility = null;
+ private ExternalStorageFileUtility fileUtility = null;
private String exportedFileName = null;
private ProgressDialog savingDialog = null;
/**
* ビットマップデータを(PNG形式で)保管する。
- *
- * @param fileName
- * @param objectHolder
- * @return
+ *
+ *
*/
private String exportToFile(String fileName)
{
-package jp.sourceforge.gokigen.memoma;
+package jp.sourceforge.gokigen.memoma.holders;
import android.app.Activity;
import android.content.SharedPreferences;
import android.preference.PreferenceManager;
+import jp.sourceforge.gokigen.memoma.R;
+
/**
* 線の形状を保持するクラス
*
/**
* 接続する線の太さ を設定する
- *
- * @param shape
+ *
*/
public void setLineThickness(int thickness)
{
-package jp.sourceforge.gokigen.memoma;
+package jp.sourceforge.gokigen.memoma.holders;
import java.util.Enumeration;
import java.util.Hashtable;
import android.util.Log;
+import jp.sourceforge.gokigen.memoma.Main;
+import jp.sourceforge.gokigen.memoma.holders.LineStyleHolder;
+
/**
* 表示オブジェクト間の接続情報を保持するクラス
-package jp.sourceforge.gokigen.memoma;
+package jp.sourceforge.gokigen.memoma.holders;
import java.io.File;
import java.io.FilenameFilter;
import android.content.Context;
import android.widget.ArrayAdapter;
+import jp.sourceforge.gokigen.memoma.fileio.ExternalStorageFileUtility;
+
/**
* めもまのデータファイル名を保持するクラス (ArrayAdapterを拡張)
*
-package jp.sourceforge.gokigen.memoma;
+package jp.sourceforge.gokigen.memoma.holders;
import java.util.Enumeration;
import java.util.Hashtable;
import android.util.Log;
import android.widget.Toast;
+import jp.sourceforge.gokigen.memoma.Main;
+import jp.sourceforge.gokigen.memoma.R;
+
/**
* 表示オブジェクトの情報を保持するクラス
*
/**
* オブジェクトのサイズを拡大する
- *
- * @param key
+ *
*/
public void expandObjectSize(Integer key)
{
-package jp.sourceforge.gokigen.memoma;
+package jp.sourceforge.gokigen.memoma.holders;
import android.app.Activity;
import android.content.SharedPreferences;
import android.preference.PreferenceManager;
+import jp.sourceforge.gokigen.memoma.R;
+
/**
*
* @author MRSa