You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

144 lines
9.1 KiB

<html>
<head>
<title>GTaskASyncTask.java</title>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<style type="text/css">
.s0 { color: #080808;}
.s1 { color: #8c8c8c; font-style: italic;}
.s2 { color: #0033b3;}
.s3 { color: #1750eb;}
</style>
</head>
<body bgcolor="#ffffff">
<table CELLSPACING=0 CELLPADDING=5 COLS=1 WIDTH="100%" BGCOLOR="#c0c0c0" >
<tr><td><center>
<font face="Arial, Helvetica" color="#000000">
GTaskASyncTask.java</font>
</center></td></tr></table>
<pre>
<span class="s1">/*
* Copyright (c) 2010-2011, The MiCode Open Source Community (www.micode.net)
*
* Licensed under the Apache License, Version 2.0 (the &quot;License&quot;);
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an &quot;AS IS&quot; BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/</span>
<span class="s2">package </span><span class="s0">net.micode.notes.gtask.remote;</span>
<span class="s2">import </span><span class="s0">android.app.Notification;</span>
<span class="s2">import </span><span class="s0">android.app.NotificationManager;</span>
<span class="s2">import </span><span class="s0">android.app.PendingIntent;</span>
<span class="s2">import </span><span class="s0">android.content.Context;</span>
<span class="s2">import </span><span class="s0">android.content.Intent;</span>
<span class="s2">import </span><span class="s0">android.os.AsyncTask;</span>
<span class="s2">import </span><span class="s0">net.micode.notes.R;</span>
<span class="s2">import </span><span class="s0">net.micode.notes.ui.NotesListActivity;</span>
<span class="s2">import </span><span class="s0">net.micode.notes.ui.NotesPreferenceActivity;</span>
<span class="s2">public class </span><span class="s0">GTaskASyncTask </span><span class="s2">extends </span><span class="s0">AsyncTask&lt;Void, String, Integer&gt; {</span>
<span class="s2">private static int </span><span class="s0">GTASK_SYNC_NOTIFICATION_ID = </span><span class="s3">5234235</span><span class="s0">;</span>
<span class="s2">public interface </span><span class="s0">OnCompleteListener {</span>
<span class="s2">void </span><span class="s0">onComplete();</span>
<span class="s0">}</span>
<span class="s2">private </span><span class="s0">Context mContext;</span>
<span class="s2">private </span><span class="s0">NotificationManager mNotifiManager;</span>
<span class="s2">private </span><span class="s0">GTaskManager mTaskManager;</span>
<span class="s2">private </span><span class="s0">OnCompleteListener mOnCompleteListener;</span>
<span class="s2">public </span><span class="s0">GTaskASyncTask(Context context, OnCompleteListener listener) {</span>
<span class="s0">mContext = context;</span>
<span class="s0">mOnCompleteListener = listener;</span>
<span class="s0">mNotifiManager = (NotificationManager) mContext</span>
<span class="s0">.getSystemService(Context.NOTIFICATION_SERVICE);</span>
<span class="s0">mTaskManager = GTaskManager.getInstance();</span>
<span class="s0">}</span>
<span class="s2">public void </span><span class="s0">cancelSync() {</span>
<span class="s0">mTaskManager.cancelSync();</span>
<span class="s0">}</span>
<span class="s2">public void </span><span class="s0">publishProgess(String message) {</span>
<span class="s0">publishProgress(</span><span class="s2">new </span><span class="s0">String[]{</span>
<span class="s0">message</span>
<span class="s0">});</span>
<span class="s0">}</span>
<span class="s2">private void </span><span class="s0">showNotification(</span><span class="s2">int </span><span class="s0">tickerId, String content) {</span>
<span class="s0">PendingIntent pendingIntent;</span>
<span class="s2">if </span><span class="s0">(tickerId != R.string.ticker_success) {</span>
<span class="s0">pendingIntent = PendingIntent.getActivity(mContext, </span><span class="s3">0</span><span class="s0">, </span><span class="s2">new </span><span class="s0">Intent(mContext,</span>
<span class="s0">NotesPreferenceActivity.</span><span class="s2">class</span><span class="s0">), PendingIntent.FLAG_IMMUTABLE);</span>
<span class="s0">} </span><span class="s2">else </span><span class="s0">{</span>
<span class="s0">pendingIntent = PendingIntent.getActivity(mContext, </span><span class="s3">0</span><span class="s0">, </span><span class="s2">new </span><span class="s0">Intent(mContext,</span>
<span class="s0">NotesListActivity.</span><span class="s2">class</span><span class="s0">), PendingIntent.FLAG_IMMUTABLE);</span>
<span class="s0">}</span>
<span class="s0">Notification.Builder builder = </span><span class="s2">new </span><span class="s0">Notification.Builder(mContext)</span>
<span class="s0">.setAutoCancel(</span><span class="s2">true</span><span class="s0">)</span>
<span class="s0">.setContentTitle(mContext.getString(R.string.app_name))</span>
<span class="s0">.setContentText(content)</span>
<span class="s0">.setContentIntent(pendingIntent)</span>
<span class="s0">.setWhen(System.currentTimeMillis())</span>
<span class="s0">.setOngoing(</span><span class="s2">true</span><span class="s0">);</span>
<span class="s0">Notification notification = builder.getNotification();</span>
<span class="s0">mNotifiManager.notify(GTASK_SYNC_NOTIFICATION_ID, notification);</span>
<span class="s0">}</span>
<span class="s0">@Override</span>
<span class="s2">protected </span><span class="s0">Integer doInBackground(Void... unused) {</span>
<span class="s0">publishProgess(mContext.getString(R.string.sync_progress_login, NotesPreferenceActivity</span>
<span class="s0">.getSyncAccountName(mContext)));</span>
<span class="s2">return </span><span class="s0">mTaskManager.sync(mContext, </span><span class="s2">this</span><span class="s0">);</span>
<span class="s0">}</span>
<span class="s0">@Override</span>
<span class="s2">protected void </span><span class="s0">onProgressUpdate(String... progress) {</span>
<span class="s0">showNotification(R.string.ticker_syncing, progress[</span><span class="s3">0</span><span class="s0">]);</span>
<span class="s2">if </span><span class="s0">(mContext </span><span class="s2">instanceof </span><span class="s0">GTaskSyncService) {</span>
<span class="s0">((GTaskSyncService) mContext).sendBroadcast(progress[</span><span class="s3">0</span><span class="s0">]);</span>
<span class="s0">}</span>
<span class="s0">}</span>
<span class="s0">@Override</span>
<span class="s2">protected void </span><span class="s0">onPostExecute(Integer result) {</span>
<span class="s2">if </span><span class="s0">(result == GTaskManager.STATE_SUCCESS) {</span>
<span class="s0">showNotification(R.string.ticker_success, mContext.getString(</span>
<span class="s0">R.string.success_sync_account, mTaskManager.getSyncAccount()));</span>
<span class="s0">NotesPreferenceActivity.setLastSyncTime(mContext, System.currentTimeMillis());</span>
<span class="s0">} </span><span class="s2">else if </span><span class="s0">(result == GTaskManager.STATE_NETWORK_ERROR) {</span>
<span class="s0">showNotification(R.string.ticker_fail, mContext.getString(R.string.error_sync_network));</span>
<span class="s0">} </span><span class="s2">else if </span><span class="s0">(result == GTaskManager.STATE_INTERNAL_ERROR) {</span>
<span class="s0">showNotification(R.string.ticker_fail, mContext.getString(R.string.error_sync_internal));</span>
<span class="s0">} </span><span class="s2">else if </span><span class="s0">(result == GTaskManager.STATE_SYNC_CANCELLED) {</span>
<span class="s0">showNotification(R.string.ticker_cancel, mContext</span>
<span class="s0">.getString(R.string.error_sync_cancelled));</span>
<span class="s0">}</span>
<span class="s2">if </span><span class="s0">(mOnCompleteListener != </span><span class="s2">null</span><span class="s0">) {</span>
<span class="s2">new </span><span class="s0">Thread(</span><span class="s2">new </span><span class="s0">Runnable() {</span>
<span class="s2">public void </span><span class="s0">run() {</span>
<span class="s0">mOnCompleteListener.onComplete();</span>
<span class="s0">}</span>
<span class="s0">}).start();</span>
<span class="s0">}</span>
<span class="s0">}</span>
<span class="s0">}</span>
</pre>
</body>
</html>