summaryrefslogtreecommitdiffstats
path: root/kipi-plugins/kameraklient/gpfileitemcontainer.h
blob: 50646561081e77a1aa471aef01724309af85aea7 (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
/* ============================================================
 * File  : gpfileitemcontainer.h
 * Author: Renchi Raju <renchi@pooh.tam.uiuc.edu>
 * Date  : 2003-02-21
 * Description : 
 * 
 * Copyright 2003 by Renchi Raju <renchi@pooh.tam.uiuc.edu>

 * 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, or (at your option)
 * any later version.
 * 
 * This program is distributed in the hope that it will be useful,
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 * GNU General Public License for more details.
 * 
 * ============================================================ */

#ifndef GPFILEITEMCONTAINER_H
#define GPFILEITEMCONTAINER_H

#include <tqobject.h>
#include <tqdict.h>
#include <tqptrlist.h>

#include "gpfileiteminfo.h"


class TQString;

namespace KIPIKameraKlientPlugin
{

class CameraFolderItem;
class CameraFolderView;
class CameraIconView;
class CameraIconItem;

class GPFileItemContainer : public TQObject {
    Q_OBJECT
  

public:
    GPFileItemContainer(TQObject *parent, CameraFolderView *folderView, CameraIconView   *iconView);
    ~GPFileItemContainer();

    void addVirtualFolder(const TQString& title);
    void addRootFolder(const TQString& folder);
    void addFolder(const TQString& folder, const TQString& subfolder);

    void addFiles(const TQString& folder, const GPFileItemInfoList& infoList);
    void addFiles(const GPFileItemInfoList& infoList);
    void addFile(const TQString& folder, const GPFileItemInfo& info);

    void delFile(const TQString& folder, const TQString& name);

    CameraIconItem* findItem(const TQString& folder, const TQString& name);

    TQPtrList<GPFileItemInfo> allFiles();
    
private:
    typedef TQDict<GPFileItemInfo>  GPFileDict;
    typedef TQDictIterator<GPFileItemInfo> GPFileDictIterator;
    
    class GPFolder {
    public:
        GPFolder() {
            viewItem = 0;
            fileDict = new GPFileDict(307);
            fileDict->setAutoDelete(true);
        }

        ~GPFolder() {
            if (fileDict)
                delete fileDict;
        }
        
        GPFileDict        *fileDict;
        CameraFolderItem  *viewItem;
    };
    
    typedef TQDict<GPFolder>  GPFolderDict;
    typedef TQDictIterator<GPFolder> GPFolderDictIterator;
    
    GPFolderDict      folderDict_;
    CameraFolderView *folderView_;
    CameraIconView   *iconView_;

private slots:
    void slotFolderViewCleared();
    void slotIconViewCleared();
};

}  // NameSpace KIPIKameraKlientPlugin

#endif /* GPFILEITEMCONTAINER_H */