天天看點

開源夏令營第二周

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

繼續閱讀