summaryrefslogtreecommitdiffstats
path: root/quanta/treeviews/docfolder.cpp
blob: 02669a1edbffe477fa1b79fe68dfd9048d933208 (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
/***************************************************************************
                          docfolder.cpp  -  description
                             -------------------
    begin                : Fri Mar 3 2000
    copyright            : (C) 2000 by Yacovlev Alexander & Dmitry Poplavsky <[email protected]>
                           (C) 2002 Andras Mantia <[email protected]>
 ***************************************************************************/

/***************************************************************************
 *                                                                         *
 *   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.                                   *
 *                                                                         *
 ***************************************************************************/

// QT includes
#include <qstrlist.h>
#include <qpixmap.h>

// KDE includes
#include <kconfig.h>
#include <kstandarddirs.h>
#include <kiconloader.h>

// app includes
#include "docfolder.h"
#include "docitem.h"

DocFolder::DocFolder(QListViewItem *parent, const QString &_name, KConfig *config, const QString &basePath)
  : KListViewItem(parent)
{
  name = _name;
  topLevel = false;
  url = "";

  QStrList list;

  config->readListEntry( name, list );

  char *item;

  for ( list.last(); ( item = list.current() ) ; list.prev() ) {
    if ( item[0] != '#' ) {
      QString url = config->readEntry( item );
      DocItem *el = new DocItem( this, QString(item), basePath+url);
      el->setPixmap( 0, SmallIcon("info") );
    } else
    if ( item[0] == '#' ) { // current item is folder
      item++; // remove leading #
      QString l_url = config->readEntry( QString("folder_")+item, "" );
      DocFolder *el = new DocFolder(this, QString(item), config, basePath);
      if ( ! l_url.isEmpty() )
        el->url = basePath+l_url;
      el->setPixmap( 0, UserIcon("mini-book1") );
      el->setOpen( false );
    }
  }
}

DocFolder::DocFolder(QListView *parent, const QString &_name, KConfig *config, const QString &basePath)
  : KListViewItem(parent)
{
  name = _name;
  topLevel = false;
  url = "";
  QStrList list;

  config->readListEntry( name, list );

  char *item;

  for ( list.last(); ( item = list.current() ) ; list.prev() ) {
    if ( item[0] != '#' ) {
      QString url = config->readEntry( item );
      DocItem *el = new DocItem( this, QString(item), basePath+url);
      el->setPixmap( 0, SmallIcon("info") );
    } else
    if ( item[0] == '#' ) { // current item is folder
      item++; // remove leading #
      QString l_url = config->readEntry( QString("folder_")+item, "" );
      DocFolder *el = new DocFolder(this, QString(item), config, basePath);
      if ( ! l_url.isEmpty() )
        el->url = basePath+l_url;
      el->setPixmap( 0, UserIcon("mini-book1") );
      el->setOpen( false );
    }
  }
}



DocFolder::~DocFolder(){
}


QString DocFolder::text( int i) const
{
  if (i == 0)
    return name;
  else
    return "";
}

void DocFolder::setup()
{
    setExpandable( true );
    QListViewItem::setup();
}
/**  */
void DocFolder::setOpen( bool o)
{
  QListViewItem::setOpen( o );
  if ( !topLevel ) {
      if (o)
        setPixmap( 0, UserIcon("mini-book2") );
      else
        setPixmap( 0, UserIcon("mini-book1") );
  } else {
      if (o)
        setPixmap( 0, SmallIcon("folder_open") );
      else
        setPixmap( 0, SmallIcon("folder") );
  }
}