1 /* 2 * This file is part of d-dazzle. 3 * 4 * d-dazzle is free software; you can redistribute it and/or modify 5 * it under the terms of the GNU Lesser General Public License 6 * as published by the Free Software Foundation; either version 3 7 * of the License, or (at your option) any later version, with 8 * some exceptions, please read the COPYING file. 9 * 10 * d-dazzle is distributed in the hope that it will be useful, 11 * but WITHOUT ANY WARRANTY; without even the implied warranty of 12 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 13 * GNU Lesser General Public License for more details. 14 * 15 * You should have received a copy of the GNU Lesser General Public License 16 * along with d-dazzle; if not, write to the Free Software 17 * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110, USA 18 */ 19 module dazzle.FileTransfer; 20 21 private import dazzle.c.functions; 22 public import dazzle.c.types; 23 private import gio.AsyncResultIF; 24 private import gio.Cancellable; 25 private import gio.FileIF; 26 private import glib.ConstructionException; 27 private import glib.ErrorG; 28 private import glib.GException; 29 private import gobject.ObjectG; 30 31 32 /** */ 33 public class FileTransfer : ObjectG 34 { 35 /** the main Gtk struct */ 36 protected DzlFileTransfer* dzlFileTransfer; 37 38 /** Get the main Gtk struct */ 39 public DzlFileTransfer* getFileTransferStruct(bool transferOwnership = false) 40 { 41 if (transferOwnership) 42 ownedRef = false; 43 return dzlFileTransfer; 44 } 45 46 /** the main Gtk struct as a void* */ 47 protected override void* getStruct() 48 { 49 return cast(void*)dzlFileTransfer; 50 } 51 52 /** 53 * Sets our main struct and passes it to the parent class. 54 */ 55 public this (DzlFileTransfer* dzlFileTransfer, bool ownedRef = false) 56 { 57 this.dzlFileTransfer = dzlFileTransfer; 58 super(cast(GObject*)dzlFileTransfer, ownedRef); 59 } 60 61 62 /** */ 63 public static GType getType() 64 { 65 return dzl_file_transfer_get_type(); 66 } 67 68 /** */ 69 public this() 70 { 71 auto p = dzl_file_transfer_new(); 72 73 if(p is null) 74 { 75 throw new ConstructionException("null returned by new"); 76 } 77 78 this(cast(DzlFileTransfer*) p, true); 79 } 80 81 /** */ 82 public void add(FileIF src, FileIF dest) 83 { 84 dzl_file_transfer_add(dzlFileTransfer, (src is null) ? null : src.getFileStruct(), (dest is null) ? null : dest.getFileStruct()); 85 } 86 87 /** */ 88 public bool execute(int ioPriority, Cancellable cancellable) 89 { 90 GError* err = null; 91 92 auto p = dzl_file_transfer_execute(dzlFileTransfer, ioPriority, (cancellable is null) ? null : cancellable.getCancellableStruct(), &err) != 0; 93 94 if (err !is null) 95 { 96 throw new GException( new ErrorG(err) ); 97 } 98 99 return p; 100 } 101 102 /** */ 103 public void executeAsync(int ioPriority, Cancellable cancellable, GAsyncReadyCallback callback, void* userData) 104 { 105 dzl_file_transfer_execute_async(dzlFileTransfer, ioPriority, (cancellable is null) ? null : cancellable.getCancellableStruct(), callback, userData); 106 } 107 108 /** */ 109 public bool executeFinish(AsyncResultIF result) 110 { 111 GError* err = null; 112 113 auto p = dzl_file_transfer_execute_finish(dzlFileTransfer, (result is null) ? null : result.getAsyncResultStruct(), &err) != 0; 114 115 if (err !is null) 116 { 117 throw new GException( new ErrorG(err) ); 118 } 119 120 return p; 121 } 122 123 /** */ 124 public DzlFileTransferFlags getFlags() 125 { 126 return dzl_file_transfer_get_flags(dzlFileTransfer); 127 } 128 129 /** */ 130 public double getProgress() 131 { 132 return dzl_file_transfer_get_progress(dzlFileTransfer); 133 } 134 135 /** */ 136 public void setFlags(DzlFileTransferFlags flags) 137 { 138 dzl_file_transfer_set_flags(dzlFileTransfer, flags); 139 } 140 141 /** 142 * Gets statistics about the transfer progress. 143 * 144 * Params: 145 * statBuf = a #DzlFileTransferStat 146 * 147 * Since: 3.28 148 */ 149 public void stat(out DzlFileTransferStat statBuf) 150 { 151 dzl_file_transfer_stat(dzlFileTransfer, &statBuf); 152 } 153 }