@ -3,6 +3,7 @@ package com.todoroo.astrid.producteev;
import java.util.ArrayList ;
import android.app.Activity ;
import android.util.Log ;
import android.view.LayoutInflater ;
import android.view.View ;
import android.view.ViewGroup ;
@ -61,82 +62,88 @@ public class ProducteevControlSet implements TaskEditControlSet {
public void readFromTask ( Task task ) {
this . myTask = task ;
Metadata metadata = ProducteevDataService . getInstance ( ) . getTaskMetadata ( myTask . getId ( ) ) ;
if ( metadata ! = null ) {
// Fill the dashboard-spinner and set the current dashboard
long dashboardId = metadata . getValue ( ProducteevTask . DASHBOARD_ID ) ;
StoreObject [ ] dashboardsData = ProducteevDataService . getInstance ( ) . getDashboards ( ) ;
dashboards = new ArrayList < ProducteevDashboard > ( dashboardsData . length ) ;
ProducteevDashboard ownerDashboard = null ;
int dashboardSpinnerIndex = 0 ;
//dashboard to not sync as first spinner-entry
dashboards . add ( new ProducteevDashboard ( ProducteevUtilities . DASHBOARD_NO_SYNC , activity . getString ( R . string . producteev_no_dashboard ) , null ) ) ;
for ( int i = 1 ; i < dashboardsData . length + 1 ; i + + ) {
ProducteevDashboard dashboard = new ProducteevDashboard ( dashboardsData [ i - 1 ] ) ;
dashboards . add ( dashboard ) ;
if ( dashboard . getId ( ) = = dashboardId ) {
ownerDashboard = dashboard ;
dashboardSpinnerIndex = i ;
}
if ( metadata = = null )
metadata = ProducteevTask . newMetadata ( ) ;
// Fill the dashboard-spinner and set the current dashboard
long dashboardId = metadata . getValue ( ProducteevTask . DASHBOARD_ID ) ;
StoreObject [ ] dashboardsData = ProducteevDataService . getInstance ( ) . getDashboards ( ) ;
dashboards = new ArrayList < ProducteevDashboard > ( dashboardsData . length ) ;
ProducteevDashboard ownerDashboard = null ;
int dashboardSpinnerIndex = 0 ;
//dashboard to not sync as first spinner-entry
dashboards . add ( new ProducteevDashboard ( ProducteevUtilities . DASHBOARD_NO_SYNC , activity . getString ( R . string . producteev_no_dashboard ) , null ) ) ;
for ( int i = 1 ; i < dashboardsData . length + 1 ; i + + ) {
ProducteevDashboard dashboard = new ProducteevDashboard ( dashboardsData [ i - 1 ] ) ;
dashboards . add ( dashboard ) ;
if ( dashboard . getId ( ) = = dashboardId ) {
ownerDashboard = dashboard ;
dashboardSpinnerIndex = i ;
}
}
ArrayAdapter < ProducteevDashboard > dashAdapter = new ArrayAdapter < ProducteevDashboard > ( activity ,
android . R . layout . simple_spinner_item , dashboards ) ;
dashAdapter . setDropDownViewResource ( android . R . layout . simple_spinner_dropdown_item ) ;
dashboardSelector . setAdapter ( dashAdapter ) ;
dashboardSelector . setSelection ( dashboardSpinnerIndex ) ;
if ( ownerDashboard = = null | | ownerDashboard . getId ( ) = = ProducteevUtilities . DASHBOARD_NO_SYNC ) {
responsibleSelector . setEnabled ( false ) ;
TextView emptyView = new TextView ( activity ) ;
emptyView . setText ( activity . getText ( R . string . producteev_no_dashboard ) ) ;
responsibleSelector . setEmptyView ( emptyView ) ;
view . findViewById ( R . id . producteev_TEA_task_assign_label ) . setVisibility ( View . GONE ) ;
return ;
}
ArrayAdapter < ProducteevDashboard > dashAdapter = new ArrayAdapter < ProducteevDashboard > ( activity ,
android . R . layout . simple_spinner_item , dashboards ) ;
dashAdapter . setDropDownViewResource ( android . R . layout . simple_spinner_dropdown_item ) ;
dashboardSelector . setAdapter ( dashAdapter ) ;
dashboardSelector . setSelection ( dashboardSpinnerIndex ) ;
if ( ownerDashboard = = null | | ownerDashboard . getId ( ) = = ProducteevUtilities . DASHBOARD_NO_SYNC ) {
responsibleSelector . setEnabled ( false ) ;
TextView emptyView = new TextView ( activity ) ;
emptyView . setText ( activity . getText ( R . string . producteev_no_dashboard ) ) ;
responsibleSelector . setEmptyView ( emptyView ) ;
view . findViewById ( R . id . producteev_TEA_task_assign_label ) . setVisibility ( View . GONE ) ;
return ;
}
// Fill the responsible-spinner and set the current responsible
users = ownerDashboard . getUsers ( ) ;
long responsibleId = metadata . getValue ( ProducteevTask . RESPONSIBLE_ID ) ;
int userSpinnerIndex = 0 ;
// Fill the responsible-spinner and set the current responsible
users = ownerDashboard . getUsers ( ) ;
long responsibleId = metadata . getValue ( ProducteevTask . RESPONSIBLE_ID ) ;
int userSpinnerIndex = 0 ;
for ( ProducteevUser user : users ) {
if ( user . getId ( ) = = responsibleId ) {
break ;
}
userSpinnerIndex + + ;
for ( ProducteevUser user : users ) {
if ( user . getId ( ) = = responsibleId ) {
break ;
}
ArrayAdapter < ProducteevUser > usersAdapter = new ArrayAdapter < ProducteevUser > ( activity ,
android . R . layout . simple_spinner_item , users ) ;
usersAdapter . setDropDownViewResource ( android . R . layout . simple_spinner_dropdown_item ) ;
responsibleSelector . setAdapter ( usersAdapter ) ;
responsibleSelector . setSelection ( userSpinnerIndex ) ;
userSpinnerIndex + + ;
}
ArrayAdapter < ProducteevUser > usersAdapter = new ArrayAdapter < ProducteevUser > ( activity ,
android . R . layout . simple_spinner_item , users ) ;
usersAdapter . setDropDownViewResource ( android . R . layout . simple_spinner_dropdown_item ) ;
responsibleSelector . setAdapter ( usersAdapter ) ;
responsibleSelector . setSelection ( userSpinnerIndex ) ;
}
@Override
public void writeToModel ( Task task ) {
Metadata metadata = ProducteevDataService . getInstance ( ) . getTaskMetadata ( task . getId ( ) ) ;
if ( metadata = = null ) {
metadata = new Metadata ( ) ;
metadata . setValue ( Metadata . KEY , ProducteevTask . METADATA_KEY ) ;
metadata . setValue ( Metadata . TASK , task . getId ( ) ) ;
metadata . setValue ( ProducteevTask . ID , 0 L ) ;
}
try {
if ( metadata = = null ) {
metadata = new Metadata ( ) ;
metadata . setValue ( Metadata . KEY , ProducteevTask . METADATA_KEY ) ;
metadata . setValue ( Metadata . TASK , task . getId ( ) ) ;
metadata . setValue ( ProducteevTask . ID , 0 L ) ;
}
ProducteevDashboard dashboard = ( ProducteevDashboard ) dashboardSelector . getSelectedItem ( ) ;
metadata . setValue ( ProducteevTask . DASHBOARD_ID , dashboard . getId ( ) ) ;
ProducteevDashboard dashboard = ( ProducteevDashboard ) dashboardSelector . getSelectedItem ( ) ;
metadata . setValue ( ProducteevTask . DASHBOARD_ID , dashboard . getId ( ) ) ;
ProducteevUser responsibleUser = ( ProducteevUser ) responsibleSelector . getSelectedItem ( ) ;
ProducteevUser responsibleUser = ( ProducteevUser ) responsibleSelector . getSelectedItem ( ) ;
if ( responsibleUser = = null )
metadata . setValue ( ProducteevTask . RESPONSIBLE_ID , 0 L ) ;
else
metadata . setValue ( ProducteevTask . RESPONSIBLE_ID , responsibleUser . getId ( ) ) ;
if ( responsibleUser = = null )
metadata . setValue ( ProducteevTask . RESPONSIBLE_ID , 0 L ) ;
else
metadata . setValue ( ProducteevTask . RESPONSIBLE_ID , responsibleUser . getId ( ) ) ;
if ( metadata . getSetValues ( ) . size ( ) > 0 ) {
metadataService . save ( metadata ) ;
task . setValue ( Task . MODIFICATION_DATE , DateUtilities . now ( ) ) ;
if ( metadata . getSetValues ( ) . size ( ) > 0 ) {
metadataService . save ( metadata ) ;
task . setValue ( Task . MODIFICATION_DATE , DateUtilities . now ( ) ) ;
}
} catch ( Exception e ) {
Log . e ( "error-saving-pdv" , "Error Saving Metadata" , e ) ; //$NON-NLS-1$ //$NON-NLS-2$
}
}
}