mirror of https://github.com/tasks/tasks
You cannot select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
125 lines
4.5 KiB
Java
125 lines
4.5 KiB
Java
package ru.otdelit.astrid.opencrx;
|
|
|
|
import android.content.Context;
|
|
import android.content.SharedPreferences;
|
|
import android.content.SharedPreferences.Editor;
|
|
import android.content.pm.PackageManager.NameNotFoundException;
|
|
|
|
import com.todoroo.andlib.data.Property.LongProperty;
|
|
import com.todoroo.andlib.data.Property.StringProperty;
|
|
import com.todoroo.andlib.service.ContextManager;
|
|
import com.todoroo.astrid.data.Metadata;
|
|
import com.todoroo.astrid.sync.SyncProviderUtilities;
|
|
|
|
public class OpencrxCoreUtils extends SyncProviderUtilities{
|
|
|
|
public static final String OPENCRX_ACTIVITY_METADATA_KEY = "opencrx"; //$NON-NLS-1$
|
|
|
|
public static final String IDENTIFIER = "crx"; //$NON-NLS-1$
|
|
|
|
public static final LongProperty ACTIVITY_ID = new LongProperty(Metadata.TABLE, Metadata.VALUE1.name);
|
|
public static final LongProperty ACTIVITY_CREATOR_ID = new LongProperty(Metadata.TABLE, Metadata.VALUE2.name);
|
|
public static final LongProperty ACTIVITY_USERCREATOR_ID = new LongProperty(Metadata.TABLE, Metadata.VALUE3.name);
|
|
public static final LongProperty ACTIVITY_ASSIGNED_TO_ID = new LongProperty(Metadata.TABLE, Metadata.VALUE4.name);
|
|
public static final StringProperty ACTIVITY_CRX_ID = new StringProperty(Metadata.TABLE, Metadata.VALUE5.name);
|
|
|
|
private static final String PREF_USER_ID = "crx_userid"; //$NON-NLS-1$
|
|
private static final String PREF_DEFAULT_CREATOR = "opencrx_defaultcreator"; //$NON-NLS-1$
|
|
private static final String PREFS_FILE = "crx-prefs"; //$NON-NLS-1$
|
|
|
|
private static final String OPENCRX_PACKAGE = "ru.otdelit.astrid.opencrx"; //$NON-NLS-1$
|
|
|
|
public static final long CREATOR_NO_SYNC = -1;
|
|
|
|
public static final OpencrxCoreUtils INSTANCE = new OpencrxCoreUtils();
|
|
|
|
private OpencrxCoreUtils(){
|
|
// prevent instantiation
|
|
}
|
|
|
|
public Metadata newMetadata() {
|
|
Metadata metadata = new Metadata();
|
|
metadata.setValue(Metadata.KEY, OPENCRX_ACTIVITY_METADATA_KEY);
|
|
metadata.setValue(ACTIVITY_ID, 0L);
|
|
metadata.setValue(ACTIVITY_CREATOR_ID, getDefaultCreator());
|
|
metadata.setValue(ACTIVITY_USERCREATOR_ID, getDefaultAssignedUser());
|
|
metadata.setValue(ACTIVITY_ASSIGNED_TO_ID, getDefaultAssignedUser());
|
|
metadata.setValue(ACTIVITY_CRX_ID, ""); //$NON-NLS-1$
|
|
return metadata;
|
|
}
|
|
|
|
@Override
|
|
public void stopOngoing() {
|
|
SharedPreferences sharedPreferences = OpencrxCoreUtils.getPrefs();
|
|
|
|
if (sharedPreferences != null){
|
|
Editor editor = sharedPreferences.edit();
|
|
editor.putBoolean(getIdentifier() + PREF_ONGOING, false);
|
|
editor.commit();
|
|
}
|
|
}
|
|
|
|
/**
|
|
* Gets default creator from setting
|
|
* @return CREATOR_NO_SYNC if should not sync, otherwise remote id
|
|
*/
|
|
public long getDefaultCreator() {
|
|
long defaultCreatorId = CREATOR_NO_SYNC ;
|
|
SharedPreferences sharedPreferences = OpencrxCoreUtils.getPrefs();
|
|
|
|
if (sharedPreferences != null){
|
|
String defCreatorString = sharedPreferences.getString(PREF_DEFAULT_CREATOR, String.valueOf(CREATOR_NO_SYNC));
|
|
|
|
try{
|
|
defaultCreatorId = Long.parseLong(defCreatorString);
|
|
}catch(Exception ex){
|
|
defaultCreatorId = CREATOR_NO_SYNC;
|
|
}
|
|
}
|
|
|
|
return defaultCreatorId;
|
|
}
|
|
|
|
public long getDefaultAssignedUser(){
|
|
SharedPreferences sharedPreferences = OpencrxCoreUtils.getPrefs();
|
|
|
|
if (sharedPreferences != null){
|
|
return sharedPreferences.getLong(PREF_USER_ID, -1);
|
|
}else{
|
|
return -1;
|
|
}
|
|
}
|
|
|
|
protected static SharedPreferences getPrefs() {
|
|
try {
|
|
Context crxContext = ContextManager.getContext().createPackageContext(OPENCRX_PACKAGE, 0);
|
|
SharedPreferences sharedPreferences = crxContext.getSharedPreferences(PREFS_FILE,
|
|
Context.MODE_WORLD_READABLE + Context.MODE_WORLD_WRITEABLE);
|
|
return sharedPreferences;
|
|
} catch (NameNotFoundException e) {
|
|
return null;
|
|
}
|
|
}
|
|
|
|
@Override
|
|
public boolean isLoggedIn() {
|
|
SharedPreferences sharedPreferences = OpencrxCoreUtils.getPrefs();
|
|
|
|
if (sharedPreferences != null)
|
|
return sharedPreferences.getString(getIdentifier() + PREF_TOKEN, null) != null;
|
|
else
|
|
return false;
|
|
}
|
|
|
|
@Override
|
|
public String getIdentifier() {
|
|
return IDENTIFIER;
|
|
}
|
|
@Override
|
|
public int getSyncIntervalKey() {
|
|
return 0;
|
|
}
|
|
|
|
|
|
}
|