コード例 #1
0
ファイル: main.c プロジェクト: BackupTheBerlios/wmibam-svn
/* called when mouse button pressed */
static void switch_light(void) {
    switch(backlight) {
    case LIGHTOFF:
        backlight = LIGHTON;
        dockapp_copyarea(backdrop_on, pixmap, 0, 0, 58, 58, 0, 0);
        break;
    case LIGHTON:
        backlight = LIGHTOFF;
        dockapp_copyarea(backdrop_off, pixmap, 0, 0, 58, 58, 0, 0);
        break;
    }

    /* redraw digit */
    i.update();
    if(i.valid())
        i.update_statistics();
    else
        i.ignore_statistics();
    i.save();

    draw_timedigit();
    draw_pcdigit();
    draw_statusdigit();
    draw_pcgraph();

    /* show */
    dockapp_copy2window(pixmap);
}
コード例 #2
0
ファイル: main.c プロジェクト: BackupTheBerlios/wmibam-svn
/* called by timer */
static void update() {
    static light pre_backlight;
    static Bool in_alarm_mode = False;

    /* get current ibam data */
    i.update();
    if(i.valid())
        i.update_statistics();
    else
        i.ignore_statistics();
    i.save();

    /* alarm mode */
    if((unsigned int)i.percent_battery() < alarm_level) {
        if(!in_alarm_mode) {
            in_alarm_mode = True;
            pre_backlight = backlight;
            my_system(notif_cmd);
        }
        if((switch_authorized) || ((!switch_authorized) && (backlight != pre_backlight))) {
            switch_light();
            return;
        }
    } else {
        if(in_alarm_mode) {
            in_alarm_mode = False;
            if(backlight != pre_backlight) {
                switch_light();
                return;
            }
        }
    }

    /* all clear */
    if(backlight == LIGHTON)
        dockapp_copyarea(backdrop_on, pixmap, 0, 0, 58, 58, 0, 0);
    else
        dockapp_copyarea(backdrop_off, pixmap, 0, 0, 58, 58, 0, 0);

    /* draw digit */
    draw_timedigit();
    draw_pcdigit();
    draw_statusdigit();
    draw_pcgraph();

    /* show */
    dockapp_copy2window(pixmap);
}
コード例 #3
0
ファイル: main.c プロジェクト: bbidulock/dockapps
/* called when mouse button pressed */
static void
switch_light(void)
{
    int h, i, j = hindex;
    int x = 0;

    switch (backlight) {
	case LIGHTOFF:
	    backlight = LIGHTON;
	    dockapp_copyarea(backdrop_on, pixmap, 0, 0, 58, 58, 0, 0);
	    x = 2;
	    break;
	case LIGHTON:
	    backlight = LIGHTOFF;
	    dockapp_copyarea(backdrop_off, pixmap, 0, 0, 58, 58, 0, 0);
	    x = 0;
	    break;
    }

    /* redraw digit */
    draw_digit(history[hindex]);

#ifdef USE_SMP
    /* draw cpu number */
    if (cpu_opts.cpu_number != CPUNUM_NONE)
	draw_cpunumber();
#endif

    /* redraw chart */
    for (i = 0; i < MAX_HISTORY; i++) {
	h = (21 * history[j]) / 100;
	dockapp_copyarea(parts, pixmap, 100+x, 21-h, 2, h, 51-3*i, 54-h);
	j--;
	if (j < 0) j = MAX_HISTORY - 1;
    }

    /* show */
    dockapp_copy2window(pixmap);
}
コード例 #4
0
ファイル: main.c プロジェクト: bbidulock/dockapps
/* called by timer */
static void
update(void)
{
    int usage;
    int x, h;

    static light pre_backlight;
    static Bool in_alarm_mode = False;

    /* get current cpu usage in percent */
    usage = cpu_get_usage(&cpu_opts);
    hindex++;
    if (hindex >= MAX_HISTORY) {
	hindex = 0;
    }
    history[hindex] = usage;

    /* alarm mode */
    if (usage >= alarm_threshold) {
	if (!in_alarm_mode) {
	    in_alarm_mode = True;
	    pre_backlight = backlight;
	}
	if (backlight == LIGHTOFF) {
	    switch_light();
	    return;
	}
    } else {
	if (in_alarm_mode) {
	    in_alarm_mode = False;
	    if (backlight != pre_backlight) {
		switch_light();
		return;
	    }
	}
    }

    /* save current chart */
    dockapp_copyarea(pixmap, pix_chartbuf,  9, 33, 44, 21, 0, 0);

    /* all clear */
    if (backlight == LIGHTON) {
	dockapp_copyarea(backdrop_on, pixmap, 0, 0, 58, 58, 0, 0);
	x = 2;
    } else {
	dockapp_copyarea(backdrop_off, pixmap, 0, 0, 58, 58, 0, 0);
	x = 0;
    }

    /* draw digit */
    draw_digit(usage);

#ifdef USE_SMP
    /* draw cpu number */
    if (cpu_opts.cpu_number != CPUNUM_NONE)
	draw_cpunumber();
#endif

    /* draw chart */
    h = (21 * usage) / 100;
    dockapp_copyarea(pix_chartbuf, pixmap, 0, 0, 44, 21, 6, 33);
    dockapp_copyarea(parts, pixmap,100+x, 21-h, 2, h, 51, 54-h);

    /* show */
    dockapp_copy2window(pixmap);

}
コード例 #5
0
ファイル: main.c プロジェクト: d-torrance/dockapps
static void update(void)
{
    static int percent;		/* LongRun performance level */
    static int flags;		/* LongRun flags */
    static int mhz;		/* LongRun frequency */
    static int voltz;		/* LongRun voltage */

    int digit1 = 0, digit10 = 0, digit100 = 0;

    longrun_get_stat(&percent, &flags, &mhz, &voltz);

    digit100 = mhz / 100;
    digit10 = (mhz - digit100 * 100) / 10;
    digit1 = mhz - digit100 * 100 - digit10 * 10;

    /* LCD interface */
    if (!is_led_style) {
	int y_lrmode = 0, y_gauge = 0, y_digit = 0;

	/* clear */
	switch (backlight) {
	    case LIGHTON:
		dockapp_copyarea(backdrop_on, pixmap, 0, 0, 58, 58, 0, 0);
		y_lrmode = 11;
		y_gauge = 14;
		y_digit = 13;
		break;
	    case LIGHTOFF:
		dockapp_copyarea(backdrop_off, pixmap, 0, 0, 58, 58, 0, 0);
		break;
	}

	/* longrun flags (performance or economy) */
	switch (flags) {
	    case LONGRUN_FLAGS_PEFORMANCE:
		dockapp_copyarea(parts, pixmap, 24, y_lrmode, 24, 11, 31, 5);
		break;
	    case LONGRUN_FLAGS_ECONOMY:
		dockapp_copyarea(parts, pixmap,  0, y_lrmode, 24, 11, 5, 5);
		break;
	    default:
		break;		/* make gcc happy */
	}

	/* draw digit (frequency) */
	dockapp_copyarea(parts, pixmap, digit100*7,y_digit+33,  7,13,   6,22);
	dockapp_copyarea(parts, pixmap,  digit10*7,y_digit+33,  7,13,  15,22);
	dockapp_copyarea(parts, pixmap,   digit1*7,y_digit+33,  7,13,  24,22);

	/* draw level gauge */
	dockapp_copyarea(parts, pixmap, 0,y_gauge+72, 49*percent/100,14,5,40);
    }

    /* LED interface */
    else {
	dockapp_copyarea(backdrop_led, pixmap, 0, 0, 58, 58, 0, 0);
	/* longrun flags (performance or economy) */
	switch (flags) {
	case LONGRUN_FLAGS_PEFORMANCE:
	    dockapp_copyarea(parts, pixmap, 24, 22, 24, 11, 30, 3);
	    break;
	case LONGRUN_FLAGS_ECONOMY:
	    dockapp_copyarea(parts, pixmap, 0, 22, 24, 11, 3, 3);
	    break;
	default:
	    break;		/* make gcc happy */
	}

	/* draw digit (frequency) */
	dockapp_copyarea(parts, pixmap, digit100*7,59,  7,13,   4,22);
	dockapp_copyarea(parts, pixmap,  digit10*7,59,  7,13,  13,22);
	dockapp_copyarea(parts, pixmap,   digit1*7,59,  7,13,  22,22);

	/* draw level gauge */
	dockapp_copyarea(parts, pixmap, 0, 100, 56 * percent / 100, 16, 1, 41);
    }

    /* show */
    dockapp_copy2window(pixmap);
}