1
#include "EeeCamTray.h"
2
#include <QApplication>
8
EeeCamTray::EeeCamTray()
11
enableAct = new QAction(QIcon(":/CameraOn.png"), tr("Enable camera"), this);
12
connect(enableAct, SIGNAL(triggered()), this, SLOT(enableCamera()));
13
disableAct = new QAction(QIcon(":/CameraOff.png"), tr("Disable camera"), this);
14
connect(disableAct, SIGNAL(triggered()), this, SLOT(disableCamera()));
15
quitAct = new QAction(QIcon(":/Quit.png"), tr("Quit"), this);
16
quitAct->setShortcut(tr("Ctrl+Q"));
17
connect(quitAct, SIGNAL(triggered()), qApp, SLOT(quit()));
18
setContextMenu(new QMenu()); // checkStatus() will fill it in.
21
QTimer *timer = new QTimer(this);
22
connect(timer, SIGNAL(timeout()), this, SLOT(checkStatus()));
23
timer->start(60*1000); // 60 seconds
26
/* once-a-minute slot */
27
void EeeCamTray::checkStatus()
29
if (cameraIsEnabled())
31
setIcon(QIcon(":/CameraOn.png"));
32
setToolTip(tr("Eee camera is enabled."));
33
QMenu *menu = contextMenu();
35
menu->addAction(disableAct);
37
menu->addAction(quitAct);
41
setIcon(QIcon(":/CameraOff.png"));
42
setToolTip(tr("Eee camera is disabled."));
43
QMenu *menu = contextMenu();
45
menu->addAction(enableAct);
47
menu->addAction(quitAct);
51
bool EeeCamTray::cameraIsEnabled()
53
qDebug() << "Trying to read camera status.";
54
QFile ioctl("/proc/acpi/asus/camera");
55
if (ioctl.open(QIODevice::ReadOnly|QIODevice::Text|QIODevice::Unbuffered))
58
if (ioctl.getChar(&c))
59
return c == '1' ? true : false;
61
qDebug() << "** enabling write failed.";
65
qDebug() << "** failed to open control file.";
66
return false; // Can't tell, assume worst.
69
void EeeCamTray::enableCamera()
71
qDebug() << "Trying to enable camera input.";
72
QFile ioctl("/proc/acpi/asus/camera");
73
if (ioctl.open(QIODevice::WriteOnly|QIODevice::Text|QIODevice::Unbuffered))
75
if (ioctl.putChar('1'))
76
qDebug() << "** enabling write successful.";
78
qDebug() << "** enabling write failed.";
82
qDebug() << "** failed to open control file.";
87
void EeeCamTray::disableCamera()
89
qDebug() << "Trying to disable camera input.";
90
QFile ioctl("/proc/acpi/asus/camera");
91
if (ioctl.open(QIODevice::WriteOnly|QIODevice::Text|QIODevice::Unbuffered))
93
if (ioctl.putChar('0'))
94
qDebug() << "** disabling write successful.";
96
qDebug() << "** disabling write failed.";
100
qDebug() << "** failed to open control file.";