summaryrefslogtreecommitdiffstats
path: root/amarok/src/directorylist.h
blob: 0065f04f29618d297d028a3e56dda0bcf5e1c585 (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
/***************************************************************************
                         directorylist.h
                            -------------------
   begin                : Tue Feb 4 2003
   copyright            : (C) 2003 Scott Wheeler <wheeler@kde.org>
                        : (C) 2004 Max Howell <max.howell@methylblue.com>
                        : (C) 2004 Mark Kretschmann <markey@web.de>
***************************************************************************/

/***************************************************************************
 *                                                                         *
 *   This program is free software; you can redistribute it and/or modify  *
 *   it under the terms of the GNU General Public License as published by  *
 *   the Free Software Foundation; either version 2 of the License, or     *
 *   (at your option) any later version.                                   *
 *                                                                         *
 ***************************************************************************/

#ifndef AMAROK_DIRECTORYLIST_H
#define AMAROK_DIRECTORYLIST_H

#include <tqcheckbox.h>  //inlined functions
#include <tqlistview.h>  //baseclass
#include <tqvbox.h>      //baseclass

#include <kdirlister.h> //stack allocated
#include <kurl.h>       //stack allocated


namespace Collection { class Item; }

class TQFixedListView : public TQListView
// Reimplement tqsizeHint to have directorylist not being too big for "low" (1024x768 is not exactly low) resolutions
{
public:
    TQFixedListView ( TQWidget * parent = 0, const char * name = 0, WFlags f = 0 )
                   :TQListView(parent, name, f) {};
    TQSize tqsizeHint() const
    {
        return TQSize(400, 100);
    }

};

class CollectionSetup : public TQVBox
{
    friend class Collection::Item;

public:
    static CollectionSetup* instance() { return s_instance; }

    CollectionSetup( TQWidget* );
    void writeConfig();

    TQStringList dirs() const { return m_dirs; }
    bool recursive() const { return m_recursive->isChecked(); }
    bool monitor() const { return m_monitor->isChecked(); }

private:
    static CollectionSetup* s_instance;

    TQFixedListView *m_view;
    TQStringList m_dirs;
    TQCheckBox *m_recursive;
    TQCheckBox *m_monitor;
};


namespace Collection { //just to keep it out of the global namespace

class Item : public TQObject, public TQCheckListItem
{
Q_OBJECT
  TQ_OBJECT
public:
    Item( TQListView *parent );
    Item( TQListViewItem *parent, const KURL &url , bool full_disable=false );

    TQCheckListItem *parent() const { return static_cast<TQCheckListItem*>( TQListViewItem::parent() ); }
    bool isFullyDisabled() const { return m_fullyDisabled; }
    bool isDisabled() const { return isFullyDisabled() || ( CollectionSetup::instance()->recursive() && parent() && parent()->isOn() ); }
    TQString fullPath() const;

    void setOpen( bool b ); // reimpl.
    void stateChange( bool ); // reimpl.
    void activate(); // reimpl.
    void paintCell( TQPainter * p, const TQColorGroup & cg, int column, int width, int align ); // reimpl.

public slots:
    void newItems( const KFileItemList& );
    void completed() { if( childCount() == 0 ) { setExpandable( false ); tqrepaint(); } }

private:
    KDirLister m_lister;
    KURL       m_url;
    bool       m_listed;
    bool       m_fullyDisabled;
};
}

#endif