1 
2 
3 #ifndef OUTPUTDIRECTORY_H
4 #define OUTPUTDIRECTORY_H
5 
6 #include <QWidget>
7 #include <KUrl>
8 
9 class FileListItem;
10 
11 class Config;
12 class KComboBox;
13 class KLineEdit;
14 class KPushButton;
15 
16 /**
17  * @short The input area for the output directory
18  * @author Daniel Faust <hessijames@gmail.com>
19  * @version 0.3
20  */
21 class OutputDirectory : public QWidget
22 {
23     Q_OBJECT
24 public:
25     enum Mode {
26         MetaData = 0,
27         Source = 1,
28         Specify = 2,
29         CopyStructure = 3
30     };
31 
32     /** Constructor */
33     OutputDirectory( Config *_config, QWidget *parent );
34 
35     /** Destructor */
36     ~OutputDirectory();
37 
38     Mode mode();
39     void setMode( Mode mode );
40     QString directory();
41     void setDirectory( const QString& directory );
42     QString filesystem();
43 
44     static KUrl calcPath( FileListItem *fileListItem, Config *config, const QStringList& usedOutputNames = QStringList() );
45     static KUrl changeExtension( const KUrl& url, const QString& extension );
46     static KUrl uniqueFileName( const KUrl& url, const QStringList& usedOutputNames );
47     static KUrl makePath( const KUrl& url );
48     static QString vfatPath( const QString& path );
49     static QString ntfsPath( const QString& path );
50 
51 public slots:
52     //void setActive( bool );
53     void enable();
54     void disable();
55 
56 private slots:
57     void modeChangedSlot( int );
58     void directoryChangedSlot( const QString& );
59     void selectDir();
60     void gotoDir();
61 
62 private:
63     void updateMode( Mode );
64 
65     static QString filesystemForDirectory( const QString& dir = "" );
66 
67     KComboBox *cMode;
68     KComboBox *cDir;
69     KPushButton *pDirSelect;
70     KPushButton *pDirGoto;
71 
72     Config *config;
73 
74 signals:
75     void modeChanged( int );
76     void directoryChanged( const QString& );
77 };
78 
79 #endif // OUTPUTDIRECTORY_H
80