summaryrefslogtreecommitdiffstats
path: root/examples/fileiconview/tqfileiconview.h
blob: 6127ac0ec79204b7a71aa439e1a09c141a68c14e (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
/****************************************************************************
**
** Copyright (C) 1992-2008 Trolltech ASA.  All rights reserved.
**
** This file is part of an example program for TQt.  This example
** program may be used, distributed and modified without limitation.
**
*****************************************************************************/

#ifndef TQTFILEICONVIEW_H
#define TQTFILEICONVIEW_H


#include <tqiconset.h>
#include <tqstring.h>
#include <tqfileinfo.h>
#include <tqdir.h>
#include <tqtimer.h>
#include <tqiconview.h>

class TQtFileIconView;
class TQDragObject;
class TQResizeEvent;

/*****************************************************************************
 *
 * Class TQtFileIconDrag
 *
 *****************************************************************************/

class TQtFileIconDrag : public TQIconDrag
{
    TQ_OBJECT

public:
    TQtFileIconDrag( TQWidget * dragSource, const char* name = 0 );

    const char* format( int i ) const;
    TQByteArray encodedData( const char* mime ) const;
    static bool canDecode( TQMimeSource* e );
    void append( const TQIconDragItem &item, const TQRect &pr, const TQRect &tr, const TQString &url );

private:
    TQStringList urls;

};

/*****************************************************************************
 *
 * Class TQtFileIconView
 *
 *****************************************************************************/
class TQtFileIconViewItem;
class TQtFileIconView : public TQIconView
{
    TQ_OBJECT

public:
    TQtFileIconView( const TQString &dir, TQWidget *parent = 0, const char *name = 0 );

    enum ViewMode { Large, Small };

    void setViewMode( ViewMode m );
    ViewMode viewMode() const { return vm; }
    void setOpenItem( TQtFileIconViewItem *i ) {
	openItem = i;
    }

public slots:
    void setDirectory( const TQString &dir );
    void setDirectory( const TQDir &dir );
    void newDirectory();
    TQDir currentDir();

signals:
    void directoryChanged( const TQString & );
    void startReadDir( int dirs );
    void readNextDir();
    void readDirDone();
    void enableUp();
    void disableUp();
    void enableMkdir();
    void disableMkdir();

protected slots:
    void itemDoubleClicked( TQIconViewItem *i );
    void slotDropped( TQDropEvent *e, const TQValueList<TQIconDragItem> & );

    void viewLarge();
    void viewSmall();
    void viewBottom();
    void viewRight();
    void flowEast();
    void flowSouth();
    void itemTextTruncate();
    void itemTextWordWrap();
    void sortAscending();
    void sortDescending();
    void arrangeItemsInGrid() {
	TQIconView::arrangeItemsInGrid( TRUE );
    }

    void slotRightPressed( TQIconViewItem *item );
    void openFolder();

protected:
    void readDir( const TQDir &dir );
    virtual TQDragObject *dragObject();

    virtual void keyPressEvent( TQKeyEvent *e );

    TQDir viewDir;
    int newFolderNum;
    TQSize sz;
    TQPixmap pix;
    ViewMode vm;
    TQtFileIconViewItem *openItem;

};

/*****************************************************************************
 *
 * Class TQtFileIconViewItem
 *
 *****************************************************************************/

class TQtFileIconViewItem : public TQIconViewItem
{
    friend class TQtFileIconView;

public:
    enum ItemType {
        File = 0,
        Dir,
        Link
    };

    TQtFileIconViewItem( TQtFileIconView *parent, TQFileInfo *fi );

    virtual ~TQtFileIconViewItem();

    ItemType type() const
    { return itemType; }
    TQString filename() const { return itemFileName; }

    virtual bool acceptDrop( const TQMimeSource *e ) const;

    virtual void setText( const TQString &text );
    virtual TQPixmap *pixmap() const;

    virtual void dragEntered();
    virtual void dragLeft();

    void viewModeChanged( TQtFileIconView::ViewMode m );
    void paintItem( TQPainter *p, const TQColorGroup &cg );

protected:
    virtual void dropped( TQDropEvent *e, const TQValueList<TQIconDragItem> & );

    TQString itemFileName;
    TQFileInfo *itemFileInfo;
    ItemType itemType;
    bool checkSetText;
    TQTimer timer;
    TQtFileIconView::ViewMode vm;

};


#endif