|
|
@ -1,23 +1,23 @@
|
|
|
|
package com.todoroo.astrid.rmilk;
|
|
|
|
package com.todoroo.astrid.rmilk;
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
import java.util.Date;
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
import android.content.DialogInterface;
|
|
|
|
|
|
|
|
import android.content.DialogInterface.OnClickListener;
|
|
|
|
import android.content.res.Resources;
|
|
|
|
import android.content.res.Resources;
|
|
|
|
import android.graphics.Color;
|
|
|
|
import android.graphics.Color;
|
|
|
|
import android.os.Bundle;
|
|
|
|
|
|
|
|
import android.preference.CheckBoxPreference;
|
|
|
|
|
|
|
|
import android.preference.EditTextPreference;
|
|
|
|
|
|
|
|
import android.preference.ListPreference;
|
|
|
|
|
|
|
|
import android.preference.Preference;
|
|
|
|
import android.preference.Preference;
|
|
|
|
import android.preference.PreferenceActivity;
|
|
|
|
|
|
|
|
import android.preference.PreferenceGroup;
|
|
|
|
|
|
|
|
import android.preference.PreferenceScreen;
|
|
|
|
|
|
|
|
import android.preference.Preference.OnPreferenceChangeListener;
|
|
|
|
|
|
|
|
import android.preference.Preference.OnPreferenceClickListener;
|
|
|
|
import android.preference.Preference.OnPreferenceClickListener;
|
|
|
|
import android.view.View;
|
|
|
|
import android.view.View;
|
|
|
|
import android.view.ViewGroup.OnHierarchyChangeListener;
|
|
|
|
import android.view.ViewGroup.OnHierarchyChangeListener;
|
|
|
|
import android.widget.ListView;
|
|
|
|
import android.widget.ListView;
|
|
|
|
|
|
|
|
|
|
|
|
import com.timsu.astrid.R;
|
|
|
|
import com.timsu.astrid.R;
|
|
|
|
|
|
|
|
import com.todoroo.andlib.service.Autowired;
|
|
|
|
import com.todoroo.andlib.utility.AndroidUtilities;
|
|
|
|
import com.todoroo.andlib.utility.AndroidUtilities;
|
|
|
|
|
|
|
|
import com.todoroo.andlib.utility.DateUtilities;
|
|
|
|
|
|
|
|
import com.todoroo.andlib.utility.DialogUtilities;
|
|
|
|
|
|
|
|
import com.todoroo.andlib.widget.TodorooPreferences;
|
|
|
|
import com.todoroo.astrid.rmilk.sync.RTMSyncProvider;
|
|
|
|
import com.todoroo.astrid.rmilk.sync.RTMSyncProvider;
|
|
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
/**
|
|
|
@ -27,106 +27,139 @@ import com.todoroo.astrid.rmilk.sync.RTMSyncProvider;
|
|
|
|
* @author timsu
|
|
|
|
* @author timsu
|
|
|
|
*
|
|
|
|
*
|
|
|
|
*/
|
|
|
|
*/
|
|
|
|
public class MilkPreferences extends PreferenceActivity {
|
|
|
|
public class MilkPreferences extends TodorooPreferences {
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
@Autowired
|
|
|
|
|
|
|
|
DialogUtilities dialogUtilities;
|
|
|
|
|
|
|
|
|
|
|
|
@Override
|
|
|
|
@Override
|
|
|
|
public void onCreate(Bundle savedInstanceState) {
|
|
|
|
public int getPreferenceResource() {
|
|
|
|
super.onCreate(savedInstanceState);
|
|
|
|
return R.xml.preferences_rmilk;
|
|
|
|
addPreferencesFromResource(R.xml.preferences_rmilk);
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
PreferenceScreen screen = getPreferenceScreen();
|
|
|
|
/**
|
|
|
|
initializePreference(screen);
|
|
|
|
*
|
|
|
|
|
|
|
|
* @param resource
|
|
|
|
|
|
|
|
* if null, updates all resources
|
|
|
|
|
|
|
|
*/
|
|
|
|
|
|
|
|
@Override
|
|
|
|
|
|
|
|
public void updatePreferences(Preference preference, Object value) {
|
|
|
|
|
|
|
|
final Resources r = getResources();
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
// interval
|
|
|
|
|
|
|
|
if (r.getString(R.string.rmilk_MPr_interval_key).equals(
|
|
|
|
|
|
|
|
preference.getKey())) {
|
|
|
|
|
|
|
|
int index = AndroidUtilities.indexOf(
|
|
|
|
|
|
|
|
r.getStringArray(R.array.rmilk_MPr_interval_values),
|
|
|
|
|
|
|
|
(String) value);
|
|
|
|
|
|
|
|
if (index <= 0)
|
|
|
|
|
|
|
|
preference.setSummary(R.string.rmilk_MPr_interval_desc_disabled);
|
|
|
|
|
|
|
|
else
|
|
|
|
|
|
|
|
preference.setSummary(r.getString(
|
|
|
|
|
|
|
|
R.string.rmilk_MPr_interval_desc,
|
|
|
|
|
|
|
|
r.getStringArray(R.array.rmilk_MPr_interval_entries)[index]));
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
// shortcut
|
|
|
|
|
|
|
|
else if (r.getString(R.string.rmilk_MPr_shortcut_key).equals(
|
|
|
|
|
|
|
|
preference.getKey())) {
|
|
|
|
|
|
|
|
if ((Boolean) value) {
|
|
|
|
|
|
|
|
preference.setSummary(R.string.rmilk_MPr_shortcut_desc_enabled);
|
|
|
|
|
|
|
|
} else {
|
|
|
|
|
|
|
|
preference.setSummary(R.string.rmilk_MPr_shortcut_desc_disabled);
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// status
|
|
|
|
// status
|
|
|
|
|
|
|
|
else if (r.getString(R.string.rmilk_MPr_status_key).equals(preference.getKey())) {
|
|
|
|
boolean loggedIn = Utilities.isLoggedIn();
|
|
|
|
boolean loggedIn = Utilities.isLoggedIn();
|
|
|
|
final String status = "Please Log In To RTM!"; //$NON-NLS-1$
|
|
|
|
String status;
|
|
|
|
final int statusColor = Color.RED;
|
|
|
|
String subtitle = ""; //$NON-NLS-1$
|
|
|
|
|
|
|
|
int statusColor;
|
|
|
|
|
|
|
|
|
|
|
|
Resources r = getResources();
|
|
|
|
// ! logged in - display message, click -> sync
|
|
|
|
Preference preference = screen.findPreference(r.getString(R.string.rmilk_MPr_status_key));
|
|
|
|
if(!loggedIn) {
|
|
|
|
|
|
|
|
status = r.getString(R.string.rmilk_status_loggedout);
|
|
|
|
|
|
|
|
statusColor = Color.RED;
|
|
|
|
|
|
|
|
preference.setOnPreferenceClickListener(new OnPreferenceClickListener() {
|
|
|
|
|
|
|
|
public boolean onPreferenceClick(Preference p) {
|
|
|
|
|
|
|
|
new RTMSyncProvider().synchronize(MilkPreferences.this);
|
|
|
|
|
|
|
|
return true;
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
});
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
// last sync was error
|
|
|
|
|
|
|
|
else if(Utilities.getLastAttemptedSyncDate() != 0) {
|
|
|
|
|
|
|
|
status = r.getString(R.string.rmilk_status_failed,
|
|
|
|
|
|
|
|
DateUtilities.getDateWithTimeFormat(MilkPreferences.this).
|
|
|
|
|
|
|
|
format(new Date(Utilities.getLastAttemptedSyncDate())));
|
|
|
|
|
|
|
|
if(Utilities.getLastSyncDate() > 0) {
|
|
|
|
|
|
|
|
subtitle = r.getString(R.string.rmilk_status_success,
|
|
|
|
|
|
|
|
DateUtilities.getDateWithTimeFormat(MilkPreferences.this).
|
|
|
|
|
|
|
|
format(new Date(Utilities.getLastSyncDate())));
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
statusColor = Color.rgb(100, 0, 0);
|
|
|
|
|
|
|
|
preference.setOnPreferenceClickListener(new OnPreferenceClickListener() {
|
|
|
|
|
|
|
|
public boolean onPreferenceClick(Preference p) {
|
|
|
|
|
|
|
|
String error = Utilities.getLastError();
|
|
|
|
|
|
|
|
if(error != null)
|
|
|
|
|
|
|
|
dialogUtilities.okDialog(MilkPreferences.this, error, null);
|
|
|
|
|
|
|
|
return true;
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
});
|
|
|
|
|
|
|
|
} else {
|
|
|
|
|
|
|
|
status = r.getString(R.string.rmilk_status_success,
|
|
|
|
|
|
|
|
DateUtilities.getDateWithTimeFormat(MilkPreferences.this).
|
|
|
|
|
|
|
|
format(new Date(Utilities.getLastSyncDate())));
|
|
|
|
|
|
|
|
statusColor = Color.rgb(0, 100, 0);
|
|
|
|
|
|
|
|
}
|
|
|
|
preference.setTitle(status);
|
|
|
|
preference.setTitle(status);
|
|
|
|
|
|
|
|
preference.setSummary(subtitle);
|
|
|
|
|
|
|
|
final int statusColorSetting = statusColor;
|
|
|
|
getListView().setOnHierarchyChangeListener(new OnHierarchyChangeListener() {
|
|
|
|
getListView().setOnHierarchyChangeListener(new OnHierarchyChangeListener() {
|
|
|
|
public void onChildViewRemoved(View arg0, View arg1) {
|
|
|
|
public void onChildViewRemoved(View arg0, View arg1) {
|
|
|
|
//
|
|
|
|
//
|
|
|
|
}
|
|
|
|
}
|
|
|
|
public void onChildViewAdded(View parent, View child) {
|
|
|
|
public void onChildViewAdded(View parent, View child) {
|
|
|
|
if(((ListView)parent).getChildCount() == 2) {
|
|
|
|
if(((ListView)parent).getChildCount() == 2) {
|
|
|
|
child.setBackgroundColor(statusColor);
|
|
|
|
child.setBackgroundColor(statusColorSetting);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
});
|
|
|
|
});
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// action buttons
|
|
|
|
// sync button
|
|
|
|
Preference syncAction = screen.getPreferenceManager().findPreference(
|
|
|
|
else if (r.getString(R.string.rmilk_MPr_sync_key).equals(preference.getKey())) {
|
|
|
|
getString(R.string.rmilk_MPr_sync_key));
|
|
|
|
boolean loggedIn = Utilities.isLoggedIn();
|
|
|
|
syncAction.setOnPreferenceClickListener(new OnPreferenceClickListener() {
|
|
|
|
preference.setOnPreferenceClickListener(new OnPreferenceClickListener() {
|
|
|
|
public boolean onPreferenceClick(Preference p) {
|
|
|
|
public boolean onPreferenceClick(Preference p) {
|
|
|
|
new RTMSyncProvider().synchronize();
|
|
|
|
new RTMSyncProvider().synchronize(MilkPreferences.this);
|
|
|
|
return true;
|
|
|
|
return true;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
});
|
|
|
|
});
|
|
|
|
Preference clearDataPreference = screen.getPreferenceManager().findPreference(
|
|
|
|
if(!loggedIn)
|
|
|
|
getString(R.string.rmilk_MPr_forget_key));
|
|
|
|
preference.setTitle(R.string.rmilk_MPr_sync_log_in);
|
|
|
|
if(!loggedIn) {
|
|
|
|
|
|
|
|
syncAction.setTitle(R.string.rmilk_MPr_sync_log_in);
|
|
|
|
|
|
|
|
clearDataPreference.setEnabled(false);
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
private void initializePreference(Preference preference) {
|
|
|
|
// log out button
|
|
|
|
if(preference instanceof PreferenceGroup) {
|
|
|
|
else if (r.getString(R.string.rmilk_MPr_forget_key).equals(preference.getKey())) {
|
|
|
|
PreferenceGroup group = (PreferenceGroup)preference;
|
|
|
|
boolean loggedIn = Utilities.isLoggedIn();
|
|
|
|
for(int i = 0; i < group.getPreferenceCount(); i++) {
|
|
|
|
preference.setOnPreferenceClickListener(new OnPreferenceClickListener() {
|
|
|
|
initializePreference(group.getPreference(i));
|
|
|
|
public boolean onPreferenceClick(Preference p) {
|
|
|
|
|
|
|
|
dialogUtilities.okCancelDialog(MilkPreferences.this,
|
|
|
|
|
|
|
|
r.getString(R.string.rmilk_forget_confirm), new OnClickListener() {
|
|
|
|
|
|
|
|
@Override
|
|
|
|
|
|
|
|
public void onClick(DialogInterface dialog,
|
|
|
|
|
|
|
|
int which) {
|
|
|
|
|
|
|
|
new RTMSyncProvider().signOut();
|
|
|
|
|
|
|
|
initializePreference(getPreferenceScreen());
|
|
|
|
}
|
|
|
|
}
|
|
|
|
} else {
|
|
|
|
}, null);
|
|
|
|
Object value = null;
|
|
|
|
return true;
|
|
|
|
if(preference instanceof ListPreference)
|
|
|
|
|
|
|
|
value = ((ListPreference)preference).getValue();
|
|
|
|
|
|
|
|
else if(preference instanceof CheckBoxPreference)
|
|
|
|
|
|
|
|
value = ((CheckBoxPreference)preference).isChecked();
|
|
|
|
|
|
|
|
else if(preference instanceof EditTextPreference)
|
|
|
|
|
|
|
|
value = ((EditTextPreference)preference).getText();
|
|
|
|
|
|
|
|
else
|
|
|
|
|
|
|
|
return;
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
updatePreferences(preference, value);
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
preference.setOnPreferenceChangeListener(new OnPreferenceChangeListener() {
|
|
|
|
|
|
|
|
public boolean onPreferenceChange(Preference myPreference, Object newValue) {
|
|
|
|
|
|
|
|
return updatePreferences(myPreference, newValue);
|
|
|
|
|
|
|
|
}
|
|
|
|
}
|
|
|
|
});
|
|
|
|
});
|
|
|
|
|
|
|
|
if(!loggedIn)
|
|
|
|
|
|
|
|
preference.setEnabled(false);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
|
|
|
*
|
|
|
|
|
|
|
|
* @param resource if null, updates all resources
|
|
|
|
|
|
|
|
*/
|
|
|
|
|
|
|
|
protected boolean updatePreferences(Preference preference, Object value) {
|
|
|
|
|
|
|
|
Resources r = getResources();
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
// interval
|
|
|
|
|
|
|
|
if(r.getString(R.string.rmilk_MPr_interval_key).equals(preference.getKey())) {
|
|
|
|
|
|
|
|
int index = AndroidUtilities.indexOf(r.getStringArray(R.array.rmilk_MPr_interval_values), (String)value);
|
|
|
|
|
|
|
|
if(index <= 0)
|
|
|
|
|
|
|
|
preference.setSummary(R.string.rmilk_MPr_interval_desc_disabled);
|
|
|
|
|
|
|
|
else
|
|
|
|
|
|
|
|
preference.setSummary(r.getString(R.string.rmilk_MPr_interval_desc,
|
|
|
|
|
|
|
|
r.getStringArray(R.array.rmilk_MPr_interval_entries)[index]));
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
// shortcut
|
|
|
|
|
|
|
|
else if(r.getString(R.string.rmilk_MPr_shortcut_key).equals(preference.getKey())) {
|
|
|
|
|
|
|
|
if((Boolean)value) {
|
|
|
|
|
|
|
|
preference.setSummary(R.string.rmilk_MPr_shortcut_desc_enabled);
|
|
|
|
|
|
|
|
} else {
|
|
|
|
|
|
|
|
preference.setSummary(R.string.rmilk_MPr_shortcut_desc_disabled);
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
return true;
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
}
|
|
|
|
}
|