//
// C++ Implementation: configactions
//
// Description:
//
//
// Author: Ulrich Weigelt <ulrich.weigelt@gmx.de>, (C) 2007
//
// Copyright: See COPYING file that comes with this distribution
//
//
# include "configactions.h"
typedef KGenericFactory < ConfigActions , TQWidget > ConfigActionsFactory ;
K_EXPORT_COMPONENT_FACTORY ( kcm_kshowmailconfigactions , ConfigActionsFactory (
" kcm_kshowmailconfigactions " ) ) ;
ConfigActions : : ConfigActions ( TQWidget * parent , const char * name , const TQStringList & args )
: TDECModule ( ConfigActionsFactory : : instance ( ) , parent , args )
{
//set the module name
if ( ! name )
setName ( " configactions " ) ;
//build GUI
//---------
//main layout
TQVBoxLayout * layMain = new TQVBoxLayout ( this , 0 , 10 ) ;
//two boxes to seperate the action if new mail or if no new mail
TQGroupBox * gboxNewMails = new TQGroupBox ( 0 , TQt : : Horizontal , i18n ( " Action if new &mail " ) , this , " gboxNewMails " ) ;
TQGroupBox * gboxNoNewMails = new TQGroupBox ( 2 , TQt : : Vertical , i18n ( " Action if &no mail " ) , this , " gboxNoNewMails " ) ;
gboxNoNewMails - > layout ( ) - > setSpacing ( 20 ) ;
layMain - > addWidget ( gboxNewMails ) ;
layMain - > addWidget ( gboxNoNewMails ) ;
//layouts for the upper group box
TQVBoxLayout * layMainNewMails = new TQVBoxLayout ( gboxNewMails - > layout ( ) , 10 ) ;
TQGridLayout * layMainNewMailsTop = new TQGridLayout ( layMainNewMails , 2 , 2 , 10 ) ;
TQGridLayout * layMainNewMailsDown = new TQGridLayout ( layMainNewMails , 2 , 4 , 10 ) ;
//items for the upper group box
chkNewMailsAlertWindow = new TQCheckBox ( i18n ( " Show message box " ) , gboxNewMails , " chkNewMailsAlertWindow " ) ;
TQToolTip : : add ( chkNewMailsAlertWindow , i18n ( " Show message if new mail arrives " ) ) ;
layMainNewMailsTop - > addWidget ( chkNewMailsAlertWindow , 0 , 0 ) ;
chkNewMailsMainWindow = new TQCheckBox ( i18n ( " Show main window " ) , gboxNewMails , " chkNewMailsMainWindow " ) ;
TQToolTip : : add ( chkNewMailsMainWindow , i18n ( " Show main window if new mail arrives " ) ) ;
layMainNewMailsTop - > addWidget ( chkNewMailsMainWindow , 0 , 1 ) ;
chkNewMailsBeep = new TQCheckBox ( i18n ( " &Beep " ) , gboxNewMails , " chkNewMailsBeep " ) ;
TQToolTip : : add ( chkNewMailsBeep , i18n ( " Beeps the internal speaker if new mail " ) ) ;
layMainNewMailsTop - > addWidget ( chkNewMailsBeep , 1 , 0 ) ;
chkNewMailsSound = new TQCheckBox ( i18n ( " Sound: " ) , gboxNewMails , " chkNewMailsSound " ) ;
TQToolTip : : add ( chkNewMailsSound , i18n ( " Plays sound if new mail " ) ) ;
layMainNewMailsDown - > addWidget ( chkNewMailsSound , 0 , 0 ) ;
Bring mail_forward, mail_new, mail_replyall, mail_reply, mail_send, player_pause, player_play, player_stop, player_rew, player_fwd, player_start, player_end, rotate_ccw, rotate_cw, window_fullscreen, window_nofullscreen, window_new, viewmagfit, viewmag+, viewmag1, and viewmag- icons into XDG compliance
10 years ago
btnNewMailsPlaySound = new KPushButton ( KGuiItem ( TQString ( ) , TQString ( " media-playback-start " ) , i18n ( " Play the selected sound file " ) , i18n ( " Play the selected sound file " ) ) , gboxNewMails , " btnNewMailsPlaySound " ) ;
layMainNewMailsDown - > addWidget ( btnNewMailsPlaySound , 0 , 1 ) ;
txtNewMailsSound = new KLineEdit ( gboxNewMails , " txtNewMailsSound " ) ;
layMainNewMailsDown - > addWidget ( txtNewMailsSound , 0 , 2 ) ;
btnNewMailsChooseSound = new KPushButton ( KGuiItem ( TQString ( ) , TQString ( " folder " ) , i18n ( " Press to select sound file " ) , i18n ( " Press to select sound file " ) ) , gboxNewMails , " btnNewMailsChooseSound " ) ;
layMainNewMailsDown - > addWidget ( btnNewMailsChooseSound , 0 , 3 ) ;
chkNewMailsCommand = new TQCheckBox ( i18n ( " Command: " ) , gboxNewMails , " chkNewMailsCommand " ) ;
TQToolTip : : add ( chkNewMailsCommand , i18n ( " Starts external program if new mail " ) ) ;
layMainNewMailsDown - > addWidget ( chkNewMailsCommand , 1 , 0 ) ;
btnNewMailsExecCommand = new KPushButton ( KGuiItem ( TQString ( ) , TQString ( " application-x-executable " ) , i18n ( " Start the selected program " ) , i18n ( " Start the selected program " ) ) , gboxNewMails , " btnNewMailsExecCommand " ) ;
layMainNewMailsDown - > addWidget ( btnNewMailsExecCommand , 1 , 1 ) ;
txtNewMailsCommand = new KLineEdit ( gboxNewMails , " txtNewMailsCommand " ) ;
layMainNewMailsDown - > addWidget ( txtNewMailsCommand , 1 , 2 ) ;
btnNewMailsChooseCommand = new KPushButton ( KGuiItem ( TQString ( ) , TQString ( " folder " ) , i18n ( " Select external command " ) , i18n ( " Select external command " ) ) , gboxNewMails , " btnNewMailsChooseCommand " ) ;
layMainNewMailsDown - > addWidget ( btnNewMailsChooseCommand , 1 , 3 ) ;
//items for the lower group box
chkNoNewMailsMinimize = new TQCheckBox ( i18n ( " Minimi&ze " ) , gboxNoNewMails , " chkNoNewMailsMinimize " ) ;
TQToolTip : : add ( chkNoNewMailsMinimize , i18n ( " Minimize window if no new mail " ) ) ;
chkNoNewMailsTerminate = new TQCheckBox ( i18n ( " Terminate " ) , gboxNoNewMails , " chkNoNewMailsTerminate " ) ;
TQToolTip : : add ( chkNoNewMailsTerminate , i18n ( " Terminate kshowmail if no new mail " ) ) ;
//connect file choose buttons
connect ( btnNewMailsChooseSound , SIGNAL ( clicked ( ) ) , this , SLOT ( slotChooseSound ( ) ) ) ;
connect ( btnNewMailsChooseCommand , SIGNAL ( clicked ( ) ) , this , SLOT ( slotChooseCommand ( ) ) ) ;
//connect test buttons
connect ( btnNewMailsPlaySound , SIGNAL ( clicked ( ) ) , this , SLOT ( slotPlaySound ( ) ) ) ;
connect ( btnNewMailsExecCommand , SIGNAL ( clicked ( ) ) , this , SLOT ( slotExecuteCommand ( ) ) ) ;
//connect sound and command check boxes to enable or disable the configuration items
connect ( chkNewMailsSound , SIGNAL ( toggled ( bool ) ) , this , SLOT ( slotSoundToggled ( bool ) ) ) ;
connect ( chkNewMailsCommand , SIGNAL ( toggled ( bool ) ) , this , SLOT ( slotCommandToggled ( bool ) ) ) ;
//connect all configuration items with slot changed() to notify the dialog about changes
connect ( chkNewMailsAlertWindow , SIGNAL ( toggled ( bool ) ) , this , SLOT ( slotChanged ( ) ) ) ;
connect ( chkNewMailsMainWindow , SIGNAL ( toggled ( bool ) ) , this , SLOT ( slotChanged ( ) ) ) ;
connect ( chkNewMailsBeep , SIGNAL ( toggled ( bool ) ) , this , SLOT ( slotChanged ( ) ) ) ;
connect ( chkNewMailsSound , SIGNAL ( toggled ( bool ) ) , this , SLOT ( slotChanged ( ) ) ) ;
connect ( chkNewMailsCommand , SIGNAL ( toggled ( bool ) ) , this , SLOT ( slotChanged ( ) ) ) ;
connect ( txtNewMailsSound , SIGNAL ( textChanged ( const TQString & ) ) , this , SLOT ( slotChanged ( ) ) ) ;
connect ( txtNewMailsCommand , SIGNAL ( textChanged ( const TQString & ) ) , this , SLOT ( slotChanged ( ) ) ) ;
connect ( chkNoNewMailsMinimize , SIGNAL ( toggled ( bool ) ) , this , SLOT ( slotChanged ( ) ) ) ;
connect ( chkNoNewMailsTerminate , SIGNAL ( toggled ( bool ) ) , this , SLOT ( slotChanged ( ) ) ) ;
//get application config object (kshowmailrc)
config = TDEApplication : : kApplication ( ) - > config ( ) ;
//load configured values
load ( ) ;
}
ConfigActions : : ~ ConfigActions ( )
{
}
void ConfigActions : : load ( )
{
config - > setGroup ( CONFIG_GROUP_ACTIONS ) ;
chkNewMailsAlertWindow - > setChecked ( config - > readBoolEntry ( CONFIG_ENTRY_NEW_MAIL_ALERTWINDOW , DEFAULT_ACTION_NEW_MAIL_ALERTWINDOW ) ) ;
chkNewMailsMainWindow - > setChecked ( config - > readBoolEntry ( CONFIG_ENTRY_NEW_MAIL_MAINWINDOW , DEFAULT_ACTION_NEW_MAIL_MAINWINDOW ) ) ;
chkNewMailsBeep - > setChecked ( config - > readBoolEntry ( CONFIG_ENTRY_NEW_MAIL_BEEP , DEFAULT_ACTION_NEW_MAIL_BEEP ) ) ;
chkNewMailsSound - > setChecked ( config - > readBoolEntry ( CONFIG_ENTRY_NEW_MAIL_SOUND , DEFAULT_ACTION_NEW_MAIL_SOUND ) ) ;
chkNewMailsCommand - > setChecked ( config - > readBoolEntry ( CONFIG_ENTRY_NEW_MAIL_COMMAND , DEFAULT_ACTION_NEW_MAIL_COMMAND ) ) ;
chkNoNewMailsTerminate - > setChecked ( config - > readBoolEntry ( CONFIG_ENTRY_NO_NEW_MAIL_TERMINATE , DEFAULT_ACTION_NO_NEW_MAIL_TERMINATE ) ) ;
chkNoNewMailsMinimize - > setChecked ( config - > readBoolEntry ( CONFIG_ENTRY_NO_NEW_MAIL_MINIMIZE , DEFAULT_ACTION_NO_NEW_MAIL_MINIMIZE ) ) ;
txtNewMailsSound - > setText ( config - > readEntry ( CONFIG_ENTRY_NEW_MAIL_SOUNDPATH ) ) ;
txtNewMailsCommand - > setText ( config - > readEntry ( CONFIG_ENTRY_NEW_MAIL_COMMANDPATH ) ) ;
//enable or disable configuration items of sound and command
slotSoundToggled ( chkNewMailsSound - > isChecked ( ) ) ;
slotCommandToggled ( chkNewMailsCommand - > isChecked ( ) ) ;
}
void ConfigActions : : defaults ( )
{
chkNewMailsAlertWindow - > setChecked ( DEFAULT_ACTION_NEW_MAIL_ALERTWINDOW ) ;
chkNewMailsMainWindow - > setChecked ( DEFAULT_ACTION_NEW_MAIL_MAINWINDOW ) ;
chkNewMailsBeep - > setChecked ( DEFAULT_ACTION_NEW_MAIL_BEEP ) ;
chkNewMailsSound - > setChecked ( DEFAULT_ACTION_NEW_MAIL_SOUND ) ;
chkNewMailsCommand - > setChecked ( DEFAULT_ACTION_NEW_MAIL_COMMAND ) ;
chkNoNewMailsTerminate - > setChecked ( DEFAULT_ACTION_NO_NEW_MAIL_TERMINATE ) ;
chkNoNewMailsMinimize - > setChecked ( DEFAULT_ACTION_NO_NEW_MAIL_MINIMIZE ) ;
//enable or disable configuration items of sound and command
slotSoundToggled ( chkNewMailsSound - > isChecked ( ) ) ;
slotCommandToggled ( chkNewMailsCommand - > isChecked ( ) ) ;
}
void ConfigActions : : save ( )
{
config - > setGroup ( CONFIG_GROUP_ACTIONS ) ;
config - > writeEntry ( CONFIG_ENTRY_NEW_MAIL_ALERTWINDOW , chkNewMailsAlertWindow - > isChecked ( ) ) ;
config - > writeEntry ( CONFIG_ENTRY_NEW_MAIL_MAINWINDOW , chkNewMailsMainWindow - > isChecked ( ) ) ;
config - > writeEntry ( CONFIG_ENTRY_NEW_MAIL_BEEP , chkNewMailsBeep - > isChecked ( ) ) ;
config - > writeEntry ( CONFIG_ENTRY_NEW_MAIL_SOUND , chkNewMailsSound - > isChecked ( ) ) ;
config - > writeEntry ( CONFIG_ENTRY_NEW_MAIL_SOUNDPATH , txtNewMailsSound - > text ( ) ) ;
config - > writeEntry ( CONFIG_ENTRY_NEW_MAIL_COMMAND , chkNewMailsCommand - > isChecked ( ) ) ;
config - > writeEntry ( CONFIG_ENTRY_NEW_MAIL_COMMANDPATH , txtNewMailsCommand - > text ( ) ) ;
config - > writeEntry ( CONFIG_ENTRY_NO_NEW_MAIL_TERMINATE , chkNoNewMailsTerminate - > isChecked ( ) ) ;
config - > writeEntry ( CONFIG_ENTRY_NO_NEW_MAIL_MINIMIZE , chkNoNewMailsMinimize - > isChecked ( ) ) ;
//write configuration to disk
config - > sync ( ) ;
}
void ConfigActions : : slotChooseSound ( )
{
TQString startPath ; //start path of the file dialog
//get sounds directory of kshowmail
TDEStandardDirs stdDirs ;
TQString soundPath = stdDirs . findResource ( " data " , " kshowmail/sounds/ " ) ;
//get start path of the file dialog
if ( txtNewMailsSound - > text ( ) ! = " " )
{
startPath = txtNewMailsSound - > text ( ) ;
}
else if ( soundPath ! = TQString : : null )
{
startPath = soundPath ;
}
else
{
startPath = TQString : : null ;
}
//open file dialog
TQString path = KFileDialog : : getOpenFileName ( startPath , " *.wav *.ogg| " + i18n ( " Sound files (*.wav, *.ogg) " ) + " \n *.*| " + i18n ( " All files (*) " ) , this , i18n ( " Select Sound File " ) ) ;
//write selected path into the edit line
if ( path ! = TQString : : null )
txtNewMailsSound - > setText ( path ) ;
}
void ConfigActions : : slotChooseCommand ( )
{
//open file dialog
TQString path = KFileDialog : : getOpenFileName ( TQString : : null , " " , this , i18n ( " Select external command " ) ) ;
//write selected path into the edit line
if ( path ! = TQString : : null )
txtNewMailsCommand - > setText ( path ) ;
}
void ConfigActions : : slotPlaySound ( )
{
TQString path = txtNewMailsSound - > text ( ) ;
if ( path ! = TQString : : null )
KAudioPlayer : : play ( path ) ;
}
void ConfigActions : : slotExecuteCommand ( )
{
TQString path = txtNewMailsCommand - > text ( ) ;
if ( path ! = TQString : : null )
{
KShellProcess proc ; //process handler to execute the binary
proc < < path ;
proc . start ( KShellProcess : : DontCare ) ;
}
}
void ConfigActions : : slotSoundToggled ( bool on )
{
btnNewMailsPlaySound - > setEnabled ( on ) ;
txtNewMailsSound - > setEnabled ( on ) ;
btnNewMailsChooseSound - > setEnabled ( on ) ;
}
void ConfigActions : : slotCommandToggled ( bool on )
{
btnNewMailsExecCommand - > setEnabled ( on ) ;
txtNewMailsCommand - > setEnabled ( on ) ;
btnNewMailsChooseCommand - > setEnabled ( on ) ;
}
void ConfigActions : : slotChanged ( )
{
TDECModule : : changed ( ) ;
}
# include "configactions.moc"