1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183
|
#ifndef LAPTOPDAEMON
#define LAPTOPDAEMON 1
/*
* laptop_daemon.h
* Copyright (C) 1999 Paul Campbell <paul@taniwha.com>
*
* This file contains the implementation of the main laptop battery monitoring daemon
*
* $Id: laptop_daemon.h 490596 2005-12-22 13:05:45Z scripty $
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation; either version 2 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program; if not, write to the Free Software
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
*/
#include "daemon_state.h"
#include <qdir.h>
#include <unistd.h>
#include <time.h>
#include <qmovie.h>
#include <qptrlist.h>
#include <qfileinfo.h>
#include <qimage.h>
#include <kiconloader.h>
#include <kprocess.h>
//#include <kaudio.h>
#include <qtooltip.h>
#include <X11/Xlib.h>
#include <X11/extensions/XTest.h>
#include <qsocketnotifier.h>
#include <kdebug.h>
#include <qthread.h>
#include "kpcmcia.h"
#include "daemondock.h"
#include "xautolock.h"
#include <kdedmodule.h>
class laptop_daemon;
class XWidget;
class ButtonThread : public QThread {
public:
ButtonThread() { quitting = 0; }
void sethandle(laptop_daemon *h) { handle = h; }
void quit() { quitting = 1; } // make it quit
void done() { while (!finished()) msleep(100); quitting = 0; }// wait 'till it's done
virtual void run();
private:
bool quitting;
laptop_daemon *handle;
};
class laptop_dock;
class laptop_daemon: public KDEDModule
{
Q_OBJECT
K_DCOP
public:
laptop_daemon(const QCString& obj);
~laptop_daemon();
void setPollInterval(const int poll=60);
void SetBrightness(bool blank, int v); // routine to do it
int GetBrightness() { return brightness; }
void SetThrottle(QString v);
void SetPerformance(QString v);
void ButtonThreadInternals();
k_dcop:
void restart();
void quit();
signals:
void signal_checkBattery();
protected:
void timerEvent(QTimerEvent *);
protected slots:
void checkBatteryNow();
void timerDone();
void dock_quit();
void updatePCMCIA(int num);
void sonyDataReceived();
void BackoffRestart();
void WakeCheck();
private:
void haveBatteryLow(int t, const int num, const int type);
int calcBatteryTime(int percent, long time, bool restart);
void start_monitor();
void invokeStandby();
void invokeSuspend();
void invokeHibernate();
void invokeShutdown();
void invokeLogout();
void displayPixmap();
void setBlankSaver(bool);
laptop_dock *dock_widget;
// Capability
bool hasAudio;
//KAudio audioServer;
// General settings
public:
int val;
int powered;
int left;
bool x11Event(XEvent *event);
bool exists() { return s.exists; }
QString noBatteryIcon() { return s.noBatteryIcon; }
QString chargeIcon() { return s.chargeIcon; }
QString noChargeIcon() { return s.noChargeIcon; }
protected:
int triggered[2];
int oldval, oldexists, oldpowered, oldleft, knownFullyCharged;
int changed;
int oldTimer;
bool timer; // autolock timer is active
int power_time;
// PCMCIA related
KPCMCIA *_pcmcia;
// sony jog-bar support
int sony_fd; // file desc form open /dev/sonypi
Display *sony_disp; // X display
QSocketNotifier *sony_notifier; // how we know data is waiting
// brightness
int brightness; // actual brightness, -1 if not known
bool lid_state;
bool power_state;
ButtonThread buttonThread;
//
XAutoLock autoLock; // timer/UI maint
bool need_wait; // undo sleep stuff
bool saved_brightness, saved_throttle, saved_performance;
int saved_brightness_val;
QString saved_performance_val, saved_throttle_val;
QTimer *wake_timer; // the timer for the above running
QPoint wakepos; // the mouse pos at the beginning of time
void WakeUpAuto();
QTimer *backoffTimer; // backoff
bool power_button_off; // imagined state of the power button
bool button_bright_saved; // saved button state
int button_bright_val;
bool button_saved_performance;
QString button_saved_performance_val;
bool button_saved_throttle;
QString button_saved_throttle_val;
daemon_state s; // saved daemon state from config file
XWidget *xwidget;
};
#endif
|