summaryrefslogtreecommitdiffstats
path: root/parts/filecreate/filecreate_typechooser.h
blob: 8e1e37e8517eb181b5f3d3f419df6004ac6260d8 (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
#ifndef __FILECREATE_TYPECHOOSER_H__
#define __FILECREATE_TYPECHOOSER_H__

#include "filecreate_typechoosersig.h"

#include <kdebug.h>

class FileCreatePart;

namespace FileCreate {

class FileType;

class TypeChooser  {
  
public:

  TypeChooser(FileCreatePart * part) : m_part(part), m_current(NULL) {
    m_signaller = new Signaller;
  }
  virtual ~TypeChooser() { delete m_signaller; }

  virtual void setPart(FileCreatePart * part) { m_part = part; }
  virtual FileCreatePart * part() const { return m_part; }
  virtual void refresh() = 0;
  virtual void setCurrent(const FileType * current) = 0;
  virtual const FileType * current() const { return m_current; }

  virtual void filetypeSelected(const FileType * filetype) {
    m_current = filetype;
    kdDebug(9034) << "type selected: about to signal" << endl;
    if (filetype) m_signaller->signal(filetype);
    kdDebug(9034) << "type selected: done signal" << endl;
  }

  const Signaller * signaller() const { return m_signaller; }  
  
protected:
  FileCreatePart * m_part;
  Signaller * m_signaller;
  const FileType * m_current;

};

}

#endif