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

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

@ -2,6 +2,8 @@ package com.todoroo.astrid.backup;
import java.util.Date; import java.util.Date;
import android.content.DialogInterface;
import android.content.Intent;
import android.content.res.Resources; import android.content.res.Resources;
import android.graphics.Color; import android.graphics.Color;
import android.os.Bundle; 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.DateUtilities;
import com.todoroo.andlib.utility.DialogUtilities; import com.todoroo.andlib.utility.DialogUtilities;
import com.todoroo.andlib.widget.TodorooPreferences; import com.todoroo.andlib.widget.TodorooPreferences;
import com.todoroo.astrid.activity.AddOnActivity;
import com.todoroo.astrid.core.PluginServices;
import com.todoroo.astrid.utility.Preferences; import com.todoroo.astrid.utility.Preferences;
/** /**
@ -57,6 +61,30 @@ public class BackupPreferences extends TodorooPreferences {
view.setBackgroundColor(statusColor); 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 @Override

@ -28,7 +28,7 @@ public class TimerControlSet implements TaskEditControlSet {
DependencyInjectionService.getInstance().inject(this); DependencyInjectionService.getInstance().inject(this);
this.activity = activity; 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, estimated = new TimeDurationTaskEditControlSet(Task.ESTIMATED_SECONDS,
R.id.estimatedDuration, 0, R.string.DLG_hour_minutes, 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_below="@id/title"
android:layout_toRightOf="@id/icon" android:layout_toRightOf="@id/icon"
android:singleLine="false" android:singleLine="false"
android:textSize="11sp"
style="@style/TextAppearance.TAd_ItemDetails"/> style="@style/TextAppearance.TAd_ItemDetails"/>
</LinearLayout> </LinearLayout>
@ -63,7 +64,7 @@
<ImageView android:id="@+id/check" <ImageView android:id="@+id/check"
android:layout_width="48dip" android:layout_width="48dip"
android:layout_height="48dip" android:layout_height="48dip"
android:scaleType="fitCenter" android:scaleType="center"
android:layout_gravity="center" android:layout_gravity="center"
android:src="@android:drawable/checkbox_on_background"/> android:src="@android:drawable/checkbox_on_background"/>

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

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

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

@ -31,6 +31,11 @@
<!-- Preference: Automatic Backup Description (when enabled) --> <!-- Preference: Automatic Backup Description (when enabled) -->
<string name="backup_BPr_auto_enabled">Backup will occur daily</string> <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 == --> <!-- ================================================= BackupActivity == -->
<!-- backup activity label --> <!-- backup activity label -->

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

@ -41,6 +41,7 @@ import android.view.LayoutInflater;
import android.view.Menu; import android.view.Menu;
import android.view.MenuItem; import android.view.MenuItem;
import android.view.View; import android.view.View;
import android.view.ViewGroup;
import android.view.ViewGroup.LayoutParams; import android.view.ViewGroup.LayoutParams;
import android.widget.AdapterView; import android.widget.AdapterView;
import android.widget.ArrayAdapter; import android.widget.ArrayAdapter;
@ -216,6 +217,7 @@ public final class TaskEditActivity extends TabActivity {
LinearLayout addonsAddons = (LinearLayout) findViewById(R.id.tab_addons_addons); LinearLayout addonsAddons = (LinearLayout) findViewById(R.id.tab_addons_addons);
if(addOnService.isPowerPack()) { if(addOnService.isPowerPack()) {
controls.add(new GCalControlSet(this, addonsAddons)); controls.add(new GCalControlSet(this, addonsAddons));
separator(addonsAddons);
controls.add(new TimerControlSet(this, addonsAddons)); controls.add(new TimerControlSet(this, addonsAddons));
} }
@ -243,6 +245,17 @@ public final class TaskEditActivity extends TabActivity {
setUpListeners(); 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 * @return true if task is newly created
*/ */

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

@ -9,7 +9,8 @@ import android.app.AlertDialog;
import android.content.Context; import android.content.Context;
import android.content.DialogInterface; import android.content.DialogInterface;
import android.content.Intent; 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.content.res.Resources;
import android.graphics.drawable.BitmapDrawable; import android.graphics.drawable.BitmapDrawable;
import android.net.Uri; import android.net.Uri;
@ -147,19 +148,19 @@ public class AddOnService {
*/ */
private boolean isInstalled(String packageName, boolean internal) { private boolean isInstalled(String packageName, boolean internal) {
Context context = ContextManager.getContext(); Context context = ContextManager.getContext();
ApplicationInfo applicationInfo; PackageInfo packageInfo;
try { try {
applicationInfo = context.getPackageManager().getApplicationInfo( packageInfo = context.getPackageManager().getPackageInfo(packageName,
packageName, 0); PackageManager.GET_SIGNATURES);
} catch (Exception e) { } catch (Exception e) {
return false; return false;
} }
if(applicationInfo == null) if(packageInfo == null)
return false; return false;
if(!internal) if(!internal)
return true; 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, 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", "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", 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; return list;
} }

Loading…
Cancel
Save