6 #include "cfgircsounds.h"
7 #include "irc/configuration/ircconfig.h"
8 #include "ui_cfgircsounds.h"
11 #include <QFileDialog>
12 #include <QSoundEffect>
14 DClass<CFGIRCSounds> :
public Ui::CFGIRCSounds
25 d->sfx =
new QSoundEffect(
this);
28 d->lblNicknameUsedWarning->hide();
29 d->lblPrivateMessageWarning->hide();
31 this->connect(d->cbNicknameUsed, SIGNAL(toggled(
bool)),
32 SIGNAL(validationRequested()));
33 this->connect(d->leNicknameUsed, SIGNAL(editingFinished()),
34 SIGNAL(validationRequested()));
35 this->connect(d->cbPrivateMessage, SIGNAL(toggled(
bool)),
36 SIGNAL(validationRequested()));
37 this->connect(d->lePrivateMessage, SIGNAL(editingFinished()),
38 SIGNAL(validationRequested()));
41 CFGIRCSounds::~CFGIRCSounds()
45 void CFGIRCSounds::browseNicknameUsed()
47 setPath(d->leNicknameUsed, getPathToWav());
50 void CFGIRCSounds::browsePrivateMessage()
52 setPath(d->lePrivateMessage, getPathToWav());
55 QString CFGIRCSounds::getPathToWav()
57 return QFileDialog::getOpenFileName(
this, tr(
"Pick Sound File"),
62 void CFGIRCSounds::playNicknameUsed()
64 playSound(d->leNicknameUsed->text());
67 void CFGIRCSounds::playPrivateMessage()
69 playSound(d->lePrivateMessage->text());
72 void CFGIRCSounds::playSound(
const QString &path)
const
77 d->sfx->setSource(QUrl::fromLocalFile(file.absoluteFilePath()));
84 d->cbNicknameUsed->setChecked(gIRCConfig.sounds.bUseNicknameUsedSound);
85 d->cbPrivateMessage->setChecked(gIRCConfig.sounds.bUsePrivateMessageReceivedSound);
87 d->leNicknameUsed->setText(gIRCConfig.sounds.nicknameUsedSound);
88 d->lePrivateMessage->setText(gIRCConfig.sounds.privateMessageReceivedSound);
93 gIRCConfig.sounds.bUseNicknameUsedSound = d->cbNicknameUsed->isChecked();
94 gIRCConfig.sounds.nicknameUsedSound = d->leNicknameUsed->text().trimmed();
96 gIRCConfig.sounds.bUsePrivateMessageReceivedSound = d->cbPrivateMessage->isChecked();
97 gIRCConfig.sounds.privateMessageReceivedSound = d->lePrivateMessage->text().trimmed();
100 void CFGIRCSounds::setPath(QLineEdit *pLineEdit,
const QString &path)
102 QString trimmedPath = path.trimmed();
103 if (!trimmedPath.isEmpty())
104 pLineEdit->setText(trimmedPath);
111 QString nicknameUsedError;
112 if (d->cbNicknameUsed->isChecked())
113 nicknameUsedError = validateFilePath(d->leNicknameUsed->text().trimmed());
114 d->lblNicknameUsedWarning->setVisible(!nicknameUsedError.isEmpty());
115 d->lblNicknameUsedWarning->setToolTip(nicknameUsedError);
116 error = error || !nicknameUsedError.isEmpty();
118 QString privateMessageError;
119 if (d->cbPrivateMessage->isChecked())
120 privateMessageError = validateFilePath(d->lePrivateMessage->text().trimmed());
121 d->lblPrivateMessageWarning->setVisible(!privateMessageError.isEmpty());
122 d->lblPrivateMessageWarning->setToolTip(privateMessageError);
123 error = error || !privateMessageError.isEmpty();
128 QString CFGIRCSounds::validateFilePath(
const QString &path)
const
130 if (path.trimmed().isEmpty())
131 return tr(
"No path specified.");
133 QFileInfo fileInfo(path.trimmed());
134 if (!fileInfo.exists())
135 return tr(
"File doesn't exist.");
137 if (!fileInfo.isFile())
138 return tr(
"This is not a file.");