OSDN Git Service

T29307
[everfolder/source.git] / source / workspace / EverFolder / src / com / yuji / ef / EverFolderActivity.java
index e9be17d..2375da6 100644 (file)
@@ -8,10 +8,8 @@ import android.content.BroadcastReceiver;
 import android.content.Context;
 import android.content.Intent;
 import android.content.IntentFilter;
-import android.content.res.Resources;
 import android.database.sqlite.SQLiteDatabase;
 import android.graphics.Bitmap;
-import android.graphics.BitmapFactory;
 import android.graphics.PixelFormat;
 import android.os.Bundle;
 import android.text.Editable;
@@ -22,6 +20,7 @@ import android.view.MenuItem;
 import android.view.View;
 import android.view.View.OnClickListener;
 import android.view.WindowManager;
+import android.view.inputmethod.InputMethodManager;
 import android.widget.Button;
 import android.widget.EditText;
 import android.widget.LinearLayout;
@@ -48,7 +47,7 @@ import com.yuji.ef.utility.ScaleUtil;
 
 public class EverFolderActivity extends BaseActivity {
        private enum ScreenStatus {
-               Normal, AddNode, RenameNode
+               Normal, AddNode, DeleteNode, RenameNode
        };
 
        private LinearLayout msgLayout;
@@ -71,6 +70,8 @@ public class EverFolderActivity extends BaseActivity {
        private BitmapCacheFactory bitmapFactory = BitmapCacheFactory.getInstance();
        private Node top = null;
        private int indent = 0;
+       private int bmpPaddingLeft;
+       private int bmpWidth;
        private int viewY;
        private boolean lock = false;
        private boolean isInit = true;
@@ -91,7 +92,6 @@ public class EverFolderActivity extends BaseActivity {
                        }
                }
        };
-       private int bmpPaddingLeft;
 
        @Override
        public void onCreate(Bundle savedInstanceState) {
@@ -148,8 +148,12 @@ public class EverFolderActivity extends BaseActivity {
 
                        msgEditText.addTextChangedListener(new TextWatcher() {
                                public void afterTextChanged(Editable s) {
-                                       String text = s.toString();
-                                       msgOkButton.setEnabled(text.length() > 0);
+                                       if (status != ScreenStatus.DeleteNode) {
+                                               String text = s.toString();
+                                               msgOkButton.setEnabled(text.length() > 0);
+                                       } else {
+                                               msgOkButton.setEnabled(true);
+                                       }
                                }
 
                                public void beforeTextChanged(CharSequence s, int start,
@@ -166,13 +170,13 @@ public class EverFolderActivity extends BaseActivity {
                        msgOkButton.setOnClickListener(new OnClickListener() {
                                @Override
                                public void onClick(View v) {
-                                       msgOkButtonOnClick();
+                                       msgOkButtonOnClick(v);
                                }
                        });
                        msgCancelButton.setOnClickListener(new OnClickListener() {
                                @Override
                                public void onClick(View v) {
-                                       msgCancelOnClick();
+                                       msgCancelOnClick(v);
                                }
                        });
 
@@ -181,8 +185,15 @@ public class EverFolderActivity extends BaseActivity {
 
                        bitmapFactory.init(this);
                        Node node = new DirNode(null, null);
-                       Bitmap bmp = bitmapFactory.get(node.getStatusIconId());
+                       Bitmap bmp = null;
+                       bmp = bitmapFactory.get(node.getStatusIconId());
                        bmpPaddingLeft = bmp.getWidth();
+                       bmp = bitmapFactory.get(node.getIconId());
+                       bmpWidth = bmp.getWidth();
+
+                       float fSize = 48 * (1 / 2.0f);
+                       leftButton.setTextSize(fSize);
+                       rightButton.setTextSize(fSize);
                } catch (Exception e) {
                        // TODO
                        e.printStackTrace();
@@ -207,6 +218,11 @@ public class EverFolderActivity extends BaseActivity {
        public boolean onMenuOpened(int featureId, Menu menu) {
                boolean ret = super.onMenuOpened(featureId, menu);
 
+               // #29304
+               if (menu == null){
+                       return false;
+               }
+               
                MenuItem item;
 
                boolean cutButtonFlag = false;
@@ -371,18 +387,7 @@ public class EverFolderActivity extends BaseActivity {
        }
 
        private void selectMenuDelete() {
-               FolderUtil util = FolderUtil.getInstance();
-               LabelIconView target = layout.getSelectedTarget();
-               long id = target.getNodeId();
-               NodeDao dao = (NodeDao) NodeCacheDao.getInstance();
-               Node node = dao.searchById(id);
-               if (node != null) {
-                       util.deleteNode(node);
-                       // TODO 三角マークも消さないといけないのでは
-                       layout.removeView(target);
-                       updateList();
-                       setStatus();
-               }
+               setStatus(ScreenStatus.DeleteNode);
        }
 
        private void selectMenuRename() {
@@ -441,7 +446,7 @@ public class EverFolderActivity extends BaseActivity {
        }
 
        private void updateList(Node parent) {
-               viewY = 30;
+               viewY = 10;
 
                // List<Node> list = parent.getChildren();
                // for (Node node : list){
@@ -449,13 +454,24 @@ public class EverFolderActivity extends BaseActivity {
                // }
                updateList(parent, 0);
                layout.setMinimumHeight(viewY);
-               layout.invalidate();
-       }
-
+               
+               scrollView.invalidate();
+               
+//             layout.invalidate();
+
+//             this.runOnUiThread(new Runnable() {
+//                     @Override
+//                     public void run() {
+//                             // ビューを再描画し,UI上で画像変更を反映
+//                             scrollView.invalidate();
+//                     }
+//             });
+       }
+       
        private void updateList(Node node, int depth) {
-               int N = 100;
-               int M = 80;
-               int x = N * (depth - indent) + 50;
+               int N = (int) (bmpWidth * 0.6);
+               int M = (int) (bmpWidth * 1.2);
+               int x = N * (depth - indent);
 
                if (depth - indent >= 0
                                && !(depth - indent == 0 && node instanceof FileNode)) {
@@ -479,8 +495,7 @@ public class EverFolderActivity extends BaseActivity {
                        // }
                        view.setNodeId(node.getId());
                }
-               ScaleUtil scaleUtil = ScaleUtil.getInstance();
-               viewY += M * scaleUtil.getScaledDensity();
+               viewY += M;
 
                if (node.getStatus() != Node.Status.OPEN) {
                        return;
@@ -494,6 +509,16 @@ public class EverFolderActivity extends BaseActivity {
                NodeDao dao = (NodeDao) NodeCacheDao.getInstance();
                for (Long id : idList) {
                        Node n = dao.searchById(id);
+                       if (n == null){
+                               // TODO
+                               continue;
+                       }
+                       if (n instanceof DirNode){
+                               DirNode d = (DirNode)n;
+                               if (isNoteBook(d) && !d.isSelected()){
+                                       continue;
+                               }
+                       }
                        list.add(n);
                }
                Collections.sort(list, nodeComparator);
@@ -533,12 +558,35 @@ public class EverFolderActivity extends BaseActivity {
        protected void onActivityResult(int requestCode, int resultCode, Intent data) {
                // updateList();
                // setStatus();
+               NodeDao dao = (NodeDao) NodeCacheDao.getInstance();
+               if (dao.isEmpty()) {
+                       finish();
+               }
                isInit = true;
        }
 
        @Override
        protected void onStart() {
                super.onStart();
+       }
+
+       @Override
+       protected void onResume() {
+               super.onResume();
+
+               NodeDao dao = (NodeDao) NodeCacheDao.getInstance();
+               if (dao.isEmpty()) {
+                       if (isInit) {
+                               Intent intent = new Intent(this,
+                                               (Class<?>) SettingActivity.class);
+                               startActivityForResult(intent, 0);
+
+                               isInit = false;
+                       } else {
+                               finish();
+                               isInit = true;
+                       }
+               }
 
                LockDao lockDao = (LockDao) LockDao.getInstance();
                lock = lockDao.lock(this, Constant.LOCK_UPDATE_NOTE);
@@ -614,7 +662,7 @@ public class EverFolderActivity extends BaseActivity {
        // }
        // }
 
-       private void msgOkButtonOnClick() {
+       private void msgOkButtonOnClick(View v) {
                FolderUtil util = FolderUtil.getInstance();
                LabelIconView target = layout.getSelectedTarget();
                NodeDao dao = (NodeDao) NodeCacheDao.getInstance();
@@ -627,6 +675,15 @@ public class EverFolderActivity extends BaseActivity {
                                DirNode node = new DirNode(text, null);
                                util.addDirNode(parent, node);
                        }
+                       layout.setCutTarget(null, false);
+               } else if (status == ScreenStatus.DeleteNode) {
+                       long id = target.getNodeId();
+                       Node node = dao.searchById(id);
+                       if (node != null) {
+                               util.deleteNode(node);
+                               layout.removeView(target);
+                       }
+                       layout.setCutTarget(null, false);
                } else if (status == ScreenStatus.RenameNode) {
                        long id = target.getNodeId();
                        Node node = dao.searchById(id);
@@ -635,16 +692,27 @@ public class EverFolderActivity extends BaseActivity {
 
                                dao.updateName(node, text);
                        }
+                       layout.setCutTarget(null, false);
                }
+               
+               closeIME(v);
+               
                layout.clearTarget();
                updateList();
                setStatus(ScreenStatus.Normal);
        }
 
-       private void msgCancelOnClick() {
+       private void msgCancelOnClick(View v) {
+               closeIME(v);
+               
                setStatus(ScreenStatus.Normal);
        }
 
+       private void closeIME(View v){
+               InputMethodManager imm = (InputMethodManager)getSystemService(Context.INPUT_METHOD_SERVICE);
+               imm.hideSoftInputFromWindow(v.getWindowToken(),0);
+       }
+       
        public void execute(long srcId, long dstId) {
                try {
                        removeAllNodeView();
@@ -702,7 +770,7 @@ public class EverFolderActivity extends BaseActivity {
                                        dao.addChildrenIdNT(dst, src.getId());
                                } else if (dst instanceof FileNode) {
                                        // dp.add(src.getId());
-                                       dao.updateParentNT(src, dst.getId());
+                                       dao.updateParentNT(src, dp.getId());
                                        dao.addChildrenIdNT(dp, src.getId());
                                }
 
@@ -755,6 +823,9 @@ public class EverFolderActivity extends BaseActivity {
                NodeDao dao = (NodeDao) NodeCacheDao.getInstance();
 
                Node node = dao.searchById(id);
+               if (!isFileNode(node)) {
+                       return;
+               }
                String guid = node.getGuid();
 
                EvernoteIntentUtil util = EvernoteIntentUtil.getInstance();
@@ -836,7 +907,16 @@ public class EverFolderActivity extends BaseActivity {
 
                                leftButton.setEnabled(false);
                                rightButton.setEnabled(false);
+                       } else if (status == ScreenStatus.DeleteNode) {
+                               msgLayout.setVisibility(View.VISIBLE);
+                               msgEditText.setVisibility(View.GONE);
+                               msgButtonLayout.setVisibility(View.VISIBLE);
+                               confirmMsg.setText(getString(R.string.mainDeleteMsg));
+
+                               layout.setElabledTouchEvent(false);
 
+                               leftButton.setEnabled(false);
+                               rightButton.setEnabled(false);
                        } else if (status == ScreenStatus.RenameNode) {
                                msgLayout.setVisibility(View.VISIBLE);
                                msgEditText.setVisibility(View.VISIBLE);