25#include "alarmdockwindow.h"
26#include "koalarmclient.h"
28#include <tdeapplication.h>
31#include <kiconloader.h>
34#include <tdestandarddirs.h>
35#include <dcopclient.h>
36#include <tdepopupmenu.h>
37#include <tdemessagebox.h>
39#include <kstdaction.h>
46AlarmDockWindow::AlarmDockWindow(
const char *name )
47 : KSystemTray( 0, name )
50 TDEConfig *config = tdeApp->config();
51 config->setGroup(
"General");
52 bool autostart = config->readBoolEntry(
"Autostart",
true );
53 bool alarmsEnabled = config->readBoolEntry(
"Enabled",
true );
55 mName = i18n(
"KOrganizer Reminder Daemon" );
59 TDEGlobal::iconLoader()->addAppDir(
"korgac" );
60 mPixmapEnabled = loadIcon(
"korgac" );
61 mPixmapDisabled = loadIcon(
"korgac_disabled" );
63 setPixmap( alarmsEnabled ? mPixmapEnabled : mPixmapDisabled );
66 mSuspendAll = contextMenu()->insertItem( i18n(
"Suspend All"),
this, TQ_SLOT( slotSuspendAll() ) );
67 mDismissAll = contextMenu()->insertItem( i18n(
"Dismiss All"),
this, TQ_SLOT( slotDismissAll() ) );
68 contextMenu()->setItemEnabled( mSuspendAll,
false );
69 contextMenu()->setItemEnabled( mDismissAll,
false );
71 contextMenu()->insertSeparator();
72 mAlarmsEnabledId = contextMenu()->insertItem( i18n(
"Reminders Enabled"),
this,
73 TQ_SLOT( toggleAlarmsEnabled() ) );
74 mAutostartId = contextMenu()->insertItem( i18n(
"Start Reminder Daemon at Login"),
this,
75 TQ_SLOT( toggleAutostart() ) );
76 contextMenu()->setItemChecked( mAutostartId, autostart );
77 contextMenu()->setItemChecked( mAlarmsEnabledId, alarmsEnabled );
81 TDEActionCollection *ac = actionCollection();
82 const char *quitName = KStdAction::name( KStdAction::Quit );
83 TDEAction *quit = ac->action( quitName );
85 kdDebug(5890) <<
"No Quit standard action." << endl;
87 quit->disconnect( TQ_SIGNAL( activated() ),
this,
88 TQ_SLOT( maybeQuit() ) );
89 connect( quit, TQ_SIGNAL( activated() ), TQ_SLOT( slotQuit() ) );
92 TQToolTip::add(
this, mName );
95AlarmDockWindow::~AlarmDockWindow()
99void AlarmDockWindow::resizeTrayIcon ()
102 mPixmapEnabled = loadSizedIcon(
"korgac", width() );
103 mPixmapDisabled = loadSizedIcon(
"korgac_disabled", width() );
105 TDEConfig *config = tdeApp->config();
106 bool alarmsEnabled = config->readBoolEntry(
"Enabled",
true );
107 setPixmap( alarmsEnabled ? mPixmapEnabled : mPixmapDisabled );
110void AlarmDockWindow::resizeEvent ( TQResizeEvent * )
115void AlarmDockWindow::showEvent ( TQShowEvent *se )
118 KSystemTray::showEvent(se);
121void AlarmDockWindow::slotUpdate(
int reminders )
123 TQToolTip::remove(
this );
126 TQToolTip::add(
this, i18n(
"There is 1 active reminder.",
127 "There are %n active reminders.", reminders ) );
128 contextMenu()->setItemEnabled( mSuspendAll,
true );
129 contextMenu()->setItemEnabled( mDismissAll,
true );
133 TQToolTip::add(
this, mName );
134 contextMenu()->setItemEnabled( mSuspendAll,
false );
135 contextMenu()->setItemEnabled( mDismissAll,
false );
139void AlarmDockWindow::toggleAlarmsEnabled()
141 kdDebug(5890) <<
"AlarmDockWindow::toggleAlarmsEnabled()" << endl;
143 TDEConfig *config = tdeApp->config();
144 config->setGroup(
"General" );
146 bool enabled = !contextMenu()->isItemChecked( mAlarmsEnabledId );
147 contextMenu()->setItemChecked( mAlarmsEnabledId, enabled );
148 setPixmap( enabled ? mPixmapEnabled : mPixmapDisabled );
150 config->writeEntry(
"Enabled", enabled );
154void AlarmDockWindow::toggleAutostart()
156 bool autostart = !contextMenu()->isItemChecked( mAutostartId );
158 enableAutostart( autostart );
161void AlarmDockWindow::slotSuspendAll()
163 emit suspendAllSignal();
166void AlarmDockWindow::slotDismissAll()
168 emit dismissAllSignal();
171void AlarmDockWindow::enableAutostart(
bool enable )
173 TDEConfig *config = tdeApp->config();
174 config->setGroup(
"General" );
175 config->writeEntry(
"Autostart", enable );
178 contextMenu()->setItemChecked( mAutostartId, enable );
181void AlarmDockWindow::mousePressEvent( TQMouseEvent *e )
183 if ( e->button() == TQt::LeftButton ) {
184 tdeApp->startServiceByDesktopName(
"korganizer", TQString() );
186 KSystemTray::mousePressEvent( e );
191void AlarmDockWindow::slotQuit()
193 int result = KMessageBox::questionYesNoCancel(
this,
194 i18n(
"Do you want to start the KOrganizer reminder daemon at login "
195 "(note that you will not get reminders whilst the daemon is not running)?"),
196 i18n(
"Close KOrganizer Reminder Daemon"),
197 i18n(
"Start"), i18n(
"Do Not Start"),
198 TQString::fromLatin1(
"AskForStartAtLogin")
201 bool autostart =
true;
202 if ( result == KMessageBox::No ) autostart =
false;
203 enableAutostart( autostart );
205 if ( result != KMessageBox::Cancel )
209#include "alarmdockwindow.moc"