summaryrefslogtreecommitdiffstats
path: root/smb4k/core/smb4kmounter_p.h
blob: 334ffa3119e69836b354378d4d160bcf4c0842f8 (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
/***************************************************************************
    smb4kmounter_p  -  This is a private helper class for Smb4KMounter.
                             -------------------
    begin                : Do Jul 19 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 SMB4KMOUNTER_P_H
#define SMB4KMOUNTER_P_H

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

// Qt includes
#include <qthread.h>
#include <qstring.h>

// KDE includes
#include <kdebug.h>

// system includes
#include <sys/statvfs.h>

class Smb4KMounterPrivate
{
  public:
    Smb4KMounterPrivate();
    ~Smb4KMounterPrivate();
    int timerTicks;

    class Thread : public QThread
    {
      public:
        Thread() : QThread(), m_mountpoint( QString::null ), m_broken( true ) {}
        ~Thread() {}

        void setMountpoint( const QString &mp ) { m_mountpoint = mp; }

        virtual void run()
        {
          if ( m_mountpoint.isEmpty() )
          {
            kdFatal() << "Smb4KMounterPrivate::Thread: No mountpoint specified" << endl;
          }

          struct statvfs fs;

          if ( statvfs( m_mountpoint.local8Bit(), &fs ) == -1 )
          {
            m_broken = true;
            m_total = -1;
            m_free = -1;
          }
          else
          {
            m_broken = false;

            double kB_block = (double)(fs.f_bsize / 1024);
            double total = (double)(fs.f_blocks*kB_block);
            double free = (double)(fs.f_bfree*kB_block);

            m_total = total;
            m_free = free;
          }

          m_mountpoint = QString::null;
        }

        bool isBroken() { return m_broken; }
        double totalDiskSpace() { return m_total; }
        double freeDiskSpace() { return m_free; }

      private:
        QString m_mountpoint;
        bool m_broken;
        double m_total;
        double m_free;
    };

    Thread thread;
    void clearData();
    const QString &workgroup();
    const QString &host();
    const QString &share();
    const QString &ip();
    const QString &path();
    const QString &filesystem();
    const QString &cifsLogin();
    void setWorkgroup ( const QString &wg );
    void setHost( const QString &h );
    void setShare( const QString &s );
    void setIP( const QString &i );
    void setPath( const QString &p );
    void setFileSystem( const QString &f );
    void setCIFSLogin( const QString &l );

  private:
    QString m_workgroup;
    QString m_host;
    QString m_share;
    QString m_ip;
    QString m_path;
    QString m_filesystem;
    QString m_cifsLogin;
};

#endif