kdeui Library API Documentation

kauthicon.cpp

00001 /* This file is part of the KDE libraries
00002    Copyright (c) 1999 Preston Brown <pbrown@kde.org>
00003 
00004    This library is free software; you can redistribute it and/or
00005    modify it under the terms of the GNU Library General Public
00006    License version 2 as published by the Free Software Foundation.
00007 
00008    This library is distributed in the hope that it will be useful,
00009    but WITHOUT ANY WARRANTY; without even the implied warranty of
00010    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
00011    Library General Public License for more details.
00012 
00013    You should have received a copy of the GNU Library General Public License
00014    along with this library; see the file COPYING.LIB.  If not, write to
00015    the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
00016    Boston, MA 02111-1307, USA.
00017 */
00018 /*
00019  * KAuthIcon - an icon which shows whether privileges are in effect
00020  */
00021 
00022 #include <unistd.h> // For getuid
00023 
00024 #include <qlayout.h>
00025 #include <qlabel.h>
00026 #include <qtimer.h>
00027 
00028 #include <klocale.h>
00029 
00030 #include "kauthicon.h"
00031 
00032 /* XPM */
00033 static const char * const lock_xpm[] = {
00034 "22 22 5 1",
00035 "       c None",
00036 ".      c #808080",
00037 "+      c #000000",
00038 "@      c #FFFFFF",
00039 "#      c #C0C0C0",
00040 "                      ",
00041 "                      ",
00042 "                      ",
00043 "                      ",
00044 "        .+++.         ",
00045 "        .@@@.+        ",
00046 "      ..@+++@..       ",
00047 "      +@+...+@+       ",
00048 "      +@+.  +@+.      ",
00049 "      +@+.  +@+.      ",
00050 "     +++++++++++      ",
00051 "     +#########+.     ",
00052 "     +#.......#+.     ",
00053 "     +#@@@@@@@#+.     ",
00054 "     +#.......#+.     ",
00055 "     +#########+.     ",
00056 "     +++++++++++.     ",
00057 "      ...........     ",
00058 "                      ",
00059 "                      ",
00060 "                      ",
00061 "                      "};
00062 
00063 /* XPM */
00064 static const char * const openlock_xpm[] = {
00065 "22 22 5 1",
00066 "       c None",
00067 ".      c #808080",
00068 "+      c #000000",
00069 "@      c #FFFFFF",
00070 "#      c #C0C0C0",
00071 "                      ",
00072 "                      ",
00073 "        .+++.         ",
00074 "        .@@@.+        ",
00075 "      ..@+++@..       ",
00076 "      +@+...+@+       ",
00077 "      +@+.  +@+.      ",
00078 "      +@+.  +@+.      ",
00079 "      +++.  +@+.      ",
00080 "       ...  +@+.      ",
00081 "            +@+.      ",
00082 "     +++++++++++      ",
00083 "     +#########+.     ",
00084 "     +#.......#+.     ",
00085 "     +#@@@@@@@#+.     ",
00086 "     +#.......#+.     ",
00087 "     +#########+.     ",
00088 "     +++++++++++.     ",
00089 "      ...........     ",
00090 "                      ",
00091 "                      ",
00092 "                      "};
00093 
00094 KAuthIcon::KAuthIcon(QWidget *parent, const char *name)
00095   : QWidget(parent, name),
00096    lockPM( const_cast< const char** >( lock_xpm)),
00097    openLockPM( const_cast< const char** >(openlock_xpm))
00098 {
00099   lockText = i18n("Editing disabled");
00100   openLockText = i18n("Editing enabled");
00101 
00102   lockBox = new QLabel(this);
00103   lockBox->setFrameStyle(QFrame::WinPanel|QFrame::Raised);
00104   lockBox->setPixmap(lockPM);
00105   lockBox->setFixedSize(lockBox->sizeHint());
00106 
00107   lockLabel = new QLabel(this);
00108   lockLabel->setFrameStyle(QFrame::NoFrame);
00109 
00110   // set fixed size of this frame to whichever phrase is longer
00111   if (lockLabel->fontMetrics().boundingRect(lockText).width() >
00112       lockLabel->fontMetrics().boundingRect(openLockText).width())
00113     lockLabel->setText(lockText);
00114   else
00115     lockLabel->setText(openLockText);
00116   lockLabel->setAlignment(AlignCenter);
00117   lockLabel->setMinimumSize(lockLabel->sizeHint());
00118   lockLabel->setText(lockText);
00119 
00120   layout = new QHBoxLayout(this);
00121 
00122   layout->addWidget(lockBox, 0, AlignLeft|AlignVCenter);
00123   layout->addSpacing(5);
00124   layout->addWidget(lockLabel, 0, AlignRight|AlignVCenter);
00125 
00126   layout->activate();
00127   resize(sizeHint());
00128 }
00129 
00130 KAuthIcon::~KAuthIcon()
00131 {
00132 }
00133 
00134 
00135 QSize KAuthIcon::sizeHint() const
00136 {
00137   return layout->minimumSize();
00138 }
00139 
00140 
00141 /************************************************************************/
00142 
00143 KRootPermsIcon::KRootPermsIcon(QWidget *parent, const char *name)
00144   : KAuthIcon(parent, name)
00145 {
00146   updateStatus();
00147 }
00148 
00149 
00150 KRootPermsIcon::~KRootPermsIcon()
00151 {
00152 }
00153 
00154 void KRootPermsIcon::updateStatus()
00155 {
00156   bool newRoot;
00157   newRoot = (geteuid() == 0);
00158   lockBox->setPixmap(newRoot ? openLockPM : lockPM);
00159   lockLabel->setText(newRoot ? openLockText : lockText);
00160   update();
00161   if (root != newRoot) {
00162     root = newRoot;
00163     emit authChanged(newRoot);
00164   }
00165 }
00166 
00167 /************************************************************************/
00168 
00169 KWritePermsIcon::KWritePermsIcon(const QString & fileName,
00170                                  QWidget *parent, const char *name)
00171   : KAuthIcon(parent, name)
00172 {
00173   fi.setFile(fileName);
00174   updateStatus();
00175 }
00176 
00177 
00178 KWritePermsIcon::~KWritePermsIcon()
00179 {
00180 }
00181 
00182 void KWritePermsIcon::updateStatus()
00183 {
00184   bool newwrite;
00185   newwrite = fi.isWritable();
00186   lockBox->setPixmap(newwrite ? openLockPM : lockPM);
00187   lockLabel->setText(newwrite ? openLockText : lockText);
00188   update();
00189   if (writable != newwrite) {
00190     writable = newwrite;
00191     emit authChanged(newwrite);
00192   }
00193 }
00194 
00195 void KAuthIcon::virtual_hook( int, void* )
00196 { /*BASE::virtual_hook( id, data );*/ }
00197 
00198 void KRootPermsIcon::virtual_hook( int id, void* data )
00199 { KAuthIcon::virtual_hook( id, data ); }
00200 
00201 void KWritePermsIcon::virtual_hook( int id, void* data )
00202 { KAuthIcon::virtual_hook( id, data ); }
00203 
00204 #include "kauthicon.moc"
KDE Logo
This file is part of the documentation for kdelibs Version 3.1.5.
Documentation copyright © 1996-2002 the KDE developers.
Generated on Wed Jan 28 12:56:12 2004 by doxygen 1.3.4 written by Dimitri van Heesch, © 1997-2001