summaryrefslogtreecommitdiffstats
path: root/parts/filelist/projectviewpart.h
blob: 50cd5391085b3d93de4f09c8c4f4e256c5536967 (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
/***************************************************************************
 *   Copyright (C) 2005 by Jens Herden                                     *
 *   jens@kdewebdev.org                                                    *
 *                                                                         *
 *   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.                                   *
 *                                                                         *
 *   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.                          *
 *                                                                         *
 *   You should have received a copy of the GNU General Public License     *
 *   along with this program; if not, write to the                         *
 *   Free Software Foundation, Inc.,                                       *
 *   59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.             *
 ***************************************************************************/

#ifndef KDEVPROJECTVIEW_H
#define KDEVPROJECTVIEW_H

#include "fileinfo.h" 

#include <qvaluelist.h>
#include <qmap.h>
#include <qguardedptr.h>

#include <kdevplugin.h>
#include <kurl.h>


class QPopupMenu;
class KAction;
class KSelectAction;
class KDialogBase;
class Context;
class ConfigWidgetProxy;
class FileListWidget;
class KToolBar;
class QVBox;
class ToolbarGUIBuilder;



/**
Please read the README.dox file for more info about this part

this is a reimplementation of the project views in Quanta

@TODO find a way to control the toolbar again
@TODO save html parts too
FIXME at project open I get the default view and the open files at last close
*/
class ProjectviewPart: public KDevPlugin
{
  Q_OBJECT
public:
 
  typedef QMap<QString, FileInfoList> ViewMap;
//   typedef QMap<KURL, FileInfo> FileInfoMap;
  
  
  ProjectviewPart(QObject *parent, const char *name, const QStringList &args);
  ~ProjectviewPart();
  
  // reimplemented from KDevPlugin
  void restorePartialProjectSession(const QDomElement * el);
  void savePartialProjectSession(QDomElement * el);
  
  /**
  * 
  * @return the current defaut view
  */
  inline QString getDefaultView() const {return m_defaultProjectView;};
  
  /**
  * 
  * @param view new default view
  */
  inline void setDefaultView(const QString& view) {m_defaultProjectView = view;};
  
  /**
  * get all current views
  * @return QStringList of defined views
  */
  inline QStringList getViewList() const {return m_projectViews.keys();};

private slots:
  void init();
  
  void insertConfigWidget(const KDialogBase *dlg, QWidget *page, unsigned int pageNo);
  void contextMenu(QPopupMenu *popup, const Context *context);
  void projectOpened();
  void projectClosed();
  
  /** Deletes a project view
    *
    * @param view name of the project view
    */
  void slotDeleteProjectView(const QString &view);
  
  /**
    * Deletes the current project view
    */
  void slotDeleteProjectViewCurent();

  /**
    * Saves a project view
    *
    * @param askForName true = show a dialog for the name
    */
  void slotSaveAsProjectView(bool askForName = true);
  
  /** Saves the current project view
    */
  void slotSaveProjectView();
  
  /** Opens a project view
    *
    * @param view name of the project view
    */
  void slotOpenProjectView(const QString &view);
  
private:
  /**
    * create and initialize the actions
    */
  void setupActions();
  
  /**
  * Change the actions according to the current available views
  */
  void adjustViewActions();
  
  /**
   * write the views to the plugin config file
   */
  void writeConfig();

  /**
   * read the views from the plugin config file
   */
  void readConfig();

  ViewMap m_projectViews;  //container for the views
  
  KAction *m_savePrjViewAction;
  KAction *m_newPrjViewAction;
  KAction *m_deleteCurrentPrjViewAction;
  KSelectAction *m_openPrjViewAction;
  KSelectAction *m_deletePrjViewAction;
  
  QString m_currentProjectView;
  QString m_defaultProjectView;  // load this after project loaded
  
  KURL m_projectBase;  // project base folder
  ConfigWidgetProxy *m_configProxy;

  QGuardedPtr<QWidget> m_widget;
  QGuardedPtr<ToolbarGUIBuilder> m_guibuilder;
  QWidget * m_toolbarWidget;
  
  bool m_restored;
};


#endif