Package: wmcalclock
Version: 1.25-9
Severity: wishlist

I tend to think of days as ending when I go to sleep, usually after
midnight, and I sometimes get confused when my computer clock shows
the date change at midnight.  So I wrote this patch to wmCalClock to
make it display what one might call "30-hour mode": Times between
midnight and 6 AM are displayed as belonging to the previous day, so
the range of hours runs from 6 to 29.  Maybe other people would find
it useful as well.  Here is the patch:

diff -Naur wmcalclock-1.25/Src/wmCalClock.1 
wmcalclock-1.25-rwbarton/Src/wmCalClock.1
--- wmcalclock-1.25/Src/wmCalClock.1    2005-01-29 10:16:35.000000000 +0000
+++ wmcalclock-1.25-rwbarton/Src/wmCalClock.1   2005-01-29 10:30:06.000000000 
+0000
@@ -25,6 +25,11 @@
 .B \-24
 Show time in 24-hour format instead of default 12-hour AM/PM format.
 .TP
+.B \-30
+Show local time in 30-hour format.  Times between midnight and 6 AM
+are displayed as belonging to the previous day, so the hour ranges
+from 6 to 29.
+.TP
 .B \-g
 Show Greenwich Mean Time (GMT).
 .TP
diff -Naur wmcalclock-1.25/Src/wmCalClock.c 
wmcalclock-1.25-rwbarton/Src/wmCalClock.c
--- wmcalclock-1.25/Src/wmCalClock.c    2005-01-29 10:06:31.000000000 +0000
+++ wmcalclock-1.25-rwbarton/Src/wmCalClock.c   2005-01-29 10:31:11.000000000 
+0000
@@ -259,6 +259,7 @@
 int    yAMPM  = 95;
 int    ydAMPM = 6;
 int    Show24HourTime = 0;
+int    Show30HourTime = 0;
 int    ShowGreenwichTime = 0;
 int    ShowSiderealTime = 0;
 double Longitude;
@@ -502,6 +503,26 @@
                gmst  = (gmst - (double)Mins)*60.0;
                Secs  = (int)gmst;
 
+           } else if (Show30HourTime){
+
+                CurrentLocalTime = time(CurrentTime);
+               Time = localtime(&CurrentLocalTime);
+
+               /* Careful.  Need to handle daylight savings time changes 
correctly. */
+               if (Time->tm_hour < 6){
+                   int old_hour = Time->tm_hour;
+                   time_t new_time = CurrentLocalTime - 24 * 60 * 60;
+                   Time = localtime(&new_time);
+                   Time->tm_hour = old_hour + 24;
+               }
+
+               DayOfMonth = Time->tm_mday-1;
+               DayOfWeek = Time->tm_wday;
+               Month = Time->tm_mon;
+               Hours = Time->tm_hour;
+               Mins  = Time->tm_min;
+               Secs  = Time->tm_sec;
+               
            } else {
 
                 CurrentLocalTime = time(CurrentTime);
@@ -803,6 +824,11 @@
 
            Show24HourTime = 1;
 
+        } else if (!strcmp(argv[i], "-30")){
+
+           Show24HourTime = 1; /* Don't display AM/PM */
+           Show30HourTime = 1;
+
         } else if (!strcmp(argv[i], "-b")){
 
             if ((i+1 >= argc)||(argv[i+1][0] == '-')) {
@@ -883,6 +909,7 @@
     printf("\t-e \"Command\"\tCommand to execute via double click of mouse 
button 1.\n");
     printf("\t-S\t\tDo not show seconds.\n");
     printf("\t-24\t\tShow 24-hour time. Default is 12 hour AM/PM Time.\n");
+    printf("\t-30\t\tShow 30-hour local time (hour ranges from 6 to 29).\n");
     printf("\t-g\t\tShow Greenwich time.\n");
     printf("\t-s\t\tShow Greenwich Mean Sidereal Time (GMST) in 24-hour 
format. \n");
     printf("\t-L <Longitude>\tShow Local Sidereal Time (LST) in 24-hour 
format. \n");


-- System Information:
Debian Release: testing/unstable
  APT prefers testing
  APT policy: (500, 'testing')
Architecture: i386 (i686)
Kernel: Linux 2.4.24
Locale: LANG=C, LC_CTYPE=C

Versions of packages wmcalclock depends on:
ii  libc6                       2.3.2.ds1-11 GNU C Library: Shared libraries an
ii  xlibs                       4.3.0-7      X Window System client libraries m

-- no debconf information


-- 
To UNSUBSCRIBE, email to [EMAIL PROTECTED]
with a subject of "unsubscribe". Trouble? Contact [EMAIL PROTECTED]

Reply via email to