kio Library API Documentation

kpropertiesdialog.h

00001 /* This file is part of the KDE project 00002 Copyright (C) 1998, 1999 Torben Weis <weis@kde.org> 00003 Copyright (c) 1999, 2000 Preston Brown <pbrown@kde.org> 00004 Copyright (c) 2000 Simon Hausmann <hausmann@kde.org> 00005 Copyright (c) 2000 David Faure <faure@kde.org> 00006 00007 This library is free software; you can redistribute it and/or 00008 modify it under the terms of the GNU Library General Public 00009 License as published by the Free Software Foundation; either 00010 version 2 of the License, or (at your option) any later version. 00011 00012 This library is distributed in the hope that it will be useful, 00013 but WITHOUT ANY WARRANTY; without even the implied warranty of 00014 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 00015 Library General Public License for more details. 00016 00017 You should have received a copy of the GNU Library General Public License 00018 along with this library; see the file COPYING.LIB. If not, write to 00019 the Free Software Foundation, Inc., 59 Temple Place - Suite 330, 00020 Boston, MA 02111-1307, USA. 00021 */ 00022 00023 /* 00024 * This file holds the definitions for all classes used to 00025 * display a properties dialog. 00026 */ 00027 00028 #ifndef __propsdlg_h 00029 #define __propsdlg_h 00030 00031 #include <qstring.h> 00032 #include <qptrlist.h> 00033 00034 #include <kdemacros.h> 00035 #include <kurl.h> 00036 #include <kfileitem.h> 00037 #include <kdialogbase.h> 00038 00039 class QLineEdit; 00040 class QCheckBox; 00041 class QPushButton; 00042 class KLineEdit; 00043 class KURLRequester; 00044 class QButton; 00045 class KIconButton; 00046 class KPropsDlgPlugin; 00047 class QComboBox; 00048 00049 #define KPropsPage KPropsDlgPlugin 00050 00051 namespace KIO { class Job; } 00052 00070 class KIO_EXPORT KPropertiesDialog : public KDialogBase 00071 { 00072 Q_OBJECT 00073 00074 public: 00075 00082 static bool canDisplay( KFileItemList _items ); 00083 00097 KPropertiesDialog( KFileItem * item, 00098 QWidget* parent = 0L, const char* name = 0L, 00099 bool modal = false, bool autoShow = true); 00100 00115 KPropertiesDialog( KFileItemList _items, 00116 QWidget *parent = 0L, const char* name = 0L, 00117 bool modal = false, bool autoShow = true); 00118 00119 #ifndef KDE_NO_COMPAT 00120 00130 KPropertiesDialog( const KURL& _url, mode_t _mode, 00131 QWidget* parent = 0L, const char* name = 0L, 00132 bool modal = false, bool autoShow = true) KDE_DEPRECATED; 00133 #endif 00134 00152 KPropertiesDialog( const KURL& _url, 00153 QWidget* parent = 0L, const char* name = 0L, 00154 bool modal = false, bool autoShow = true); 00155 00170 KPropertiesDialog( const KURL& _tempUrl, const KURL& _currentDir, 00171 const QString& _defaultName, 00172 QWidget* parent = 0L, const char* name = 0L, 00173 bool modal = false, bool autoShow = true); 00174 00184 KPropertiesDialog (const QString& title, 00185 QWidget* parent = 0L, const char* name = 0L, bool modal = false); 00186 00192 virtual ~KPropertiesDialog(); 00193 00203 static bool showDialog(KFileItem* item, QWidget* parent = 0, 00204 const char* name = 0, bool modal = false); 00205 00215 static bool showDialog(const KURL& _url, QWidget* parent = 0, 00216 const char* name = 0, bool modal = false); 00217 00228 static bool showDialog(const KFileItemList& _items, QWidget* parent = 0, 00229 const char* name = 0, bool modal = false); 00230 00244 void insertPlugin (KPropsDlgPlugin *plugin); 00245 00253 const KURL& kurl() const { return m_singleUrl; } 00254 00262 KFileItem *item() { return m_items.first(); } 00263 00267 KFileItemList items() const { return m_items; } 00268 00273 KDE_DEPRECATED KDialogBase* dialog() { return this; } 00278 KDE_DEPRECATED const KDialogBase* dialog() const { return this; } 00279 00287 const KURL& currentDir() const { return m_currentDir; } 00288 00295 const QString& defaultName() const { return m_defaultName; } 00296 00303 void updateUrl( const KURL& _newUrl ); 00304 00311 void rename( const QString& _name ); 00312 00316 void abortApplying(); 00317 00325 void showFileSharingPage(); 00326 00335 void setFileSharingPage(QWidget* page); 00336 00343 void setFileNameReadOnly( bool ro ); 00344 00345 public slots: 00349 virtual void slotOk(); // Deletes the PropertiesDialog instance 00353 virtual void slotCancel(); // Deletes the PropertiesDialog instance 00354 00355 signals: 00360 void propertiesClosed(); 00361 00366 void applied(); 00367 00373 void canceled(); 00379 void saveAs(const KURL &oldUrl, KURL &newUrl); 00380 00381 private: 00382 00386 void init (bool modal = false, bool autoShow = true); 00387 00391 void insertPages(); 00392 00396 KURL m_singleUrl; 00397 00401 KFileItemList m_items; 00402 00406 QString m_defaultName; 00407 KURL m_currentDir; 00408 00412 QPtrList<KPropsDlgPlugin> m_pageList; 00413 00414 private slots: 00415 void slotStatResult( KIO::Job * ); // No longer used 00416 protected: 00417 virtual void virtual_hook( int id, void* data ); 00418 private: 00419 class KPropertiesDialogPrivate; 00420 KPropertiesDialogPrivate *d; 00421 }; 00422 00437 class KIO_EXPORT KPropsDlgPlugin : public QObject 00438 { 00439 Q_OBJECT 00440 public: 00446 KPropsDlgPlugin( KPropertiesDialog *_props ); 00447 virtual ~KPropsDlgPlugin(); 00448 00454 virtual void applyChanges(); 00455 00460 static bool isDesktopFile( KFileItem * _item ); 00461 00462 void setDirty( bool b ); 00463 bool isDirty() const; 00464 00465 public slots: 00466 void setDirty(); // same as setDirty( true ) 00467 00468 signals: 00474 void changed(); 00475 00476 protected: 00480 KPropertiesDialog *properties; 00481 00482 int fontHeight; 00483 protected: 00484 virtual void virtual_hook( int id, void* data ); 00485 private: 00486 class KPropsDlgPluginPrivate; 00487 KPropsDlgPluginPrivate *d; 00488 }; 00489 00495 class KIO_EXPORT KFilePropsPlugin : public KPropsDlgPlugin 00496 { 00497 Q_OBJECT 00498 public: 00502 KFilePropsPlugin( KPropertiesDialog *_props ); 00503 virtual ~KFilePropsPlugin(); 00504 00510 virtual void applyChanges(); 00511 00515 static bool supports( KFileItemList _items ); 00516 00520 void postApplyChanges(); 00521 00522 void setFileNameReadOnly( bool ro ); 00523 00524 protected slots: 00525 void slotEditFileType(); 00526 void slotCopyFinished( KIO::Job * ); 00527 void slotFileRenamed( KIO::Job *, const KURL &, const KURL & ); 00528 void slotDirSizeUpdate(); 00529 void slotDirSizeFinished( KIO::Job * ); 00530 void slotFoundMountPoint( const QString& mp, unsigned long kBSize, 00531 unsigned long kBUsed, unsigned long kBAvail ); 00532 void slotSizeStop(); 00533 void slotSizeDetermine(); 00534 00535 private slots: 00536 // workaround for compiler bug 00537 void slotFoundMountPoint( const unsigned long& kBSize, const unsigned long& 00538 kBUsed, const unsigned long& kBAvail, const QString& mp ); 00539 void nameFileChanged(const QString &text ); 00540 void slotIconChanged(); 00541 00542 private: 00543 void determineRelativePath( const QString & path ); 00544 void applyIconChanges(); 00545 00546 QWidget *iconArea; 00547 QWidget *nameArea; 00548 00549 QLabel *m_sizeLabel; 00550 QPushButton *m_sizeDetermineButton; 00551 QPushButton *m_sizeStopButton; 00552 00553 QString m_sRelativePath; 00554 bool m_bFromTemplate; 00555 00559 QString oldName; 00560 00561 class KFilePropsPluginPrivate; 00562 KFilePropsPluginPrivate *d; 00563 }; 00564 00571 class KIO_EXPORT KFilePermissionsPropsPlugin : public KPropsDlgPlugin 00572 { 00573 Q_OBJECT 00574 public: 00575 enum PermissionsMode { 00576 PermissionsOnlyFiles = 0, 00577 PermissionsOnlyDirs = 1, 00578 PermissionsOnlyLinks = 2, 00579 PermissionsMixed = 3 00580 }; 00581 00582 enum PermissionsTarget { 00583 PermissionsOwner = 0, 00584 PermissionsGroup = 1, 00585 PermissionsOthers = 2 00586 }; 00587 00591 KFilePermissionsPropsPlugin( KPropertiesDialog *_props ); 00592 virtual ~KFilePermissionsPropsPlugin(); 00593 00594 virtual void applyChanges(); 00595 00599 static bool supports( KFileItemList _items ); 00600 00601 private slots: 00602 00603 void slotChmodResult( KIO::Job * ); 00604 void slotShowAdvancedPermissions(); 00605 00606 private: 00607 void setComboContent(QComboBox *combo, PermissionsTarget target, 00608 mode_t permissions, mode_t partial); 00609 bool isIrregular(mode_t permissions, bool isDir, bool isLink); 00610 void enableAccessControls(bool enable); 00611 void updateAccessControls(); 00612 void getPermissionMasks(mode_t &andFilePermissions, 00613 mode_t &andDirPermissions, 00614 mode_t &orFilePermissions, 00615 mode_t &orDirPermissions); 00616 00617 static const mode_t permissionsMasks[3]; 00618 static const mode_t standardPermissions[4]; 00619 static const char *permissionsTexts[4][4]; 00620 00621 // unused, for binary compatibility! 00622 QCheckBox *permBox[3][4]; 00623 00624 QComboBox *grpCombo; 00625 00626 KLineEdit *usrEdit, *grpEdit; 00627 00631 mode_t permissions; 00635 QString strGroup; 00639 QString strOwner; 00640 00641 // unused, for compatibility 00642 static mode_t fperm[3][4]; 00643 00644 class KFilePermissionsPropsPluginPrivate; 00645 KFilePermissionsPropsPluginPrivate *d; 00646 }; 00647 00648 00657 class KIO_EXPORT KURLPropsPlugin : public KPropsDlgPlugin 00658 { 00659 Q_OBJECT 00660 public: 00664 KURLPropsPlugin( KPropertiesDialog *_props ); 00665 virtual ~KURLPropsPlugin(); 00666 00667 virtual void applyChanges(); 00668 00669 static bool supports( KFileItemList _items ); 00670 00671 private: 00672 KURLRequester *URLEdit; 00673 KIconButton *iconBox; 00674 00675 QString URLStr; 00676 QString iconStr; 00677 00678 QPixmap pixmap; 00679 QString pixmapFile; 00680 private: 00681 class KURLPropsPluginPrivate; 00682 KURLPropsPluginPrivate *d; 00683 }; 00684 00685 00692 class KIO_EXPORT KBindingPropsPlugin : public KPropsDlgPlugin 00693 { 00694 Q_OBJECT 00695 public: 00699 KBindingPropsPlugin( KPropertiesDialog *_props ); 00700 virtual ~KBindingPropsPlugin(); 00701 00702 virtual void applyChanges(); 00703 static bool supports( KFileItemList _items ); 00704 00705 private: 00706 00707 QLineEdit *commentEdit; 00708 QLineEdit *patternEdit; 00709 QLineEdit *mimeEdit; 00710 QString m_sMimeStr; 00711 00712 QCheckBox * cbAutoEmbed; 00713 00714 class KBindingPropsPluginPrivate; 00715 KBindingPropsPluginPrivate *d; 00716 }; 00717 00722 class KIO_EXPORT KDevicePropsPlugin : public KPropsDlgPlugin 00723 { 00724 Q_OBJECT 00725 public: 00726 KDevicePropsPlugin( KPropertiesDialog *_props ); 00727 virtual ~KDevicePropsPlugin(); 00728 00729 virtual void applyChanges(); 00730 00731 static bool supports( KFileItemList _items ); 00732 00733 private slots: 00734 void slotActivated( int ); 00735 void slotDeviceChanged(); 00736 void slotFoundMountPoint( const unsigned long& kBSize, 00737 const unsigned long& /*kBUsed*/, 00738 const unsigned long& kBAvail, 00739 const QString& ); 00740 00741 private: 00742 void updateInfo(); 00743 00744 private: 00745 QComboBox* device; 00746 QLabel* mountpoint; 00747 QCheckBox* readonly; 00748 void* unused; 00749 //KIconButton* mounted; 00750 KIconButton* unmounted; 00751 00752 QStringList m_devicelist; 00753 int indexDevice; 00754 int indexMountPoint; 00755 int indexFSType; 00756 00757 QPixmap pixmap; 00758 QString pixmapFile; 00759 00760 class KDevicePropsPluginPrivate; 00761 KDevicePropsPluginPrivate *d; 00762 }; 00763 00764 class KPropertiesDesktopBase; 00765 00774 class KIO_EXPORT KDesktopPropsPlugin : public KPropsDlgPlugin 00775 { 00776 Q_OBJECT 00777 public: 00781 KDesktopPropsPlugin( KPropertiesDialog *_props ); 00782 virtual ~KDesktopPropsPlugin(); 00783 00784 virtual void applyChanges(); 00785 00786 static bool supports( KFileItemList _items ); 00787 00788 public slots: 00789 void slotAddFiletype(); 00790 void slotDelFiletype(); 00791 void slotBrowseExec(); 00792 void slotAdvanced(); 00793 void slotSelectMimetype(); 00794 00795 private: 00796 void checkCommandChanged(); 00797 00798 private: 00799 KPropertiesDesktopBase* w; 00800 00801 QString m_origCommandStr; 00802 QString m_terminalOptionStr; 00803 QString m_suidUserStr; 00804 QString m_dcopServiceType; 00805 bool m_terminalBool; 00806 bool m_terminalCloseBool; 00807 bool m_suidBool; 00808 bool m_startupBool; 00809 bool m_systrayBool; 00810 00811 class KDesktopPropsPluginPrivate; 00812 KDesktopPropsPluginPrivate *d; 00813 }; 00814 00824 00825 class KIO_EXPORT_DEPRECATED KExecPropsPlugin : public KPropsDlgPlugin 00826 { 00827 Q_OBJECT 00828 public: 00832 KExecPropsPlugin( KPropertiesDialog *_props ); 00833 virtual ~KExecPropsPlugin(); 00834 00835 virtual void applyChanges(); 00836 00837 static bool supports( KFileItemList _items ); 00838 00839 public slots: 00840 void slotBrowseExec(); 00841 00842 private slots: 00843 void enableCheckedEdit(); 00844 void enableSuidEdit(); 00845 00846 private: 00847 00848 QLabel *terminalLabel; 00849 QLabel *suidLabel; 00850 KLineEdit *execEdit; 00851 QCheckBox *terminalCheck; 00852 QCheckBox *suidCheck; 00853 KLineEdit *terminalEdit; 00854 KLineEdit *suidEdit; 00855 KLineEdit *swallowExecEdit; 00856 KLineEdit *swallowTitleEdit; 00857 QButton *execBrowse; 00858 00859 QString execStr; 00860 QString swallowExecStr; 00861 QString swallowTitleStr; 00862 QString termOptionsStr; 00863 bool termBool; 00864 bool suidBool; 00865 QString suidUserStr; 00866 00867 class KExecPropsPluginPrivate; 00868 KExecPropsPluginPrivate *d; 00869 }; 00870 00880 00881 class KIO_EXPORT_DEPRECATED KApplicationPropsPlugin : public KPropsDlgPlugin 00882 { 00883 Q_OBJECT 00884 public: 00888 KApplicationPropsPlugin( KPropertiesDialog *_props ); 00889 virtual ~KApplicationPropsPlugin(); 00890 00891 virtual void applyChanges(); 00892 00893 static bool supports( KFileItemList _items ); 00894 00895 public slots: 00896 void slotDelExtension(); 00897 void slotAddExtension(); 00898 00899 private slots: 00900 void updateButton(); 00901 00902 private: 00903 void addMimeType( const QString & name ); 00904 00905 QLineEdit *commentEdit; 00906 QLineEdit *genNameEdit; 00907 QLineEdit *nameEdit; 00908 QListBox *extensionsList; 00909 QListBox *availableExtensionsList; 00910 QPushButton *addExtensionButton; 00911 QPushButton *delExtensionButton; 00912 00913 class KApplicationPropsPluginPrivate; 00914 KApplicationPropsPluginPrivate *d; 00915 }; 00916 00917 #endif 00918
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 Thu Apr 14 00:20:28 2005 by doxygen 1.3.7 written by Dimitri van Heesch, © 1997-2003