Changeset 906


Ignore:
Timestamp:
4/28/2009 12:15:33 PM (6 years ago)
Author:
lowjoel
Message:

No need to use P/Invoke to get the bounds of a listview subitem. Use the .NET API instead.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • branches/eraser6/Eraser/SchedulerPanel.cs

    r866 r906  
    4343 
    4444            //Populate the scheduler list-view with the current task list 
    45             List<Task> tasks = Program.eraserClient.GetTasks(); 
     45            ICollection<Task> tasks = Program.eraserClient.GetTasks(); 
    4646            foreach (Task task in tasks) 
    4747                DisplayTask(task); 
     
    194194            } 
    195195 
    196             //Find the list view item 
    197             ListViewItem item = GetTaskItem(e.Task); 
    198  
    199196            //Update the progress bar 
    200197            schedulerProgress.Value = (int)(e.OverallProgress * 1000.0); 
     
    232229 
    233230            //Get the exit status of the task. 
    234             LogLevel highestLevel = LogLevel.INFORMATION; 
     231            LogLevel highestLevel = LogLevel.Information; 
    235232            List<LogEntry> logs = e.Task.Log.LastSessionEntries; 
    236233            foreach (LogEntry log in logs) 
     
    247244                switch (highestLevel) 
    248245                { 
    249                     case LogLevel.WARNING: 
     246                    case LogLevel.Warning: 
    250247                        message = S._("The task {0} has completed with warnings.", e.Task.UIText); 
    251248                        icon = ToolTipIcon.Warning; 
    252249                        break; 
    253                     case LogLevel.ERROR: 
     250                    case LogLevel.Error: 
    254251                        message = S._("The task {0} has completed with errors.", e.Task.UIText); 
    255252                        icon = ToolTipIcon.Error; 
    256253                        break; 
    257                     case LogLevel.FATAL: 
     254                    case LogLevel.Fatal: 
    258255                        message = S._("The task {0} did not complete.", e.Task.UIText); 
    259256                        icon = ToolTipIcon.Error; 
     
    271268            //If the user requested us to remove completed one-time tasks, do so. 
    272269            if (EraserSettings.Get().ClearCompletedTasks && 
    273                 !(e.Task.Schedule is RecurringSchedule) && highestLevel < LogLevel.WARNING) 
     270                !(e.Task.Schedule is RecurringSchedule) && highestLevel < LogLevel.Warning) 
    274271            { 
    275272                Program.eraserClient.DeleteTask(e.Task.ID); 
     
    281278                switch (highestLevel) 
    282279                { 
    283                     case LogLevel.WARNING: 
     280                    case LogLevel.Warning: 
    284281                        item.SubItems[1].Text = S._("Completed with warnings"); 
    285282                        break; 
    286                     case LogLevel.ERROR: 
     283                    case LogLevel.Error: 
    287284                        item.SubItems[1].Text = S._("Completed with errors"); 
    288285                        break; 
    289                     case LogLevel.FATAL: 
     286                    case LogLevel.Fatal: 
    290287                        item.SubItems[1].Text = S._("Not completed"); 
    291288                        break; 
     
    366363                { 
    367364                    Task task = form.Task; 
    368                     Program.eraserClient.AddTask(ref task); 
     365                    Program.eraserClient.AddTask(task); 
    369366                } 
    370367            } 
     
    505502            if (schedulerProgress.Tag == null) 
    506503                return; 
    507  
    508             Rectangle rect = GetSubItemRect((int)schedulerProgress.Tag, 2); 
    509             schedulerProgress.Top = rect.Top; 
    510             schedulerProgress.Left = rect.Left; 
    511             schedulerProgress.Width = rect.Width; 
    512             schedulerProgress.Height = rect.Height; 
     504            Rectangle rect = scheduler.Items[(int)schedulerProgress.Tag].SubItems[2].Bounds; 
     505            schedulerProgress.Location = rect.Location; 
     506            schedulerProgress.Size = rect.Size; 
    513507        } 
    514508 
     
    525519        } 
    526520        #endregion 
    527  
    528         #region GetSubItemRect 
    529         [DllImport("User32.dll")] 
    530         private static extern UIntPtr SendMessage(IntPtr HWND, uint Message, 
    531             UIntPtr wParam, out Rect lParam); 
    532  
    533         private struct Rect 
    534         { 
    535             public int left; 
    536             public int top; 
    537             public int right; 
    538             public int bottom; 
    539         }; 
    540  
    541         private Rectangle GetSubItemRect(int index, int subItemIndex) 
    542         { 
    543             Rect pRect = new Rect(); 
    544             pRect.top = subItemIndex; 
    545             pRect.left = 0; //LVIR_BOUNDS 
    546             SendMessage(scheduler.Handle, 0x1000 + 56, (UIntPtr)index, out pRect); 
    547  
    548             return new Rectangle(pRect.left, pRect.top, pRect.right - pRect.left, 
    549                 pRect.bottom - pRect.top); 
    550         } 
    551         #endregion 
    552521    } 
    553522} 
Note: See TracChangeset for help on using the changeset viewer.