00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
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();
00353 virtual void slotCancel();
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 * );
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();
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
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
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
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& ,
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
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