#include "gif_lib.h"
#include "gifdecomp.h"
+#ifndef TRUE
+#define TRUE 1
+#endif /* TRUE */
+#ifndef FALSE
+#define FALSE 0
+#endif /* FALSE */
+
#define PROGRAM_NAME "GifDecomp"
#define GIF_ASM_NAME "Tuxwetter"
#define COMMENT_GIF_ASM "New-Tuxwetter-Team"
#define SQR(x) ((x) * (x))
+#define GIF_MESSAGE(Msg) fprintf(stderr, "\n%s: %s\n", PROGRAM_NAME, Msg)
+#define GIF_EXIT(Msg) { GIF_MESSAGE(Msg); exit(-3); }
+
+#define printfe(format, ...) \
+ (fprintf(stderr, format "\n", ## __VA_ARGS__), fflush(stderr))
+
+#define printfef(format, ...) \
+ printfe("%s " format, __func__, ## __VA_ARGS__)
+
static int
- ImageNum = 0,
+// ImageNum = 0,
InterlacedFlag = FALSE,
InterlacedOffset[] = { 0, 4, 2, 1 }, /* The way Interlaced image should. */
InterlacedJumps[] = { 8, 8, 4, 2 }; /* be read - offsets and jumps... */
******************************************************************************/
int gifdecomp(char *InFileName, char *OutFileName)
{
-int i;
+int i, err = 0;
GifRowType *ImageBuffer;
char TempGifName[80];
/* Open input file: */
if (InFileName != NULL)
{
- if ((GifFileIn = DGifOpenFileName(InFileName)) == NULL)
- QuitGifError(GifFileIn, GifFileOut);
+ if ((GifFileIn = DGifOpenFileName(InFileName, &err)) == NULL)
+ QuitGifError(GifFileIn, GifFileOut, err);
}
- if ((GifFileIn = DGifOpenFileName(InFileName)) != NULL)
+ if ((GifFileIn = DGifOpenFileName(InFileName, &err)) != NULL)
{
- if ((GifFileOut = EGifOpenFileName(TempGifName, TRUE)) == NULL)
- QuitGifError(GifFileIn, GifFileOut);
+ if ((GifFileOut = EGifOpenFileName(TempGifName, TRUE, &err)) == NULL)
+ QuitGifError(GifFileIn, GifFileOut, err);
if (EGifPutScreenDesc(GifFileOut,
GifFileIn->SWidth, GifFileIn->SHeight,
GifFileIn->SColorResolution, GifFileIn->SBackGroundColor,
GifFileIn->SColorMap) == GIF_ERROR)
- QuitGifError(GifFileIn, GifFileOut);
+ QuitGifError(GifFileIn, GifFileOut, err);
/* Scan the content of the GIF file and load the image(s) in: */
do {
if (DGifGetRecordType(GifFileIn, &RecordType) == GIF_ERROR)
- QuitGifError(GifFileIn, GifFileOut);
+ QuitGifError(GifFileIn, GifFileOut, err);
switch (RecordType) {
case IMAGE_DESC_RECORD_TYPE:
if (DGifGetImageDesc(GifFileIn) == GIF_ERROR)
- QuitGifError(GifFileIn, GifFileOut);
+ QuitGifError(GifFileIn, GifFileOut, err);
/* Put the image descriptor to out file: */
if (EGifPutImageDesc(GifFileOut,
GifFileIn->Image.Width, GifFileIn->Image.Height,
InterlacedFlag,
GifFileIn->Image.ColorMap) == GIF_ERROR)
- QuitGifError(GifFileIn, GifFileOut);
+ QuitGifError(GifFileIn, GifFileOut, err);
/* Load the image (either Interlaced or not), and dump it as */
/* defined in GifFileOut->Image.Interlaced. */
if (LoadImage(GifFileIn, &ImageBuffer) == GIF_ERROR)
- QuitGifError(GifFileIn, GifFileOut);
+ QuitGifError(GifFileIn, GifFileOut, err);
if (DumpImage(GifFileOut, ImageBuffer) == GIF_ERROR)
- QuitGifError(GifFileIn, GifFileOut);
+ QuitGifError(GifFileIn, GifFileOut, err);
break;
case EXTENSION_RECORD_TYPE:
/* Skip any extension blocks in file: */
if (DGifGetExtension(GifFileIn, &ExtCode, &Extension) == GIF_ERROR)
- QuitGifError(GifFileIn, GifFileOut);
+ QuitGifError(GifFileIn, GifFileOut, err);
if (EGifPutExtension(GifFileOut, ExtCode, Extension[0],
Extension) == GIF_ERROR)
- QuitGifError(GifFileIn, GifFileOut);
+ QuitGifError(GifFileIn, GifFileOut, err);
/* No support to more than one extension blocks, so discard: */
while (Extension != NULL) {
if (DGifGetExtensionNext(GifFileIn, &Extension) == GIF_ERROR)
- QuitGifError(GifFileIn, GifFileOut);
+ QuitGifError(GifFileIn, GifFileOut, err);
}
break;
case TERMINATE_RECORD_TYPE:
}
while (RecordType != TERMINATE_RECORD_TYPE);
- if (DGifCloseFile(GifFileIn) == GIF_ERROR)
- QuitGifError(GifFileIn, GifFileOut);
- if (EGifCloseFile(GifFileOut) == GIF_ERROR)
- QuitGifError(GifFileIn, GifFileOut);
+ if (DGifCloseFile(GifFileIn, &err) == GIF_ERROR)
+ QuitGifError(GifFileIn, GifFileOut, err);
+ if (EGifCloseFile(GifFileOut, &err) == GIF_ERROR)
+ QuitGifError(GifFileIn, GifFileOut, err);
- if ((GifFileIn = DGifOpenFileName(TempGifName)) == NULL)
- QuitGifError(GifFileIn, GifFileOut);
+ if ((GifFileIn = DGifOpenFileName(TempGifName, &err)) == NULL)
+ QuitGifError(GifFileIn, GifFileOut, err);
/* Scan the content of GIF file and dump image(s) to seperate file(s): */
do {
sprintf(CrntFileName, "%s%02d.gif", OutFileName, FileNum++);
- if ((GifFileOut = EGifOpenFileName(CrntFileName, TRUE)) == NULL)
- QuitGifError(GifFileIn, GifFileOut);
+ if ((GifFileOut = EGifOpenFileName(CrntFileName, TRUE, &err)) == NULL)
+ QuitGifError(GifFileIn, GifFileOut, err);
FileEmpty = TRUE;
/* And dump out its exactly same screen information: */
GifFileIn->SWidth, GifFileIn->SHeight,
GifFileIn->SColorResolution, GifFileIn->SBackGroundColor,
GifFileIn->SColorMap) == GIF_ERROR)
- QuitGifError(GifFileIn, GifFileOut);
+ QuitGifError(GifFileIn, GifFileOut, err);
do {
if (DGifGetRecordType(GifFileIn, &RecordType) == GIF_ERROR)
- QuitGifError(GifFileIn, GifFileOut);
+ QuitGifError(GifFileIn, GifFileOut, err);
switch (RecordType) {
case IMAGE_DESC_RECORD_TYPE:
FileEmpty = FALSE;
if (DGifGetImageDesc(GifFileIn) == GIF_ERROR)
- QuitGifError(GifFileIn, GifFileOut);
+ QuitGifError(GifFileIn, GifFileOut, err);
/* Put same image descriptor to out file: */
if (EGifPutImageDesc(GifFileOut,
GifFileIn->Image.Left, GifFileIn->Image.Top,
GifFileIn->Image.Width, GifFileIn->Image.Height,
GifFileIn->Image.Interlace,
GifFileIn->Image.ColorMap) == GIF_ERROR)
- QuitGifError(GifFileIn, GifFileOut);
+ QuitGifError(GifFileIn, GifFileOut, err);
/* Now read image itself in decoded form as we dont */
/* really care what is there, and this is much faster. */
if (DGifGetCode(GifFileIn, &CodeSize, &CodeBlock) == GIF_ERROR
|| EGifPutCode(GifFileOut, CodeSize, CodeBlock) == GIF_ERROR)
- QuitGifError(GifFileIn, GifFileOut);
+ QuitGifError(GifFileIn, GifFileOut, err);
while (CodeBlock != NULL)
if (DGifGetCodeNext(GifFileIn, &CodeBlock) == GIF_ERROR ||
EGifPutCodeNext(GifFileOut, CodeBlock) == GIF_ERROR)
- QuitGifError(GifFileIn, GifFileOut);
+ QuitGifError(GifFileIn, GifFileOut, err);
break;
case EXTENSION_RECORD_TYPE:
FileEmpty = FALSE;
/* Skip any extension blocks in file: */
if (DGifGetExtension(GifFileIn, &ExtCode, &Extension)
== GIF_ERROR)
- QuitGifError(GifFileIn, GifFileOut);
+ QuitGifError(GifFileIn, GifFileOut, err);
if (EGifPutExtension(GifFileOut, ExtCode, Extension[0],
Extension) == GIF_ERROR)
- QuitGifError(GifFileIn, GifFileOut);
+ QuitGifError(GifFileIn, GifFileOut, err);
/* No support to more than one extension blocks, discard.*/
while (Extension != NULL)
if (DGifGetExtensionNext(GifFileIn, &Extension)
== GIF_ERROR)
- QuitGifError(GifFileIn, GifFileOut);
+ QuitGifError(GifFileIn, GifFileOut, err);
break;
case TERMINATE_RECORD_TYPE:
break;
while (RecordType != IMAGE_DESC_RECORD_TYPE &&
RecordType != TERMINATE_RECORD_TYPE);
- if (EGifCloseFile(GifFileOut) == GIF_ERROR)
- QuitGifError(GifFileIn, GifFileOut);
+ if (EGifCloseFile(GifFileOut, &err) == GIF_ERROR)
+ QuitGifError(GifFileIn, GifFileOut, err);
if (FileEmpty) {
/* Might happen on last file - delete it if so: */
unlink(CrntFileName);
}
while (RecordType != TERMINATE_RECORD_TYPE);
- if (DGifCloseFile(GifFileIn) == GIF_ERROR)
- QuitGifError(GifFileIn, GifFileOut);
+ if (DGifCloseFile(GifFileIn, &err) == GIF_ERROR)
+ QuitGifError(GifFileIn, GifFileOut, err);
FileNum=FileNum-1;
}
return FileNum;
/******************************************************************************
* Close both input and output file (if open), and exit. *
******************************************************************************/
-void QuitGifError(GifFileType *GifFileIn, GifFileType *GifFileOut)
+void QuitGifError(GifFileType *GifFileIn, GifFileType *GifFileOut, int ErrorCode)
{
- PrintGifError();
- if (GifFileIn != NULL) DGifCloseFile(GifFileIn);
- if (GifFileOut != NULL) EGifCloseFile(GifFileOut);
+ const char *errstr = NULL;
+// PrintGifError();
+ errstr = GifErrorString(ErrorCode);
+ printfef("Failed to open file: %d (%s)", ErrorCode, errstr);
+
+ if (GifFileIn != NULL) DGifCloseFile(GifFileIn, &ErrorCode);
+ if (GifFileOut != NULL) EGifCloseFile(GifFileOut, &ErrorCode);
// exit(EXIT_FAILURE);
}
int LoadImage(GifFileType *GifFile, GifRowType **ImageBufferPtr)
{
- int Size, i, j, Count;
+ int Size, i, j/*, Count*/;
GifRowType *ImageBuffer;
/* Allocate the image as vector of column of rows. We cannt allocate */
*ImageBufferPtr = ImageBuffer;
- GifQprintf("\n%s: Image %d at (%d, %d) [%dx%d]: ",
+/* GifQprintf("\n%s: Image %d at (%d, %d) [%dx%d]: ",
PROGRAM_NAME, ++ImageNum, GifFile->Image.Left, GifFile->Image.Top,
GifFile->Image.Width, GifFile->Image.Height);
+*/
if (GifFile->Image.Interlace) {
/* Need to perform 4 passes on the images: */
- for (Count = i = 0; i < 4; i++)
+ for (/*Count =*/ i = 0; i < 4; i++)
for (j = InterlacedOffset[i]; j < GifFile->Image.Height;
j += InterlacedJumps[i]) {
// GifQprintf("\b\b\b\b%-4d", Count++);
******************************************************************************/
int DumpImage(GifFileType *GifFile, GifRowType *ImageBuffer)
{
- int i, j, Count;
+ int i, j/*, Count*/;
if (GifFile->Image.Interlace) {
/* Need to perform 4 passes on the images: */
- for (Count = GifFile->Image.Height, i = 0; i < 4; i++)
+ for (/*Count = GifFile->Image.Height,*/ i = 0; i < 4; i++)
for (j = InterlacedOffset[i]; j < GifFile->Image.Height;
j += InterlacedJumps[i]) {
// GifQprintf("\b\b\b\b%-4d", Count--);
}
}
else {
- for (Count = GifFile->Image.Height, i = 0; i < GifFile->Image.Height; i++) {
+ for (/*Count = GifFile->Image.Height,*/ i = 0; i < GifFile->Image.Height; i++) {
// GifQprintf("\b\b\b\b%-4d", Count--);
if (EGifPutLine(GifFile, ImageBuffer[i], GifFile->Image.Width)
== GIF_ERROR) return GIF_ERROR;
* along with this program; if not, write to the Free Software
* Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
*
- * $Id: tuxwetter.c,v 3.18 2010/06/18 20:00 SnowHead $
*/
//getline needed #define _GNU_SOURCE
#include "resize.h"
#include "gifdecomp.h"
-#define P_VERSION "3.05"
+#define P_VERSION "3.06"
+#define S_VERSION ""
#ifndef HAVE_DREAMBOX_HARDWARE
char CONVERT_LIST[]="/var/tuxbox/config/tuxwetter/convert.list";
-#define CFG_FILE "/var/tuxbox/config/tuxwetter/tuxwetter.conf"
-#define MCF_FILE "/var/tuxbox/config/tuxwetter/tuxwetter.mcfg"
-#define TIME_FILE "/var/tuxbox/config/tuxwetter/swisstime"
-//#define MISS_FILE "/var/tuxbox/config/tuxwetter/missing_translations.txt"
+#define CFG_FILE "/var/tuxbox/config/tuxwetter/tuxwetter.conf"
+#define MCF_FILE "/var/tuxbox/config/tuxwetter/tuxwetter.mcfg"
+#define TIME_FILE "/var/tuxbox/config/tuxwetter/swisstime"
+//#define MISS_FILE "/var/tuxbox/config/tuxwetter/missing_translations.txt"
+#define START_PIC "/var/plugins/tuxwet/startbild.jpg"
#else
char CONVERT_LIST[]="/var/bin/tuxwet/convert.list";
-#define CFG_FILE "/var/bin/tuxwet/tuxwetter.conf"
-#define MCF_FILE "/var/bin/tuxwet/tuxwetter.mcfg"
-#define TIME_FILE "/var/bin/tuxwet/swisstime"
-#define MISS_FILE "/var/bin/tuxwet/missing_translations.txt"
+#define CFG_FILE "/var/bin/tuxwet/tuxwetter.conf"
+#define MCF_FILE "/var/bin/tuxwet/tuxwetter.mcfg"
+#define TIME_FILE "/var/bin/tuxwet/swisstime"
+#define MISS_FILE "/var/bin/tuxwet/missing_translations.txt"
#endif
#define NCF_FILE "/var/tuxbox/config/neutrino.conf"
#define ECF_FILE "/var/tuxbox/config/enigma/config"
static char TCF_FILE[128]="";
#define LIST_STEP 10
-#define MAX_FUNCS 7
+#define MAX_FUNCS 7
#define LCD_CPL 12
#define LCD_RDIST 10
// Forward defines
int pic_on_data(char *name, int xstart, int ystart, int xsize, int ysize, int wait, int single, int center, int rahmen);
-char par[32]="1005530704", key[32]="a9c95f7636ad307b";
+char par[32]="", key[32]="";
void TrimString(char *strg);
// Color table stuff
-static char menucoltxt[][25]={"Content_Selected_Text","Content_Selected","Content_Text","Content","Content_inactive_Text","Content_inactive","Head_Text","Head"};
+static const char menucoltxt[][25]={"Content_Selected_Text","Content_Selected","Content_Text","Content","Content_inactive_Text","Content_inactive","Head_Text","Head"};
//static char spres[][5]={"","_crt","_lcd"};
//#define FONT "/usr/share/fonts/md_khmurabi_10.ttf"
void ShowInfo(MENU *m);
// Misc
-char NOMEM[]="Tuxwetter <Out of memory>\n";
+const char NOMEM[]="Tuxwetter <Out of memory>\n";
unsigned char *lfb = 0, *lbb = 0;
-int intype=0, show_icons=0, gmodeon=0, ctmo=0, metric=1, loadalways=0, radius=0;
+int intype=0, show_icons=0, gmodeon=0, ctmo=0, metric=1, loadalways=0, radius=0, num_of_days=5;
char city_code[30] = "";
char city_name[50] = "";
unsigned int alpha=0x0202;
char *trstr;
char *htmstr;
unsigned char *proxyadress=NULL, *proxyuserpwd=NULL;
-char INST_FILE[]="/tmp/rc.locked";
-char LCDL_FILE[]="/tmp/lcd.locked";
+const char INST_FILE[]="/tmp/rc.locked";
+//char LCDL_FILE[]="/tmp/lcd.locked";
int instance=0;
+int rclocked=0;
int get_instance(void)
{
-FILE *fh;
-int rval=0;
+ FILE *fh;
+ int rval=0;
if((fh=fopen(INST_FILE,"r"))!=NULL)
{
void put_instance(int pval)
{
-FILE *fh;
+ FILE *fh;
if(pval)
{
+ if (!rclocked) {
+ rclocked=1;
+ system("pzapit -lockrc > /dev/null");
+ }
if((fh=fopen(INST_FILE,"w"))!=NULL)
{
fputc(pval,fh);
fclose(fh);
}
- if(pval==1)
+/* if(pval==1)
{
if((fh=fopen(LCDL_FILE,"w"))!=NULL)
{
fclose(fh);
}
}
- }
+*/ }
else
{
remove(INST_FILE);
- remove(LCDL_FILE);
+ system("pzapit -unlockrc > /dev/null");
+// remove(LCDL_FILE);
}
}
static void quit_signal(int sig)
{
+ char *txt=NULL;
+ switch (sig)
+ {
+ case SIGINT: txt=strdup("SIGINT"); break;
+ case SIGTERM: txt=strdup("SIGTERM"); break;
+ case SIGQUIT: txt=strdup("SIGQUIT"); break;
+ case SIGSEGV: txt=strdup("SIGSEGV"); break;
+ default:
+ txt=strdup("UNKNOWN"); break;
+ }
+
+ printf("Tuxwetter Version %s%s killed, signal %s(%d)\n", P_VERSION, S_VERSION, txt, sig);
put_instance(get_instance()-1);
- printf("tuxwetter Version %s killed\n",P_VERSION);
+ free(txt);
exit(1);
}
rv=-1;
}
}
-// printf("%s\n%s=%s -> %d\n",tstr,entry,cfptr,rv);
+ //printf("%s\n%s=%s -> %d\n",tstr,entry,cfptr,rv);
}
fclose(nfh);
}
}
if(strstr(line_buffer,"ProxyAdressPort") == line_buffer)
{
- proxyadress=strdup(cptr+1);
+ proxyadress=(unsigned char*)strdup(cptr+1);
}
if(strstr(line_buffer,"ProxyUserPwd") == line_buffer)
{
- proxyuserpwd=strdup(cptr+1);
+ proxyuserpwd=(unsigned char*)strdup(cptr+1);
}
if(strstr(line_buffer,"ConnectTimeout") == line_buffer)
{
{
sscanf(cptr+1,"%d",&loadalways);
}
+ if(strstr(line_buffer,"7-Days") == line_buffer)
+ {
+ int dtmp=0;
+ sscanf(cptr+1,"%d",&dtmp);
+ if (dtmp == 1)
+ num_of_days=7;
+ }
+#ifdef WWEATHER
+ if(strstr(line_buffer,"API-Key") == line_buffer)
+#else
if(strstr(line_buffer,"PartnerID") == line_buffer)
{
strncpy(par,cptr+1,sizeof(par)-1);
}
- if(strstr(line_buffer,"LicenseKey") == line_buffer)
+ if(strstr(line_buffer,"licenseKey") == line_buffer)
+#endif
{
strncpy(key,cptr+1,sizeof(key)-1);
}
intype=2;
}
}
-
-/* if(strstr(line_buffer,"FONT=") == line_buffer)
- {
- strcpy(FONT,strchr(line_buffer,'=')+1);
- }
- if(strstr(line_buffer,"FONTSIZE=") == line_buffer)
- {
- sscanf(strchr(line_buffer,'=')+1,"%d",&FSIZE_MED);
- FSIZE_FSIZE_BIG=(FSIZE_MED*4)/3;
- FSIZE_SMALL=(FSIZE_MED*4)/5;
- }
-*/
}
}
if(fd_conf)
int Transform_Entry(char *src, char *trg)
{
-int type=0,tret=-1,fcnt,fpos,tval,ferr,tsub;
+int tret=-1,fcnt,fpos,tval,ferr,tsub;
int noprint,rndval,loctime=0;
char /*pstr[512],nstr[512],dstr[50],*/fstr[5],*cptr,*tptr,*aptr;
time_t stime;
struct tm *tltime;
- type=0;
tsub=0;
*trg=0;
if((cptr=strchr(src,','))==NULL)
{
tltime=gmtime(&stime);
}
-// strncpy(nstr,src,cptr-src);
-// ++cptr;
+
fpos=0;
ferr=0;
tval=0;
case KEY_VOLUMEUP: ++m->act_entry;
break;
- case KEY_PAGEUP : m->act_entry-=10;
+ case KEY_LEFT:
+ case KEY_PAGEUP: m->act_entry-=10;
break;
- case KEY_PAGEDOWN : m->act_entry+=10;
+ case KEY_RIGHT:
+ case KEY_PAGEDOWN: m->act_entry+=10;
break;
case KEY_OK:
mloop=0;
break;
- case KEY_SETUP:
+ case KEY_MENU:
rv=-98;
mloop=0;
break;
void ShowInfo(MENU *m)
{
- int scrollbar_len, scrollbar_ofs, scrollbar_cor, loop;
- int index=m->act_entry,tind=m->act_entry, sbw=(m->num_entrys>10)?14:0;
+ double scrollbar_len, scrollbar_ofs, scrollbar_cor;
+ int loop, index=m->act_entry,tind=m->act_entry, sbw=(m->num_entrys > LIST_STEP)?14:0;
char tstr[BUFSIZE], *tptr;
- int moffs=35, ixw=400, iyw=(m->num_entrys<10)?((m->num_entrys+1)*30+moffs):375, dy, my, mh=iyw-moffs-radius-8, toffs, soffs=4, isx, isy;
- dy=(m->num_entrys<10)?30:(mh/11);
+ int moffs=35, roffs=8, ixw=400, iyw=(m->num_entrys < LIST_STEP)?((m->num_entrys+1)*30+moffs):375, dy, my, mh, toffs, soffs=4, isx, isy;
+
+ mh=iyw-moffs-roffs-(radius?4:0);
+ dy=(m->num_entrys < LIST_STEP)?30:(mh/(LIST_STEP+1));
toffs=dy/2;
my=moffs+dy+toffs;
// RenderBox(0, 0, ixw, iyw, GRID, CMCS);
// titlebar
- RenderBox(isx+2, isy+2, ixw-2, moffs+5, radius, CMH);
+ RenderBox(isx+2, isy-2, ixw-2, moffs+roffs, radius, CMH);
//selectbar
RenderBox(isx+2, isy+moffs+toffs+soffs+(index%10)*dy+2, ixw-sbw-2, dy+2, radius, CMCS);
if(sbw)
{
//sliderframe
- RenderBox(isx+ixw-sbw, isy+moffs+8, sbw, mh, radius, CMCP1);
+ RenderBox(isx+ixw-sbw, isy+moffs+roffs, sbw, mh, radius, CMCP1);
//slider
- scrollbar_len = (double)mh / (double)((m->num_entrys/LIST_STEP+1)*LIST_STEP);
- scrollbar_ofs = scrollbar_len*(double)((index/LIST_STEP)*LIST_STEP);
+ scrollbar_len = (double)(mh-4) / (double)(((m->num_entrys-1)/LIST_STEP+1)*LIST_STEP);
+ scrollbar_ofs = scrollbar_len*(double)((index/LIST_STEP)*LIST_STEP)+roffs;
scrollbar_cor = scrollbar_len*(double)LIST_STEP;
- RenderBox(isx+ixw-sbw, isy+moffs + scrollbar_ofs+8, sbw, scrollbar_cor , radius, CMCP3);
+ RenderBox(isx+ixw-sbw+2, isy+moffs+scrollbar_ofs+2, sbw-4, scrollbar_cor, radius, CMCP3);
}
// Title text
case 2: RenderCircle(isx+9,isy+my-15,YELLOW); break;
case 3: RenderCircle(isx+9,isy+my-15,BLUE0); break;
/*
- case 0: PaintIcon("/share/tuxbox/neutrino/icons/rot.raw",9,my-17,1); break;
- case 1: PaintIcon("/share/tuxbox/neutrino/icons/gruen.raw",9,my-17,1); break;
- case 2: PaintIcon("/share/tuxbox/neutrino/icons/gelb.raw",9,my-17,1); break;
- case 3: PaintIcon("/share/tuxbox/neutrino/icons/blau.raw",9,my-17,1); break;
+ case 0: PaintIcon("/share/tuxbox/neutrino/icons/rot.png" ,isx+25,isy+my-17, 16, 16); break;
+ case 1: PaintIcon("/share/tuxbox/neutrino/icons/gruen.png",isx+25,isy+my-17, 16, 16); break;
+ case 2: PaintIcon("/share/tuxbox/neutrino/icons/gelb.png" ,isx+25,isy+my-17, 16, 16); break;
+ case 3: PaintIcon("/share/tuxbox/neutrino/icons/blau.png" ,isx+25,isy+my-17, 16, 16); break;
*/
default:
sprintf(tstr,"%1d",(loop % 10)-3);
char *tptr;
int cpos;
int res;
-int len;
- len=strlen(menu.list[menu.act_entry]->entry);
+ int len=strlen(menu.list[menu.act_entry]->entry);
if ((tptr=strchr(menu.list[menu.act_entry]->entry,','))!=NULL)
{
city_code[0]=0;
return 1;
}
+ if (num_of_days > prs_get_days_count())
+ {
+ char tstr[64];
+ sprintf(tstr,"%d-%s", num_of_days, prs_translate("Tage Vorschau nicht möglich", CONVERT_LIST));
+ ShowMessage(tstr, 1);
+ city_code[0]=0;
+ return 1;
+ }
}
else
{
void clear_screen(void)
{
-// for(; sy <= ey; sy++) memset(lbb + sx + var_screeninfo.xres*(sy),TRANSP, ex-sx + 1);
memset(lbb, TRANSP, fix_screeninfo.line_length*var_screeninfo.yres);
memcpy(lfb, lbb, fix_screeninfo.line_length*var_screeninfo.yres);
}
#endif
char vstr[512],v2str[512],rstr[512],tstr[512],icon[60];
-int vy=70,col1=40,col2=340;
+int col1=40, vy=70;
+int col2=((preset)?340:300);
-int wxw=ex-sx-10; //box width
-int wyw=ey-sy; //box height
+int wxw=ex-sx-((preset)?120:30); //box width
+int wyw=ey-sy-((preset)?50:40); //box height
int gys=vy; //table space top
int gysf=34; //table space bottom
int gxs=40; //table space left
-int gxw=((wxw-(gxs*2))/5) * 5; //table width
+int gxw=((wxw-(gxs*2))/num_of_days) * num_of_days; //table width
int gywf=100; //table footer height
int gyw=wyw-vy-gywf-gysf; //table height
-int gicw=gxw/5; //table data width
-int dy=26; //linespace
+int gicw=gxw/num_of_days; //table data width
int vxs=0,wsx,wsy;
-int tret=0;
int prelate=0;
int rcd;
-int HMED=22;
-int slim=0; //using 720x576
+int HMED=((preset)?22:20);
+int dy=26; //linespace
+
time_t atime;
struct tm *sltime;
-char tun[2]="C",sun[5]="km/h",dun[3]="km",pun[5]="mbar",cun[20];
-
- if (var_screeninfo.xres < 1280)
- slim=1;
+char tun[2]="C",sun[5]="km/h",dun[6]="km",pun[5]="mbar",iun[7]="mm", cun[20];
clear_screen();
if(index!=1)
{
RenderBox(wsx, wsy, wxw, wyw, radius, CMC);
- RenderBox(wsx+2, wsy+2, wxw-2, 44, radius, CMH);
+ RenderBox(wsx+2, wsy+2, wxw-4, 44, radius, CMH);
}
else
{
strcpy(cun,prs_translate("Uhr",CONVERT_LIST));
if(!metric)
{
- sprintf(tun,"F");
- sprintf(sun,"mph");
- sprintf(dun,"mi");
- sprintf(pun,"in");
- *cun=0;
+ sprintf(tun,"F"); // Fahrenheit
+ sprintf(sun,"mph"); // miles per hour
+ sprintf(dun,"miles");
+ sprintf(pun,"mb"); // millibar
+ sprintf(iun,"inches");
+ *cun=0; // Uhrzeit
}
if(index==-99)
{
int i;
unsigned char grstr[XL+1]={'G'^XX,'r'^XX,'\xFC'^XX,'\xDF'^XX,'e'^XX,' '^XX,'v'^XX,'o'^XX,'m'^XX,' '^XX,'N'^XX,'e'^XX,'w'^XX,'-'^XX,'T'^XX,'u'^XX,'x'^XX,'w'^XX,'e'^XX,'t'^XX,'t'^XX,'e'^XX,'r'^XX,'-'^XX,'T'^XX,'e'^XX,'a'^XX,'m'^XX,'!'^XX,' '^XX,' '^XX,';'^XX,'-'^XX,')'^XX,' '^XX,' '^XX,'w'^XX,'w'^XX,'w'^XX,'.'^XX,'k'^XX,'e'^XX,'y'^XX,'w'^XX,'e'^XX,'l'^XX,'t'^XX,'-'^XX,'b'^XX,'o'^XX,'a'^XX,'r'^XX,'d'^XX,'.'^XX,'c'^XX,'o'^XX,'m'^XX,0};
- sprintf(rstr,"Tuxwetter Version %s",P_VERSION);
- RenderString(rstr, 0, 34, wxw, CENTER, FSIZE_BIG, CMHT);
+ dy = ((preset)?dy:22);
+ sprintf(rstr,"Tuxwetter Version %s%s",P_VERSION,S_VERSION);
+ RenderString(rstr, wsx, wsy+34, wxw, CENTER, FSIZE_BIG, CMHT);
sprintf(rstr,"%s",prs_translate("Steuertasten in den Menüs",CONVERT_LIST));
RenderString(rstr, 0, vy, wxw, CENTER, HMED, GREEN);
sprintf(rstr,"%s",prs_translate("nächsten Eintrag anzeigen",CONVERT_LIST));
RenderString(rstr, col2, vy, wxw-col2, LEFT, HMED, CMCT);
vy+=dy;
-/*
+
sprintf(rstr,"%s",prs_translate("Links (in Bildanzeige)",CONVERT_LIST));
RenderString(rstr, col1, vy, col2-col1, LEFT, HMED, CMCT);
sprintf(rstr,"%s",prs_translate("neu downloaden (für WebCams)",CONVERT_LIST));
sprintf(rstr,"%s",prs_translate("Animation wiederholen",CONVERT_LIST));
RenderString(rstr, col2, vy, wxw-col2, LEFT, HMED, CMCT);
vy+=dy;
-*/
+
sprintf(rstr,"%s",prs_translate("Rot (in fehlenden Übersetzungen)",CONVERT_LIST));
RenderString(rstr, col1, vy, col2-col1, LEFT, HMED, CMCT);
sprintf(rstr,"%s",prs_translate("Fehlliste löschen",CONVERT_LIST));
{
grstr[i]^=XX;
}
- RenderString(grstr, 0, vy, wxw, CENTER, HMED, CMHT);
+ RenderString((char*)grstr, 0, vy, wxw, CENTER, HMED, CMHT);
memcpy(lfb, lbb, fix_screeninfo.line_length*var_screeninfo.yres);
rcd=GetRCCode();
while((rcd != KEY_OK) && (rcd != KEY_EXIT))
RenderString(rstr, wsx, wsy+34, wxw, CENTER, FSIZE_BIG, CMHT);
RenderLine(gxs,gys,gxs,gys+gyw+gywf,CMCIT);
RenderLine(gxs+1,gys,gxs+1,gys+gyw+gywf,CMCIT);
- for(i=0; i<5; i++)
+ for(i=0; i<num_of_days; i++)
{
- prs_get_val(i, PRE_TEMPH,0,vstr);
+ prs_get_val(i, PRE_TEMPHC,0,vstr);
if(sscanf(vstr,"%d",&tmax[i])!=1)
{
if(!i)
tmax[i]=tmax[i-1];
}
}
- prs_get_val(i, PRE_TEMPL,0,vstr);
+ prs_get_val(i, PRE_TEMPLC,0,vstr);
if(sscanf(vstr,"%d",&tmin[i])!=1)
{
tmin[i]=(i)?tmin[i-1]:0;
{
maxt=tmin[i];
}
- if(!show_icons)
- {
#ifdef WWEATHER
- prs_get_dwday(i, PRE_DAY,vstr);
- strcat(vstr,"_SIG");
+ prs_get_dwday(i, PRE_DAY,vstr);
+ strcat(vstr,"_SIG");
#else
- prs_get_day(i, vstr, metric);
- if((pt1=strchr(vstr,','))!=NULL)
- {
- strcpy(pt1,"_SIG");
- }
+ prs_get_day(i, vstr, metric);
+ if((pt1=strchr(vstr,','))!=NULL)
+ {
+ strcpy(pt1,"_SIG");
+ }
#endif
- strcpy(rstr,prs_translate(vstr,CONVERT_LIST));
+ strcpy(rstr,prs_translate(vstr,CONVERT_LIST));
+
+ if(!show_icons) {
RenderString(rstr, gxs+i*gicw, gys+gyw+(FSIZE_BIG/2+gywf/2), gicw, CENTER, FSIZE_BIG, CMCT);//weekday
}
+ else {
+ RenderString(rstr, gxs-5+(i*gicw+17), gys+gyw+FSIZE_BIG+5, gicw, LEFT, FSIZE_BIG,CMCT );//weekday
+ }
RenderLine(gxs+(i+1)*gicw,gys,gxs+(i+1)*gicw,gys+gyw+gywf,CMCIT);
}
RenderLine(gxs+i*gicw+1,gys,gxs+i*gicw+1,gys+gyw+gywf,CMCIT);
- tstep=(5*(1+(int)((maxt-mint)/5))+1);
+ tstep=(num_of_days*(1+(int)((maxt-mint)/num_of_days))+1);
tstep=(double)(gyw-5)/tstep;
RenderLine(gxs,gys,gxs,gys+gyw,CMCIT);
RenderLine(gxs,gys+gyw+2,gxs+gxw,gys+gyw+2,CMCIT);
RenderLine(gxs,gys+gyw+gywf,gxs+gxw,gys+gyw+gywf,CMCIT);
RenderLine(gxs,gys+gyw+gywf+1,gxs+gxw,gys+gyw+gywf+1,CMCIT);
+ RenderString((metric)? "°C":"°F", gxs-20, gys-3, 30, RIGHT, FSIZE_SMALL, CMCT);
+ RenderString((metric)? "°C":"°F", gxs+gxw-20, gys-3, 30, RIGHT, FSIZE_SMALL, CMCT);
RenderString(prs_translate("Höchstwerte",CONVERT_LIST), gxs, gys, gxw/2, CENTER, FSIZE_SMALL, YELLOW);
RenderString(prs_translate("Tiefstwerte",CONVERT_LIST), gxs+(gxw/2), gys, gxw/2, CENTER, FSIZE_SMALL, GREEN);
- for(i=1; i<=(5*(1+(int)((maxt-mint)/5))+1); i++)
+ for(i=1; i<=(num_of_days*(1+(int)((maxt-mint)/num_of_days))+1); i++)
{
if(i)
{
-// RenderLine(gxs,gys+gyw-(i*tstep)-1,gxs+gxw,gys+gyw-(i*tstep)-1,((!(mint+i-1)))?CMCT:CMCIT);
RenderLine(gxs,gys+gyw-(i*tstep)-2,gxs+gxw,gys+gyw-(i*tstep)-2,((!(mint+i-1)))?CMCT:CMCIT);
- if(!((mint+i-1)%5))
+ if(!((mint+i-1)%num_of_days))
{
RenderLine(gxs,gys+gyw-(i*tstep)-3,gxs+gxw,gys+gyw-(i*tstep)-3,((!(mint+i-1)))?CMCT:CMCIT);
}
RenderLine(gxs,gys+gyw-(i*tstep)-1,gxs+gxw,gys+gyw-(i*tstep)-1,CMCP3);
}
- sprintf(vstr,"%d",mint+i-1);
+ if (metric) {
+ sprintf(vstr,"%d",mint+i-1);
+ }
+ else {
+ sprintf(vstr,"%.1f",(mint+i-1)*1.8+32); // °C to °F
+ }
RenderString(vstr,gxs-35,gys+gyw-(i*tstep)+7, 30, RIGHT, FSIZE_VSMALL, CMCT);
RenderString(vstr,gxs+gxw+2,gys+gyw-(i*tstep)+7, 30, RIGHT, FSIZE_VSMALL, CMCT);
}
RenderLine(gxs,gys+gyw-((i-1)*tstep)-3,gxs+gxw,gys+gyw-((i-1)*tstep)-3,((!(mint+i-1)))?CMCT:CMCIT);
// Geglättete Kurven
+ int kk,ll;
+ switch (num_of_days)
+ {
+ case 5: kk=38; ll=40; break;
+ case 7: kk=58; ll=60; break;
+ default: kk=38; ll=40; break;
+ }
- for(i=0; i<5; i++)
+ for(i=0; i<num_of_days; i++)
{
tv1=tmin[i];
tv2=tmin[i+1];
}
}
}
- for(i=2; i<39; i++)
+ for(i=2; i<kk; i++)
{
garr[i]=(garr[i-2]+garr[i-1]+garr[i]+garr[i+1]+garr[i+2])/5.0;
}
- for(i=1; i<=40; i++)
+ for(i=1; i<=ll; i++)
{
pmin=(gys+gyw)-(garr[i-1]-mint+1)*tstep-1;
pmax=(gys+gyw)-(garr[i]-mint+1)*tstep-1;
RenderLine(gxs+gicw/2+((i-1)*(gicw/10)),pmin+1,gxs+gicw/2+i*(gicw/10),pmax+1,GREEN);
RenderLine(gxs+gicw/2+((i-1)*(gicw/10)),pmin+2,gxs+gicw/2+i*(gicw/10),pmax+2,GREEN);
}
- for(i=vxs; i<5; i++)
+ for(i=vxs; i<num_of_days; i++)
{
tv1=tmax[i];
tv2=tmax[i+1];
}
}
}
- for(i=2+10*vxs; i<39; i++)
+ for(i=2+10*vxs; i<kk; i++)
{
garr[i]=(garr[i-2]+garr[i-1]+garr[i]+garr[i+1]+garr[i+2])/5.0;
}
- for(i=1+10*vxs; i<=40; i++)
+ for(i=1+10*vxs; i<=ll; i++)
{
pmin=(gys+gyw)-(garr[i-1]-mint+1)*tstep-1;
pmax=(gys+gyw)-(garr[i]-mint+1)*tstep-1;
if(show_icons)
{
- for(i=0; i<5; i++)
+ for(i=0; i<num_of_days; i++)
{
prs_get_val(i,PRE_ICON,prelate,vstr);
#ifdef WWEATHER
if (HTTP_downloadFile(vstr, ICON_FILE, 0, intype, ctmo, 2) == 0)
#else
- sprintf (icon,"http://image.weather.com/web/common/intlwxicons/52/%s.gif",vstr);
+ snprintf(icon, sizeof(icon), "http://image.weather.com/web/common/intlwxicons/52/%s.gif",vstr);
if (HTTP_downloadFile(icon, ICON_FILE, 0, intype, ctmo, 2) == 0)
#endif
{
- int picx=80,picy=80;
- tret=pic_on_data(icon,sx+gxs+(i*gicw)+((gicw/2)-(picx/2)),sy+gys+gyw+((gywf/2)-(picy/2)), picx, picy, 5, (i)?((i==4)?1:0):2, 0, 0);
+ int picx,picy;
+ switch (num_of_days)
+ {
+ case 5: picx=picy=80; break;
+ case 7: picx=picy=60; break;
+ default: picx=picy=80; break;
+ }
+ pic_on_data(icon,sx+gxs+(i*gicw)+((gicw/2)-(picx/2)),sy+gys+gyw+((gywf/2)-(picy/2)), picx, picy, 5, (i)?((i==4)?1:0):2, 0, 0);
}
- prs_get_dwday(i, PRE_DAY,vstr);
- strcat(vstr,"_SIG");
- strcpy(rstr,prs_translate(vstr,CONVERT_LIST));
- RenderString(rstr, gxs+(i*gicw+17), gys+gyw+FSIZE_BIG+5, gicw, LEFT, FSIZE_BIG,CMCT );//weekday
}
}
#ifdef WWEATHER
if (HTTP_downloadFile(vstr, ICON_FILE, 0, intype, ctmo, 2) != 0)
#else
- sprintf (icon,"http://image.weather.com/web/common/intlwxicons/52/%s.gif",vstr);
+ snprintf(icon, sizeof(icon), "http://image.weather.com/web/common/intlwxicons/52/%s.gif",vstr);
if (HTTP_downloadFile(icon, ICON_FILE, 0, intype, ctmo, 2) != 0)
#endif
{
}
sprintf(rstr,"%s",prs_translate("Aktuelles Wetter",CONVERT_LIST));
- RenderString(rstr, 0, 34, wxw, CENTER, FSIZE_BIG, CMHT);
+ RenderString(rstr, wsx, wsy+34, wxw, CENTER, FSIZE_BIG, CMHT);
sprintf(rstr,"%s",prs_translate("Standort:",CONVERT_LIST));
RenderString(rstr, col1, vy, col2-col1, LEFT, FSIZE_MED, GREEN);
-#ifdef WWEATHER
+/*ifdef WWEATHER
prs_get_val(0, ACT_CITY, 0, vstr);
RenderString(vstr, col2, vy, wxw-col2, LEFT, FSIZE_MED, CMCT);
#else
- sprintf(rstr,"%s",city_name);
+*/ sprintf(rstr,"%s",city_name);
RenderString(rstr, col2, vy, wxw-col2, LEFT, FSIZE_MED, CMCT);
-#endif
+//#endif
vy+=dy;
sprintf(rstr,"%s",prs_translate("Längengrad:",CONVERT_LIST));
sprintf(rstr,"%s",prs_translate("Temperatur:",CONVERT_LIST));
RenderString(rstr, col1, vy, col2-col1, LEFT, FSIZE_MED, CMCT);
- prs_get_val(0, ACT_TEMP, 0, vstr);
-#ifdef WWEATHER
- sprintf(rstr,"%s °%s",vstr,tun);
-#else
- prs_get_val(0, ACT_FTEMP, 0, v2str);
- sprintf(rstr,"%s °%s %s %s °%s",vstr,tun,prs_translate("gefühlt:",CONVERT_LIST),v2str,tun);
-#endif
+ if (metric) {
+ prs_get_val(0, ACT_TEMPC, 0, vstr);
+ prs_get_val(0, ACT_FTEMPC, 0, v2str);
+ }
+ else {
+ prs_get_val(0, ACT_TEMPF, 0, vstr);
+ prs_get_val(0, ACT_FTEMPF, 0, v2str);
+ }
+ sprintf(rstr,"%s °%s %s %s °%s",vstr,tun,prs_translate("gefühlt:",CONVERT_LIST),v2str,tun);
RenderString(rstr, col2, vy, wxw-col2, LEFT, FSIZE_MED, CMCT);
vy+=dy;
RenderString(rstr, col1, vy, col2-col1, LEFT, FSIZE_MED, CMCT);
prs_get_val(0, ACT_PRESS, 0, vstr);
#ifdef WWEATHER
- RenderString(vstr, col2, vy, wxw-col2, LEFT, FSIZE_MED, CMCT);
+ sprintf(rstr,"%s %s",vstr,pun);
+ RenderString(rstr, col2, vy, wxw-col2, LEFT, FSIZE_MED, CMCT);
#else
prs_get_val(0, ACT_PRTEND, 0, v2str);
sprintf(rstr,"%s %s %s",vstr,pun,v2str);
sprintf(rstr,"%s",prs_translate("Wind:",CONVERT_LIST));
RenderString(rstr, col1, vy, col2-col1, LEFT, FSIZE_MED, CMCT);
prs_get_val(0, ACT_WINDD, 0, vstr);
- prs_get_val(0, ACT_WSPEED, 0, v2str);
+ if (metric) {
+ prs_get_val(0, ACT_WSPEEDK, 0, v2str); //Km
+ }
+ else {
+ prs_get_val(0, ACT_WSPEEDM, 0, v2str); //miles
+ }
if((strstr(vstr,"windstill")!=NULL) || (strstr(v2str,"CALM")!=NULL))
{
sprintf(rstr,"%s",prs_translate("windstill",CONVERT_LIST));
RenderString(rstr, col1, vy, col2-col1, LEFT, FSIZE_MED, CMCT);
prs_get_val(0, ACT_VIS, 0, vstr);
#ifdef WWEATHER
- sprintf(rstr,"%s %s",vstr,dun);
+ if (metric) {
+ sprintf(rstr,"%s %s",vstr,dun);
+ }
+ else {
+ float mi = 0.621371192 * atoi(vstr)+0.05; // 0.621371192 = 1km
+ sprintf(rstr,"%.1f %s",mi,dun);
+ }
#else
if(sscanf(vstr,"%d",&itmp)==1)
{
{
strcpy(rstr,vstr);
}
-#endif
+#endif
RenderString(rstr, col2, vy, wxw-col2, LEFT, FSIZE_MED, CMCT);
vy+=dy;
#ifdef WWEATHER
sprintf(rstr,"%s",prs_translate("Niederschlag:",CONVERT_LIST));
RenderString(rstr, col1, vy, col2-col1, LEFT, FSIZE_MED, CMCT);
prs_get_val(0, ACT_PRECIPMM, 0, vstr);
- sprintf(rstr,"%s mm",vstr);
+ if (metric) {
+ sprintf(rstr,"%s %s",vstr,iun); // mm
+ }
+ else {
+ float d1 = 0;
+ sscanf(vstr, "%f", &d1);
+ sprintf(rstr,"%.2f %s",d1*0.03937,iun); // inches
+ }
#else
sprintf(rstr,"%s",prs_translate("UV-Index:",CONVERT_LIST));
RenderString(rstr, col1, vy, col2-col1, LEFT, FSIZE_MED, CMCT);
-
prs_get_val(0, ACT_UVIND, 0, vstr);
prs_get_val(0, ACT_UVTEXT, 0, v2str);
sprintf(rstr,"%s %s",vstr,v2str);
-
RenderString(rstr, col2, vy, wxw-col2, LEFT, FSIZE_MED, CMCT);
vy+=dy;
RenderString(rstr, col2, vy, wxw-col2, LEFT, FSIZE_MED, CMCT);
vy+=dy;
-// memcpy(lfb, lbb, var_screeninfo.xres*var_screeninfo.yres);
-
if(show_icons)
{
- //tret=pic_on_data(icon, 540, 115, 100, 100, 5, 3, 0, 0);
- if(!slim)
- tret=pic_on_data(icon,700, 115, 100, 100, 5, 3, 0, 0);
+ if(preset)
+ pic_on_data(icon,col2+350, wsy+115, 100, 100, 5, 3, 0, 0);
else
- tret=pic_on_data(icon,540, 115, 80, 80, 5, 3, 0, 0);
+ pic_on_data(icon,col2+200, wsy+115, 80, 80, 5, 3, 0, 0);
}
-
memcpy(lfb, lbb, fix_screeninfo.line_length*var_screeninfo.yres);
}
else
--index;
if(index==1)
{
- prs_get_val(index-1, PRE_TEMPH, 0, vstr);
+ if (metric)
+ prs_get_val(index-1, PRE_TEMPHC, 0, vstr);
+ else
+ prs_get_val(index-1, PRE_TEMPHF, 0, vstr);
+
if(strstr(vstr,"N/A")!=NULL)
{
prelate=1;
#ifdef WWEATHER
if (HTTP_downloadFile(vstr, ICON_FILE, 0, intype, ctmo, 2) != 0)
#else
- sprintf (icon,"http://image.weather.com/web/common/intlwxicons/52/%s.gif",vstr);
+ snprintf(icon, sizeof(icon), "http://image.weather.com/web/common/intlwxicons/52/%s.gif",vstr);
if (HTTP_downloadFile(icon, ICON_FILE,0,intype,ctmo,2) != 0)
#endif
{
#endif
}
sprintf(rstr,"%s %s",prs_translate("Vorschau für",CONVERT_LIST),vstr);
- RenderString(rstr, 0, 34, wxw, CENTER, FSIZE_BIG, CMHT);
+ RenderString(rstr, wsx, wsy+34, wxw, CENTER, FSIZE_BIG, CMHT);
sprintf(rstr,"%s",prs_translate("Standort:",CONVERT_LIST));
RenderString(rstr, col1, vy, col2-col1, LEFT, FSIZE_MED, GREEN);
sprintf(rstr,"%s",prs_translate("Höchste Temperatur:",CONVERT_LIST));
RenderString(rstr, col1, vy, col2-col1, LEFT, FSIZE_MED, CMCT);
- prs_get_val(index-1,PRE_TEMPH,0,vstr);
+ if (metric)
+ prs_get_val(index-1, PRE_TEMPHC, 0, vstr);
+ else
+ prs_get_val(index-1, PRE_TEMPHF, 0, vstr);
sprintf(rstr,"%s °%s",vstr,tun);
RenderString((prelate)?"---":rstr, col2, vy, wxw-col2, LEFT, FSIZE_MED, CMCT);
vy+=dy;
sprintf(rstr,"%s",prs_translate("Tiefste Temperatur:",CONVERT_LIST));
RenderString(rstr, col1, vy, col2-col1, LEFT, FSIZE_MED, CMCT);
- prs_get_val(index-1,PRE_TEMPL,0,vstr);
+ if (metric)
+ prs_get_val(index-1, PRE_TEMPLC, 0, vstr);
+ else
+ prs_get_val(index-1, PRE_TEMPLF, 0, vstr);
sprintf(rstr,"%s °%s",vstr,tun);
RenderString(rstr, col2, vy, wxw-col2, LEFT, FSIZE_MED, CMCT);
vy+=dy;
RenderString(rstr, col1, vy, col2-col1, LEFT, FSIZE_MED, CMCT);
prs_get_val(index-1, PRE_WINDD, 0, vstr);
- prs_get_val(index-1, PRE_WSPEED, 0, v2str);
+ if (metric)
+ prs_get_val(0, PRE_WSPEEDK, 0, v2str); //Km/h
+ else
+ prs_get_val(0, PRE_WSPEEDM, 0, v2str); //miles ph
sprintf(tstr,"%s",prs_translate("von",CONVERT_LIST));
sprintf(rstr,"%s %s %s %s %s",tstr,vstr,prs_translate("mit",CONVERT_LIST),v2str,sun);
RenderString(rstr, col1, vy, col2-col1, LEFT, FSIZE_MED, CMCT);
prs_get_val(index-1, PRE_PRECIPMM, 0, vstr);
- sprintf(rstr,"%s mm",vstr);
+ if (metric) {
+ sprintf(rstr,"%s %s",vstr,iun); // mm
+ }
+ else {
+ float d1 = 0;
+ sscanf(vstr, "%f", &d1);
+ sprintf(rstr,"%.2f %s",d1*0.03937,iun); // inches
+ }
RenderString(rstr, col2, vy, wxw-col2, LEFT, FSIZE_MED, CMCT);
#else
sprintf(rstr,"%s",prs_translate("Regenrisiko:",CONVERT_LIST));
RenderString(rstr, col1, vy, col2-col1, LEFT, FSIZE_MED, CMCT);
-
prs_get_val(index-1, PRE_PPCP, 0, vstr);
sprintf(rstr,"%s %%",vstr);
-
RenderString((prelate)?"---":rstr, col2, vy, wxw-col2, LEFT, FSIZE_MED, CMCT);
#endif
vy+=(1.5*(double)dy);
sprintf(rstr,"---");
#else
prs_get_val(index-1, PRE_WINDD, 1, vstr);
- prs_get_val(index-1, PRE_WSPEED, 1, v2str);
+ prs_get_val(index-1, PRE_WSPEEDK, 1, v2str);
if((strstr(vstr,"windstill")!=NULL) || (strstr(v2str,"CALM")!=NULL))
{
sprintf(rstr,"%s",prs_translate("windstill",CONVERT_LIST));
if(show_icons)
{
- //tret=pic_on_data(icon, 540, 115, 100, 100, 5, 3, 0, 0);
- tret=pic_on_data(icon,slim?540:700, 115, 100, 100, 5, 3, 0, 0);
+ if(preset)
+ pic_on_data(icon,col2+350, wsy+115, 100, 100, 5, 3, 0, 0);
+ else
+ pic_on_data(icon,col2+200, wsy+115, 80, 80, 5, 3, 0, 0);
}
memcpy(lfb, lbb, fix_screeninfo.line_length*var_screeninfo.yres);
{
float xfact=0, yfact=0;
int txsize=0, tysize=0;
- int tempx =0, tempy=0;
int txstart =xstart, tystart= ystart;
if (xsize > (ex-xstart)) txsize= (ex-xstart);
txstart=txstart+xstart;
}
}
- tempx=*imx;
- tempy=*imy;
- *buffer=(char*)color_average_resize(*buffer,x1,y1,*imx,*imy);
+ *buffer=(unsigned char*)color_average_resize(*buffer,x1,y1,*imx,*imy);
*dxp=0;
*dyp=0;
// for(; sy <= ey; sy++) memset(lbb + sx + var_screeninfo.xres*(sy),TRANSP, ex-sx + 1);
memset(lbb, TRANSP, var_screeninfo.xres*var_screeninfo.yres);
memcpy(lfb, lbb, fix_screeninfo.line_length*var_screeninfo.yres);
- gmodeon=0;
#endif
+ gmodeon=0;
}
int wait_image(int repeat, int first)
printf("Tuxwetter <invalid GIF-Format>\n");
return -1;
}
- if((buffer=(unsigned char *) malloc(x1*y1*4))==NULL)
+ if((buffer=(char *) malloc(x1*y1*4))==NULL)
{
printf(NOMEM);
return -1;
}
if(!(rv=fh_gif_load(fname, buffer, x1, y1)))
{
- scale_pic(&buffer,x1,y1,xstart,ystart,xsize,ysize,&imx,&imy,&dxp,&dyp,&dxo,&dyo,center);
+ scale_pic((unsigned char**)&buffer,x1,y1,xstart,ystart,xsize,ysize,&imx,&imy,&dxp,&dyp,&dxo,&dyo,center);
fb_set_gmode(1);
- fb_display(buffer, imx, imy, dxp, dyp, dxo, dyo, 1, 1);
+ fb_display((unsigned char*)buffer, imx, imy, dxp, dyp, dxo, dyo, 1, 1);
gmodeon=1;
if(gifs>1)
else
{
showBusy(startx+3,starty+3,10,0xff,00,00);
-// showBusy(startx+10,starty+10,20,170,0,0);
+
if(rcg==KEY_EXIT)
{
rcg=KEY_OK;
{
FILE *tfh;
int x1,y1,cs,rcp,rv=-1,run=1,line=0,action=1,cut;
-int col1,sy=0,dy=26,psx,psy,pxw=/*620*/ex-sx,pyw=/*510*/ey-sy;
+int col1,sy=0,dy=26,psx,psy;
+int pxw=ex-sx-((preset)?120:30); //box width old 620
+int pyw=ey-sy-((preset)?60:40); //box height old 510
Center_Screen(pxw,pyw,&psx,&psy);
- col1=psx+40;
+ col1=psx+((preset)?60:40);
sy=psy+70;
if((tfh=fopen(name,"r"))!=NULL)
{
-/* if(gmodeon)
- {
- close_jpg_gif_png();
- }
-*/ fclose(tfh);
+ fclose(tfh);
RenderString("X", psx+pxw/2, psy+pyw/2, 100, LEFT, FSIZE_SMALL, CMCT);
if(fh_php_getsize(name, plain, &x1, &y1))
if(!rv)
{
rcp=GetRCCode();
- while((rcp != KEY_OK) && (rcp != KEY_EXIT) && (rcp != KEY_PAGEUP) && (rcp != KEY_PAGEDOWN) && (rcp != KEY_DOWN) && (rcp != KEY_UP) && (rcp != KEY_VOLUMEUP) && (rcp != KEY_VOLUMEDOWN)&& (rcp != KEY_RED))
+ while ((rcp != KEY_OK) && (rcp != KEY_EXIT) &&
+ (rcp != KEY_PAGEUP) && (rcp != KEY_PAGEDOWN) &&
+ (rcp != KEY_LEFT) && (rcp != KEY_RIGHT) &&
+ (rcp != KEY_DOWN) && (rcp != KEY_UP) &&
+ (rcp != KEY_VOLUMEUP) && (rcp != KEY_VOLUMEDOWN)&&
+ (rcp != KEY_RED))
{
rcp=GetRCCode();
}
{
rcp=KEY_OK;
}
- if((rcp != KEY_PAGEUP) && (rcp != KEY_PAGEDOWN))
+ if( (rcp != KEY_PAGEUP) && (rcp != KEY_PAGEDOWN) &&
+ (rcp != KEY_LEFT) && (rcp != KEY_RIGHT) )
{
return rcp;
}
switch(rcp)
{
case KEY_PAGEDOWN:
+ case KEY_RIGHT:
if((action=cut)!=0)
{
line+=5;
break;
case KEY_PAGEUP:
+ case KEY_LEFT:
if(line)
{
if((line-=5)<0)
int main (int argc, char **argv)
{
-int index=0,cindex=0,tv,rcm,rce,ferr=0,tret=-1;
+int index=0,cindex=0,tv,rce,ferr=0,tret=-1;
int mainloop=1,wloop=1, dloop=1;
char rstr[BUFSIZE], *rptr;
char tstr[BUFSIZE];
LISTENTRY epl={NULL, 0, TYP_TXTPLAIN, TYP_TXTPLAIN, 0, 0, 0};
PLISTENTRY pl=&epl;
- // if problem with config file return from plugin
-
- for(tv=1; tv<argc; tv++)
- {
- if((strstr(argv[tv],"-v")==argv[tv])||(strstr(argv[tv],"--Version")==argv[tv]))
- {
- printf("Tuxwetter Version %s\n",P_VERSION);
- return 0;
- }
- if(*argv[tv]=='/')
- {
- strcpy(TCF_FILE,argv[tv]);
- }
- if(strchr(argv[tv],'='))
- {
- cmdline=strdup(argv[tv]);
- TrimString(cmdline);
- TranslateString(cmdline);
- }
- }
-
-// system("ping -c 2 google.com &");
+ // if problem with config file return from plugin
- if((line_buffer=calloc(BUFSIZE+1, sizeof(char)))==NULL)
+ for(tv=1; tv<argc; tv++)
+ {
+ if((strstr(argv[tv],"-v")==argv[tv])||(strstr(argv[tv],"--Version")==argv[tv]))
{
- printf(NOMEM);
- return -1;
+ printf("Tuxwetter Version %s%s\n",P_VERSION,S_VERSION);
+ return 0;
}
-
- if (!ReadConf(cmdline))
+ if(*argv[tv]=='/')
{
- printf("Tuxwetter <Configuration failed>\n");
- return -1;
+ strcpy(TCF_FILE,argv[tv]);
}
-
- if((trstr=malloc(BUFSIZE))==NULL)
+ if(strchr(argv[tv],'='))
{
- printf(NOMEM);
- return -1;
+ cmdline=strdup(argv[tv]);
+ TrimString(cmdline);
+ TranslateString(cmdline);
}
+ }
+
+// system("ping -c 2 google.com &");
+
+ if((line_buffer=calloc(BUFSIZE+1, sizeof(char)))==NULL)
+ {
+ printf(NOMEM);
+ return -1;
+ }
+ if (!ReadConf(cmdline))
+ {
+ printf("Tuxwetter <Configuration failed>\n");
+ return -1;
+ }
- memset(&menu,0,sizeof(MENU));
- memset(&funcs,0,sizeof(MENU));
+ if((trstr=malloc(BUFSIZE))==NULL)
+ {
+ printf(NOMEM);
+ return -1;
+ }
+
+ memset(&menu,0,sizeof(MENU));
+ memset(&funcs,0,sizeof(MENU));
/*
- if((menu.headertxt=calloc(MAX_MENUTXT, sizeof(char*)))==NULL)
- {
- printf(NOMEM);
- free(line_buffer);
- Clear_List(&menu,-1);
- return -1;
- }
+ if((menu.headertxt=calloc(MAX_MENUTXT, sizeof(char*)))==NULL)
+ {
+ printf(NOMEM);
+ free(line_buffer);
+ Clear_List(&menu,-1);
+ return -1;
+ }
*/
/*
- if(Clear_List(&menu,1))
- {
- printf(NOMEM);
- free(line_buffer);
- Clear_List(&menu,-1);
- return -1;
- }
+ if(Clear_List(&menu,1))
+ {
+ printf(NOMEM);
+ free(line_buffer);
+ Clear_List(&menu,-1);
+ return -1;
+ }
*/
- if(!cmdline)
- {
- if(Check_Config())
- {
- printf("<tuxwetter> Unable to read tuxwetter.conf\n");
- Clear_List(&menu,-1);
- free(line_buffer);
- return -1;
- }
- }
-
- if((funcs.headertxt=calloc(1, sizeof(char*)))==NULL)
+ if(!cmdline)
+ {
+ if(Check_Config())
{
- printf(NOMEM);
- free(line_buffer);
+ printf("<tuxwetter> Unable to read tuxwetter.conf\n");
Clear_List(&menu,-1);
- Clear_List(&funcs,-1);
+ free(line_buffer);
return -1;
}
+ }
- read_neutrino_osd_conf(&ex,&sx,&ey, &sy);
- if((ex == -1) || (sx == -1) || (ey == -1) || (sy == -1)){
- sx = 40;
- ex = var_screeninfo.xres - 40;
- sy = 40;
- ey = var_screeninfo.yres - 40;
- }
- printf("sx=%i, ex =%i, sy=%i, ey=%i\n", sx, ex, sy, ey);
+ if((funcs.headertxt=calloc(1, sizeof(char*)))==NULL)
+ {
+ printf(NOMEM);
+ free(line_buffer);
+ Clear_List(&menu,-1);
+ Clear_List(&funcs,-1);
+ return -1;
+ }
- for(index=CMCST; index<=CMH; index++)
- {
- sprintf(rstr,"menu_%s_alpha",menucoltxt[index]);
- if((tv=Read_Neutrino_Cfg(rstr))>=0)
- tr[index]=255-(float)tv*2.55;
+ read_neutrino_osd_conf(&ex,&sx,&ey, &sy);
+ if((ex == -1) || (sx == -1) || (ey == -1) || (sy == -1)){
+ sx = 40;
+ ex = var_screeninfo.xres - 40;
+ sy = 40;
+ ey = var_screeninfo.yres - 40;
+ }
+ //printf("sx=%i, ex =%i, sy=%i, ey=%i \n", sx, ex, sy, ey);
- sprintf(rstr,"menu_%s_blue",menucoltxt[index]);
- if((tv=Read_Neutrino_Cfg(rstr))>=0)
- bl[index]=(float)tv*2.55;
+ for(index=CMCST; index<=CMH; index++)
+ {
+ sprintf(rstr,"menu_%s_alpha",menucoltxt[index]);
+ if((tv=Read_Neutrino_Cfg(rstr))>=0)
+ tr[index]=255-(float)tv*2.55;
- sprintf(rstr,"menu_%s_green",menucoltxt[index]);
- if((tv=Read_Neutrino_Cfg(rstr))>=0)
- gn[index]=(float)tv*2.55;
+ sprintf(rstr,"menu_%s_blue",menucoltxt[index]);
+ if((tv=Read_Neutrino_Cfg(rstr))>=0)
+ bl[index]=(float)tv*2.55;
- sprintf(rstr,"menu_%s_red",menucoltxt[index]);
- if((tv=Read_Neutrino_Cfg(rstr))>=0)
- rd[index]=(float)tv*2.55;
- }
+ sprintf(rstr,"menu_%s_green",menucoltxt[index]);
+ if((tv=Read_Neutrino_Cfg(rstr))>=0)
+ gn[index]=(float)tv*2.55;
- cindex=CMC;
- for(index=CMCP0; index<=CMCP3; index++)
- {
- rd[index]=rd[cindex]+25;
- gn[index]=gn[cindex]+25;
- bl[index]=bl[cindex]+25;
- tr[index]=tr[cindex];
- cindex=index;
- }
+ sprintf(rstr,"menu_%s_red",menucoltxt[index]);
+ if((tv=Read_Neutrino_Cfg(rstr))>=0)
+ rd[index]=(float)tv*2.55;
+ }
- if(Read_Neutrino_Cfg("rounded_corners")>0)
- radius=10;
- else
- radius=0;
+ cindex=CMC;
+ for(index=CMCP0; index<=CMCP3; index++)
+ {
+ rd[index]=rd[cindex]+25;
+ gn[index]=gn[cindex]+25;
+ bl[index]=bl[cindex]+25;
+ tr[index]=tr[cindex];
+ cindex=index;
+ }
- fb = open(FB_DEVICE, O_RDWR);
- if(fb == -1)
- {
- perror("tuxwetter <open framebuffer device>");
- exit(1);
- }
+ if(Read_Neutrino_Cfg("rounded_corners")>0)
+ radius=10;
+ else
+ radius=0;
- InitRC();
+ fb = open(FB_DEVICE, O_RDWR);
+ if(fb == -1)
+ {
+ perror("tuxwetter <open framebuffer device>");
+ exit(1);
+ }
- if((trstr=malloc(BUFSIZE))==NULL)
- {
- printf(NOMEM);
- return -1;
- }
+ InitRC();
+
+ if((trstr=malloc(BUFSIZE))==NULL)
+ {
+ printf(NOMEM);
+ return -1;
+ }
//init framebuffer
- if(ioctl(fb, FBIOGET_FSCREENINFO, &fix_screeninfo) == -1)
- {
- perror("tuxwetter <FBIOGET_FSCREENINFO>\n");
- return -1;
- }
- if(ioctl(fb, FBIOGET_VSCREENINFO, &var_screeninfo) == -1)
- {
- perror("tuxwetter <FBIOGET_VSCREENINFO>\n");
- return -1;
- }
- if(!(lfb = (unsigned char*)mmap(0, fix_screeninfo.smem_len, PROT_READ | PROT_WRITE, MAP_SHARED, fb, 0)))
- {
- perror("tuxwetter <mapping of Framebuffer>\n");
- return -1;
- }
+ if(ioctl(fb, FBIOGET_FSCREENINFO, &fix_screeninfo) == -1)
+ {
+ perror("tuxwetter <FBIOGET_FSCREENINFO>\n");
+ return -1;
+ }
+ if(ioctl(fb, FBIOGET_VSCREENINFO, &var_screeninfo) == -1)
+ {
+ perror("tuxwetter <FBIOGET_VSCREENINFO>\n");
+ return -1;
+ }
+ if(!(lfb = (unsigned char*)mmap(0, fix_screeninfo.smem_len, PROT_READ | PROT_WRITE, MAP_SHARED, fb, 0)))
+ {
+ perror("tuxwetter <mapping of Framebuffer>\n");
+ return -1;
+ }
//init fontlibrary
- if((error = FT_Init_FreeType(&library)))
- {
- printf("tuxwetter <FT_Init_FreeType failed with Errorcode 0x%.2X>", error);
- munmap(lfb, fix_screeninfo.smem_len);
- return -1;
- }
+ if((error = FT_Init_FreeType(&library)))
+ {
+ printf("tuxwetter <FT_Init_FreeType failed with Errorcode 0x%.2X>", error);
+ munmap(lfb, fix_screeninfo.smem_len);
+ return -1;
+ }
- if((error = FTC_Manager_New(library, 1, 2, 0, &MyFaceRequester, NULL, &manager)))
- {
- printf("tuxwetter <FTC_Manager_New failed with Errorcode 0x%.2X>\n", error);
- FT_Done_FreeType(library);
- munmap(lfb, fix_screeninfo.smem_len);
- return -1;
- }
+ if((error = FTC_Manager_New(library, 1, 2, 0, &MyFaceRequester, NULL, &manager)))
+ {
+ printf("tuxwetter <FTC_Manager_New failed with Errorcode 0x%.2X>\n", error);
+ FT_Done_FreeType(library);
+ munmap(lfb, fix_screeninfo.smem_len);
+ return -1;
+ }
- if((error = FTC_SBitCache_New(manager, &cache)))
+ if((error = FTC_SBitCache_New(manager, &cache)))
+ {
+ printf("tuxwetter <FTC_SBitCache_New failed with Errorcode 0x%.2X>\n", error);
+ FTC_Manager_Done(manager);
+ FT_Done_FreeType(library);
+ munmap(lfb, fix_screeninfo.smem_len);
+ return -1;
+ }
+
+ if((error = FTC_Manager_LookupFace(manager, FONT, &face)))
+ {
+ if((error = FTC_Manager_LookupFace(manager, FONT2, &face)))
{
- printf("tuxwetter <FTC_SBitCache_New failed with Errorcode 0x%.2X>\n", error);
+ printf("tuxwetter <FTC_Manager_LookupFace failed with Errorcode 0x%.2X>\n", error);
FTC_Manager_Done(manager);
FT_Done_FreeType(library);
munmap(lfb, fix_screeninfo.smem_len);
- return -1;
- }
-
- if((error = FTC_Manager_LookupFace(manager, FONT, &face)))
- {
- if((error = FTC_Manager_LookupFace(manager, FONT2, &face)))
- {
- printf("tuxwetter <FTC_Manager_LookupFace failed with Errorcode 0x%.2X>\n", error);
- FTC_Manager_Done(manager);
- FT_Done_FreeType(library);
- munmap(lfb, fix_screeninfo.smem_len);
- return 2;
- }
- else
- desc.face_id = FONT2;
+ return 2;
}
else
- desc.face_id = FONT;
-
- use_kerning = FT_HAS_KERNING(face);
+ desc.face_id = FONT2;
+ }
+ else
+ desc.face_id = FONT;
- desc.flags = FT_LOAD_MONOCHROME;
+ use_kerning = FT_HAS_KERNING(face);
+
+ desc.flags = FT_LOAD_MONOCHROME;
//init backbuffer
- if(!(lbb = malloc(fix_screeninfo.line_length*var_screeninfo.yres)))
- {
- perror("tuxwetter <allocating of Backbuffer>\n");
- FTC_Manager_Done(manager);
- FT_Done_FreeType(library);
- munmap(lfb, fix_screeninfo.smem_len);
- return -1;
- }
+ if(!(lbb = malloc(fix_screeninfo.line_length*var_screeninfo.yres)))
+ {
+ perror("tuxwetter <allocating of Backbuffer>\n");
+ FTC_Manager_Done(manager);
+ FT_Done_FreeType(library);
+ munmap(lfb, fix_screeninfo.smem_len);
+ return -1;
+ }
- memset(lbb, TRANSP, fix_screeninfo.line_length*var_screeninfo.yres);
+ memset(lbb, TRANSP, fix_screeninfo.line_length*var_screeninfo.yres);
- startx = sx;
- starty = sy;
+ startx = sx;
+ starty = sy;
/* Set up signal handlers. */
signal(SIGINT, quit_signal);
signal(SIGTERM, quit_signal);
signal(SIGQUIT, quit_signal);
+ signal(SIGSEGV, quit_signal);
// Startbildschirm
show_jpg("/tmp/startbild.jpg", sx, sy, ex-sx, ey-sy, 5, 0, 1, 1);
xremove("/tmp/startbild.jpg");
#endif
- show_jpg("/var/tuxbox/config/tuxwetter/startbild.jpg", sx, sy, ex-sx, ey-sy, 5, 0, 1, 1);
+ show_jpg(START_PIC, sx, sy, ex-sx, ey-sy, 5, 0, 1, 1);
}
//main loop
lrow++;
}
LCD_update();
- ferr=(strlen(line_buffer))?0:-1;
*/
+ ferr=(strlen(line_buffer))?0:-1;
+
if((!ferr) && ((strcmp(line_buffer,lastpicture)!=0)||(loadalways)) && (pl->pictype!=TYP_TXTHTML))
{
rptr=line_buffer;
fprintf(fh2,"<br>");
while(*pt1)
{
- if(*pt1==' ' && cnt>40)
+ if ( *pt1==' ' && cnt > ((preset)?90:40) )
{
fprintf(fh2,"\n<br>");
cnt=0;
else
{
close_jpg_gif_png();
- sprintf(tstr,"%s",prs_translate("Fehler",CONVERT_LIST));
- sprintf(tstr,"%s %d %s.",tstr,ferr,prs_translate("beim Download",CONVERT_LIST));
+ sprintf(tstr,"%s %d %s.", prs_translate("Fehler",CONVERT_LIST), ferr, prs_translate("beim Download",CONVERT_LIST));
ShowMessage(tstr,1);
ferr = 0;
dloop=-1;
case TYP_CITY:
if(!prs_get_city())
{
-
- rcm = -1;
+
sprintf(tstr," ");
Clear_List(&funcs, 1);
funcs.act_entry=0;
- sprintf(tstr,"%s %s",prs_translate("Wetter für",CONVERT_LIST),city_name);
+ sprintf(tstr,"%s %s",prs_translate("Wetterdaten für",CONVERT_LIST),city_name);
if(funcs.headertxt[0])
{
free(funcs.headertxt[0]);
}
funcs.headertxt[0]=strdup(tstr);
- for(index=0; index<MAX_FUNCS; index++)
+ int num_of_funcs = (num_of_days==7) ? MAX_FUNCS+2 : MAX_FUNCS;
+ for(index=0; index<num_of_funcs; index++)
{
#ifdef WWEATHER
if(index==2)
case KEY_VOLUMEDOWN:
if(--index < 0)
{
- index=MAX_FUNCS-1;
+ index=num_of_funcs-1;
}
break;
case KEY_DOWN:
case KEY_VOLUMEUP:
- if(++index>=MAX_FUNCS)
+ if(++index>=num_of_funcs)
{
index=0;
}
sprintf(tstr,"[ -e /tmp/picture* ] && rm /tmp/picture*");
system(tstr);
xremove("/tmp/tuxwettr.tmp");
- xremove("/tmp/bmps.tar");
+// xremove("/tmp/bmps.tar");
xremove("/tmp/icon.gif");
xremove("/tmp/tempgif.gif");
xremove(PHP_FILE);
put_instance(get_instance()-1);
-
+# if 0
+// swisstime
if((tfh=fopen(TIME_FILE,"r"))!=NULL)
{
fclose(tfh);
sprintf(line_buffer,"%s &",TIME_FILE);
system(line_buffer);
- free(line_buffer);
}
-
+#endif
+ free(line_buffer);
// clear Display
memset(lbb, TRANSP, fix_screeninfo.line_length*var_screeninfo.yres);