[haiku-bugs] [Haiku] #6930: Tracker status window problems

  • From: "Karvjorm" <trac@xxxxxxxxxxxx>
  • Date: Sun, 28 Nov 2010 16:03:04 -0000

#6930: Tracker status window problems
-----------------------------------+------------------------
   Reporter:  Karvjorm             |       Owner:  nobody
       Type:  bug                  |      Status:  new
   Priority:  normal               |   Milestone:  R1
  Component:  Add-Ons/Tracker      |     Version:  R1/alpha2
   Keywords:  Wrong year, 0 bytes  |  Blocked By:
Has a Patch:  0                    |    Platform:  All
   Blocking:                       |
-----------------------------------+------------------------
 I just moved a directory that included several subdirectories (and some
 files in the last one) to the Trash. Tracker status windows showed below
 progress bar the following information: "(1 bytes of 0 bytes, 0 bytes/s)".

 Then just when moving was completed, I saw on the right (below the
 progress bar) a message text that informed when work completed. At the end
 of text was a non-localized date, something like: "12/12/1901". That was
 right, the year was 1901 !

 I suppose that the origin of the last problem is in this TODO (in
 /src/kits/tracker/StatisWindows.cpp):


 {{{
                         double totalBytesPerSecond =
 (double)(fSizeProcessed
                                         - fEstimatedFinishReferenceSize)
                                 * 1000000LL / (system_time() -
 fEstimatedFinishReferenceTime);
                         double secondsRemaining = (fTotalSize -
 fSizeProcessed)
                                 / totalBytesPerSecond;
                         time_t now = (time_t)real_time_clock();
                         time_t finishTime = (time_t)(now +
 secondsRemaining);

                         tm _time;
                         tm* time = localtime_r(&finishTime, &_time);
                         int32 year = time->tm_year + 1900;

                         char timeText[32];
                         time_t secondsPerDay = 24 * 60 * 60;
                         // TODO: Localization of time string...
                         if (now < finishTime - secondsPerDay) {
                                 // process is going to take more than a
 day!
                                 sprintf(timeText, "%0*d:%0*d
 %0*d/%0*d/%ld",
                                         2, time->tm_hour, 2, time->tm_min,
                                         2, time->tm_mon + 1, 2,
 time->tm_mday, year);
                         } else {
                                 sprintf(timeText, "%0*d:%0*d",
                                         2, time->tm_hour, 2,
 time->tm_min);
                         }

                         BString buffer1("Finish: ");
                         buffer1 << timeText;
                         finishTime -= now;
                         time = gmtime(&finishTime);

                         BString buffer2;
                         if (finishTime > secondsPerDay)
                                 buffer2 << "Over " << finishTime /
 secondsPerDay << "days";
                         else if (finishTime > 60 * 60)
                                 buffer2 << "Over " << finishTime / (60 *
 60) << " hours";
                         else if (finishTime > 60)
                                 buffer2 << finishTime / 60 << " minutes";
                         else
                                 buffer2 << finishTime << " seconds";

                         buffer2 << " left";

                         buffer = "(";
                         buffer << buffer1 << " - " << buffer2 << ")";
                         tp.x = fStatusBar->Frame().right -
 StringWidth(buffer.String());
                         if (tp.x > rightDivider)
                                 DrawString(buffer.String(), tp);
                         else {
                                 // complete string too wide, try with
 shorter version
                                 buffer = "(";
                                 buffer << buffer1 << ")";
                                 tp.x = fStatusBar->Frame().right -
 StringWidth(buffer.String());
                                 if (tp.x > rightDivider)
                                         DrawString(buffer.String(), tp);
                         }

 }}}

-- 
Ticket URL: <http://dev.haiku-os.org/ticket/6930>
Haiku <http://dev.haiku-os.org>
Haiku - the operating system.

Other related posts: