kio Library API Documentation

kicondialog.cpp

00001 /* vi: ts=8 sts=4 sw=4 00002 * 00003 * This file is part of the KDE project, module kfile. 00004 * Copyright (C) 2000 Geert Jansen <jansen@kde.org> 00005 * (C) 2000 Kurt Granroth <granroth@kde.org> 00006 * (C) 1997 Christoph Neerfeld <chris@kde.org> 00007 * (C) 2002 Carsten Pfeiffer <pfeiffer@kde.org> 00008 * 00009 * This is free software; it comes under the GNU Library General 00010 * Public License, version 2. See the file "COPYING.LIB" for the 00011 * exact licensing terms. 00012 */ 00013 00014 #include "kicondialog.h" 00015 00016 #include <config.h> 00017 00018 #include <kiconviewsearchline.h> 00019 00020 #include <kapplication.h> 00021 #include <klocale.h> 00022 #include <kglobal.h> 00023 #include <kstandarddirs.h> 00024 #include <kiconloader.h> 00025 #include <kprogress.h> 00026 #include <kiconview.h> 00027 #include <kfiledialog.h> 00028 #include <kimagefilepreview.h> 00029 00030 #include <qlayout.h> 00031 #include <qstring.h> 00032 #include <qstringlist.h> 00033 #include <qsortedlist.h> 00034 #include <qimage.h> 00035 #include <qpixmap.h> 00036 #include <qlabel.h> 00037 #include <qcombobox.h> 00038 #include <qtimer.h> 00039 #include <qbuttongroup.h> 00040 #include <qradiobutton.h> 00041 #include <qfileinfo.h> 00042 #include <qtoolbutton.h> 00043 #include <qwhatsthis.h> 00044 00045 #ifdef HAVE_LIBART 00046 #include <svgicons/ksvgiconengine.h> 00047 #include <svgicons/ksvgiconpainter.h> 00048 #endif 00049 00050 class KIconCanvas::KIconCanvasPrivate 00051 { 00052 public: 00053 KIconCanvasPrivate() { m_bLoading = false; } 00054 ~KIconCanvasPrivate() {} 00055 bool m_bLoading; 00056 }; 00057 00061 class IconPath : public QString 00062 { 00063 protected: 00064 QString m_iconName; 00065 00066 public: 00067 IconPath(const QString &ip) : QString (ip) 00068 { 00069 int n = findRev('/'); 00070 m_iconName = (n==-1) ? static_cast<QString>(*this) : mid(n+1); 00071 } 00072 00073 00074 IconPath() : QString () 00075 { } 00076 00077 bool operator== (const IconPath &ip) const 00078 { return m_iconName == ip.m_iconName; } 00079 00080 bool operator< (const IconPath &ip) const 00081 { return m_iconName < ip.m_iconName; } 00082 00083 }; 00084 00085 /* 00086 * KIconCanvas: Iconview for the iconloader dialog. 00087 */ 00088 00089 KIconCanvas::KIconCanvas(QWidget *parent, const char *name) 00090 : KIconView(parent, name) 00091 { 00092 d = new KIconCanvasPrivate; 00093 mpLoader = KGlobal::iconLoader(); 00094 mpTimer = new QTimer(this); 00095 connect(mpTimer, SIGNAL(timeout()), SLOT(slotLoadFiles())); 00096 connect(this, SIGNAL(currentChanged(QIconViewItem *)), 00097 SLOT(slotCurrentChanged(QIconViewItem *))); 00098 setGridX(80); 00099 setWordWrapIconText(false); 00100 setShowToolTips(true); 00101 } 00102 00103 KIconCanvas::~KIconCanvas() 00104 { 00105 delete mpTimer; 00106 delete d; 00107 } 00108 00109 void KIconCanvas::loadFiles(const QStringList& files) 00110 { 00111 clear(); 00112 mFiles = files; 00113 emit startLoading(mFiles.count()); 00114 mpTimer->start(10, true); // #86680 00115 d->m_bLoading = false; 00116 } 00117 00118 void KIconCanvas::slotLoadFiles() 00119 { 00120 setResizeMode(Fixed); 00121 QApplication::setOverrideCursor(waitCursor); 00122 00123 // disable updates to not trigger paint events when adding child items 00124 setUpdatesEnabled( false ); 00125 00126 #ifdef HAVE_LIBART 00127 KSVGIconEngine *svgEngine = new KSVGIconEngine(); 00128 #endif 00129 00130 d->m_bLoading = true; 00131 int i; 00132 QStringList::ConstIterator it; 00133 uint emitProgress = 10; // so we will emit it once in the beginning 00134 for (it=mFiles.begin(), i=0; it!=mFiles.end(); it++, i++) 00135 { 00136 // Calling kapp->processEvents() makes the iconview flicker like hell 00137 // (it's being repainted once for every new item), so we don't do this. 00138 // Instead, we directly repaint the progress bar without going through 00139 // the event-loop. We do that just once for every 10th item so that 00140 // the progress bar doesn't flicker in turn. (pfeiffer) 00141 if ( emitProgress >= 10 ) { 00142 emit progress(i); 00143 emitProgress = 0; 00144 } 00145 00146 emitProgress++; 00147 // kapp->processEvents(); 00148 if ( !d->m_bLoading ) // user clicked on a button that will load another set of icons 00149 break; 00150 QImage img; 00151 00152 // Use the extension as the format. Works for XPM and PNG, but not for SVG 00153 QString path= *it; 00154 QString ext = path.right(3).upper(); 00155 00156 if (ext != "SVG" && ext != "VGZ") 00157 img.load(*it); 00158 #ifdef HAVE_LIBART 00159 else 00160 if (svgEngine->load(60, 60, *it)) 00161 img = *svgEngine->painter()->image(); 00162 #endif 00163 00164 if (img.isNull()) 00165 continue; 00166 if (img.width() > 60 || img.height() > 60) 00167 { 00168 if (img.width() > img.height()) 00169 { 00170 int height = (int) ((60.0 / img.width()) * img.height()); 00171 img = img.smoothScale(60, height); 00172 } else 00173 { 00174 int width = (int) ((60.0 / img.height()) * img.width()); 00175 img = img.smoothScale(width, 60); 00176 } 00177 } 00178 QPixmap pm; 00179 pm.convertFromImage(img); 00180 QFileInfo fi(*it); 00181 QIconViewItem *item = new QIconViewItem(this, fi.baseName(), pm); 00182 item->setKey(*it); 00183 item->setDragEnabled(false); 00184 item->setDropEnabled(false); 00185 } 00186 00187 #ifdef HAVE_LIBART 00188 delete svgEngine; 00189 #endif 00190 00191 // enable updates since we have to draw the whole view now 00192 setUpdatesEnabled( true ); 00193 00194 QApplication::restoreOverrideCursor(); 00195 d->m_bLoading = false; 00196 emit finished(); 00197 setResizeMode(Adjust); 00198 } 00199 00200 QString KIconCanvas::getCurrent() const 00201 { 00202 if (!currentItem()) 00203 return QString::null; 00204 return currentItem()->key(); 00205 } 00206 00207 void KIconCanvas::stopLoading() 00208 { 00209 d->m_bLoading = false; 00210 } 00211 00212 void KIconCanvas::slotCurrentChanged(QIconViewItem *item) 00213 { 00214 emit nameChanged((item != 0L) ? item->text() : QString::null); 00215 } 00216 00217 class KIconDialog::KIconDialogPrivate 00218 { 00219 public: 00220 KIconDialogPrivate() { 00221 m_bStrictIconSize = true; 00222 m_bLockUser = false; 00223 m_bLockCustomDir = false; 00224 searchLine = 0; 00225 } 00226 ~KIconDialogPrivate() {} 00227 bool m_bStrictIconSize, m_bLockUser, m_bLockCustomDir; 00228 QString custom; 00229 QString customLocation; 00230 KIconViewSearchLine *searchLine; 00231 }; 00232 00233 /* 00234 * KIconDialog: Dialog for selecting icons. Both system and user 00235 * specified icons can be chosen. 00236 */ 00237 00238 KIconDialog::KIconDialog(QWidget *parent, const char *name) 00239 : KDialogBase(parent, name, true, i18n("Select Icon"), Help|Ok|Cancel, Ok) 00240 { 00241 d = new KIconDialogPrivate; 00242 mpLoader = KGlobal::iconLoader(); 00243 init(); 00244 } 00245 00246 KIconDialog::KIconDialog(KIconLoader *loader, QWidget *parent, 00247 const char *name) 00248 : KDialogBase(parent, name, true, i18n("Select Icon"), Help|Ok|Cancel, Ok) 00249 { 00250 d = new KIconDialogPrivate; 00251 mpLoader = loader; 00252 init(); 00253 } 00254 00255 void KIconDialog::init() 00256 { 00257 mGroupOrSize = KIcon::Desktop; 00258 mContext = KIcon::Any; 00259 mType = 0; 00260 mFileList = KGlobal::dirs()->findAllResources("appicon", QString::fromLatin1("*.png")); 00261 00262 QWidget *main = new QWidget( this ); 00263 setMainWidget(main); 00264 00265 QVBoxLayout *top = new QVBoxLayout(main); 00266 top->setSpacing( spacingHint() ); 00267 00268 QButtonGroup *bgroup = new QButtonGroup(0, Qt::Vertical, i18n("Icon Source"), main); 00269 bgroup->layout()->setSpacing(KDialog::spacingHint()); 00270 bgroup->layout()->setMargin(KDialog::marginHint()); 00271 top->addWidget(bgroup); 00272 connect(bgroup, SIGNAL(clicked(int)), SLOT(slotButtonClicked(int))); 00273 QGridLayout *grid = new QGridLayout(bgroup->layout(), 3, 2); 00274 grid->addRowSpacing(0, 15); 00275 mpRb1 = new QRadioButton(i18n("S&ystem icons:"), bgroup); 00276 grid->addWidget(mpRb1, 1, 0); 00277 mpCombo = new QComboBox(bgroup); 00278 connect(mpCombo, SIGNAL(activated(int)), SLOT(slotContext(int))); 00279 grid->addWidget(mpCombo, 1, 1); 00280 mpRb2 = new QRadioButton(i18n("O&ther icons:"), bgroup); 00281 grid->addWidget(mpRb2, 2, 0); 00282 mpBrowseBut = new QPushButton(i18n("&Browse..."), bgroup); 00283 grid->addWidget(mpBrowseBut, 2, 1); 00284 00285 // 00286 // ADD SEARCHLINE 00287 // 00288 QHBoxLayout *searchLayout = new QHBoxLayout(0, 0, KDialog::spacingHint()); 00289 top->addLayout(searchLayout); 00290 00291 QToolButton *clearSearch = new QToolButton(main); 00292 clearSearch->setTextLabel(i18n("Clear Search"), true); 00293 clearSearch->setIconSet(SmallIconSet(QApplication::reverseLayout() ? "clear_left" :"locationbar_erase")); 00294 searchLayout->addWidget(clearSearch); 00295 00296 QLabel *searchLabel = new QLabel(i18n("&Search:"), main); 00297 searchLayout->addWidget(searchLabel); 00298 00299 d->searchLine = new KIconViewSearchLine(main, "searchLine"); 00300 searchLayout->addWidget(d->searchLine); 00301 searchLabel->setBuddy(d->searchLine); 00302 00303 00304 // signals and slots connections 00305 connect(clearSearch, SIGNAL(clicked()), d->searchLine, SLOT(clear())); 00306 00307 QString wtstr = i18n("Search interactively for icon names (e.g. folder)."); 00308 QWhatsThis::add(searchLabel, wtstr); 00309 QWhatsThis::add(d->searchLine, wtstr); 00310 00311 00312 mpCanvas = new KIconCanvas(main); 00313 connect(mpCanvas, SIGNAL(executed(QIconViewItem *)), SLOT(slotAcceptIcons())); 00314 mpCanvas->setMinimumSize(400, 125); 00315 top->addWidget(mpCanvas); 00316 d->searchLine->setIconView(mpCanvas); 00317 00318 mpProgress = new KProgress(main); 00319 top->addWidget(mpProgress); 00320 connect(mpCanvas, SIGNAL(startLoading(int)), SLOT(slotStartLoading(int))); 00321 connect(mpCanvas, SIGNAL(progress(int)), SLOT(slotProgress(int))); 00322 connect(mpCanvas, SIGNAL(finished()), SLOT(slotFinished())); 00323 00324 // When pressing Ok or Cancel, stop loading icons 00325 connect(this, SIGNAL(hidden()), mpCanvas, SLOT(stopLoading())); 00326 00327 // The order must match the context definitions in KIcon. 00328 mpCombo->insertItem(i18n("Actions")); 00329 mpCombo->insertItem(i18n("Applications")); 00330 mpCombo->insertItem(i18n("Devices")); 00331 mpCombo->insertItem(i18n("Filesystems")); 00332 mpCombo->insertItem(i18n("Mimetypes")); 00333 mpCombo->setFixedSize(mpCombo->sizeHint()); 00334 mpBrowseBut->setFixedWidth(mpCombo->width()); 00335 00336 // Make the dialog a little taller 00337 incInitialSize(QSize(0,100)); 00338 } 00339 00340 00341 KIconDialog::~KIconDialog() 00342 { 00343 delete d; 00344 } 00345 00346 void KIconDialog::slotAcceptIcons() 00347 { 00348 d->custom=QString::null; 00349 slotOk(); 00350 } 00351 00352 void KIconDialog::showIcons() 00353 { 00354 mpCanvas->clear(); 00355 QStringList filelist; 00356 if (mType == 0) 00357 if (d->m_bStrictIconSize) 00358 filelist=mpLoader->queryIcons(mGroupOrSize, mContext); 00359 else 00360 filelist=mpLoader->queryIconsByContext(mGroupOrSize, mContext); 00361 else if ( !d->customLocation.isNull() ) 00362 filelist=mpLoader->queryIconsByDir( d->customLocation ); 00363 else 00364 filelist=mFileList; 00365 00366 QSortedList <IconPath>iconlist; 00367 iconlist.setAutoDelete(true); 00368 QStringList::Iterator it; 00369 for( it = filelist.begin(); it != filelist.end(); ++it ) 00370 iconlist.append(new IconPath(*it)); 00371 00372 iconlist.sort(); 00373 filelist.clear(); 00374 00375 for ( IconPath *ip=iconlist.first(); ip != 0; ip=iconlist.next() ) 00376 filelist.append(*ip); 00377 00378 d->searchLine->clear(); 00379 mpCanvas->loadFiles(filelist); 00380 } 00381 00382 void KIconDialog::setStrictIconSize(bool b) 00383 { 00384 d->m_bStrictIconSize=b; 00385 } 00386 00387 bool KIconDialog::strictIconSize() const 00388 { 00389 return d->m_bStrictIconSize; 00390 } 00391 00392 void KIconDialog::setIconSize( int size ) 00393 { 00394 // see KIconLoader, if you think this is weird 00395 if ( size == 0 ) 00396 mGroupOrSize = KIcon::Desktop; // default Group 00397 else 00398 mGroupOrSize = -size; // yes, KIconLoader::queryIconsByContext is weird 00399 } 00400 00401 int KIconDialog::iconSize() const 00402 { 00403 // 0 or any other value ==> mGroupOrSize is a group, so we return 0 00404 return (mGroupOrSize < 0) ? -mGroupOrSize : 0; 00405 } 00406 00407 #ifndef KDE_NO_COMPAT 00408 QString KIconDialog::selectIcon(KIcon::Group group, KIcon::Context context, bool user) 00409 { 00410 setup( group, context, false, 0, user ); 00411 return openDialog(); 00412 } 00413 #endif 00414 00415 void KIconDialog::setup(KIcon::Group group, KIcon::Context context, 00416 bool strictIconSize, int iconSize, bool user ) 00417 { 00418 d->m_bStrictIconSize = strictIconSize; 00419 mGroupOrSize = (iconSize == 0) ? group : -iconSize; 00420 mType = user ? 1 : 0; 00421 mpRb1->setChecked(!user); 00422 mpRb2->setChecked(user); 00423 mpCombo->setEnabled(!user); 00424 mpBrowseBut->setEnabled(user); 00425 mContext = context; 00426 mpCombo->setCurrentItem(mContext-1); 00427 } 00428 00429 void KIconDialog::setup(KIcon::Group group, KIcon::Context context, 00430 bool strictIconSize, int iconSize, bool user, 00431 bool lockUser, bool lockCustomDir ) 00432 { 00433 d->m_bStrictIconSize = strictIconSize; 00434 d->m_bLockUser = lockUser; 00435 d->m_bLockCustomDir = lockCustomDir; 00436 mGroupOrSize = (iconSize == 0) ? group : -iconSize; 00437 mType = user ? 1 : 0; 00438 mpRb1->setChecked(!user); 00439 mpRb1->setEnabled( !lockUser || !user ); 00440 mpRb2->setChecked(user); 00441 mpRb2->setEnabled( !lockUser || user ); 00442 mpCombo->setEnabled(!user); 00443 mpBrowseBut->setEnabled( user && !lockCustomDir ); 00444 mContext = context; 00445 mpCombo->setCurrentItem(mContext-1); 00446 } 00447 00448 void KIconDialog::setCustomLocation( const QString& location ) 00449 { 00450 d->customLocation = location; 00451 } 00452 00453 QString KIconDialog::openDialog() 00454 { 00455 showIcons(); 00456 00457 if ( exec() == Accepted ) 00458 { 00459 if (!d->custom.isNull()) 00460 return d->custom; 00461 QString name = mpCanvas->getCurrent(); 00462 if (name.isEmpty() || (mType == 1)) 00463 return name; 00464 QFileInfo fi(name); 00465 return fi.baseName(); 00466 } 00467 return QString::null; 00468 } 00469 00470 void KIconDialog::showDialog() 00471 { 00472 setModal(false); 00473 showIcons(); 00474 show(); 00475 } 00476 00477 void KIconDialog::slotOk() 00478 { 00479 QString name; 00480 if (!d->custom.isNull()) 00481 { 00482 name = d->custom; 00483 } 00484 else 00485 { 00486 name = mpCanvas->getCurrent(); 00487 if (!name.isEmpty() && (mType != 1)) 00488 { 00489 QFileInfo fi(name); 00490 name = fi.baseName(); 00491 } 00492 } 00493 00494 emit newIconName(name); 00495 KDialogBase::slotOk(); 00496 } 00497 00498 QString KIconDialog::getIcon(KIcon::Group group, KIcon::Context context, 00499 bool strictIconSize, int iconSize, bool user, 00500 QWidget *parent, const QString &caption) 00501 { 00502 KIconDialog dlg(parent, "icon dialog"); 00503 dlg.setup( group, context, strictIconSize, iconSize, user ); 00504 if (!caption.isNull()) 00505 dlg.setCaption(caption); 00506 00507 return dlg.openDialog(); 00508 } 00509 00510 void KIconDialog::slotButtonClicked(int id) 00511 { 00512 QString file; 00513 00514 switch (id) 00515 { 00516 case 0: 00517 if(mType!=0) 00518 { 00519 mType = 0; 00520 mpBrowseBut->setEnabled(false); 00521 mpCombo->setEnabled(true); 00522 showIcons(); 00523 } 00524 break; 00525 00526 case 1: 00527 if(mType!=1) 00528 { 00529 mType = 1; 00530 mpBrowseBut->setEnabled( !d->m_bLockCustomDir ); 00531 mpCombo->setEnabled(false); 00532 showIcons(); 00533 } 00534 break; 00535 case 2: 00536 { 00537 // Create a file dialog to select a PNG, XPM or SVG file, 00538 // with the image previewer shown. 00539 // KFileDialog::getImageOpenURL doesn't allow svg. 00540 KFileDialog dlg(QString::null, i18n("*.png *.xpm *.svg *.svgz|Icon Files (*.png *.xpm *.svg *.svgz)"), 00541 this, "filedialog", true); 00542 dlg.setOperationMode( KFileDialog::Opening ); 00543 dlg.setCaption( i18n("Open") ); 00544 dlg.setMode( KFile::File ); 00545 00546 KImageFilePreview *ip = new KImageFilePreview( &dlg ); 00547 dlg.setPreviewWidget( ip ); 00548 dlg.exec(); 00549 00550 file = dlg.selectedFile(); 00551 if (!file.isEmpty()) 00552 { 00553 d->custom = file; 00554 if ( mType == 1 ) 00555 d->customLocation = QFileInfo( file ).dirPath( true ); 00556 slotOk(); 00557 } 00558 } 00559 break; 00560 } 00561 } 00562 00563 void KIconDialog::slotContext(int id) 00564 { 00565 mContext = static_cast<KIcon::Context>(id+1); 00566 showIcons(); 00567 } 00568 00569 void KIconDialog::slotStartLoading(int steps) 00570 { 00571 if (steps < 10) 00572 mpProgress->hide(); 00573 else 00574 { 00575 mpProgress->setTotalSteps(steps); 00576 mpProgress->setProgress(0); 00577 mpProgress->show(); 00578 } 00579 } 00580 00581 void KIconDialog::slotProgress(int p) 00582 { 00583 mpProgress->setProgress(p); 00584 // commented out the following since setProgress already paints ther 00585 // progress bar. ->repaint() only makes it flicker 00586 //mpProgress->repaint(); 00587 } 00588 00589 void KIconDialog::slotFinished() 00590 { 00591 mpProgress->hide(); 00592 } 00593 00594 class KIconButton::KIconButtonPrivate 00595 { 00596 public: 00597 KIconButtonPrivate() { 00598 m_bStrictIconSize = false; 00599 iconSize = 0; // let KIconLoader choose the default 00600 } 00601 ~KIconButtonPrivate() {} 00602 bool m_bStrictIconSize; 00603 int iconSize; 00604 }; 00605 00606 00607 /* 00608 * KIconButton: A "choose icon" pushbutton. 00609 */ 00610 00611 KIconButton::KIconButton(QWidget *parent, const char *name) 00612 : QPushButton(parent, name) 00613 { 00614 init( KGlobal::iconLoader() ); 00615 } 00616 00617 KIconButton::KIconButton(KIconLoader *loader, 00618 QWidget *parent, const char *name) 00619 : QPushButton(parent, name) 00620 { 00621 init( loader ); 00622 } 00623 00624 void KIconButton::init( KIconLoader *loader ) 00625 { 00626 d = new KIconButtonPrivate; 00627 mGroup = KIcon::Desktop; 00628 mContext = KIcon::Application; 00629 mbUser = false; 00630 00631 mpLoader = loader; 00632 mpDialog = 0L; 00633 connect(this, SIGNAL(clicked()), SLOT(slotChangeIcon())); 00634 } 00635 00636 KIconButton::~KIconButton() 00637 { 00638 delete mpDialog; 00639 delete d; 00640 } 00641 00642 void KIconButton::setStrictIconSize(bool b) 00643 { 00644 d->m_bStrictIconSize=b; 00645 } 00646 00647 bool KIconButton::strictIconSize() const 00648 { 00649 return d->m_bStrictIconSize; 00650 } 00651 00652 void KIconButton::setIconSize( int size ) 00653 { 00654 d->iconSize = size; 00655 } 00656 00657 int KIconButton::iconSize() const 00658 { 00659 return d->iconSize; 00660 } 00661 00662 void KIconButton::setIconType(KIcon::Group group, KIcon::Context context, bool user) 00663 { 00664 mGroup = group; 00665 mContext = context; 00666 mbUser = user; 00667 } 00668 00669 void KIconButton::setIcon(const QString& icon) 00670 { 00671 mIcon = icon; 00672 setIconSet(mpLoader->loadIconSet(mIcon, mGroup, d->iconSize)); 00673 00674 if (!mpDialog) 00675 { 00676 mpDialog = new KIconDialog(mpLoader, this); 00677 connect(mpDialog, SIGNAL(newIconName(const QString&)), SLOT(newIconName(const QString&))); 00678 } 00679 00680 if ( mbUser ) 00681 mpDialog->setCustomLocation( QFileInfo( mpLoader->iconPath(mIcon, mGroup, true) ).dirPath( true ) ); 00682 } 00683 00684 void KIconButton::resetIcon() 00685 { 00686 mIcon = QString::null; 00687 setIconSet(QIconSet()); 00688 } 00689 00690 void KIconButton::slotChangeIcon() 00691 { 00692 if (!mpDialog) 00693 { 00694 mpDialog = new KIconDialog(mpLoader, this); 00695 connect(mpDialog, SIGNAL(newIconName(const QString&)), SLOT(newIconName(const QString&))); 00696 } 00697 00698 mpDialog->setup( mGroup, mContext, d->m_bStrictIconSize, d->iconSize, mbUser ); 00699 mpDialog->showDialog(); 00700 } 00701 00702 void KIconButton::newIconName(const QString& name) 00703 { 00704 if (name.isEmpty()) 00705 return; 00706 00707 QIconSet iconset = mpLoader->loadIconSet(name, mGroup, d->iconSize); 00708 setIconSet(iconset); 00709 mIcon = name; 00710 00711 if ( mbUser ) 00712 mpDialog->setCustomLocation( QFileInfo( mpLoader->iconPath(mIcon, mGroup, true) ).dirPath( true ) ); 00713 00714 emit iconChanged(name); 00715 } 00716 00717 void KIconCanvas::virtual_hook( int id, void* data ) 00718 { KIconView::virtual_hook( id, data ); } 00719 00720 void KIconDialog::virtual_hook( int id, void* data ) 00721 { KDialogBase::virtual_hook( id, data ); } 00722 00723 #include "kicondialog.moc"
KDE Logo
This file is part of the documentation for kio Library Version 3.4.0.
Documentation copyright © 1996-2004 the KDE developers.
Generated on Tue Apr 12 23:09:14 2005 by doxygen 1.3.7 written by Dimitri van Heesch, © 1997-2003