Cleaned up add on adapter and made it work. Next step is locale plugin. Also added some help to backup preferences

pull/14/head
Tim Su 16 years ago
parent ca8a74d755
commit 29145c7b32

@ -1,7 +1,8 @@
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.timsu.astrid"
android:versionName="3.0.0-beta2" android:versionCode="137">
android:versionName="3.0.0-beta2" android:versionCode="137"
android:installLocation="auto">
<!-- ================================================== Used Permissions = -->
@ -51,7 +52,6 @@
<application android:icon="@drawable/icon"
android:label="@string/app_name">
<!-- android:installLocation="auto"> -->
<!-- ====================================================== Activities = -->

@ -10,5 +10,5 @@
# Indicates whether an apk should be generated for each density.
split.density=false
# Project target.
target=android-4
target=android-8
apk-configurations=

@ -2,6 +2,8 @@ package com.todoroo.astrid.backup;
import java.util.Date;
import android.content.DialogInterface;
import android.content.Intent;
import android.content.res.Resources;
import android.graphics.Color;
import android.os.Bundle;
@ -15,6 +17,8 @@ import com.todoroo.andlib.service.Autowired;
import com.todoroo.andlib.utility.DateUtilities;
import com.todoroo.andlib.utility.DialogUtilities;
import com.todoroo.andlib.widget.TodorooPreferences;
import com.todoroo.astrid.activity.AddOnActivity;
import com.todoroo.astrid.core.PluginServices;
import com.todoroo.astrid.utility.Preferences;
/**
@ -57,6 +61,30 @@ public class BackupPreferences extends TodorooPreferences {
view.setBackgroundColor(statusColor);
}
});
if(!PluginServices.getAddOnService().isPowerPack()) {
Preference restorePreference = new Preference(this);
restorePreference.setTitle(R.string.backup_BPr_how_to_restore);
restorePreference.setOnPreferenceClickListener(new OnPreferenceClickListener() {
@Override
public boolean onPreferenceClick(Preference preference) {
dialogUtilities.okCancelDialog(BackupPreferences.this,
getString(R.string.DLG_information_title),
getString(R.string.backup_BPr_how_to_restore_dialog),
new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
Intent intent = new Intent(BackupPreferences.this,
AddOnActivity.class);
intent.putExtra(AddOnActivity.TOKEN_START_WITH_AVAILABLE, true);
startActivity(intent);
}
}, null);
return false;
}
});
getPreferenceScreen().addPreference(restorePreference);
}
}
@Override

@ -28,7 +28,7 @@ public class TimerControlSet implements TaskEditControlSet {
DependencyInjectionService.getInstance().inject(this);
this.activity = activity;
LayoutInflater.from(activity).inflate(R.layout.gcal_control, parent, true);
LayoutInflater.from(activity).inflate(R.layout.timer_control, parent, true);
estimated = new TimeDurationTaskEditControlSet(Task.ESTIMATED_SECONDS,
R.id.estimatedDuration, 0, R.string.DLG_hour_minutes,

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.2 KiB

@ -42,6 +42,7 @@
android:layout_below="@id/title"
android:layout_toRightOf="@id/icon"
android:singleLine="false"
android:textSize="11sp"
style="@style/TextAppearance.TAd_ItemDetails"/>
</LinearLayout>
@ -63,7 +64,7 @@
<ImageView android:id="@+id/check"
android:layout_width="48dip"
android:layout_height="48dip"
android:scaleType="fitCenter"
android:scaleType="center"
android:layout_gravity="center"
android:src="@android:drawable/checkbox_on_background"/>

@ -7,7 +7,8 @@
android:paddingTop="4dip"
android:paddingBottom="4dip"
android:paddingLeft="4dip"
android:paddingRight="10dip"
android:paddingRight="4dip"
android:minHeight="40dip"
android:orientation="vertical">
<LinearLayout android:id="@+id/task_row"

@ -267,7 +267,7 @@
style="@style/TextAppearance.TLA_NoItems" />
<Button android:id="@+id/addons_button"
android:layout_width="fill_parent"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:padding="10dip"
android:text="@string/TEA_addons_button" />

@ -53,8 +53,7 @@
<!-- Task List -->
<ListView android:id="@android:id/list"
android:scrollbars="vertical"
android:cacheColorHint="#00000000"
android:paddingRight="8dip"
android:cacheColorHint="#00000000"
android:layout_width="fill_parent"
android:layout_height="fill_parent"/>

@ -30,6 +30,11 @@
<string name="backup_BPr_auto_disabled">Automatic Backups Disabled</string>
<!-- Preference: Automatic Backup Description (when enabled) -->
<string name="backup_BPr_auto_enabled">Backup will occur daily</string>
<!-- Preference screen restoring Tasks Help -->
<string name="backup_BPr_how_to_restore">How do I restore backups?</string>
<!-- Preference screen Restoring Tasks Help Dialog Text-->
<string name="backup_BPr_how_to_restore_dialog">You need to add the Astrid Power Pack to manage and restore your backups. As a favor, Astrid also automatically backs up your tasks, just in case.</string>
<!-- ================================================= BackupActivity == -->

@ -14,6 +14,7 @@
<style name="Theme" parent="android:Theme">
<item name="android:windowBackground">@null</item>
<item name="android:fadeScrollbars">true</item>
</style>
<!--=============================================== TaskListActivity == -->

@ -41,6 +41,7 @@ import android.view.LayoutInflater;
import android.view.Menu;
import android.view.MenuItem;
import android.view.View;
import android.view.ViewGroup;
import android.view.ViewGroup.LayoutParams;
import android.widget.AdapterView;
import android.widget.ArrayAdapter;
@ -216,6 +217,7 @@ public final class TaskEditActivity extends TabActivity {
LinearLayout addonsAddons = (LinearLayout) findViewById(R.id.tab_addons_addons);
if(addOnService.isPowerPack()) {
controls.add(new GCalControlSet(this, addonsAddons));
separator(addonsAddons);
controls.add(new TimerControlSet(this, addonsAddons));
}
@ -243,6 +245,17 @@ public final class TaskEditActivity extends TabActivity {
setUpListeners();
}
/**
* Creates a separator in the view group specified
* @return
*/
private void separator(ViewGroup parent) {
View view = new View(this);
view.setBackgroundResource(R.drawable.black_white_gradient);
view.setPadding(2, 3, 2, 3);
parent.addView(view);
}
/**
* @return true if task is newly created
*/

@ -51,7 +51,8 @@ public class AddOnAdapter extends ArrayAdapter<AddOn> {
@Override
public void onClick(View v) {
Intent intent = (Intent) v.getTag();
activity.startActivity(intent);
if(intent != null)
activity.startActivity(intent);
}
};
@ -101,13 +102,13 @@ public class AddOnAdapter extends ArrayAdapter<AddOn> {
viewHolder.web.setVisibility(View.VISIBLE);
Intent webPageIntent = new Intent(Intent.ACTION_VIEW,
Uri.parse(item.getWebPage()));
viewHolder.web.setTag(webPageIntent);
Drawable icon = getIntentIcon(webPageIntent);
if(icon == null)
viewHolder.web.setImageResource(
android.R.drawable.presence_online);
else
viewHolder.web.setImageDrawable(icon);
viewHolder.web.setTag(webPageIntent);
} else {
viewHolder.web.setVisibility(View.GONE);
}
@ -121,8 +122,7 @@ public class AddOnAdapter extends ArrayAdapter<AddOn> {
Intent marketIntent = new Intent(Intent.ACTION_VIEW,
Uri.parse("market://search?q=pname:" + //$NON-NLS-1$
item.getPackageName()));
marketIntent.setClassName("com.android.vending", //$NON-NLS-1$
"com.android.vending.SearchAssetListActivity"); //$NON-NLS-1$
viewHolder.market.setTag(marketIntent);
Drawable icon = getIntentIcon(marketIntent);
if(icon == null)
viewHolder.market.setImageResource(

@ -9,7 +9,8 @@ import android.app.AlertDialog;
import android.content.Context;
import android.content.DialogInterface;
import android.content.Intent;
import android.content.pm.ApplicationInfo;
import android.content.pm.PackageInfo;
import android.content.pm.PackageManager;
import android.content.res.Resources;
import android.graphics.drawable.BitmapDrawable;
import android.net.Uri;
@ -147,19 +148,19 @@ public class AddOnService {
*/
private boolean isInstalled(String packageName, boolean internal) {
Context context = ContextManager.getContext();
ApplicationInfo applicationInfo;
PackageInfo packageInfo;
try {
applicationInfo = context.getPackageManager().getApplicationInfo(
packageName, 0);
packageInfo = context.getPackageManager().getPackageInfo(packageName,
PackageManager.GET_SIGNATURES);
} catch (Exception e) {
return false;
}
if(applicationInfo == null)
if(packageInfo == null)
return false;
if(!internal)
return true;
return applicationInfo.uid == context.getApplicationInfo().uid;
return "30820265308201cea00302010202044954bd9c300d06092a864886f70d01010505003076310b3009060355040613025553310b3009060355040813024341311230100603550407130950616c6f20416c746f31183016060355040a130f6173747269642e6c7632352e636f6d311b3019060355040b131241737472696420446576656c6f706d656e74310f300d0603550403130654696d2053753020170d3038313232363131313835325a180f32303633303932393131313835325a3076310b3009060355040613025553310b3009060355040813024341311230100603550407130950616c6f20416c746f31183016060355040a130f6173747269642e6c7632352e636f6d311b3019060355040b131241737472696420446576656c6f706d656e74310f300d0603550403130654696d20537530819f300d06092a864886f70d010101050003818d00308189028181008b8f39e02a50e5f50723bb71208e99bd72dd3cb6266054809cce0dc33a38ebf79c2a1ab74264cc6c88d44a5092e34f45fc28c53188ebe5b7511f0e14862598a82e1a84b0c99e62b0603737c09501b92f723d9e561a0eedbc16ab494e93a513d170135e0e55af6bb40a9af1186df4cfe53ec3a6144336f9f8a338341656c5a3bd0203010001300d06092a864886f70d01010505000381810016352860629e5e17d2d747943170ddb8c01f014932cb4462f52295c2f764970e93fa461c73b44a678ecf8ab8480702fb746221a98ade8ab7562cae151be78973dfa47144d70b8d0b73220dd741755f62cc9230264f570ec21a4ab1f11b0528d799d3662d06354b56d0d7d28d05c260876a98151fb4e89b6ce2a5010c52b3e365".equals(packageInfo.signatures[0].toCharsString());
}
/**
@ -180,7 +181,7 @@ public class AddOnService {
list[1] = new AddOn(false, true, "Astrid Locale Plugin", null,
"Allows Astrid to make use of the Locale application to send you notifications based on filter conditions. Requires Locale",
LOCALE_PACKAGE, "http://www.weloveastrid.com/store",
((BitmapDrawable)r.getDrawable(R.drawable.icon_pp)).getBitmap());
((BitmapDrawable)r.getDrawable(R.drawable.icon_locale)).getBitmap());
return list;
}

Loading…
Cancel
Save