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 kdeui Library Version 3.3.1.
Documentation copyright © 1996-2004 the KDE developers.
Generated on Sun Oct 17 11:27:24 2004 by doxygen 1.3.8 written by Dimitri van Heesch, © 1997-2003