Skip to content

Commit

Permalink
Merge pull request #17 from KTachibanaM/source-pull-to-refresh
Browse files Browse the repository at this point in the history
Source pull to refresh
  • Loading branch information
KTachibanaM committed Jun 1, 2015
2 parents 7833739 + 9a8a544 commit c913cab
Show file tree
Hide file tree
Showing 27 changed files with 318 additions and 232 deletions.
20 changes: 10 additions & 10 deletions CloudEmoji/src/main/AndroidManifest.xml
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="org.ktachibana.cloudemoji" >
package="org.ktachibana.cloudemoji">

<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED" />
Expand All @@ -15,7 +15,7 @@
android:allowBackup="true"
android:icon="@drawable/ic_launcher"
android:label="@string/app_name"
android:theme="@style/AppTheme" >
android:theme="@style/AppTheme">
<meta-data
android:name="DATABASE"
android:value="ce.db" />
Expand All @@ -32,7 +32,7 @@
<activity
android:name=".activities.MainActivity"
android:label="@string/app_name"
android:launchMode="singleTop" >
android:launchMode="singleTop">
<intent-filter>
<action android:name="android.intent.action.MAIN" />

Expand All @@ -43,7 +43,7 @@
<activity-alias
android:name=".activities.AssistActivity"
android:enabled="false"
android:targetActivity=".activities.MainActivity" >
android:targetActivity=".activities.MainActivity">
<intent-filter>
<action android:name="android.intent.action.ASSIST" />

Expand All @@ -57,14 +57,14 @@

<activity
android:name=".activities.PreferenceActivity"
android:label="@string/title_activity_settings" >
android:label="@string/title_activity_settings">
<meta-data
android:name="android.support.PARENT_ACTIVITY"
android:value="org.ktachibana.cloudemoji.activities.MainActivity" />
</activity>
<activity
android:name=".activities.RepositoryManagerActivity"
android:label="@string/repo_manager" >
android:label="@string/repo_manager">
<meta-data
android:name="android.support.PARENT_ACTIVITY"
android:value="org.ktachibana.cloudemoji.activities.MainActivity" />
Expand All @@ -78,23 +78,23 @@
android:name=".receivers.BootUpReceiver"
android:enabled="true"
android:exported="true"
android:label="StartMyServiceAtBootReceiver" >
android:label="StartMyServiceAtBootReceiver">
<intent-filter>
<action android:name="android.intent.action.BOOT_COMPLETED" />
</intent-filter>
</receiver>

<activity
android:name=".activities.AccountActivity"
android:label="@string/account" >
android:label="@string/account">
<meta-data
android:name="android.support.PARENT_ACTIVITY"
android:value="org.ktachibana.cloudemoji.activities.MainActivity" />
</activity>
<activity
android:name=".activities.SearchActivity"
android:label=""
android:launchMode="singleTop" >
android:launchMode="singleTop">
<meta-data
android:name="android.app.searchable"
android:resource="@xml/searchable" />
Expand All @@ -109,7 +109,7 @@
</activity>
<activity
android:name=".activities.RepositoryStoreActivity"
android:label="@string/repository_store" >
android:label="@string/repository_store">

<meta-data
android:name="android.support.PARENT_ACTIVITY"
Expand Down
Original file line number Diff line number Diff line change
@@ -1,5 +1,7 @@
package org.ktachibana.cloudemoji;

import android.content.Context;

import com.orm.SugarApp;

import org.acra.ReportingInteractionMode;
Expand All @@ -11,8 +13,16 @@
mode = ReportingInteractionMode.TOAST,
resToastText = R.string.fail)
public class BaseApplication extends SugarApp {

private static Context CONTEXT;

@Override
public void onCreate() {
super.onCreate();
CONTEXT = getApplicationContext();
}

public static Context context() {
return CONTEXT;
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,34 @@
package org.ktachibana.cloudemoji;

import com.loopj.android.http.AsyncHttpClient;

import org.ktachibana.cloudemoji.utils.Utils;

import java.util.List;

public class BaseHttpClient {
protected AsyncHttpClient mClient;
protected static Exception NETWORK_UNAVAILABLE_EXCEPTION = new Exception(BaseApplication.context().getString(R.string.bad_conn));

public interface BaseCallback {
void fail(Throwable t);

void finish();
}

public interface IntCallback extends BaseCallback {
void success(int result);
}

public interface ListCallback<T> extends BaseCallback {
void success(List<T> result);
}

public interface ObjectCallback<T> extends BaseCallback {
void success(T result);
}

public BaseHttpClient() {
mClient = new AsyncHttpClient();
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -99,7 +99,7 @@ public void onFinish() {
register.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
if (Utils.networkAvailable(AccountActivity.this)) {
if (Utils.networkAvailable()) {
mProgressDialog.setMessage(getString(R.string.registering));
mProgressDialog.show();
new ApiClient()
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -26,25 +26,25 @@
import com.mikepenz.materialdrawer.model.DividerDrawerItem;
import com.mikepenz.materialdrawer.model.PrimaryDrawerItem;
import com.mikepenz.materialdrawer.model.interfaces.IDrawerItem;
import com.orm.SugarApp;
import com.orm.query.Condition;
import com.orm.query.Select;

import org.apache.commons.io.IOUtils;
import org.ktachibana.cloudemoji.BaseActivity;
import org.ktachibana.cloudemoji.BaseApplication;
import org.ktachibana.cloudemoji.BaseHttpClient;
import org.ktachibana.cloudemoji.Constants;
import org.ktachibana.cloudemoji.R;
import org.ktachibana.cloudemoji.events.FavoriteAddedEvent;
import org.ktachibana.cloudemoji.events.FavoriteDeletedEvent;
import org.ktachibana.cloudemoji.events.UpdateCheckedEvent;
import org.ktachibana.cloudemoji.fragments.EmojiconsFragment;
import org.ktachibana.cloudemoji.fragments.FavoriteFragment;
import org.ktachibana.cloudemoji.fragments.HistoryFragment;
import org.ktachibana.cloudemoji.fragments.RepositoriesFragment;
import org.ktachibana.cloudemoji.models.inmemory.Source;
import org.ktachibana.cloudemoji.models.persistence.Favorite;
import org.ktachibana.cloudemoji.models.persistence.Repository;
import org.ktachibana.cloudemoji.net.UpdateChecker;
import org.ktachibana.cloudemoji.net.VersionCodeCheckerClient;
import org.ktachibana.cloudemoji.parsing.SourceParsingException;
import org.ktachibana.cloudemoji.parsing.SourceReader;
import org.ktachibana.cloudemoji.utils.NotificationHelper;
Expand Down Expand Up @@ -290,11 +290,9 @@ public void onEvent(FavoriteDeletedEvent event) {
showSnackBar(event.getEmoticon() + "\n" + getString(R.string.removed_from_fav));
}

public void onEvent(UpdateCheckedEvent event) {
int latestVersionCode = event.getVercode();

private void checkVersionCode(boolean success, int latestVersionCode) {
// If failed
if (latestVersionCode == 0) {
if (!success) {
showSnackBar(R.string.update_checker_failed);
return;
}
Expand Down Expand Up @@ -414,8 +412,7 @@ private void setupDefaultRepoIfNotExists() {

// Load file from assets and save to file system
inputStream = getAssets().open("test.xml");
File file = new File(
SugarApp.getSugarContext().getFilesDir(), defaultRepository.getFileName());
File file = new File(BaseApplication.context().getFilesDir(), defaultRepository.getFileName());
outputStream = new FileOutputStream(file);

// Copying
Expand Down Expand Up @@ -540,7 +537,22 @@ private void refreshUiWithCurrentState() {
}

if (listItemId == LIST_ITEM_UPDATE_CHECKER_ID) {
new UpdateChecker().checkForLatestVercode();
new VersionCodeCheckerClient().checkForLatestVersionCode(new BaseHttpClient.IntCallback() {
@Override
public void success(int result) {
checkVersionCode(true, result);
}

@Override
public void fail(Throwable t) {
checkVersionCode(false, 0);
}

@Override
public void finish() {

}
});
mState.revertToPreviousId();
}
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -4,20 +4,15 @@
import android.widget.ListView;

import com.afollestad.materialdialogs.MaterialDialog;
import com.loopj.android.http.AsyncHttpClient;
import com.loopj.android.http.JsonHttpResponseHandler;

import org.apache.http.Header;
import org.json.JSONArray;
import org.json.JSONException;
import org.json.JSONObject;
import org.ktachibana.cloudemoji.BaseActivity;
import org.ktachibana.cloudemoji.Constants;
import org.ktachibana.cloudemoji.BaseHttpClient;
import org.ktachibana.cloudemoji.R;
import org.ktachibana.cloudemoji.adapters.RepositoryStoreListViewAdapter;
import org.ktachibana.cloudemoji.events.RepositoryAddedEvent;
import org.ktachibana.cloudemoji.events.RepositoryDuplicatedEvent;
import org.ktachibana.cloudemoji.models.inmemory.StoreRepository;
import org.ktachibana.cloudemoji.net.RepositoryStoreDownloaderClient;
import org.ktachibana.cloudemoji.utils.UncancelableProgressMaterialDialogBuilder;

import java.util.ArrayList;
Expand All @@ -27,7 +22,7 @@
import butterknife.InjectView;
import de.greenrobot.event.EventBus;

public class RepositoryStoreActivity extends BaseActivity implements Constants {
public class RepositoryStoreActivity extends BaseActivity {
private static final String STATE_TAG = "state";
private List<StoreRepository> mRepositories;

Expand All @@ -53,42 +48,21 @@ protected void onCreate(Bundle savedInstanceState) {
.content(R.string.downloading)
.show();

new AsyncHttpClient().get(
this,
STORE_URL,
new JsonHttpResponseHandler() {
new RepositoryStoreDownloaderClient().downloadRepositoryStore(
new BaseHttpClient.ListCallback<StoreRepository>() {
@Override
public void onSuccess(int statusCode, Header[] headers, JSONArray response) {
List<StoreRepository> repositories = new ArrayList<>();
try {
for (int i = 0; i < response.length(); i++) {
JSONObject object = response.getJSONObject(i);
String alias = object.getString("name");
String url = object.getString("codeurl");
String description = object.getString("introduction");
String author = object.getString("creator");
String authorUrl = object.getString("creatorurl");
String authorIconUrl = object.getString("iconurl");
StoreRepository repository = new StoreRepository(
alias, url, description, author, authorUrl, authorIconUrl
);
repositories.add(repository);
}
mRepositories = repositories;
showRepositoryStore();
} catch (JSONException e) {
showSnackBar(e.getLocalizedMessage());
}
public void success(List<StoreRepository> result) {
mRepositories = result;
showRepositoryStore();
}

@Override
public void onFailure(int statusCode, Header[] headers, String responseString, Throwable throwable) {
showSnackBar(throwable.getLocalizedMessage());
public void fail(Throwable t) {
showSnackBar(t.getLocalizedMessage());
}

@Override
public void onFinish() {
// Dismiss the dialog
public void finish() {
dialog.dismiss();
}
});
Expand Down
Loading

0 comments on commit c913cab

Please sign in to comment.