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
00065 class KPropertiesDialog :
public KDialogBase
00066 {
00067 Q_OBJECT
00068
00069
public:
00070
00075
static bool canDisplay(
KFileItemList _items );
00076
00088
KPropertiesDialog(
KFileItem *
item,
00089
QWidget* parent = 0L,
const char* name = 0L,
00090
bool modal =
false,
bool autoShow =
true);
00103
KPropertiesDialog(
KFileItemList _items,
00104
QWidget *parent = 0L,
const char* name = 0L,
00105
bool modal =
false,
bool autoShow =
true);
00106
00107
#ifndef KDE_NO_COMPAT
00108
00120
KPropertiesDialog(
const KURL& _url, mode_t _mode,
00121
QWidget* parent = 0L,
const char* name = 0L,
00122
bool modal =
false,
bool autoShow =
true) KDE_DEPRECATED;
00123
#endif
00124
00141
KPropertiesDialog(
const KURL& _url,
00142
QWidget* parent = 0L,
const char* name = 0L,
00143
bool modal =
false,
bool autoShow =
true);
00144
00159
KPropertiesDialog(
const KURL& _tempUrl,
const KURL& _currentDir,
00160
const QString& _defaultName,
00161
QWidget* parent = 0L,
const char* name = 0L,
00162
bool modal =
false,
bool autoShow =
true);
00163
00173
KPropertiesDialog (
const QString& title,
00174
QWidget* parent = 0L,
const char* name = 0L,
bool modal =
false);
00175
00181
virtual ~KPropertiesDialog();
00182
00183
00197
void insertPlugin (
KPropsDlgPlugin *plugin);
00198
00203 const KURL&
kurl()
const {
return m_singleUrl; }
00204
00211 KFileItem *
item() {
return m_items.first(); }
00212
00216 KFileItemList items()
const {
return m_items; }
00217
00222 KDE_DEPRECATED
KDialogBase*
dialog() {
return this; }
00223 KDE_DEPRECATED
const KDialogBase*
dialog()
const {
return this; }
00224
00230 const KURL&
currentDir()
const {
return m_currentDir; }
00231
00237 const QString&
defaultName()
const {
return m_defaultName; }
00238
00245
void updateUrl(
const KURL& _newUrl );
00246
00252
void rename(
const QString& _name );
00253
00257
void abortApplying();
00258
00262
void showFileSharingPage();
00263
00269
void setFileNameReadOnly(
bool ro );
00270
00271
public slots:
00275
virtual void slotOk();
00276
virtual void slotCancel();
00277
00278 signals:
00282
void propertiesClosed();
00283
void applied();
00284
void canceled();
00285
00291
void saveAs(
const KURL &oldUrl,
KURL &newUrl);
00292
00293
private:
00294
00298
void init (
bool modal =
false,
bool autoShow =
true);
00299
00303
void insertPages();
00304
00308
KURL m_singleUrl;
00309
00313
KFileItemList m_items;
00314
00318
QString m_defaultName;
00319
KURL m_currentDir;
00320
00324
QPtrList<KPropsDlgPlugin> m_pageList;
00325
00326
private slots:
00327
void slotStatResult(
KIO::Job * );
00328
protected:
00329
virtual void virtual_hook(
int id,
void* data );
00330
private:
00331
class KPropertiesDialogPrivate;
00332 KPropertiesDialogPrivate *d;
00333 };
00334
00349 class KPropsDlgPlugin :
public QObject
00350 {
00351 Q_OBJECT
00352
public:
00358
KPropsDlgPlugin(
KPropertiesDialog *_props );
00359
virtual ~
KPropsDlgPlugin();
00360
00366
virtual void applyChanges();
00367
00372
static bool isDesktopFile(
KFileItem * _item );
00373
00374
void setDirty(
bool b );
00375
bool isDirty()
const;
00376
00377
public slots:
00378
void setDirty();
00379
00380 signals:
00386
void changed();
00387
00388
protected:
00392 KPropertiesDialog *
properties;
00393
00394
int fontHeight;
00395
protected:
00396
virtual void virtual_hook(
int id,
void* data );
00397
private:
00398
class KPropsDlgPluginPrivate;
00399 KPropsDlgPluginPrivate *d;
00400 };
00401
00407 class KFilePropsPlugin :
public KPropsDlgPlugin
00408 {
00409 Q_OBJECT
00410
public:
00414
KFilePropsPlugin(
KPropertiesDialog *_props );
00415
virtual ~
KFilePropsPlugin();
00416
00422
virtual void applyChanges();
00423
00427
static bool supports(
KFileItemList _items );
00428
00432
void postApplyChanges();
00433
00434
void setFileNameReadOnly(
bool ro );
00435
00436
protected slots:
00437
void slotEditFileType();
00438
void slotCopyFinished(
KIO::Job * );
00439
void slotFileRenamed(
KIO::Job *,
const KURL &,
const KURL & );
00440
void slotDirSizeUpdate();
00441
void slotDirSizeFinished(
KIO::Job * );
00442
void slotFoundMountPoint(
const QString& mp,
unsigned long kBSize,
00443
unsigned long kBUsed,
unsigned long kBAvail );
00444
void slotSizeStop();
00445
void slotSizeDetermine();
00446
00447
private slots:
00448
00449
void slotFoundMountPoint(
const unsigned long& kBSize,
const unsigned long&
00450 kBUsed,
const unsigned long& kBAvail,
const QString& mp );
00451
void nameFileChanged(
const QString &text );
00452
void slotIconChanged();
00453
00454
private:
00455
void determineRelativePath(
const QString & path );
00456
void applyIconChanges();
00457
00458
QWidget *iconArea;
00459
QWidget *nameArea;
00460
00461
QLabel *m_sizeLabel;
00462
QPushButton *m_sizeDetermineButton;
00463
QPushButton *m_sizeStopButton;
00464
00465
QString m_sRelativePath;
00466
bool m_bFromTemplate;
00467
00471
QString oldName;
00472
00473
class KFilePropsPluginPrivate;
00474 KFilePropsPluginPrivate *d;
00475 };
00476
00483 class KFilePermissionsPropsPlugin :
public KPropsDlgPlugin
00484 {
00485 Q_OBJECT
00486
public:
00487
enum PermissionsMode {
00488 PermissionsOnlyFiles = 0,
00489 PermissionsOnlyDirs = 1,
00490 PermissionsOnlyLinks = 2,
00491 PermissionsMixed = 3
00492 };
00493
00494
enum PermissionsTarget {
00495 PermissionsOwner = 0,
00496 PermissionsGroup = 1,
00497 PermissionsOthers = 2
00498 };
00499
00503
KFilePermissionsPropsPlugin(
KPropertiesDialog *_props );
00504
virtual ~
KFilePermissionsPropsPlugin();
00505
00506
virtual void applyChanges();
00507
00511
static bool supports(
KFileItemList _items );
00512
00513
private slots:
00514
00515
void slotChmodResult(
KIO::Job * );
00516
void slotShowAdvancedPermissions();
00517
00518
private:
00519
void setComboContent(
QComboBox *combo, PermissionsTarget target,
00520 mode_t permissions, mode_t partial);
00521
bool isIrregular(mode_t permissions,
bool isDir,
bool isLink);
00522
void enableAccessControls(
bool enable);
00523
void updateAccessControls();
00524
void getPermissionMasks(mode_t &andFilePermissions,
00525 mode_t &andDirPermissions,
00526 mode_t &orFilePermissions,
00527 mode_t &orDirPermissions);
00528
00529
static const mode_t permissionsMasks[3];
00530
static const mode_t standardPermissions[4];
00531
static const char *permissionsTexts[4][4];
00532
00533
00534
QCheckBox *permBox[3][4];
00535
00536
QComboBox *grpCombo;
00537
00538
KLineEdit *usrEdit, *grpEdit;
00539
00543 mode_t permissions;
00547
QString strGroup;
00551
QString strOwner;
00552
00553
00554
static mode_t fperm[3][4];
00555
00556
class KFilePermissionsPropsPluginPrivate;
00557 KFilePermissionsPropsPluginPrivate *d;
00558 };
00559
00560
00569 class KURLPropsPlugin :
public KPropsDlgPlugin
00570 {
00571 Q_OBJECT
00572
public:
00576
KURLPropsPlugin(
KPropertiesDialog *_props );
00577
virtual ~
KURLPropsPlugin();
00578
00579
virtual void applyChanges();
00580
00581
static bool supports(
KFileItemList _items );
00582
00583
private:
00584
KURLRequester *URLEdit;
00585
KIconButton *iconBox;
00586
00587
QString URLStr;
00588
QString iconStr;
00589
00590
QPixmap pixmap;
00591
QString pixmapFile;
00592
private:
00593
class KURLPropsPluginPrivate;
00594 KURLPropsPluginPrivate *d;
00595 };
00596
00597
00604 class KBindingPropsPlugin :
public KPropsDlgPlugin
00605 {
00606 Q_OBJECT
00607
public:
00611
KBindingPropsPlugin(
KPropertiesDialog *_props );
00612
virtual ~
KBindingPropsPlugin();
00613
00614
virtual void applyChanges();
00615
static bool supports(
KFileItemList _items );
00616
00617
private:
00618
00619
QLineEdit *commentEdit;
00620
QLineEdit *patternEdit;
00621
QLineEdit *mimeEdit;
00622
QString m_sMimeStr;
00623
00624
QCheckBox * cbAutoEmbed;
00625
00626
class KBindingPropsPluginPrivate;
00627 KBindingPropsPluginPrivate *d;
00628 };
00629
00634 class KDevicePropsPlugin :
public KPropsDlgPlugin
00635 {
00636 Q_OBJECT
00637
public:
00638
KDevicePropsPlugin(
KPropertiesDialog *_props );
00639
virtual ~
KDevicePropsPlugin();
00640
00641
virtual void applyChanges();
00642
00643
static bool supports(
KFileItemList _items );
00644
00645
private slots:
00646
void slotActivated(
int );
00647
void slotDeviceChanged();
00648
00649
private:
00650
QComboBox* device;
00651
QLabel* mountpoint;
00652
QCheckBox* readonly;
00653
void* unused;
00654
00655
KIconButton* unmounted;
00656
00657
QStringList m_devicelist;
00658
int indexDevice;
00659
int indexMountPoint;
00660
int indexFSType;
00661
00662
QPixmap pixmap;
00663
QString pixmapFile;
00664
00665
class KDevicePropsPluginPrivate;
00666 KDevicePropsPluginPrivate *d;
00667 };
00668
00669
class KPropertiesDesktopBase;
00670
00679 class KDesktopPropsPlugin :
public KPropsDlgPlugin
00680 {
00681 Q_OBJECT
00682
public:
00686
KDesktopPropsPlugin(
KPropertiesDialog *_props );
00687
virtual ~
KDesktopPropsPlugin();
00688
00689
virtual void applyChanges();
00690
00691
static bool supports(
KFileItemList _items );
00692
00693
public slots:
00694
void slotAddFiletype();
00695
void slotDelFiletype();
00696
void slotBrowseExec();
00697
void slotAdvanced();
00698
void slotSelectMimetype();
00699
00700
private:
00701
void checkCommandChanged();
00702
00703
private:
00704 KPropertiesDesktopBase* w;
00705
00706
QString m_origCommandStr;
00707
QString m_terminalOptionStr;
00708
QString m_suidUserStr;
00709
QString m_dcopServiceType;
00710
bool m_terminalBool;
00711
bool m_terminalCloseBool;
00712
bool m_suidBool;
00713
bool m_startupBool;
00714
00715
class KDesktopPropsPluginPrivate;
00716 KDesktopPropsPluginPrivate *d;
00717 };
00718
00728
00729 class KDE_DEPRECATED KExecPropsPlugin :
public KPropsDlgPlugin
00730 {
00731 Q_OBJECT
00732
public:
00736 KExecPropsPlugin(
KPropertiesDialog *_props );
00737
virtual ~KExecPropsPlugin();
00738
00739
virtual void applyChanges();
00740
00741
static bool supports(
KFileItemList _items );
00742
00743
public slots:
00744
void slotBrowseExec();
00745
00746
private slots:
00747
void enableCheckedEdit();
00748
void enableSuidEdit();
00749
00750
private:
00751
00752
QLabel *terminalLabel;
00753
QLabel *suidLabel;
00754
KLineEdit *execEdit;
00755
QCheckBox *terminalCheck;
00756
QCheckBox *suidCheck;
00757
KLineEdit *terminalEdit;
00758
KLineEdit *suidEdit;
00759
KLineEdit *swallowExecEdit;
00760
KLineEdit *swallowTitleEdit;
00761
QButton *execBrowse;
00762
00763
QString execStr;
00764
QString swallowExecStr;
00765
QString swallowTitleStr;
00766
QString termOptionsStr;
00767
bool termBool;
00768
bool suidBool;
00769
QString suidUserStr;
00770
00771
class KExecPropsPluginPrivate;
00772 KExecPropsPluginPrivate *d;
00773 };
00774
00784
00785 class KDE_DEPRECATED KApplicationPropsPlugin :
public KPropsDlgPlugin
00786 {
00787 Q_OBJECT
00788
public:
00792 KApplicationPropsPlugin(
KPropertiesDialog *_props );
00793
virtual ~KApplicationPropsPlugin();
00794
00795
virtual void applyChanges();
00796
00797
static bool supports(
KFileItemList _items );
00798
00799
public slots:
00800
void slotDelExtension();
00801
void slotAddExtension();
00802
00803
private slots:
00804
void updateButton();
00805
00806
private:
00807
void addMimeType(
const QString & name );
00808
00809
QLineEdit *commentEdit;
00810
QLineEdit *genNameEdit;
00811
QLineEdit *nameEdit;
00812
QListBox *extensionsList;
00813
QListBox *availableExtensionsList;
00814
QPushButton *addExtensionButton;
00815
QPushButton *delExtensionButton;
00816
00817
class KApplicationPropsPluginPrivate;
00818 KApplicationPropsPluginPrivate *d;
00819 };
00820
00821
#endif
00822