/* This file is part of the KDE libraries Copyright (c) 1999 Preston Brown This library is free software; you can redistribute it and/or modify it under the terms of the GNU Library General Public License version 2 as published by the Free Software Foundation. This library 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 Library General Public License for more details. You should have received a copy of the GNU Library General Public License along with this library; see the file COPYING.LIB. If not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. */ #ifndef _KAUTHICON_H #define _KAUTHICON_H "$Id$" #include #include #include #include #include class TQHBoxLayout; class TQLabel; class KAuthIconPrivate; /** * @short A base class for authorization icon widgets * * This is the base class from which different authorization icon widget * which actually do something should be derived. You can use these * widgets to show that the user has (or doesn't have) the ability to do * something, and why that is. * * One of the most useful things you can do with this is connect * authChanged(bool) to setEnabled(bool) for a widget to turn it on and * off depending on the status of whatever it is you are monitoring. * * @see KRootPermsIcon, KWritePermsIcon * @author Preston Brown */ class TDEUI_EXPORT KAuthIcon : public TQWidget { Q_OBJECT public: /** * Constructor. */ KAuthIcon(TQWidget *parent = 0, const char *name = 0); ~KAuthIcon(); virtual TQSize sizeHint() const; /** * return the status of whatever is being monitored. */ virtual bool status() const = 0; public slots: /** * Re-implement this method if you want the icon to update itself * when something external has changed (i.e. a file on disk, uid/gid). */ virtual void updateStatus() = 0; signals: /** * this signal is emitted when authorization has changed from * its previous state. * @param authorized will be true if the type of authorization * described by the icon is true, otherwise it will be false. */ void authChanged(bool authorized); protected: TQHBoxLayout *layout; TQLabel *lockBox; TQLabel *lockLabel; TQPixmap lockPM; TQPixmap openLockPM; TQString lockText; TQString openLockText; protected: virtual void virtual_hook( int id, void* data ); private: KAuthIconPrivate *d; }; class KRootPermsIconPrivate; /** * Icon to show whether or not a user has root permissions. * * @see KAuthIcon * @author Preston Brown */ class TDEUI_EXPORT KRootPermsIcon : public KAuthIcon { Q_OBJECT public: KRootPermsIcon(TQWidget *parent = 0, const char *name = 0); ~KRootPermsIcon(); /** * return whether or not the current user has root permissions. */ bool status() const { return root; } public slots: void updateStatus(); protected: bool root; protected: virtual void virtual_hook( int id, void* data ); private: KRootPermsIconPrivate *d; }; class KWritePermsIconPrivate; /** * Auth icon for write permission display. * * @see KAuthIcon * @author Preston Brown */ class TDEUI_EXPORT KWritePermsIcon : public KAuthIcon { Q_OBJECT TQ_PROPERTY( TQString fileName READ fileName WRITE setFileName ) public: KWritePermsIcon(const TQString & fileName, TQWidget *parent = 0, const char *name = 0); ~KWritePermsIcon(); /** * @return whether or not the monitored file is writable. */ bool status() const { return writable; } /** * make the icon watch a new filename. * @param fileName the new file to monitor / display status for. */ void setFileName(const TQString & fileName) { fi.setFile(fileName); updateStatus(); } /** * return the filename of the currently watched file. * @since 3.4 */ TQString fileName() const { return fi.fileName(); } public slots: void updateStatus(); protected: bool writable; TQFileInfo fi; protected: virtual void virtual_hook( int id, void* data ); private: KWritePermsIconPrivate *d; }; #endif