public TimeEntryListItemHolder(LogTimeEntriesAdapter owner, View root) : base(root) { this.owner = owner; ColorView = root.FindViewById <View> (Resource.Id.ColorView); ProjectTextView = root.FindViewById <TextView> (Resource.Id.ProjectTextView).SetFont(Font.RobotoMedium); ClientTextView = root.FindViewById <TextView> (Resource.Id.ClientTextView).SetFont(Font.RobotoMedium); TaskTextView = root.FindViewById <TextView> (Resource.Id.TaskTextView).SetFont(Font.RobotoMedium); DescriptionTextView = root.FindViewById <TextView> (Resource.Id.DescriptionTextView).SetFont(Font.Roboto); TagsView = root.FindViewById <NotificationImageView> (Resource.Id.TagsIcon); NotSyncedView = root.FindViewById <View> (Resource.Id.NotSyncedIcon); BillableView = root.FindViewById <View> (Resource.Id.BillableIcon); DurationTextView = root.FindViewById <TextView> (Resource.Id.DurationTextView).SetFont(Font.RobotoLight); ContinueImageButton = root.FindViewById <ImageButton> (Resource.Id.ContinueImageButton); SwipeLayout = root.FindViewById <RelativeLayout> (Resource.Id.swipe_layout); PreUndoLayout = root.FindViewById <FrameLayout> (Resource.Id.pre_undo_layout); UndoButton = root.FindViewById <LinearLayout> (Resource.Id.undo_layout); UndoButton = root.FindViewById(Resource.Id.undo_button); UndoLayout = root.FindViewById(Resource.Id.undo_layout); ContinueImageButton.SetOnTouchListener(this); UndoButton.SetOnTouchListener(this); }
public void Bind(ITimeEntryHolder datasource) { if (datasource == null || Handle == IntPtr.Zero) { return; } var color = Color.Transparent; var ctx = ServiceContainer.Resolve <Context> (); var authManager = ServiceContainer.Resolve <AuthManager> (); if (authManager.OfflineMode || (datasource.Data.RemoteId.HasValue && !datasource.Data.IsDirty)) { NotSyncedView.Visibility = ViewStates.Gone; } else { NotSyncedView.Visibility = ViewStates.Visible; } var notSyncedShape = NotSyncedView.Background as GradientDrawable; if (datasource.Data.IsDirty && datasource.Data.RemoteId.HasValue) { notSyncedShape.SetColor(ctx.Resources.GetColor(Resource.Color.light_gray)); } else { notSyncedShape.SetColor(ctx.Resources.GetColor(Resource.Color.material_red)); } var info = datasource.Info; if (!string.IsNullOrWhiteSpace(info.ProjectData.Name)) { color = Color.ParseColor(ProjectModel.HexColors [info.Color % ProjectModel.HexColors.Length]); ProjectTextView.SetTextColor(color); ProjectTextView.Text = info.ProjectData.Name; } else { ProjectTextView.Text = ctx.GetString(Resource.String.RecentTimeEntryNoProject); ProjectTextView.SetTextColor(ctx.Resources.GetColor(Resource.Color.dark_gray_text)); } if (string.IsNullOrWhiteSpace(info.ClientData.Name)) { ClientTextView.Text = string.Empty; ClientTextView.Visibility = ViewStates.Gone; } else { ClientTextView.Text = string.Format("{0} • ", info.ClientData.Name); ClientTextView.Visibility = ViewStates.Visible; } if (string.IsNullOrWhiteSpace(info.TaskData.Name)) { TaskTextView.Text = string.Empty; TaskTextView.Visibility = ViewStates.Gone; } else { TaskTextView.Text = string.Format("{0} • ", info.TaskData.Name); TaskTextView.Visibility = ViewStates.Visible; } if (string.IsNullOrWhiteSpace(info.Description)) { DescriptionTextView.Text = ctx.GetString(Resource.String.RecentTimeEntryNoDescription); } else { DescriptionTextView.Text = info.Description; } BillableView.Visibility = info.IsBillable ? ViewStates.Visible : ViewStates.Gone; var shape = ColorView.Background as GradientDrawable; if (shape != null) { shape.SetColor(color); } // Show start/stop btn if (datasource.Data.State == TimeEntryState.Running) { ContinueImageButton.SetImageResource(Resource.Drawable.IcStop); } else { ContinueImageButton.SetImageResource(Resource.Drawable.IcPlayArrowGrey); } // Set tag number var numberOfTags = datasource.Info.NumberOfTags; TagsView.BubbleCount = numberOfTags; TagsView.Visibility = numberOfTags > 0 ? ViewStates.Visible : ViewStates.Gone; // Set duration duration = datasource.GetDuration(); isRunning = datasource.Data.State == TimeEntryState.Running; RebindDuration(); }