整个第二周做的工作便是通读代码,了解seafile的整个工作过程,并且又试着做了下删除的操作。前几日导师匆匆忙忙地联系我,我的删除操作的解决方法有着致命的问题:seafile的删除不等同于普通的文件删除,seafile的所有操作几乎都是在云端实现的,所以这就需要app通过调用seafile提供的web api来实现文件复制删除操作。
seafile web api地址:https://github.com/haiwen/seafile/wiki/Seafile-web-API
经过导师指正后这几日便根据重命名操作照猫画虎。
首先是在quick action bar 中新建一个delete按钮,参照NewQuickAction给出的demo,代码如下:
private static final int ACTION_ID_DELETE = 4;
ActionItem deleteAction;
deleteAction = new ActionItem(ACTION_ID_DELETE,
resources.getString(R.string.file_action_delete),
resources.getDrawable(R.drawable.action_delete));
mQuickAction.addActionItem(deleteAction);
然后通过点击监听函数传参到BrowserActivity中,建立delete函数,并且针对文件、文件夹要分别进行不同的操作。
由于不管是rename还是delete都需要弹出个dialog框来让用户确认,所以也需要一个新的dialog类,来将信息传入DataManger中,最终在SeafConnection.java文件中实现调用web api。
如rename中调用web api的核心语句:
String suffix = isdir ? "/dir/" : "/file/";
HttpRequest req = prepareApiPostRequest("api2/repos/" + repoID + suffix, true, params);
其中params是一个string到object的映射
接着便是对各种可能出现的bug的throw和catch
但目前存在一个问题,对于web api的使用方法并没有完全明白,还需进一步查资料和咨询导师。
关于delete的后台具体操作我也会在接下来几日持续更新。