整個第二周做的工作便是通讀代碼,了解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的背景具體操作我也會在接下來幾日持續更新。