Source Code (Use browser search to find items of interest.)
Class Index
klaptopdaemon'laptop_portable (./kdeutils/klaptopdaemon/portable.h:9)
class laptop_portable {
public:
static int has_power_management(); // returns 1 if this computer has power management
static int has_battery_time(); // returns 1 if this give BIOS battery time info
static int has_suspend(); // returns 1 if this computer can perform a suspend
static int has_standby(); // returns 1 if this computer can perform a standby
static QLabel *no_power_management_explanation(QWidget *parent);
static QLabel *how_to_do_suspend_resume(QWidget *parent);
static QLabel *pcmcia_info(int x, QWidget *parent);
static void invoke_standby();
static void invoke_suspend();
static struct power_result poll_battery_state();
static int poll_activity();
};
klaptopdaemon'laptop_portable::has_power_management() (./kdeutils/klaptopdaemon/portable.cpp:66)
int laptop_portable::has_power_management()
{
return (::has_apm());
}
//
// returns 1 if the BIOS returns the time left in the battery rather than a % of full
//
klaptopdaemon'laptop_portable::has_battery_time() (./kdeutils/klaptopdaemon/portable.cpp:73)
int laptop_portable::has_battery_time()
{
return (::apm_has_time());
}
//
// returns 1 if we can perform a change-to-suspend-mode operation for the user
// (has_power_management() has already returned 1)
//
klaptopdaemon'laptop_portable::has_suspend() (./kdeutils/klaptopdaemon/portable.cpp:81)
int laptop_portable::has_suspend()
{
struct stat s;
if (stat("/usr/bin/apm", &s) || !(getuid() == 0 || s.st_mode&S_ISUID))
return(0);
return(1);
}
//
// returns 1 if we can perform a change-to-standby-mode operation for the user
// (has_power_management() has already returned 1)
//
klaptopdaemon'laptop_portable::has_standby() (./kdeutils/klaptopdaemon/portable.cpp:92)
int laptop_portable::has_standby()
{
struct stat s;
if (stat("/usr/bin/apm", &s) || !(getuid() == 0 || s.st_mode&S_ISUID))
return(0);
return(1);
}
//
// explain to the user what they need to do if has_power_management() returned 0
// to get any software they lack
//
klaptopdaemon'laptop_portable::no_power_management_explanation() (./kdeutils/klaptopdaemon/portable.cpp:105)
QLabel *laptop_portable::no_power_management_explanation(QWidget *parent)
{
QLabel* explain = new QLabel(i18n("Your computer doesn't have the Linux APM (Advanced\nPower Management) software installed, or doesn't have\nthe APM kernel drivers installed - check out the Linux Laptop-HOWTO\ndocument for information how to install APM\nit is available at http://www.linuxdoc.org/HOWTO/Laptop-HOWTO.html"), parent);
explain->setMinimumSize(explain->sizeHint());
return(explain);
}
//
// explain to the user what they need to do to get suspend/resume to work from user mode
//
klaptopdaemon'laptop_portable::how_to_do_suspend_resume() (./kdeutils/klaptopdaemon/portable.cpp:115)
QLabel *laptop_portable::how_to_do_suspend_resume(QWidget *parent)
{
QLabel* note = new QLabel(i18n("\nIf you make /usr/bin/apm setuid then you will also\nbe able to choose 'suspend' and 'standby' in the\nabove dialog - check out the help button below to\nfind out how to do this"), parent);
note->setMinimumSize(note->sizeHint());
return(note);
}
klaptopdaemon'laptop_portable::pcmcia_info() (./kdeutils/klaptopdaemon/portable.cpp:180)
QLabel *laptop_portable::pcmcia_info(int x, QWidget *parent)
{
if (x == 0)
get_pcmcia_info();
if (!present) {
if (x == 0)
return(new QLabel(i18n("No PCMCIA controller detected"), parent));
return(new QLabel(i18n(""), parent));
} else {
switch (x) {
case 0: return(new QLabel(i18n("Card 0:"), parent));
case 1: return(new QLabel(tmp0, parent));
case 2: return(new QLabel(i18n("Card 1:"), parent));
default:return(new QLabel(tmp1, parent));
}
}
}
//
// puts us into standby mode
//
klaptopdaemon'laptop_portable::invoke_standby() (./kdeutils/klaptopdaemon/portable.cpp:201)
void laptop_portable::invoke_standby()
{
::system("/usr/bin/apm --standby");
}
//
// puts us into suspend mode
//
klaptopdaemon'laptop_portable::invoke_suspend() (./kdeutils/klaptopdaemon/portable.cpp:209)
void laptop_portable::invoke_suspend()
{
::system("/usr/bin/apm --suspend");
}
//
// return current battery state
//
struct power_result laptop_portable::poll_battery_state()
{
struct power_result p;
apm_info x = {{10*0},0,0,0,0,0,0,0,0,0};
if (apm_read(&x) || (x.apm_flags&0x20)) {
p.powered = 0;
p.percentage=0;
p.time = 0;
} else {
p.powered = x.ac_line_status&1;
p.percentage = x.battery_percentage;
p.time = x.battery_time;
}
return(p);
}
//
// returns true if any mouse or kdb activity has been detected
//
klaptopdaemon'laptop_portable::poll_activity() (./kdeutils/klaptopdaemon/portable.cpp:240)
int laptop_portable::poll_activity()
{
static int mouse_count = 0, key_count = 0;
int m=0, k = 0;
int v;
char name[256];
char *cp, *cp2;
int *vp;
static FILE *procint = 0;
if (procint == 0) {
procint = fopen("/proc/interrupts", "r");
if (procint != 0)
return(0);
poll_activity(); // initialise statics
return(1);
}
::rewind(procint);
for (;;) {
if (::fgets(name, sizeof(name), procint) == 0)
break;
vp = 0;
if (strstr(name, "Mouse") || strstr(name, "mouse")) {
vp = &m;
} else
if (strstr(name, "Keyboard") || strstr(name, "keyboard"))
vp = &k;
if (vp == 0)
continue;
v = 0;
for (cp = name;*cp;cp++) {
if (*cp != ':')
continue;
cp++;
for (;;) {
for(;;cp++) {
if (*cp != ' ' && *cp != '\t')
break;
}
if (*cp < '0' || *cp > '9')
break;
cp2 = cp;
while (*cp >= '0' && *cp <= '9')
cp++;
*cp++ = 0;
v += atoi(cp2);
}
break;
}
if (v > *vp)
*vp = v;
}
v = k != key_count || m != mouse_count;
key_count = k;
mouse_count = m;
return(v);
}
klaptopdaemon'laptop_portable::has_power_management() (./kdeutils/klaptopdaemon/portable.cpp:323)
laptop_portable::has_power_management()
{
int ret, fd = ::open(APMDEV, O_RDWR);
if (fd == -1) {
return 0;
}
struct apm_info info;
ret=ioctl(fd, APMIO_GETINFO, &info);
::close(fd);
if (ret == -1) {
return 0;
}
return info.ai_status;
}
//
// returns 1 if the BIOS returns the time left in the battery rather than a % of full
//
klaptopdaemon'laptop_portable::has_battery_time() (./kdeutils/klaptopdaemon/portable.cpp:344)
int laptop_portable::has_battery_time()
{
return (0);
}
//
// returns 1 if we can perform a change-to-suspend-mode operation for the user
// (has_power_management() has already returned 1)
//
klaptopdaemon'laptop_portable::has_suspend() (./kdeutils/klaptopdaemon/portable.cpp:353)
int laptop_portable::has_suspend()
{
int ret, fd = ::open(APMDEV, O_RDWR);
if (fd == -1)
return 0;
struct apm_info info;
ret=ioctl(fd, APMIO_GETINFO, &info);
::close(fd);
if (ret == -1)
return 0;
return (info.ai_capabilities & 0x02);
}
//
// returns 1 if we can perform a change-to-standby-mode operation for the user
// (has_power_management() has already returned 1)
//
klaptopdaemon'laptop_portable::has_standby() (./kdeutils/klaptopdaemon/portable.cpp:373)
int laptop_portable::has_standby()
{
int ret, fd = ::open(APMDEV, O_RDWR);
if (fd == -1)
return 0;
struct apm_info info;
ret=ioctl(fd, APMIO_GETINFO, &info);
::close(fd);
if (ret == -1)
return 0;
return (info.ai_capabilities & 0x01);
}
//
// explain to the user what they need to do if has_power_management() returned 0
// to get any software they lack
//
klaptopdaemon'laptop_portable::no_power_management_explanation() (./kdeutils/klaptopdaemon/portable.cpp:394)
QLabel *laptop_portable::no_power_management_explanation(QWidget *parent)
{
int fd;
QLabel *explain;
fd = ::open(APMDEV, O_RDWR);
if (fd == -1) {
switch (errno) {
case ENOENT:
explain = new QLabel("There is no /dev/apm file on this system. Pleae review the FreeBSD handbook on how to create a device node for the apm device driver (man 4 apm)", parent);
break;
case EACCES:
explain = new QLabel("Your system has the proper device node for apm support, however you can't access it. If you're root right now, you've got a problem, otherwise contact your local sysadmin and beg for read/write access to /dev/apm.", parent);
break;
case ENXIO:
explain = new QLabel("Your kernel lacks support for Advanced Power Managment.", parent);
break;
break;
default:
explain = new QLabel("There was some generic error while opening /dev/apm. Contact your local supermarket, there's a blue light special on FreeBSD, really.", parent);
break;
}
} else {
explain = new QLabel("APM has most likely been disabled. Oops", parent);
}
explain->setMinimumSize(explain->sizeHint());
return(explain);
}
//
// explain to the user what they need to do to get suspend/resume to work from user mode
//
klaptopdaemon'laptop_portable::how_to_do_suspend_resume() (./kdeutils/klaptopdaemon/portable.cpp:428)
QLabel *laptop_portable::how_to_do_suspend_resume(QWidget *parent)
{
QLabel* note = new QLabel(i18n(" "), parent);
note->setMinimumSize(note->sizeHint());
return(note);
}
//
// pcmcia support - this will be replaced by better - pcmcia support being worked on by
// others
//
klaptopdaemon'laptop_portable::pcmcia_info() (./kdeutils/klaptopdaemon/portable.cpp:440)
QLabel *laptop_portable::pcmcia_info(int x, QWidget *parent)
{
if (x == 0)
return(new QLabel(i18n("No PCMCIA controller detected"), parent));
return(new QLabel(i18n(""), parent));
}
//
// puts us into standby mode
//
klaptopdaemon'laptop_portable::invoke_standby() (./kdeutils/klaptopdaemon/portable.cpp:449)
void laptop_portable::invoke_standby()
{
int fd = ::open(APMDEV, O_RDWR);
if (fd == -1)
return;
ioctl(fd, APMIO_STANDBY, NULL);
::close(fd);
return;
}
//
// puts us into suspend mode
//
klaptopdaemon'laptop_portable::invoke_suspend() (./kdeutils/klaptopdaemon/portable.cpp:465)
void laptop_portable::invoke_suspend()
{
int fd = ::open(APMDEV, O_RDWR);
if (fd == -1)
return;
ioctl(fd, APMIO_SUSPEND, NULL);
::close(fd);
return;
}
//
// return current battery state
//
struct power_result laptop_portable::poll_battery_state()
{
struct power_result p;
p.powered = 0;
p.percentage = 100;
p.time = 0;
return(p);
}
//
// returns true if any mouse or kdb activity has been detected
//
klaptopdaemon'laptop_portable::poll_activity() (./kdeutils/klaptopdaemon/portable.cpp:495)
int laptop_portable::poll_activity()
{
return(1);
}
#else
// INSERT HERE
//
// returns 1 if we support power management
//
int
klaptopdaemon'laptop_portable::has_power_management() (./kdeutils/klaptopdaemon/portable.cpp:507)
laptop_portable::has_power_management()
{
return(0);
}
//
// returns 1 if the BIOS returns the time left in the battery rather than a % of full
//
klaptopdaemon'laptop_portable::has_battery_time() (./kdeutils/klaptopdaemon/portable.cpp:514)
int laptop_portable::has_battery_time()
{
return (0);
}
//
// returns 1 if we can perform a change-to-suspend-mode operation for the user
// (has_power_management() has already returned 1)
//
klaptopdaemon'laptop_portable::has_suspend() (./kdeutils/klaptopdaemon/portable.cpp:523)
int laptop_portable::has_suspend()
{
return(0);
}
//
// returns 1 if we can perform a change-to-standby-mode operation for the user
// (has_power_management() has already returned 1)
//
klaptopdaemon'laptop_portable::has_standby() (./kdeutils/klaptopdaemon/portable.cpp:531)
int laptop_portable::has_standby()
{
return(0);
}
//
// explain to the user what they need to do if has_power_management() returned 0
// to get any software they lack
//
klaptopdaemon'laptop_portable::no_power_management_explanation() (./kdeutils/klaptopdaemon/portable.cpp:540)
QLabel *laptop_portable::no_power_management_explanation(QWidget *parent)
{
QLabel* explain = new QLabel(i18n("Your computer or operating system is not supported by the current version of the\nKDE laptop control panels, if you want help porting these panels to work with it\nplease contact paul@taniwha.com"), parent);
explain->setMinimumSize(explain->sizeHint());
return(explain);
}
//
// explain to the user what they need to do to get suspend/resume to work from user mode
//
klaptopdaemon'laptop_portable::how_to_do_suspend_resume() (./kdeutils/klaptopdaemon/portable.cpp:550)
QLabel *laptop_portable::how_to_do_suspend_resume(QWidget *parent)
{
QLabel* note = new QLabel(i18n(" "), parent);
note->setMinimumSize(note->sizeHint());
return(note);
}
//
// pcmcia support - this will be replaced by better - pcmcia support being worked on by
// others
//
klaptopdaemon'laptop_portable::pcmcia_info() (./kdeutils/klaptopdaemon/portable.cpp:562)
QLabel *laptop_portable::pcmcia_info(int x, QWidget *parent)
{
if (x == 0)
return(new QLabel(i18n("No PCMCIA controller detected"), parent));
return(new QLabel(i18n(""), parent));
}
//
// puts us into standby mode
//
klaptopdaemon'laptop_portable::invoke_standby() (./kdeutils/klaptopdaemon/portable.cpp:571)
void laptop_portable::invoke_standby()
{
}
//
// puts us into suspend mode
//
klaptopdaemon'laptop_portable::invoke_suspend() (./kdeutils/klaptopdaemon/portable.cpp:578)
void laptop_portable::invoke_suspend()
{
}
//
// return current battery state
//
struct power_result laptop_portable::poll_battery_state()
{
struct power_result p;
p.powered = 0;
p.percentage = 0;
p.time = 0;
return(p);
}
//
// returns true if any mouse or kdb activity has been detected
//
klaptopdaemon'laptop_portable::poll_activity() (./kdeutils/klaptopdaemon/portable.cpp:599)
int laptop_portable::poll_activity()
{
return(1);
}