OSDN Git Service

SDKを31に更新。
authorMRSa <mrsa@myad.jp>
Tue, 2 Nov 2021 14:17:57 +0000 (23:17 +0900)
committerMRSa <mrsa@myad.jp>
Tue, 2 Nov 2021 14:17:57 +0000 (23:17 +0900)
22 files changed:
app/build.gradle
app/src/main/AndroidManifest.xml
app/src/main/java/jp/sourceforge/gokigen/memoma/Main.java
app/src/main/java/jp/sourceforge/gokigen/memoma/MeMoMaListener.java
app/src/main/java/jp/sourceforge/gokigen/memoma/dialogs/ConfirmationDialog.java
app/src/main/java/jp/sourceforge/gokigen/memoma/dialogs/CreditDialog.java
app/src/main/java/jp/sourceforge/gokigen/memoma/dialogs/FileSelectionDialog.java
app/src/main/java/jp/sourceforge/gokigen/memoma/dialogs/ItemSelectionDialog.java
app/src/main/java/jp/sourceforge/gokigen/memoma/dialogs/TextEditDialog.java
app/src/main/java/jp/sourceforge/gokigen/memoma/dialogs/TextEditReceiver.java
app/src/main/java/jp/sourceforge/gokigen/memoma/drawers/GokigenSurfaceView.java
app/src/main/java/jp/sourceforge/gokigen/memoma/drawers/MeMoMaCanvasDrawer.java
app/src/main/java/jp/sourceforge/gokigen/memoma/drawers/ObjectShapeDrawer.java
app/src/main/java/jp/sourceforge/gokigen/memoma/extension/ExtensionActivityListener.java
app/src/main/java/jp/sourceforge/gokigen/memoma/holders/ObjectConnector.java
app/src/main/java/jp/sourceforge/gokigen/memoma/holders/OperationHistoryHolder.java
app/src/main/java/jp/sourceforge/gokigen/memoma/holders/PositionObject.java
app/src/main/java/jp/sourceforge/gokigen/memoma/io/MeMoMaDataInOutManager.java
app/src/main/java/jp/sourceforge/gokigen/memoma/listitem/SymbolListArrayAdapter.java
app/src/main/java/jp/sourceforge/gokigen/memoma/preference/Preference.java
build.gradle
gradle.properties [new file with mode: 0644]

index 3f4072b..9b34774 100644 (file)
@@ -1,15 +1,15 @@
 apply plugin: 'com.android.application'
 
 android {
-    compileSdkVersion 27
-    buildToolsVersion "28.0.0"
+    compileSdkVersion 31
+    //buildToolsVersion "31.0.0"
 
     defaultConfig {
         applicationId "jp.sourceforge.gokigen.memoma"
         minSdkVersion 14
-        targetSdkVersion 27
-        versionCode 15
-        versionName "1.3.0"
+        targetSdkVersion 31
+        versionCode 16
+        versionName "1.3.1"
     }
 
     buildTypes {
@@ -18,12 +18,17 @@ android {
             proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.txt'
         }
     }
+
+    compileOptions {
+        sourceCompatibility JavaVersion.VERSION_1_8
+        targetCompatibility JavaVersion.VERSION_1_8
+    }
+
 }
 
 dependencies {
     api fileTree(dir: 'libs', include: ['*.jar'])
-    api 'com.android.support:appcompat-v7:27.1.1'
-    api 'com.android.support.constraint:constraint-layout:1.1.2'
-    api 'com.android.support:preference-v14:27.1.1'
-    api 'com.android.support:preference-v7:27.1.1'
+    implementation 'androidx.appcompat:appcompat:1.3.1'
+    implementation 'androidx.constraintlayout:constraintlayout:2.1.1'
+    implementation 'androidx.preference:preference:1.1.1'
 }
index 8d4a622..833e367 100644 (file)
@@ -7,6 +7,7 @@
     <application android:icon="@drawable/icon" android:label="@string/app_name" android:theme="@style/Theme.AppCompat">
 
         <activity android:name=".Main"
+            android:exported="true"
             android:label="@string/app_name"
             android:screenOrientation="landscape">
             <intent-filter>
@@ -17,6 +18,7 @@
         <activity android:name=".preference.Preference" android:label="@string/preference_name">
         </activity>
         <activity android:name=".extension.ExtensionActivity"
+            android:exported="true"
             android:label="@string/extent_name"
             android:theme="@android:style/Theme.Holo.Light.DarkActionBar"
             android:screenOrientation="landscape">
@@ -26,7 +28,7 @@
             </intent-filter>
         </activity>
         <provider
-            android:name="android.support.v4.content.FileProvider"
+            android:name="androidx.core.content.FileProvider"
             android:authorities="jp.sourceforge.gokigen.memoma.fileprovider"
             android:exported="false"
             android:grantUriPermissions="true"
index 3883f32..05d6415 100644 (file)
@@ -1,9 +1,6 @@
 package jp.sourceforge.gokigen.memoma;
 
 import android.os.Build;
-import android.support.v4.app.ActivityCompat;
-import android.support.v4.content.ContextCompat;
-import android.support.v7.app.AppCompatActivity;
 import android.Manifest;
 import android.app.Dialog;
 import android.content.Intent;
@@ -17,13 +14,17 @@ import jp.sourceforge.gokigen.memoma.io.MeMoMaDataInOutManager;
 
 import static android.os.Build.VERSION_CODES.KITKAT;
 
+import androidx.appcompat.app.AppCompatActivity;
+import androidx.core.app.ActivityCompat;
+import androidx.core.content.ContextCompat;
+
 /**
  *   メイン画面の処理
  * 
  * @author MRSa
  *
  */
-public class Main extends  AppCompatActivity
+public class Main extends AppCompatActivity
 {
     public static final String APP_IDENTIFIER = "Gokigen";
     public static final String APP_BASEDIR = "/MeMoMa";
@@ -296,14 +297,15 @@ public class Main extends  AppCompatActivity
     @Override
     protected void onActivityResult(int requestCode, int resultCode, Intent data)
     {
+        super.onActivityResult(requestCode, resultCode, data);
         try
         {
             // 子画面からもらった情報の応答処理をイベント処理クラスに依頼する
-               listener.onActivityResult(requestCode, resultCode, data);
+            listener.onActivityResult(requestCode, resultCode, data);
         }
         catch (Exception ex)
         {
-           ex.printStackTrace();
+            ex.printStackTrace();
         }
     }    
 }
index d548cc9..7cf5609 100644 (file)
@@ -12,8 +12,6 @@ import android.graphics.drawable.BitmapDrawable;
 import android.net.Uri;
 import android.os.Build;
 import android.os.Bundle;
-import android.preference.PreferenceManager;
-import android.support.v7.app.AppCompatActivity;
 import android.util.Log;
 import android.view.KeyEvent;
 import android.view.Menu;
@@ -26,6 +24,10 @@ import android.view.View.OnTouchListener;
 import android.widget.ImageButton;
 import android.widget.SeekBar;
 
+import androidx.appcompat.app.ActionBar;
+import androidx.appcompat.app.AppCompatActivity;
+import androidx.preference.PreferenceManager;
+
 import jp.sourceforge.gokigen.memoma.dialogs.ConfirmationDialog;
 import jp.sourceforge.gokigen.memoma.dialogs.CreditDialog;
 import jp.sourceforge.gokigen.memoma.dialogs.ItemSelectionDialog;
@@ -632,7 +634,7 @@ public class MeMoMaListener implements OnClickListener, OnTouchListener, OnKeyLi
         parent.setTitle(memomaInfo);
 
         // アクションバーとファイル名の準備
-        android.support.v7.app.ActionBar bar = parent.getSupportActionBar();
+        ActionBar bar = parent.getSupportActionBar();
         if (bar != null)
         {
             dataInOutManager.prepare(objectHolder, bar, memomaInfo);
@@ -1220,12 +1222,12 @@ public class MeMoMaListener implements OnClickListener, OnTouchListener, OnKeyLi
         Log.v(Main.APP_IDENTIFIER, "MeMoMaListener::onRestoreInstanceState() : " + savedInstanceState.toString());
     }
 
-    public boolean finishTextEditDialog(String message)
+    public void finishTextEditDialog(String message)
     {
         if ((message == null)||(message.length() == 0))
         {
             // データが入力されていなかったので、何もしない。
-            return (false);
+            return;
         }
 
         try
@@ -1249,12 +1251,10 @@ public class MeMoMaListener implements OnClickListener, OnTouchListener, OnKeyLi
         {
             e.printStackTrace();
         }
-        return (true);
     }
 
-    public boolean cancelTextEditDialog()
+    public void cancelTextEditDialog()
     {
-        return (false);
     }
 
     /**
index 660c1ae..6f01f8b 100644 (file)
@@ -3,7 +3,6 @@ package jp.sourceforge.gokigen.memoma.dialogs;
 import android.app.AlertDialog;
 import android.app.Dialog;
 import android.content.Context;
-import android.content.DialogInterface;
 import android.view.LayoutInflater;
 import android.view.View;
 import android.widget.TextView;
@@ -18,7 +17,7 @@ import jp.sourceforge.gokigen.memoma.R;
  */
 public class ConfirmationDialog
 {
-       private Context context;
+       private final Context context;
        private IResultReceiver resultReceiver = null;
     private String  message = "";
        private String  title = "";
@@ -75,30 +74,22 @@ public class ConfirmationDialog
         }
         builder.setView(layout);
         builder.setCancelable(false);
-        builder.setPositiveButton(context.getString(R.string.confirmYes), new DialogInterface.OnClickListener()
-              {
-                   public void onClick(DialogInterface dialog, int id)
-                   {
-                          if (resultReceiver != null)
-                          {
-                              resultReceiver.acceptConfirmation();
-                          }
-                       dialog.cancel();
-                       System.gc();
-                   }
-               });
-        builder.setNegativeButton(context.getString(R.string.confirmNo), new DialogInterface.OnClickListener()
-               {
-                   public void onClick(DialogInterface dialog, int id)
-                   {
-                          if (resultReceiver != null)
-                          {
-                              resultReceiver.rejectConfirmation();
-                          }
-                       dialog.cancel();
-                       System.gc();
-                   }
-               });
+        builder.setPositiveButton(context.getString(R.string.confirmYes), (dialog, id) -> {
+            if (resultReceiver != null)
+            {
+                resultReceiver.acceptConfirmation();
+            }
+            dialog.cancel();
+            System.gc();
+        });
+        builder.setNegativeButton(context.getString(R.string.confirmNo), (dialog, id) -> {
+            if (resultReceiver != null)
+            {
+                resultReceiver.rejectConfirmation();
+            }
+            dialog.cancel();
+            System.gc();
+        });
         return (builder.create());     
     }
 
index 2f98f33..45db562 100644 (file)
@@ -18,7 +18,7 @@ import jp.sourceforge.gokigen.memoma.R;
  */
 public class CreditDialog
 {
-       private Activity context;
+       private final Activity context;
 
        /**
         *   コンストラクタ
index ed5c970..491fac4 100644 (file)
@@ -3,10 +3,8 @@ package jp.sourceforge.gokigen.memoma.dialogs;
 import android.app.AlertDialog;
 import android.app.Dialog;
 import android.content.Context;
-import android.content.DialogInterface;
 import android.view.LayoutInflater;
 import android.view.View;
-import android.widget.AdapterView;
 import android.widget.ListView;
 
 import jp.sourceforge.gokigen.memoma.io.ExternalStorageFileUtility;
@@ -21,34 +19,29 @@ import jp.sourceforge.gokigen.memoma.R;
  */
 public class FileSelectionDialog
 {
-       private Context context = null;
-       private IResultReceiver resultReceiver = null;
-       private ExternalStorageFileUtility fileUtility = null;
-    private MeMoMaDataFileHolder dataFileHolder = null;
-    private String title = null;
-    private String fileExtension = null;
-    private Dialog dialogRef = null;
+       private final Context context;
+       private final IResultReceiver resultReceiver;
+    private final MeMoMaDataFileHolder dataFileHolder;
+    private final String title;
+    private final String fileExtension;
+    private Dialog dialogRef;
     
        /**
         *    コンストラクタ
-        * 
-        * @param arg
+        *
         */
        public FileSelectionDialog(Context arg, String titleMessage, ExternalStorageFileUtility utility, String extension, IResultReceiver receiver)
        {
            context = arg;      
            resultReceiver = receiver;
                title = titleMessage;
-        fileUtility = utility;
         fileExtension = extension;
-        dataFileHolder = new MeMoMaDataFileHolder(context, android.R.layout.simple_list_item_1, fileUtility, extension);
+        dataFileHolder = new MeMoMaDataFileHolder(context, android.R.layout.simple_list_item_1, utility, extension);
        }
 
        /**
         *   ファイル一覧データをつくる!
-        * 
-        * @param currentFileName
-        * @param extendDirectory
+        *
         */
        public void prepare(String currentFileName, String extendDirectory)
        {
@@ -57,8 +50,7 @@ public class FileSelectionDialog
 
     /**
      *   ファイル選択ダイアログを応答する
-     *   
-     * @return
+     *
      */
     public Dialog getDialog()
     {
@@ -78,35 +70,27 @@ public class FileSelectionDialog
         builder.setView(layout);
 
         // アイテムを選択したときの処理
-        listView.setOnItemClickListener(new AdapterView.OnItemClickListener() {
-            //@Override
-            public void onItemClick(AdapterView<?> parentView, View view, int position, long id)
-            {
-                ListView listView = (ListView) parentView;
-                String fileName = (String) listView.getItemAtPosition(position);
+        listView.setOnItemClickListener((parentView, view, position, id) -> {
+            ListView listView1 = (ListView) parentView;
+            String fileName = (String) listView1.getItemAtPosition(position);
 
-                /// リストが選択されたときの処理...データを開く
-                  if (resultReceiver != null)
-                  {
-                      resultReceiver.selectedFileName(fileName + fileExtension);
-                  }
-                  if (dialogRef != null)
-                  {
-                          dialogRef.dismiss();
-                   dialogRef = null;
-                  }
-               System.gc();
+            /// リストが選択されたときの処理...データを開く
+            if (resultReceiver != null)
+           {
+               resultReceiver.selectedFileName(fileName + fileExtension);
+           }
+            if (dialogRef != null)
+            {
+                dialogRef.dismiss();
+               dialogRef = null;
             }
+           System.gc();
         });
         builder.setCancelable(true);
-        builder.setNegativeButton(context.getString(R.string.confirmNo), new DialogInterface.OnClickListener()
-               {
-                   public void onClick(DialogInterface dialog, int id)
-                   {
-                       dialog.cancel();
-                       System.gc();
-                   }
-               });
+        builder.setNegativeButton(context.getString(R.string.confirmNo), (dialog, id) -> {
+            dialog.cancel();
+            System.gc();
+        });
         dialogRef = builder.create();
         return (dialogRef);            
     }
@@ -123,6 +107,6 @@ public class FileSelectionDialog
         *    ファイルが選択された!
         *    
         */
-        public abstract void selectedFileName(String fileName);
+        void selectedFileName(String fileName);
     }  
 }
index e024046..91ec9e1 100644 (file)
@@ -3,7 +3,6 @@ package jp.sourceforge.gokigen.memoma.dialogs;
 import android.app.AlertDialog;
 import android.app.Dialog;
 import android.content.Context;
-import android.content.DialogInterface;
 
 import jp.sourceforge.gokigen.memoma.R;
 
@@ -16,7 +15,7 @@ import jp.sourceforge.gokigen.memoma.R;
  */
 public class ItemSelectionDialog
 {
-       private Context context = null;
+       private final Context context;
        private ISelectionItemReceiver resultReceiver = null;
        private ISelectionItemHolder dataHolder = null;
        private String  title = "";
@@ -39,7 +38,6 @@ public class ItemSelectionDialog
        
        /**
      *   確認ダイアログを応答する
-     * @return
      */
     public Dialog getDialog()
     {
@@ -53,110 +51,66 @@ public class ItemSelectionDialog
         builder.setCancelable(false);
         if (dataHolder != null)
         {
-               if (dataHolder.isMultipleSelection() == false)
+               if (!dataHolder.isMultipleSelection())
                {
-                builder.setItems(dataHolder.getItems(), new DialogInterface.OnClickListener()
-                {
-                       public void onClick(DialogInterface dialog, int id)
-                       {
-                          boolean ret = false;
-                          if (resultReceiver != null)
-                          {
-                              resultReceiver.itemSelected(id, dataHolder.getItem(id));
-                          }
-                       if (ret == true)
-                       {
-                          dialog.dismiss();
-                       }
-                       else
-                       {
-                           dialog.cancel();
-                       }
-                       System.gc();
-                               
-                       }
-                }); 
+                builder.setItems(dataHolder.getItems(), (dialog, id) -> {
+                   if (resultReceiver != null)
+                   {
+                       resultReceiver.itemSelected(id, dataHolder.getItem(id));
+                   }
+                   dialog.cancel();
+                   System.gc();
+                });
                }
             else
             {
-               /**  複数選択の選択肢を準備する **/
-                builder.setMultiChoiceItems(dataHolder.getItems(), dataHolder.getSelectionStatus(), new DialogInterface.OnMultiChoiceClickListener()
-                {
-                       public void onClick(DialogInterface dialog, int which, boolean isChecked)
-                       {
-                           if (resultReceiver != null)
-                           {
-                               resultReceiver.itemSelected(which, dataHolder.getItem(which));
-                           }                           
-                       }
+               //  複数選択の選択肢を準備する
+                builder.setMultiChoiceItems(dataHolder.getItems(), dataHolder.getSelectionStatus(), (dialog, which, isChecked) -> {
+                      if (resultReceiver != null)
+                    {
+                        resultReceiver.itemSelected(which, dataHolder.getItem(which));
+                    }
                 });
 
-                /**  複数選択時には、OKボタンを押したときに選択を確定させる。 **/
-                builder.setPositiveButton(context.getString(R.string.confirmYes), new DialogInterface.OnClickListener()
-                {
-                     public void onClick(DialogInterface dialog, int id)
-                     {
-                          boolean ret = false;
-                          if (resultReceiver != null)
-                          {
-                              resultReceiver.itemSelectedMulti(dataHolder.getItems(), dataHolder.getSelectionStatus());
-                          }
-                         if (ret == true)
-                         {
-                          dialog.dismiss();
-                         }
-                         else
-                         {
-                             dialog.cancel();
-                         }
-                         System.gc();
-                     }
-                 });
+                //  複数選択時には、OKボタンを押したときに選択を確定させる。
+                builder.setPositiveButton(context.getString(R.string.confirmYes), (dialog, id) -> {
+                    if (resultReceiver != null)
+                    {
+                        resultReceiver.itemSelectedMulti(dataHolder.getItems(), dataHolder.getSelectionStatus());
+                    }
+                    dialog.cancel();
+                    System.gc();
+                });
             }
         }
 
-//        builder.setMultiChoiceItems(CharSequence[] items, boolean[] checkedItems, OnMultiChoiceClickListener listener)
-/**
-**/
-        builder.setNegativeButton(context.getString(R.string.confirmNo), new DialogInterface.OnClickListener()
-        {
-                   public void onClick(DialogInterface dialog, int id)
-                   {
-                          boolean ret = false;
-                          if (resultReceiver != null)
-                          {
-                              resultReceiver.canceledSelection();
-                          }
-                       if (ret == true)
-                       {
-                          dialog.dismiss();
-                       }
-                       else
-                       {
-                           dialog.cancel();
-                       }
-                       System.gc();
-                   }
+        builder.setNegativeButton(context.getString(R.string.confirmNo), (dialog, id) -> {
+            if (resultReceiver != null)
+            {
+                resultReceiver.canceledSelection();
+            }
+            dialog.cancel();
+            System.gc();
         });
         return (builder.create());     
     }
 
     public interface ISelectionItemHolder
     {
-       public abstract boolean isMultipleSelection();
+       boolean isMultipleSelection();
 
-       public abstract String[] getItems();
-        public abstract String  getItem(int index);
+       String[] getItems();
+        String  getItem(int index);
 
         /** 複数選択時に使用する **/
-        public abstract boolean[] getSelectionStatus();
-        public abstract void setSelectionStatus(int index, boolean isSelected);
-    };
+        boolean[] getSelectionStatus();
+        void setSelectionStatus(int index, boolean isSelected);
+    }
     
     public interface ISelectionItemReceiver
     {
-        public abstract void itemSelected(int index, String itemValue);
-        public abstract void itemSelectedMulti(String[] items, boolean[] status);
-        public abstract void canceledSelection();
+        void itemSelected(int index, String itemValue);
+        void itemSelectedMulti(String[] items, boolean[] status);
+        void canceledSelection();
     }
 }
index 1b8037f..8fc2ccd 100644 (file)
@@ -3,7 +3,6 @@ package jp.sourceforge.gokigen.memoma.dialogs;
 import android.app.AlertDialog;
 import android.app.Dialog;
 import android.content.Context;
-import android.content.DialogInterface;
 import android.util.Log;
 import android.view.LayoutInflater;
 import android.view.View;
@@ -20,14 +19,13 @@ import jp.sourceforge.gokigen.memoma.R;
  */
 public class TextEditDialog
 {
-       private Context context = null;
+       private final Context context;
        private ITextEditResultReceiver resultReceiver = null;
-       private int    icon = 0;
+       private final int    icon;
        private String title = null;
 
        /**
         *   コンストラクタ
-        * @param arg
         */
        public TextEditDialog(Context arg, int titleIcon)
        {
@@ -37,8 +35,6 @@ public class TextEditDialog
 
        /**
         *  クラスの準備
-        * @param receiver
-        * @param initialMessage
         */
        public void prepare(Dialog layout, ITextEditResultReceiver receiver, String titleMessage, String initialMessage, boolean isSingleLine)
        {
@@ -77,7 +73,6 @@ public class TextEditDialog
        
     /**
      *   テキスト編集ダイアログを応答する
-     * @return
      */
     public Dialog getDialog()
     {
@@ -99,52 +94,28 @@ public class TextEditDialog
 
         builder.setView(layout);
         builder.setCancelable(false);
-        builder.setPositiveButton(context.getString(R.string.confirmYes), new DialogInterface.OnClickListener()
-              {
-                   public void onClick(DialogInterface dialog, int id)
-                   {
-                          boolean ret = false;
-                          if (resultReceiver != null)
-                          {
-                              resultReceiver.finishTextEditDialog(editComment.getText().toString());
-                          }
-                       if (ret == true)
-                       {
-                          dialog.dismiss();
-                       }
-                       else
-                       {
-                           dialog.cancel();
-                       }
-                       System.gc();
-                   }
-               });
-        builder.setNegativeButton(context.getString(R.string.confirmNo), new DialogInterface.OnClickListener()
-               {
-                   public void onClick(DialogInterface dialog, int id)
-                   {
-                          boolean ret = false;
-                          if (resultReceiver != null)
-                          {
-                              resultReceiver.cancelTextEditDialog();
-                          }
-                       if (ret == true)
-                       {
-                          dialog.dismiss();
-                       }
-                       else
-                       {
-                           dialog.cancel();
-                       }
-                       System.gc();
-                   }
-               });
+        builder.setPositiveButton(context.getString(R.string.confirmYes), (dialog, id) -> {
+            if (resultReceiver != null)
+            {
+                resultReceiver.finishTextEditDialog(editComment.getText().toString());
+            }
+            dialog.cancel();
+            System.gc();
+        });
+        builder.setNegativeButton(context.getString(R.string.confirmNo), (dialog, id) -> {
+            if (resultReceiver != null)
+            {
+                resultReceiver.cancelTextEditDialog();
+            }
+            dialog.cancel();
+            System.gc();
+        });
         return (builder.create());     
     }
 
     public interface ITextEditResultReceiver
     {
-        public abstract boolean finishTextEditDialog(String message);
-        public abstract boolean cancelTextEditDialog();
+        void finishTextEditDialog(String message);
+        void cancelTextEditDialog();
     }
 }
index c18ba27..09bc0b7 100644 (file)
@@ -32,12 +32,12 @@ public class TextEditReceiver implements TextEditDialog.ITextEditResultReceiver
         *   データの更新
         * 
         */
-    public boolean finishTextEditDialog(String message)
+    public void finishTextEditDialog(String message)
     {
        if ((message == null)||(message.length() == 0))
        {
             // データが入力されていなかったので、何もしない。
-               return (false);
+               return;
        }
        
        // 文字列を記録
@@ -57,15 +57,13 @@ public class TextEditReceiver implements TextEditDialog.ITextEditResultReceiver
                // リソースIDが指定されていない場合は、タイトルを更新する
                parent.setTitle(message);
         }
-        
-        return (true);
+
     }
 
     /**
      *   データを更新しないとき...
      */
-    public boolean cancelTextEditDialog()
+    public void cancelTextEditDialog()
     {
-        return (false);
     }
 }
index 4a84e09..d5ac78b 100644 (file)
@@ -9,7 +9,6 @@ import android.view.SurfaceHolder;
 import android.view.SurfaceView;
 
 import jp.sourceforge.gokigen.memoma.Main;
-import jp.sourceforge.gokigen.memoma.drawers.ICanvasDrawer;
 
 /**
  *  描画するくらす
@@ -89,17 +88,24 @@ public class GokigenSurfaceView extends SurfaceView implements SurfaceHolder.Cal
     public boolean onTouchEvent(MotionEvent event)
     {
         boolean ret = false;
-       if (canvasDrawer != null)
-       {
-           ret = canvasDrawer.onTouchEvent(event);
-           if (ret)
-           {
-               doDraw();
-           }
-       }
-       else
+        try
+        {
+            if (canvasDrawer != null)
+            {
+                ret = canvasDrawer.onTouchEvent(event);
+                if (ret)
+                {
+                    doDraw();
+                }
+            }
+            else
+            {
+                super.performClick();
+            }
+        }
+        catch (Exception e)
         {
-            super.performClick();
+            e.printStackTrace();
         }
         return (ret);
     }
@@ -126,9 +132,7 @@ public class GokigenSurfaceView extends SurfaceView implements SurfaceHolder.Cal
         }
         catch (Exception ex)
         {
-            //
-            //
-            //
+            ex.printStackTrace();
         }
     }
 
@@ -149,7 +153,6 @@ public class GokigenSurfaceView extends SurfaceView implements SurfaceHolder.Cal
     public void doDraw()
     {
                //Log.v(Main.APP_IDENTIFIER, "GokigenSurfaceView::doDraw()");
-
                SurfaceHolder drawHolder = getHolder();
        try
        {
index 0c8ff7a..bab18f0 100644 (file)
@@ -14,7 +14,7 @@ import android.graphics.RectF;
 import android.preference.PreferenceManager;
 import android.util.Log;
 import android.view.MotionEvent;
-import         android.view.GestureDetector;
+import android.view.GestureDetector;
 import android.view.ScaleGestureDetector;
 import android.widget.SeekBar;
 import android.widget.TextView;
@@ -53,7 +53,7 @@ public class MeMoMaCanvasDrawer implements ICanvasDrawer,  GestureDetector.OnGes
        // 以下の値は、MeMoMaListenerで初期値を設定する
        private int objectStyle = MeMoMaObjectHolder.DRAWSTYLE_RECTANGLE;
        
-       private LineStyleHolder lineStyleHolder;
+       private final LineStyleHolder lineStyleHolder;
 
        private float drawScale = 1.0f;    // 表示の倍率
        private float drawTransX  = 0.0f;   // 並行移動距離 (X)
@@ -71,14 +71,14 @@ public class MeMoMaCanvasDrawer implements ICanvasDrawer,  GestureDetector.OnGes
        private String backgroundBitmapUri = null;
        private Bitmap backgroundBitmap = null;
 
-       private MeMoMaObjectHolder objectHolder;
-       private MeMoMaConnectLineHolder lineHolder;
-       private IObjectSelectionReceiver selectionReceiver;
+       private final MeMoMaObjectHolder objectHolder;
+       private final MeMoMaConnectLineHolder lineHolder;
+       private final IObjectSelectionReceiver selectionReceiver;
 
-       private GestureDetector gestureDetector;
-       private ScaleGestureDetector scaleGestureDetector;
+       private final GestureDetector gestureDetector;
+       private final ScaleGestureDetector scaleGestureDetector;
 
-       private Activity parent;
+       private final Activity parent;
        
        /**
       *   コンストラクタ
index 98db501..15703d9 100644 (file)
@@ -114,7 +114,7 @@ public class ObjectShapeDrawer
 
     static public float drawObjectDrum(Canvas canvas, RectF objectShape, Paint paint, Paint.Style paintStyle)
     {
-               float margin = MeMoMaCanvasDrawer.OBJECTLABEL_MARGIN * 1.0f;
+               float margin = MeMoMaCanvasDrawer.OBJECTLABEL_MARGIN;
                // 円柱の描画
         Path path = new Path();
         path.moveTo(objectShape.left, objectShape.top);
@@ -140,13 +140,12 @@ public class ObjectShapeDrawer
         return (MeMoMaCanvasDrawer.OBJECTLABEL_MARGIN / 2.0f);
     }
 
-    static public float drawObjectNoRegion(Canvas canvas, RectF objectShape, Paint paint)
+    static public void drawObjectNoRegion(Canvas canvas, RectF objectShape, Paint paint)
     {
                // 何も表示しないとわからないので、ラベルが無いときには枠を表示する
         paint.setColor(Color.DKGRAY);
         canvas.drawRect(objectShape, paint);
         paint.setColor(Color.WHITE);
-        return (0.0f);
     }
 
     static public float drawObjectLoopStart(Canvas canvas, RectF objectShape, Paint paint)
@@ -245,6 +244,7 @@ public class ObjectShapeDrawer
     {
        
     }
+
          /**
           *    矢印を描画する処理 (ツリー表示時)
           *
index 9b106e8..70c0856 100644 (file)
@@ -13,7 +13,7 @@ import android.app.Activity;
 import android.app.Dialog;
 import android.content.Intent;
 import android.net.Uri;
-import android.support.v4.content.FileProvider;
+import androidx.core.content.FileProvider;
 import android.util.Log;
 import android.view.Menu;
 import android.view.MenuItem;
@@ -25,12 +25,10 @@ import android.widget.ListAdapter;
 import android.widget.ListView;
 import android.widget.Toast;
 
-import jp.sourceforge.gokigen.memoma.holders.OperationHistoryHolder;
 import jp.sourceforge.gokigen.memoma.holders.PositionObject;
 import jp.sourceforge.gokigen.memoma.io.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.io.MeMoMaFileExportCsvProcess;
 import jp.sourceforge.gokigen.memoma.io.MeMoMaFileImportCsvProcess;
 import jp.sourceforge.gokigen.memoma.io.MeMoMaFileLoadingProcess;
index 879a491..cbeadc8 100644 (file)
@@ -1,6 +1,6 @@
 package jp.sourceforge.gokigen.memoma.holders;
 
-import android.support.annotation.NonNull;
+import androidx.annotation.NonNull;
 
 /**
  *   オブジェクト間を接続するクラス
index 252bc26..026c149 100644 (file)
@@ -1,9 +1,10 @@
 package jp.sourceforge.gokigen.memoma.holders;
 
 import android.graphics.RectF;
-import android.support.annotation.NonNull;
 import android.util.Log;
 
+import androidx.annotation.NonNull;
+
 public class OperationHistoryHolder implements IOperationHistoryHolder
 {
     private final String TAG = toString();
index 23c7e56..1705d3a 100644 (file)
@@ -1,7 +1,8 @@
 package jp.sourceforge.gokigen.memoma.holders;
 
 import android.graphics.RectF;
-import android.support.annotation.NonNull;
+
+import androidx.annotation.NonNull;
 
 public class PositionObject
 {
index 0f7bf0d..1cc0f9e 100644 (file)
@@ -8,13 +8,14 @@ import android.content.ContentResolver;
 import android.content.ContentValues;
 import android.net.Uri;
 import android.provider.MediaStore;
-import android.support.v7.app.ActionBar;
 import android.app.Activity;
 import android.content.SharedPreferences;
 import android.preference.PreferenceManager;
 import android.util.Log;
 import android.widget.Toast;
 
+import androidx.appcompat.app.ActionBar;
+
 import jp.sourceforge.gokigen.memoma.drawers.GokigenSurfaceView;
 import jp.sourceforge.gokigen.memoma.Main;
 import jp.sourceforge.gokigen.memoma.R;
index bcf0c90..081fdff 100644 (file)
@@ -4,7 +4,6 @@ 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;
@@ -12,6 +11,8 @@ import android.widget.ArrayAdapter;
 import android.widget.ImageView;
 import android.widget.TextView;
 
+import androidx.annotation.NonNull;
+
 public class SymbolListArrayAdapter extends ArrayAdapter<SymbolListArrayItem>
 {
     private final LayoutInflater inflater;
index 253f396..7c1bc76 100644 (file)
@@ -8,9 +8,10 @@ import android.database.Cursor;
 import android.os.Bundle;
 import android.preference.PreferenceActivity;
 import android.provider.MediaStore;
-import android.support.annotation.NonNull;
 import android.util.Log;
 
+import androidx.annotation.NonNull;
+
 import jp.sourceforge.gokigen.memoma.R;
 
 /**
index 09eedbb..1e707a8 100644 (file)
@@ -1,20 +1,18 @@
 // Top-level build file where you can add configuration options common to all sub-projects/modules.
 buildscript {
     repositories {
-        jcenter()
         google()
+        mavenCentral()
     }
     dependencies {
-        classpath 'com.android.tools.build:gradle:3.1.3'
+        classpath 'com.android.tools.build:gradle:7.0.3'
     }
 }
 
 allprojects {
     repositories {
-        jcenter()
-        maven {
-            url "https://maven.google.com"
-        }
+        google()
+        mavenCentral()
     }
 }
 
diff --git a/gradle.properties b/gradle.properties
new file mode 100644 (file)
index 0000000..576580f
--- /dev/null
@@ -0,0 +1,21 @@
+# Project-wide Gradle settings.
+# IDE (e.g. Android Studio) users:
+# Gradle settings configured through the IDE *will override*
+# any settings specified in this file.
+# For more details on how to configure your build environment visit
+# http://www.gradle.org/docs/current/userguide/build_environment.html
+# Specifies the JVM arguments used for the daemon process.
+# The setting is particularly useful for tweaking memory settings.
+org.gradle.jvmargs=-Xmx4096m
+# When configured, Gradle will run in incubating parallel mode.
+# This option should only be used with decoupled projects. More details, visit
+# http://www.gradle.org/docs/current/userguide/multi_project_builds.html#sec:decoupled_projects
+# org.gradle.parallel=true
+# AndroidX package structure to make it clearer which packages are bundled with the
+# Android operating system, and which are packaged with your app"s APK
+# https://developer.android.com/topic/libraries/support-library/androidx-rn
+android.useAndroidX=true
+# Automatically convert third-party libraries to use AndroidX
+android.enableJetifier=true
+# Kotlin code style for this project: "official" or "obsolete":
+kotlin.code.style=official
\ No newline at end of file