diff options
author | Timothy Pearson <[email protected]> | 2012-06-09 21:36:54 -0500 |
---|---|---|
committer | Timothy Pearson <[email protected]> | 2012-06-09 21:36:54 -0500 |
commit | 747d40114cfce22630e1996a0c155e3ccd329a68 (patch) | |
tree | e997f7bad6b839eaa1fbc768663ae60454cb08ba /src/toplevel.cpp | |
download | kerberostray-747d40114cfce22630e1996a0c155e3ccd329a68.tar.gz kerberostray-747d40114cfce22630e1996a0c155e3ccd329a68.zip |
Added common directories
Diffstat (limited to 'src/toplevel.cpp')
-rw-r--r-- | src/toplevel.cpp | 189 |
1 files changed, 189 insertions, 0 deletions
diff --git a/src/toplevel.cpp b/src/toplevel.cpp new file mode 100644 index 0000000..6e79055 --- /dev/null +++ b/src/toplevel.cpp @@ -0,0 +1,189 @@ +/*************************************************************************** + * Copyright (C) 2012 by Timothy Pearson * + * [email protected] * + * * + * This program is free software; you can redistribute it and/or modify * + * it under the terms of the GNU General Public License as published by * + * the Free Software Foundation; either version 2 of the License, or * + * (at your option) any later version. * + * * + * This program is distributed in the hope that it will be useful, * + * but WITHOUT ANY WARRANTY; without even the implied warranty of * + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * + * GNU General Public License for more details. * + * * + * You should have received a copy of the GNU General Public License * + * along with this program; if not, write to the * + * Free Software Foundation, Inc., * + * 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. * + ***************************************************************************/ + +#include <stdlib.h> +#include <assert.h> + +#include <tqcheckbox.h> +#include <tqlayout.h> +#include <tqhbox.h> +#include <tqvbox.h> +#include <tqlineedit.h> +#include <tqpainter.h> +#include <tqtooltip.h> +#include <tqfile.h> +#include <tqcursor.h> +#include <tqpushbutton.h> +#include <tqgroupbox.h> +#include <tqheader.h> +#include <tqpixmap.h> +#include <tqbitmap.h> + +#include <kconfig.h> +#include <khelpmenu.h> +#include <kiconloader.h> +#include <klocale.h> +#include <kmessagebox.h> +#include <kpassivepopup.h> +#include <knotifyclient.h> +#include <knuminput.h> +#include <kseparator.h> +#include <kpopupmenu.h> +#include <kdialogbase.h> +#include <kaction.h> +#include <knotifydialog.h> + +#include "tealist.h" +#include "timeedit.h" +#include "toplevel.h" +#include "toplevel.moc" + + +const int TopLevel::DEFAULT_TEA_TIME = 3*60; + + +TopLevel::TopLevel() : KSystemTray() +{ + setBackgroundMode(X11ParentRelative); // what for? + + KConfig *config = kapp->config(); + config->setGroup("Kerberos"); + + confAct = new KAction(i18n("&Configure..."), "configure", 0, + TQT_TQOBJECT(this), TQT_SLOT(config()), actionCollection(), "configure"); + + // create app menu (displayed on right-click) + menu = new TQPopupMenu(); + menu->setCheckable(true); + connect(menu, TQT_SIGNAL(activated(int)), this, TQT_SLOT(teaSelected(int))); + + KHelpMenu* help = new KHelpMenu(this, KGlobal::instance()->aboutData(), false); + KPopupMenu* helpMnu = help->menu(); + + menu->insertSeparator(); + confAct->plug(menu); + menu->insertItem(SmallIcon("help"), i18n("&Help"), helpMnu); + menu->insertItem(SmallIcon("exit"), i18n("Quit"), kapp, TQT_SLOT(quit())); + + confdlg = 0L; + anondlg = 0L; + + stop(); // reset timer, disable some menu entries, etc. +} + +/* slot: signal shutDown() from KApplication */ +/* (not currently needed) +void TopLevel::queryExit() +{ + KConfig *config = kapp->config(); +// config->sync(); +} +*/ + + +/** Destructor */ +TopLevel::~TopLevel() +{ + delete menu; + // FIXME: must delete more (like all the TQWidgets in config-window)? +} + +void TopLevel::resizeEvent ( TQResizeEvent * ) +{ + activeTicketsPixmap = loadSizedIcon("kerberos_activetickets", width()); + noTicketsPixmap = loadSizedIcon("kerberos_notickets", width()); + expiredTicketsPixmap = loadSizedIcon("kerberos_expiredtickets", width()); + repaint(); +} + +/** Handle mousePressEvent */ +void TopLevel::mousePressEvent(TQMouseEvent *event) +{ + if (event->button() == Qt::LeftButton) { + // + } + else if (event->button() == Qt::RightButton) { + menu->popup(TQCursor::pos()); + } + else if (event->button() == MidButton) { + // currently unused + } +} + +/** Handle paintEvent (ie. animate icon) */ +void TopLevel::paintEvent(TQPaintEvent *) +{ + TQPixmap *pm = &mugPixmap; + + if (running) { + if (useTrayVis) + pm = &teaAnim1Pixmap; // this is 'mugPixmap' plus brown content + else + pm = &teaNotReadyPixmap; // generic "steeping" icon + } else { + // use simple two-frame "animation" + // FIXME: how about using a TQMovie instead? (eg. MNG) + if (ready) { + if (firstFrame) + pm = &teaAnim1Pixmap; + else + pm = &teaAnim2Pixmap; + } + } + + TQPixmap base(*pm); // make copy of base pixmap + TQPainter p(this); + p.drawPixmap(x, y, base); + p.end(); +} + +/** Check timer and initiate appropriate action if finished */ +void TopLevel::timerEvent(TQTimerEvent *) +{ + // +} + +/** update ToolTip */ +void TopLevel::setToolTip(const TQString &text, bool force) +{ + // don't update if text hasn't changed + if (lastTip == text) { + return; + } + + // don't remove Tooltip if (probably - can't know for sure?) currently showing + // FIXME: this isn't too nice: currently mouse must stay outside for >1s for update to occur + if (force || !this->hasMouse() || (lastTip == i18n("Kerberos Tickets Manager"))) { + lastTip = text; + TQToolTip::remove(this); + TQToolTip::add(this, text); + } +} + +/* config-slot: "help" button clicked */ +void TopLevel::help() +{ + kapp->invokeHelp(); +} + +void TopLevel::config() +{ + // +} |