summaryrefslogtreecommitdiffstats
path: root/smb4k/smb4ksystemtray.h
blob: 53fa11f7b92f3a413f8c00487826d1010a02b6f4 (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
/***************************************************************************
    smb4ksystemtray  -  This is the system tray window class of Smb4K.
                             -------------------
    begin                : Mi Jun 13 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 SMB4KSYSTEMTRAY_H
#define SMB4KSYSTEMTRAY_H

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

// KDE includes
#include <ksystemtray.h>
#include <kactionclasses.h>

class Smb4KSystemTray : public KSystemTray
{
  Q_OBJECT
  TQ_OBJECT

  public:
    /**
     * The constructor.
     *
     * @param parent        The parent widget of the system tray window
     *
     * @param name          The name of the system tray window
     */
    Smb4KSystemTray( TQWidget *parent = 0, const char *name = 0 );

    /**
     * The destructor.
     */
    ~Smb4KSystemTray();

    /**
     * Embeds the system tray window into the system tray, if @p ebd is
     * TRUE. Otherwise, it removes it from there. Note, that the system tray
     * icon won't be deleted but only hidden!
     *
     * @param ebd           If TRUE the system tray icon will be embedded into
     *                      the system tray.
     */
    void embed( bool ebd );

    /**
     * This function returns TRUE if the system tray window is embedded into
     * the system tray and FALSE otherwise.
     *
     * @returns TRUE if the system tray window is embedded.
     */
    bool isEmbedded() { return isShown(); }

    /**
     * This function (re-)loads the settings for this widget. It basically just
     * runs the slot slotSetupBookmarkMenu() and slotSetupSharesMenu(), that will
     * do everything to properly set up the menus.
     *
     * This slot *does not* manage the appearance (or disappearance) of this widget
     * in the system tray. You need to use embed() to do this.
     */
    void loadSettings();

  signals:
    /**
     * This signal is emitted when the config dialog has been closed and the
     * settings changed.
     */
    void settingsChanged();

  protected slots:
    /**
     * This slot opens the dialog for mounting shares manually.
     */
    void slotMountManually();

    /**
     * This slot opens the configurations dialog.
     */
    void slotConfigDialog();

    /**
     * This slot is invoked when the config dialog is closed and the settings have
     * been changed. Emits the reloadSettings() signal and adjusts the system tray
     * widget to the new settings afterwards.
     */
    void slotSettingsChanged();

    /**
     * This slot is invoked when the bookmarks have been updated. It sets up the
     * bookmark menu, inserts the bookmark actions into it and automatically
     * disables them if they were already mounted (@see slotSetupSharesMenu() as well).
     */
    void slotSetupBookmarksMenu();

    /**
     * This slot opens the bookmark editor.
     */
    void slotBookmarkEditor();

    /**
     * This slot is called when a bookmark has been activated. It initializes the
     * mounting of the represented share.
     */
    void slotBookmarkActivated();

    /**
     * This slot enables and disables the bookmarks. If a share that's represented
     * by the bookmark is mounted, the bookmark will be disabled. It will be
     * enabled, when it is unmounted again.
     */
    void slotEnableBookmarks();

    /**
     * This slot is activated when the list of mounted shares has been updated.
     * It setus up the "Mounted Shares" menu and also enables/disables the
     * bookmarks in the "Bookmarks" menu. It is connected to the
     * Smb4KMounter::updated() signal.
     */
    void slotSetupSharesMenu();

    /**
     * This slot initializes the umounting of all shares. It is connected to the
     * "Unmount All" action of the "Mounted Shares" menu.
     */
    void slotUnmountAllShares();

    /**
     * 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 '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 enabled when an action is highlighted.  No validity checks are
     * performed.
     *
     * @param action        The currently highlighted action.
     */
    void slotActionHighlighted( KAction *action );

  private:
    /**
     * The action menu for the bookmarks.
     */
    KActionMenu *m_bookmarks_menu;

    /**
     * The action menu for the mounted shares.
     */
    KActionMenu *m_shares_menu;

    /**
     * This is the currently highlighted action.
     */
    KAction *m_action;
};

#endif