summaryrefslogtreecommitdiffstats
path: root/smb4k/listview/smb4kshareslistview_part.h
blob: a3791aed11b07215a462ca60cfae17bbce2ac966 (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
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
/***************************************************************************
    smb4kshareslistview_part  -This Part includes the shares list view
    of Smb4K.
                             -------------------
    begin                : Sa Jun 30 2007
    copyright            : (C) 2007 by Alexander Reinholdt
    email                : dustpuppy@users.berlios.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.                                   *
 *                                                                         *
 *   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., 51 Franklin Street, Fifth Floor, Boston,   *
 *   MA  02110-1301 USA                                                    *
 ***************************************************************************/

#ifndef SMB4KSHARESLISTVIEW_PART_H
#define SMB4KSHARESLISTVIEW_PART_H

#ifdef HAVE_CONFIG_H
#include <config.h>
#endif

// KDE includes
#include <tdeparts/part.h>
#include <tdeparts/factory.h>

// applications specific includes
#include "smb4kshareslistview.h"

/**
 * This is one of the parts of Smb4K. It contains the shares list
 * view.
 *
 * @author Alexander Reinholdt <dustpuppy@users.berlios.de>
 */

class Smb4KSharesListViewPart : public KParts::Part
{
  TQ_OBJECT
  

  public:
    /**
     * The constructor.
     *
     * @param parentWidget        The parent widget
     *
     * @param widgetName          The name the widget should have
     *
     * @param parent              The parent object
     *
     * @param name                The name this object should have
     */
    Smb4KSharesListViewPart( TQWidget *parentWidget = 0, const char *widgetName = 0,
                             TQObject *parent = 0, const char *name = 0 );

    /**
     * The destructor.
     */
    virtual ~Smb4KSharesListViewPart();

  protected:
    /**
     * Reimplemented from KParts::Part.
     */
    void customEvent( TQCustomEvent *e );

  protected slots:
    /**
     * Opens a context menu over the list view item @p item at position
     * @p pos if requested.
     *
     * @param item                The list view item or NULL if the user clicked
     *                            somewhere else.
     *
     * @param pos                 The position where the user clicked.
     *
     * @param col                 The column where the context menu should be show.
     */
    void slotContextMenuRequested( TQListViewItem *item, const TQPoint & pos, int col );

    /**
     * This slot is called when the selection in the list view changed. It
     * enables or disables the actions according to known options/states.
     * Please note that it won't be invoked when the user clicked on the
     * viewport. Use slotMouseButtonPressed() to also catch that event.
     *
     * @param item                The list view item that was selected
     */
    void slotSelectionChanged( TQListViewItem *item );

    /**
     * This slot is called when the user presses any mouse button somewhere
     * in the list view. It enables or disables the actions according to known
     * options/states.
     *
     * @param item                The icon view item that was clicked or NULL if the
     *                            user clicked onto the viewport.
     */
    void slotMouseButtonPressed( TQListViewItem *item );

    /**
     * This slot is called by the Smb4KMounter::updated() signal and updates
     * the list view according to the list that is returned by Smb4KMounter::getShares().
     */
    void slotMountedShares();

    /**
     * This slot is connected to the 'Unmount action'. You will be able to
     * unmount a certain share when activating this slot.
     */
    void slotUnmountShare();

    /**
     * This slot is connected to the 'Force Unmounting' action and is, thus,
     * only useful under Linux, because only there the possibility for a forced
     * (i.e. lazy) unmount exists.
     *
     * When activating this slot, the selected share will be unmounted, even if
     * it is not accessible or the server already went offline.
     */
    void slotForceUnmountShare();

    /**
     * This slot is connected to the 'Unmount All' action. All shares - either of
     * the user or that are present on the system (depending on the settings the
     * user chose) - will be unmounted. Please note that Smb4KMounter::unmountAllShares()
     * is invoked directly.
     */
    void slotUnmountAllShares();

    /**
     * This slot is connected to the 'Synchronize' action. The current item will be
     * synchronized with a local copy (or vice versa) if you activate it.
     */
    void slotSynchronize();

    /**
     * This slot is connected to the 'Konsole' action. The mount point of the current
     * share item will be opened in Konsole.
     */
    void slotKonsole();

    /**
     * This slot is connected to the 'Konqueror' action. The contents of the current
     * share item will be opened in the file manager.
     */
    void slotFilemanager();

    /**
     * This slot is called by the synchronizer whenever the state of the synchronization
     * process changed.
     *
     * @param state             The state the synchronizer is in.
     */
    void slotSynchronizationState( int state );

  private:
    /**
     * Set up the actions
     */
    void setupActions();

    /**
     * Load settings for the widget or the actions.
     */
    void loadSettings();

    /**
     * The icon view.
     */
    Smb4KSharesListView *m_widget;

    /**
     * The action menu.
     */
    TDEActionMenu *m_menu;
};


class TDEInstance;
class TDEAboutData;

class Smb4KSharesListViewPartFactory : public KParts::Factory
{
  TQ_OBJECT
  

  public:
    /**
     * The constructor
     */
    Smb4KSharesListViewPartFactory();

    /**
     * The destructor
     */
    virtual ~Smb4KSharesListViewPartFactory();

    /**
     * Reimplemented from KParts::Factory
     */
    virtual KParts::Part *createPartObject( TQWidget *parentWidget, const char *widgetName,
                                            TQObject *parent, const char *name,
                                            const char *classname, const TQStringList &args );

    /**
     * The instance
     */
    static TDEInstance *instance();

  private:
    /**
     * The factory's instance.
     */
    static TDEInstance *m_instance;

    /**
     * The factory's TDEAboutData object
     */
    static TDEAboutData *m_about;
};


#endif