Opened 14 years ago
Closed 10 years ago
#6930 closed bug (duplicate)
Tracker status window problems
Reported by: | Karvjorm | Owned by: | nobody |
---|---|---|---|
Priority: | normal | Milestone: | R1 |
Component: | Applications/Tracker | Version: | R1/Development |
Keywords: | Wrong year, 0 bytes | Cc: | Karvjorm |
Blocked By: | #11176 | Blocking: | |
Platform: | All |
Description (last modified by )
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/StatusWindow.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); }
Change History (4)
comment:1 by , 14 years ago
Component: | Add-Ons/Tracker → Applications/Tracker |
---|---|
Description: | modified (diff) |
Owner: | changed from | to
Version: | R1/alpha2 → R1/Development |
comment:2 by , 13 years ago
Owner: | changed from | to
---|---|
Status: | new → assigned |
comment:3 by , 13 years ago
Owner: | changed from | to
---|
comment:4 by , 10 years ago
Blocked By: | 11176 added |
---|---|
Resolution: | → duplicate |
Status: | assigned → closed |
Note:
See TracTickets
for help on using tickets.
Fixed the TODO part in hrev42977. Not sure about the other part, it doesn't seem to be related. Somehow the computations from the status window went wrong ?