Source Code (Use browser search to find items of interest.)
Class Index
kautorun'TopLevel (./kdemultimedia/kautorun/toplevel.h:30)
class TopLevel : public KDockWindow
{
Q_OBJECT
public:
TopLevel();
~TopLevel();
protected slots:
void discChanged(DriveState state);
void discRemoved();
void setup();
void about();
protected:
void readConfig();
void runAudio();
void runData();
void runMixed();
private:
QPixmap _discUnknown;
QPixmap _discData;
QPixmap _discAudio;
CDROM *_cdrom;
QString _device;
bool _openData, _autorunData, _askAutorun;
QString _openDataCmd;
QStringList _autorunFiles;
bool _openAudio;
enum MixedMode { Audio, Data, Ask, Ignore };
MixedMode _mixed;
};
kautorun'TopLevel::TopLevel() (./kdemultimedia/kautorun/toplevel.cpp:49)
TopLevel::TopLevel()
: KDockWindow(), _discUnknown(cd_cool),
_discData(cd_data), _discAudio(cd_audio), _cdrom(0), _mixed(Ask)
{
setPixmap(_discUnknown);
readConfig();
contextMenu()->insertItem(i18n("Setup..."), this, SLOT(setup()));
contextMenu()->insertItem(i18n("About..."), this, SLOT(about()));
}
kautorun'TopLevel::readConfig() (./kdemultimedia/kautorun/toplevel.cpp:62)
void TopLevel::readConfig()
{
KConfig *config = kapp->config();
config->setGroup("General");
// (re)create the cdrom object
delete _cdrom;
_device = config->readEntry("Device", "/dev/cdrom");
_cdrom = new CDROM(_device);
connect(_cdrom, SIGNAL(discChanged(DriveState)), this, SLOT(discChanged(DriveState)));
connect(_cdrom, SIGNAL(discRemoved()), this, SLOT(discRemoved()));
// how to treat data CDs
config->setGroup("Data");
_openData = config->readBoolEntry("Open", true);
_openDataCmd = config->readEntry("OpenCMD", "kfmclient openURL file:/auto/cdrom");
_autorunData = config->readBoolEntry("AutoRun", true);
_askAutorun = config->readBoolEntry("AskAutorun", true);
// fill our possible autorun files
_autorunFiles.clear();
_autorunFiles.append("autorun.sh");
_autorunFiles.append("autorun");
_autorunFiles.append(".autorun");
// how to treat audio CDs
config->setGroup("Audio");
_openAudio = config->readBoolEntry("Open", true);
// how to treat mixed mode CDs
config->setGroup("Mixed");
QString mode = config->readEntry("Mode", "Ask");
if (mode == "Ask")
_mixed = Ask;
if (mode == "Data")
_mixed = Data;
if (mode == "Audio")
_mixed = Audio;
if (mode == "Ignore")
_mixed = Ignore;
}
kautorun'TopLevel::~TopLevel() (./kdemultimedia/kautorun/toplevel.cpp:105)
TopLevel::~TopLevel()
{
delete _cdrom;
}
kautorun'TopLevel::discChanged() (./kdemultimedia/kautorun/toplevel.cpp:111)
void TopLevel::discChanged(DriveState state)
{
if (state == DataCD)
runData();
if (state == AudioCD)
runAudio();
if (state == MixedCD)
runMixed();
}
kautorun'TopLevel::discRemoved() (./kdemultimedia/kautorun/toplevel.cpp:122)
void TopLevel::discRemoved()
{
setPixmap(_discUnknown);
}
kautorun'TopLevel::runData() (./kdemultimedia/kautorun/toplevel.cpp:128)
void TopLevel::runData()
{
setPixmap(_discData);
// try to locate autorun.sh
if (_autorunData)
{
QStringList::Iterator it = _autorunFiles.begin();
for ( ; it != _autorunFiles.end(); ++it )
{
QString file("/auto/cdrom/");
file += *it;
QFile autorun(file);
if (!autorun.exists())
continue;
bool run = true;
if (_askAutorun)
run = QMessageBox::information(0, i18n("Execute %1").arg(*it),
i18n("Do you want to execute '%1' on the CD?").arg(*it),
i18n("Yes"), i18n("No")) == QMessageBox::Yes;
if (run)
{
QString cmd("sh ");
cmd += file + "&";
system(cmd.local8Bit());
// quit here, do not additionally show the files!
return;
}
}
}
// open the files
if (_openData)
system(_openDataCmd + " &");
}
kautorun'TopLevel::runAudio() (./kdemultimedia/kautorun/toplevel.cpp:167)
void TopLevel::runAudio()
{
setPixmap(_discAudio);
if (_openAudio)
_cdrom->play();
}
kautorun'TopLevel::runMixed() (./kdemultimedia/kautorun/toplevel.cpp:176)
void TopLevel::runMixed()
{
MixedMode todo = _mixed;
if (todo == Ask)
{
int res = QMessageBox::information(0, i18n("Mixed mode CD"),
i18n("How do you want to treat this mixed mode CD?"),
i18n("Audio"), i18n("Data"), i18n("Ignore"));
if (res == 0)
todo = Audio;
if (res == 1)
todo = Data;
if (res == 2)
todo = Ignore;
}
if (todo == Data)
runData();
if (todo == Audio)
runAudio();
}
kautorun'TopLevel::setup() (./kdemultimedia/kautorun/toplevel.cpp:200)
void TopLevel::setup()
{
SetupDialog dlg;
// fill in dialog
dlg._runAudio->setChecked(_openAudio);
dlg._runData->setChecked(_openData);
dlg._runDataCmd->setText(_openDataCmd);
dlg._runAutorun->setChecked(_autorunData);
dlg._askAutorun->setChecked(_askAutorun);
dlg._deviceEdit->setText(_device);
dlg._mixed1->setChecked(_mixed == Audio);
dlg._mixed2->setChecked(_mixed == Data);
dlg._mixed3->setChecked(_mixed == Ask);
dlg._mixed4->setChecked(_mixed == Ignore);
dlg.openToggle();
dlg.execToggle();
// execute dialog
if (dlg.exec() == 1)
{
KConfig *config = kapp->config();
config->setGroup("General");
config->writeEntry("Device", dlg._deviceEdit->text());
config->setGroup("Data");
config->writeEntry("Open", dlg._runData->isChecked());
config->writeEntry("OpenCMD", dlg._runDataCmd->text());
config->writeEntry("AutoRun", dlg._runAutorun->isChecked());
config->writeEntry("AskAutoRun", dlg._askAutorun->isChecked());
config->setGroup("Audio");
config->writeEntry("Open", dlg._runAudio->isChecked());
config->setGroup("Mixed");
if (dlg._mixed1->isChecked())
config->writeEntry("Mode", "Audio");
if (dlg._mixed2->isChecked())
config->writeEntry("Mode", "Data");
if (dlg._mixed3->isChecked())
config->writeEntry("Mode", "Ask");
if (dlg._mixed4->isChecked())
config->writeEntry("Mode", "Ignore");
config->sync();
readConfig();
}
}
kautorun'TopLevel::about() (./kdemultimedia/kautorun/toplevel.cpp:252)
void TopLevel::about()
{
KAboutDialog dlg(this);
dlg.setLogo(_discUnknown);
dlg.setVersion(i18n("KDE CD AutoRun")+ " 1.0");
dlg.setCaption(i18n("KDE CD AutoRun"));
dlg.setAuthor(i18n("Author:")+ " Matthias Hölzer-Klüpfel", "hoelzer@kde.org", "http://www.caldera.de/~mhk", "");
dlg.adjust();
dlg.exec();
}