OSDN Git Service

add delete
[everfolder/source.git] / source / workspace / EverFolder / src / com / yuji / ef / EverFolderActivity.java
index acdd75e..14de4e2 100644 (file)
@@ -21,14 +21,18 @@ import com.yuji.ef.dao.FileNode;
 import com.yuji.ef.dao.Node;
 import com.yuji.ef.dao.Node.Status;
 import com.yuji.ef.dao.NodeDao;
+import com.yuji.ef.dao.RootNode;
 import com.yuji.ef.utility.BaseActivity;
 import com.yuji.ef.utility.EvernoteIntentUtil;
+import com.yuji.ef.utility.FolderUtil;
 
 public class EverFolderActivity extends BaseActivity {
        private IconFrameLayout layout;
        private IconScrollView scrollView;
        private Button leftButton;
        private Button rightButton;
+       private Button addButton;
+       private Button deleteButton;
 
        private Node top = null;
        private int indent = 0;
@@ -47,6 +51,8 @@ public class EverFolderActivity extends BaseActivity {
 
                        leftButton = (Button) findViewById(R.id.leftButton);
                        rightButton = (Button) findViewById(R.id.rightButton);
+                       addButton = (Button) findViewById(R.id.addButton);
+                       deleteButton = (Button) findViewById(R.id.deleteButton);
 
                        leftButton.setOnClickListener(new OnClickListener() {
                                @Override
@@ -60,8 +66,21 @@ public class EverFolderActivity extends BaseActivity {
                                        rightButtonOnClick();
                                }
                        });
+                       addButton.setOnClickListener(new OnClickListener() {
+                               @Override
+                               public void onClick(View v) {
+                                       addButtonOnClick();
+                               }
+                       });
+                       deleteButton.setOnClickListener(new OnClickListener() {
+                               @Override
+                               public void onClick(View v) {
+                                       deleteButtonOnClick();
+                               }
+                       });
 
                        updateList();
+                       setStatus();
                } catch (Exception e) {
                        // TODO
                        e.printStackTrace();
@@ -99,13 +118,13 @@ public class EverFolderActivity extends BaseActivity {
        private void updateList() {
                NodeDao dao = (NodeDao) NodeDao.getInstance();
                top = dao.searchRoot();
-               if (top == null){
+               if (top == null) {
                        // TODO
                }
-               
+
                updateList(top);
        }
-       
+
        private void updateList(Node parent) {
                viewY = 30;
 
@@ -150,7 +169,7 @@ public class EverFolderActivity extends BaseActivity {
                if (list == null) {
                        return;
                }
-               
+
                NodeDao dao = (NodeDao) NodeDao.getInstance();
                for (Long id : list) {
                        Node n = dao.searchById(id);
@@ -192,10 +211,12 @@ public class EverFolderActivity extends BaseActivity {
 
        private void leftButtonOnClick() {
                moveButtonOnClick(-1);
+               setStatus();
        }
 
        private void rightButtonOnClick() {
-                moveButtonOnClick(1);
+               moveButtonOnClick(1);
+               setStatus();
        }
 
        private void moveButtonOnClick(int dx) {
@@ -215,57 +236,84 @@ public class EverFolderActivity extends BaseActivity {
                }
        }
 
+       private void addButtonOnClick() {
+               FolderUtil util = FolderUtil.getInstance();
+               LabelIconView target = layout.getSelectedTarget();
+               long id = target.getNodeId();
+               NodeDao dao = (NodeDao) NodeDao.getInstance();
+               Node parent = dao.searchById(id);
+               if (parent != null) {
+                       DirNode node = new DirNode("XXX", null); // TODO
+                       util.addDirNode(parent, node);
+                       updateList();
+                       setStatus();
+               }
+       }
+
+       private void deleteButtonOnClick() {
+               FolderUtil util = FolderUtil.getInstance();
+               LabelIconView target = layout.getSelectedTarget();
+               long id = target.getNodeId();
+               NodeDao dao = (NodeDao) NodeDao.getInstance();
+               Node node = dao.searchById(id);
+               if (node != null) {
+                       util.deleteNode(node);
+                       // TODO 三角マークも消さないといけないのでは
+                       layout.removeView(target);
+                       updateList();
+                       setStatus();
+               }
+       }
+
        public void execute(long srcId, long dstId) {
                removeAllNodeView();
 
                // TODO
-//             if (dst instanceof DirNode) {
-//                     src.getParent().remove(src);
-//                     dst.add(src);
-//             } else if (dst instanceof FileNode) {
-//                     src.getParent().remove(src);
-//                     dst.getParent().add(src);
-//             }
+               // if (dst instanceof DirNode) {
+               // src.getParent().remove(src);
+               // dst.add(src);
+               // } else if (dst instanceof FileNode) {
+               // src.getParent().remove(src);
+               // dst.getParent().add(src);
+               // }
                NodeDao dao = (NodeDao) NodeDao.getInstance();
 
-               if (srcId < 0){
+               if (srcId < 0) {
                        // TODO
                }
-               if (dstId < 0){
+               if (dstId < 0) {
                        // TODO
                }
                Node src = dao.searchById(srcId);
                Node dst = null;
-               if (srcId == dstId){
+               if (srcId == dstId) {
                        dst = src;
-               }
-               else {
+               } else {
                        dst = dao.searchById(dstId);
                }
-               
+
                Node sp = dao.searchById(src.getParent());
-               if (sp == null){
+               if (sp == null) {
                        // TODO
                }
                Node dp = null;
-               if (src.getParent() == dst.getParent()){
+               if (src.getParent() == dst.getParent()) {
                        dp = sp;
-               }
-               else {
+               } else {
                        dp = dao.searchById(dst.getParent());
                }
-               if (dp == null){
+               if (dp == null) {
                        // TODO
                }
-               
+
                // TODO DBへのアクセス
-               //sp.remove(src.getId());
+               // sp.remove(src.getId());
                dao.remoteChildrenId(sp, src.getId());
                if (dst instanceof DirNode) {
-                       //dst.add(src.getId());
+                       // dst.add(src.getId());
                        dao.addChildrenId(dst, src.getId());
                } else if (dst instanceof FileNode) {
-                       //dp.add(src.getId());
+                       // dp.add(src.getId());
                        dao.addChildrenId(dp, src.getId());
                }
 
@@ -280,7 +328,7 @@ public class EverFolderActivity extends BaseActivity {
                Status status = node.getStatus();
 
                dao.updateStatus(node, status);
-               
+
                removeAllNodeView();
                updateList();
        }
@@ -290,12 +338,47 @@ public class EverFolderActivity extends BaseActivity {
 
                Node node = dao.searchById(id);
                String guid = node.getGuid();
-               
+
                EvernoteIntentUtil util = EvernoteIntentUtil.getInstance();
                util.viewNote(this, guid);
        }
 
+       public void targetSelectedChanged(boolean status) {
+               setStatus();
+       }
+
        public void removeAllNodeView() {
                layout.removeAllViews();
        }
+
+       private void setStatus() {
+               boolean leftButtonFlag = true;
+               boolean rightButtonFlag = true;
+               boolean addButtonFlag = true;
+               boolean deleteButtonFlag = true;
+
+               if (indent <= 0) {
+                       leftButtonFlag = false;
+               }
+
+               LabelIconView target = layout.getSelectedTarget();
+               NodeDao dao = (NodeDao) NodeDao.getInstance();
+               long id = -1;
+               Node node = null;
+               if (target != null) {
+                       id = target.getNodeId();
+                       node = dao.searchById(id);
+               }
+               if (target == null || node == null || !(node instanceof DirNode)) {
+                       addButtonFlag = false;
+               }
+               if (target == null || (node != null && node instanceof RootNode)) {
+                       deleteButtonFlag = false;
+               }
+
+               leftButton.setEnabled(leftButtonFlag);
+               rightButton.setEnabled(rightButtonFlag);
+               addButton.setEnabled(addButtonFlag);
+               deleteButton.setEnabled(deleteButtonFlag);
+       }
 }
\ No newline at end of file