summaryrefslogtreecommitdiff
path: root/tools.h
blob: d81eb02ce52cc277802ad244323ebf5830630728 (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
#ifndef __TOOLS_DVDSWITCH_H
#define __TOOLS_DVDSWITCH_H

#include "helpers.h"

class cDirList : public cFileList
{
  public:
    cDirList(void);
};

class cFileDelThread : public cThread
{
  private:
    char *File;
    bool Ok;

    bool RightCheck(char *value)
    {
      bool ret = false;
      if(value)
      {
        cFileInfo *info = new cFileInfo(value);
        ret = info->isWriteable();
        DELETENULL(info);
      }
      return ret;
    }
  protected:
    virtual void Action(void)
    {
      if(File)
        cFileCMD::Del(File);
      delete(this);
    };
  public:
    cFileDelThread(char *file)
    {
      File = NULL;
      Ok = false;
      
      if(!RightCheck(file))
        OSD_ERRMSG(tr("no Rights to delete"));
      else
      {
        Ok = true;
        if(file)
        {
          asprintf(&File, "%s.sdel", file);
          cFileCMD::Rn(file, File);
        }
      }
    }
    ~cFileDelThread(void) { free(File); }
    bool OK(void) { return Ok; };
};

class cFileMoveThread : public cThread
{
  private:
    char *FileName;
    char *File;
    char *Dest;
    bool Ok;

    bool RightCheck(char *value)
    {
      bool ret = false;
      if(value)
      {
        cFileInfo *info = new cFileInfo(value);
        ret = info->isWriteable();
        DELETENULL(info);
      }
      return ret;
    }
  protected:
    virtual void Action(void)
    {
      if(FileName && File && Dest)
      {
        char *buffer = NULL;
        asprintf(&buffer, "%s/%s", Dest, FileName);
        cFileCMD::Rn(File, buffer);
        free(buffer);
      }
      delete(this);
    };
  public:
    cFileMoveThread(char *file, char *dest)
    {
      FileName = NULL;
      File = NULL;
      Dest = NULL;
      Ok = false;

      if(!RightCheck(file) || !RightCheck(dest))
        OSD_ERRMSG(tr("no Rights to move"));
      else
      {
        Ok = true;
        if(file)
        {
          cFileInfo *info = new cFileInfo(file);
          FileName = strdup(info->FileName());
          DELETENULL(info);
          asprintf(&File, "%s.smove", file);
          cFileCMD::Rn(file, File);
        }
        Dest = dest ? strdup(dest) : NULL;
      }
    }
    ~cFileMoveThread(void)
    {
      free(FileName);
      free(File);
      free(Dest);
    }
    bool OK(void) { return Ok; };
};

#endif // __TOOLS_DVDSWITCH_H