</activity>
<activity android:name=".extension.ExtensionActivity"
android:label="@string/extent_name"
+ android:theme="@android:style/Theme.Holo.Light.DarkActionBar"
android:screenOrientation="landscape">
<intent-filter>
<action android:name="jp.sfjp.gokigen.memoma.extension.activity" />
import java.util.List;
import android.content.Context;
+import android.graphics.Color;
+import android.support.annotation.NonNull;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
public class SymbolListArrayAdapter extends ArrayAdapter<SymbolListArrayItem>
{
- private LayoutInflater inflater = null;
- private int textViewResourceId = 0;
- private List<SymbolListArrayItem> listItems = null;
+ private final LayoutInflater inflater;
+ private final int textViewResourceId;
+ private final List<SymbolListArrayItem> listItems;
/**
* コンストラクタ
*
*/
@Override
- public View getView(int position, View convertView, ViewGroup parent)
+ public @NonNull View getView(int position, View convertView, @NonNull ViewGroup parent)
{
- View view = null;
+ View view;
if(convertView != null)
{
view = convertView;
SymbolListArrayItem item = listItems.get(position);
- ImageView imageView = (ImageView) view.findViewWithTag("icon");
+ ImageView imageView = view.findViewWithTag("icon");
imageView.setImageResource(item.getIconResource());
int subIcon = item.getSubIconResource();
//if (subIcon != 0)
{
- ImageView subImage = (ImageView) view.findViewWithTag("subIcon");
+ ImageView subImage = view.findViewWithTag("subIcon");
subImage.setImageResource(subIcon);
}
- TextView titleView = (TextView)view.findViewWithTag("title");
+ TextView titleView = view.findViewWithTag("title");
+ titleView.setTextColor(Color.LTGRAY);
titleView.setText(item.getTextResource1st());
- TextView detailView = (TextView)view.findViewWithTag("detail");
+ TextView detailView = view.findViewWithTag("detail");
+ detailView.setTextColor(Color.LTGRAY);
detailView.setText(item.getTextResource2nd());
- /**
- TextView optionView = (TextView)view.findViewWithTag("option");
+ /*
+ TextView optionView = view.findViewWithTag("option");
optionView.setText(item.getTextResource3rd());
- **/
+ */
return (view);
}
}
// タイトルとめもまのアイコンを表示する : 文字の色は黒でいいのかな...
Bitmap bitmap = BitmapFactory.decodeResource(parent.getResources(), R.drawable.icon1);
canvas.drawBitmap(bitmap, 2.0f, 2.0f, paint);
+
+ // 文字をライトグレー、ちょっと影付きにする
+ paint.setColor(Color.LTGRAY);
+ paint.setStyle(Paint.Style.FILL_AND_STROKE);
+ paint.setShadowLayer(0.5f, 0.5f, 0.5f, Color.DKGRAY);
+
canvas.drawText(objectHolder.getDataTitle(), (bitmap.getWidth() + 10.0f), 32.0f, paint);
}
package jp.sourceforge.gokigen.memoma.extension;
+import android.app.ActionBar;
import android.app.Activity;
import android.app.Dialog;
import android.content.Intent;
{
super.onCreate(savedInstanceState);
- /** リスナクラスを生成する **/
- listener = new ExtensionActivityListener((Activity) this);
+ // リスナクラスを生成する
+ listener = new ExtensionActivityListener(this);
- /** レイアウトを設定する **/
- setContentView(R.layout.extensionview);
+ // レイアウトを設定する
+ setContentView(R.layout.extensionview);
- /** リスナクラスの準備 **/
- listener.prepareExtraDatas(getIntent());
- listener.prepareListener();
- }
+ // リスナクラスの準備
+ listener.prepareExtraDatas(getIntent());
+ listener.prepareListener();
+ }
/**
* メニューの生成
@Override
public boolean onCreateOptionsMenu(Menu menu)
{
- menu = listener.onCreateOptionsMenu(menu);
+ menu = listener.onCreateOptionsMenu(menu);
return (super.onCreateOptionsMenu(menu));
}
import java.util.Calendar;
import java.util.Enumeration;
import java.util.List;
+import java.util.Locale;
+import android.app.ActionBar;
import android.app.Activity;
import android.app.Dialog;
import android.content.Intent;
import android.util.Log;
import android.view.Menu;
import android.view.MenuItem;
-import android.view.MotionEvent;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.AdapterView;
*/
public class ExtensionActivityListener implements OnClickListener, MeMoMaFileLoadingProcess.IResultReceiver, MeMoMaFileExportCsvProcess.IResultReceiver, FileSelectionDialog.IResultReceiver, MeMoMaFileImportCsvProcess.IResultReceiver
{
- public final int MENU_ID_EXPORT= (Menu.FIRST + 1);
- public final int MENU_ID_SHARE = (Menu.FIRST + 2);
- public final int MENU_ID_IMPORT = (Menu.FIRST + 3);
+ private final int MENU_ID_EXPORT= (Menu.FIRST + 1);
+ private final int MENU_ID_SHARE = (Menu.FIRST + 2);
+ private final int MENU_ID_IMPORT = (Menu.FIRST + 3);
- private final String EXTENSION_DIRECTORY = "/exported";
+ private static final String EXTENSION_DIRECTORY = "/exported";
- private ExternalStorageFileUtility fileUtility = null;
- private MeMoMaObjectHolder objectHolder = null;
+ private ExternalStorageFileUtility fileUtility;
+ private MeMoMaObjectHolder objectHolder;
private FileSelectionDialog fileSelectionDialog = null;
private boolean isShareExportedData = false;
private List<SymbolListArrayItem> listItems = null;
- private Activity parent = null; // 親分
+ private final Activity parent; // 親分
/**
* コンストラクタ
- * @param argument
+ * @param argument parent activity
*/
- public ExtensionActivityListener(Activity argument)
+ ExtensionActivityListener(Activity argument)
{
parent = argument;
fileUtility = new ExternalStorageFileUtility(Main.APP_BASEDIR);
/**
* 起動時にデータを準備する
*
- * @param myIntent
+ * @param myIntent intent information
*/
public void prepareExtraDatas(Intent myIntent)
{
public void prepareListener()
{
// フィルタ設定ボタン
- final ImageButton filterButton = (ImageButton) parent.findViewById(R.id.SetFilterButton);
+ final ImageButton filterButton = parent.findViewById(R.id.SetFilterButton);
filterButton.setOnClickListener(this);
}
{
Log.v(Main.APP_IDENTIFIER, "ExtensionActivityListener::prepareToStart() : " + objectHolder.getDataTitle());
- // ファイルをロードする!
+ // アクションバーを表示する
+ ActionBar bar = parent.getActionBar();
+ if (bar != null)
+ {
+ bar.show();
+ bar.setTitle(objectHolder.getDataTitle());
+ }
+
+ // ファイルをロードする!
// (AsyncTaskを使ってデータを読み込む)
MeMoMaFileLoadingProcess asyncTask = new MeMoMaFileLoadingProcess(parent, fileUtility, this);
asyncTask.execute(objectHolder);
/**
* 他画面から戻ってきたとき...
- * @param requestCode
- * @param resultCode
- * @param data
+ *
+ *
*/
public void onActivityResult(int requestCode, int resultCode, Intent data)
{
// なにもしない...
+ Log.v(Main.APP_IDENTIFIER, "rc: " + requestCode + " rs: " + resultCode + " it: " + data.getDataString());
}
/**
if (id == R.id.SetFilterButton)
{
// フィルタ設定ボタンが押された!
+ Log.v(Main.APP_IDENTIFIER, "Selected Filter");
}
}
- /**
+/*
+ **
* 触られたときの処理
- *
- */
+ *
+ *
public boolean onTouch(View v, MotionEvent event)
{
+ Log.v(Main.APP_IDENTIFIER, " " + v.toString() + " " + event.toString());
// int id = v.getId();
// int action = event.getAction();
return (false);
}
+*/
/**
* メニューへのアイテム追加
- * @param menu
- * @return
+ *
*/
public Menu onCreateOptionsMenu(Menu menu)
{
/**
* メニュー表示前の処理
- * @param menu
- * @return
+ *
*/
public void onPrepareOptionsMenu(Menu menu)
{
menu.findItem(MENU_ID_SHARE).setVisible(true);
menu.findItem(MENU_ID_EXPORT).setVisible(true);
menu.findItem(MENU_ID_IMPORT).setVisible(true);
-
- return;
}
/**
* メニューのアイテムが選択されたときの処理
- * @param item
- * @return
+ *
*/
public boolean onOptionsItemSelected(MenuItem item)
{
- boolean result = false;
+ boolean result;
switch (item.getItemId())
{
case MENU_ID_EXPORT:
return (result);
}
+
/**
* CSV形式でデータをインポートする
*
return (fileSelectionDialog.getDialog());
}
-/**
+ /*
if (id == R.id.info_about_gokigen)
{
CreditDialog dialog = new CreditDialog(parent);
return (dialog.getDialog());
}
-**/
+ */
return (null);
}
*/
private void prepareFileSelectionDialog(Dialog dialog)
{
- fileSelectionDialog.prepare("", EXTENSION_DIRECTORY);
+ try
+ {
+ Log.v(Main.APP_IDENTIFIER, " " + dialog.toString());
+ fileSelectionDialog.prepare("", EXTENSION_DIRECTORY);
+ }
+ catch (Exception e)
+ {
+ e.printStackTrace();
+ }
}
/**
{
// CSVインポートダイアログを準備する
prepareFileSelectionDialog(dialog);
- return;
}
}
{
// リストに表示するアイテムを生成する
listItems = null;
- listItems = new ArrayList<SymbolListArrayItem>();
+ listItems = new ArrayList<>();
// TODO: 何らかの法則に従って並べ替えをする。
int objectStyleIcon = MeMoMaObjectHolder .getObjectDrawStyleIcon(pos.drawStyle);
// ユーザチェックの有無表示
- int userCheckedIcon = (pos.userChecked == true) ? R.drawable.btn_checked : R.drawable.btn_notchecked;
+ int userCheckedIcon = (pos.userChecked) ? R.drawable.btn_checked : R.drawable.btn_notchecked;
// TODO: アイテム選択時の情報エリアは(ArrayItem側には)用意しているが未使用。
SymbolListArrayItem listItem = new SymbolListArrayItem(userCheckedIcon, pos.label, pos.detail, "", objectStyleIcon);
String outputMessage = parent.getString(R.string.export_csv) + " " + objectHolder.getDataTitle() + " " + detail;
Toast.makeText(parent, outputMessage, Toast.LENGTH_SHORT).show();
- if (isShareExportedData == true)
+ if (isShareExportedData)
{
// エクスポートしたファイルを共有する
shareContent(exportedFileName);
try
{
// リストアダプターを生成し、設定する
- ListView listView = (ListView) parent.findViewById(R.id.ExtensionView);
+ ListView listView = parent.findViewById(R.id.ExtensionView);
ListAdapter adapter = new SymbolListArrayAdapter(parent, R.layout.listarrayitems, listItems);
listView.setAdapter(adapter);
/**
* エクスポートしたファイルを共有する
*
- * @param fileName
+ *
*/
private void shareContent(String fileName)
{
{
// 現在の時刻を取得する
Calendar calendar = Calendar.getInstance();
- SimpleDateFormat outFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm");
+ SimpleDateFormat outFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm", Locale.US);
String date = outFormat.format(calendar.getTime());
// メールタイトル
}
catch (Exception ex)
{
-
+ ex.printStackTrace();
}
}
/**
* インポート結果の受信
- *
- * @param detail
+ *
*/
public void onImportedResult(String detail)
{
import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.Enumeration;
+import java.util.Locale;
import android.app.Activity;
import android.app.ProgressDialog;
private static final int MINIMUM_WIDTH = 800;
private static final int MINIMUM_HEIGHT = 600;
-
- private Activity parent = null;
- private ICaptureLayoutExporter receiver = null;
- private ExternalStorageFileUtility fileUtility = null;
+
+ private ICaptureLayoutExporter receiver;
+ private ExternalStorageFileUtility fileUtility;
private String exportedFileName = null;
- private MeMoMaObjectHolder objectHolder = null;
- private MeMoMaCanvasDrawer canvasDrawer = null;
- private ProgressDialog savingDialog = null;
+ private MeMoMaObjectHolder objectHolder;
+ private MeMoMaCanvasDrawer canvasDrawer;
+ private ProgressDialog savingDialog;
private float offsetX = 0.0f;
private float offsetY = 0.0f;
+ private int displayWidth;
+ private int displayHeight;
/**
* コンストラクタ
*/
- public ObjectLayoutCaptureExporter(Activity context, ExternalStorageFileUtility utility, MeMoMaObjectHolder holder, MeMoMaCanvasDrawer drawer, ICaptureLayoutExporter resultReceiver)
+ ObjectLayoutCaptureExporter(Activity context, ExternalStorageFileUtility utility, MeMoMaObjectHolder holder, MeMoMaCanvasDrawer drawer, ICaptureLayoutExporter resultReceiver)
{
receiver = resultReceiver;
fileUtility = utility;
objectHolder = holder;
canvasDrawer = drawer;
- parent = context;
+
+ // 現在の画面サイズを取得
+ Display display = context.getWindowManager().getDefaultDisplay();
+ displayWidth = display.getWidth();
+ displayHeight = display.getHeight();
// プログレスダイアログ(「保存中...」)を表示する。
savingDialog = new ProgressDialog(context);
savingDialog.setCancelable(false);
savingDialog.show();
- /** ファイルをバックアップするディレクトリを作成する **/
+ // ファイルをバックアップするディレクトリを作成する
File dir = new File(fileUtility.getGokigenDirectory() + "/exported");
- dir.mkdir();
+ if (!dir.mkdir())
+ {
+ Log.v(Main.APP_IDENTIFIER, "mkdir is failed.");
+ }
}
/**
/**
* ビットマップデータを(PNG形式で)保管する。
- *
- * @param fileName
- * @param objectHolder
- * @return
+ *
+ *
*/
private String exportToFile(String fileName, Bitmap targetBitmap)
{
// エクスポートするファイル名を決定する
Calendar calendar = Calendar.getInstance();
- SimpleDateFormat outFormat = new SimpleDateFormat("yyyyMMddHHmmss");
+ SimpleDateFormat outFormat = new SimpleDateFormat("yyyyMMddHHmmss", Locale.US);
exportedFileName = fileName + "_" + outFormat.format(calendar.getTime()) + ".png";
// PNG形式でファイル出力を行う。
/**
* キャンバスの大きさがどれくらい必要か、チェックする。
*
- * @return
+ *
*/
private Rect checkCanvasSize()
{
canvasSize.sort();
// 現在の画面サイズを取得
- Display display = parent.getWindowManager().getDefaultDisplay();
- int width = display.getWidth();
- int height = display.getHeight();
- if (width < MINIMUM_WIDTH)
+ //Display display = parent.getWindowManager().getDefaultDisplay();
+ //int width = display.getWidth();
+ //int height = display.getHeight();
+ if (displayWidth < MINIMUM_WIDTH)
{
- width = MINIMUM_WIDTH;
+ displayWidth = MINIMUM_WIDTH;
}
- if (height < MINIMUM_HEIGHT)
+ if (displayHeight < MINIMUM_HEIGHT)
{
- height = MINIMUM_HEIGHT;
+ displayHeight = MINIMUM_HEIGHT;
}
// 出力の最小サイズを(表示画面サイズに)設定
- if (canvasSize.width() < width)
+ if (canvasSize.width() < displayWidth)
{
- canvasSize.right = canvasSize.left + width;
+ canvasSize.right = canvasSize.left + displayWidth;
}
- if (canvasSize.height() < height)
+ if (canvasSize.height() < displayHeight)
{
- canvasSize.bottom = canvasSize.top + height;
+ canvasSize.bottom = canvasSize.top + displayHeight;
}
@Override
protected String doInBackground(String... datas)
{
- Rect canvasSize = checkCanvasSize();
- Bitmap targetBitmap = Bitmap.createBitmap(canvasSize.width(), canvasSize.height(), Bitmap.Config.RGB_565);
- Canvas targetCanvas = new Canvas(targetBitmap);
-
- // オブジェクトをビットマップの中に書き込む
- canvasDrawer.drawOnBitmapCanvas(targetCanvas, offsetX, offsetY);
+ String result = "";
+ try
+ {
+ Rect canvasSize = checkCanvasSize();
+ Bitmap targetBitmap = Bitmap.createBitmap(canvasSize.width(), canvasSize.height(), Bitmap.Config.RGB_565);
+ Canvas targetCanvas = new Canvas(targetBitmap);
- // ファイル名の設定 ... (拡張子なし)
- String fileName = fileUtility.getGokigenDirectory() + "/exported/" + datas[0];
+ // オブジェクトをビットマップの中に書き込む
+ canvasDrawer.drawOnBitmapCanvas(targetCanvas, offsetX, offsetY);
- // データを保管する
- String result = exportToFile(fileName, targetBitmap);
+ // ファイル名の設定 ... (拡張子なし)
+ String fileName = fileUtility.getGokigenDirectory() + "/exported/" + datas[0];
+ // データを保管する
+ result = exportToFile(fileName, targetBitmap);
+ }
+ catch (Throwable t)
+ {
+ t.printStackTrace();
+ }
System.gc();
-
return (result);
}
{
savingDialog.dismiss();
}
- return;
}
/**
*/
public interface ICaptureLayoutExporter
{
- /** 保存結果の報告 **/
- public abstract void onCaptureLayoutExportedResult(String exportedFileName, String detail);
+ // 保存結果の報告
+ void onCaptureLayoutExportedResult(String exportedFileName, String detail);
}
}