6 #include "cfgircsounds.h"
7 #include "ui_cfgircsounds.h"
10 #include "irc/configuration/ircconfig.h"
11 #include "templatedpathresolver.h"
13 #include <QFileDialog>
14 #include <QSoundEffect>
17 DClass<CFGIRCSounds> :
public Ui::CFGIRCSounds
28 d->sfx =
new QSoundEffect(
this);
31 d->lblNicknameUsedWarning->hide();
32 d->lblPrivateMessageWarning->hide();
33 d->btnBrowseNicknameUsed->setIcon(style()->standardIcon(QStyle::SP_DirOpenIcon));
34 d->btnBrowsePrivateMessage->setIcon(style()->standardIcon(QStyle::SP_DirOpenIcon));
36 this->connect(d->cbNicknameUsed, SIGNAL(toggled(
bool)),
37 SIGNAL(validationRequested()));
38 this->connect(d->leNicknameUsed, SIGNAL(editingFinished()),
39 SIGNAL(validationRequested()));
40 this->connect(d->cbPrivateMessage, SIGNAL(toggled(
bool)),
41 SIGNAL(validationRequested()));
42 this->connect(d->lePrivateMessage, SIGNAL(editingFinished()),
43 SIGNAL(validationRequested()));
46 CFGIRCSounds::~CFGIRCSounds()
50 void CFGIRCSounds::browseNicknameUsed()
52 setPath(d->leNicknameUsed, getPathToWav());
55 void CFGIRCSounds::browsePrivateMessage()
57 setPath(d->lePrivateMessage, getPathToWav());
60 QString CFGIRCSounds::getPathToWav()
62 return QFileDialog::getOpenFileName(
this, tr(
"Pick Sound File"),
67 void CFGIRCSounds::playNicknameUsed()
69 playSound(d->leNicknameUsed->text());
72 void CFGIRCSounds::playPrivateMessage()
74 playSound(d->lePrivateMessage->text());
77 void CFGIRCSounds::playSound(
const QString &path)
const
82 d->sfx->setSource(QUrl::fromLocalFile(file.absoluteFilePath()));
89 d->cbNicknameUsed->setChecked(gIRCConfig.sounds.bUseNicknameUsedSound);
90 d->cbPrivateMessage->setChecked(gIRCConfig.sounds.bUsePrivateMessageReceivedSound);
92 d->leNicknameUsed->setText(gIRCConfig.sounds.nicknameUsedSound);
93 d->lePrivateMessage->setText(gIRCConfig.sounds.privateMessageReceivedSound);
98 gIRCConfig.sounds.bUseNicknameUsedSound = d->cbNicknameUsed->isChecked();
99 gIRCConfig.sounds.nicknameUsedSound = d->leNicknameUsed->text().trimmed();
101 gIRCConfig.sounds.bUsePrivateMessageReceivedSound = d->cbPrivateMessage->isChecked();
102 gIRCConfig.sounds.privateMessageReceivedSound = d->lePrivateMessage->text().trimmed();
105 void CFGIRCSounds::setPath(QLineEdit *pLineEdit,
const QString &path)
107 QString trimmedPath = gDefaultDataPaths->portablizePath(path.trimmed());
108 if (!trimmedPath.isEmpty())
109 pLineEdit->setText(trimmedPath);
116 QString nicknameUsedError;
117 if (d->cbNicknameUsed->isChecked())
118 nicknameUsedError = validateFilePath(d->leNicknameUsed->text().trimmed());
119 d->lblNicknameUsedWarning->setVisible(!nicknameUsedError.isEmpty());
120 d->lblNicknameUsedWarning->setToolTip(nicknameUsedError);
121 error = error || !nicknameUsedError.isEmpty();
123 QString privateMessageError;
124 if (d->cbPrivateMessage->isChecked())
125 privateMessageError = validateFilePath(d->lePrivateMessage->text().trimmed());
126 d->lblPrivateMessageWarning->setVisible(!privateMessageError.isEmpty());
127 d->lblPrivateMessageWarning->setToolTip(privateMessageError);
128 error = error || !privateMessageError.isEmpty();
133 QString CFGIRCSounds::validateFilePath(QString path)
const
136 if (path.trimmed().isEmpty())
137 return tr(
"No path specified.");
139 QFileInfo fileInfo(path.trimmed());
140 if (!fileInfo.exists())
141 return tr(
"File doesn't exist.");
143 if (!fileInfo.isFile())
144 return tr(
"This is not a file.");