1 /* EasyTAG - tag editor for audio files 2 * Copyright (C) 2014,2015 David King <amigadave@amigadave.com> 3 * 4 * This program is free software; you can redistribute it and/or modify it 5 * under the terms of the GNU General Public License as published by the Free 6 * Software Foundation; either version 2 of the License, or (at your option) 7 * any later version. 8 * 9 * This program is distributed in the hope that it will be useful, but WITHOUT 10 * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or 11 * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for 12 * more details. 13 * 14 * You should have received a copy of the GNU General Public License along with 15 * this program; if not, write to the Free Software Foundation, Inc., 51 16 * Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. 17 */ 18 19 #ifndef ET_FILE_H_ 20 #define ET_FILE_H_ 21 22 #include <glib.h> 23 24 G_BEGIN_DECLS 25 26 #include "core_types.h" 27 #include "file_description.h" 28 #include "file_info.h" 29 #include "file_name.h" 30 #include "file_tag.h" 31 32 /* 33 * Description of each item of the ETFileList list 34 */ 35 typedef struct 36 { 37 guint IndexKey; /* Value used to display the position in the list (and in the BrowserList) - Must be renumered after resorting the list - This value varies when resorting list */ 38 39 guint ETFileKey; /* Primary key to identify each item of the list (no longer used?) */ 40 41 guint64 FileModificationTime; /* Save modification time of the file */ 42 43 const ET_File_Description *ETFileDescription; 44 gchar *ETFileExtension; /* Real extension of the file (keeping the case) (should be placed in ETFileDescription?) */ 45 ET_File_Info *ETFileInfo; /* Header infos: bitrate, duration, ... */ 46 47 GList *FileNameCur; /* Points to item of FileNameList that represents the current value of filename state (i.e. file on hard disk) */ 48 GList *FileNameNew; /* Points to item of FileNameList that represents the new value of filename state */ 49 GList *FileNameList; /* Contains the history of changes about the filename. */ 50 GList *FileNameListBak; /* Contains items of FileNameList removed by 'undo' procedure but have data currently saved (for example, when you save your last changes, make some 'undo', then make new changes) */ 51 52 GList *FileTag; /* Points to the current item used of FileTagList */ 53 GList *FileTagList; /* Contains the history of changes about file tag data */ 54 GList *FileTagListBak; /* Contains items of FileTagList removed by 'undo' procedure but have data currently saved */ 55 } ET_File; 56 57 /* 58 * Description of each item of the ETHistoryFileList list 59 */ 60 typedef struct 61 { 62 ET_File *ETFile; /* Pointer to item of ETFileList changed */ 63 } ET_History_File; 64 65 gboolean et_file_check_saved (const ET_File *ETFile); 66 67 ET_File * ET_File_Item_New (void); 68 void ET_Free_File_List_Item (ET_File *ETFile); 69 70 void ET_Save_File_Data_From_UI (ET_File *ETFile); 71 gboolean ET_Save_File_Name_Internal (const ET_File *ETFile, File_Name *FileName); 72 gboolean ET_Save_File_Tag_To_HD (ET_File *ETFile, GError **error); 73 gboolean ET_Save_File_Tag_Internal (ET_File *ETFile, File_Tag *FileTag); 74 75 gboolean ET_Undo_File_Data (ET_File *ETFile); 76 gboolean ET_Redo_File_Data (ET_File *ETFile); 77 gboolean ET_File_Data_Has_Undo_Data (const ET_File *ETFile); 78 gboolean ET_File_Data_Has_Redo_Data (const ET_File *ETFile); 79 80 gboolean ET_Manage_Changes_Of_File_Data (ET_File *ETFile, File_Name *FileName, File_Tag *FileTag); 81 void ET_Mark_File_Name_As_Saved (ET_File *ETFile); 82 gchar *et_file_generate_name (const ET_File *ETFile, const gchar *new_file_name); 83 gchar * ET_File_Format_File_Extension (const ET_File *ETFile); 84 85 gint ET_Comp_Func_Sort_File_By_Ascending_Filename (const ET_File *ETFile1, const ET_File *ETFile2); 86 gint ET_Comp_Func_Sort_File_By_Descending_Filename (const ET_File *ETFile1, const ET_File *ETFile2); 87 gint ET_Comp_Func_Sort_File_By_Ascending_Creation_Date (const ET_File *ETFile1, const ET_File *ETFile2); 88 gint ET_Comp_Func_Sort_File_By_Descending_Creation_Date (const ET_File *ETFile1, const ET_File *ETFile2); 89 gint et_comp_func_sort_file_by_ascending_disc_number (const ET_File *ETFile1, 90 const ET_File *ETFile2); 91 gint et_comp_func_sort_file_by_descending_disc_number (const ET_File *ETFile1, 92 const ET_File *ETFile2); 93 gint ET_Comp_Func_Sort_File_By_Ascending_Track_Number (const ET_File *ETFile1, const ET_File *ETFile2); 94 gint ET_Comp_Func_Sort_File_By_Descending_Track_Number (const ET_File *ETFile1, const ET_File *ETFile2); 95 gint ET_Comp_Func_Sort_File_By_Ascending_Title (const ET_File *ETFile1, const ET_File *ETFile2); 96 gint ET_Comp_Func_Sort_File_By_Descending_Title (const ET_File *ETFile1, const ET_File *ETFile2); 97 gint ET_Comp_Func_Sort_File_By_Ascending_Artist (const ET_File *ETFile1, const ET_File *ETFile2); 98 gint ET_Comp_Func_Sort_File_By_Descending_Artist (const ET_File *ETFile1, const ET_File *ETFile2); 99 gint ET_Comp_Func_Sort_File_By_Ascending_Album_Artist (const ET_File *ETFile1, const ET_File *ETFile2); 100 gint ET_Comp_Func_Sort_File_By_Descending_Album_Artist (const ET_File *ETFile1, const ET_File *ETFile2); 101 gint ET_Comp_Func_Sort_File_By_Ascending_Album (const ET_File *ETFile1, const ET_File *ETFile2); 102 gint ET_Comp_Func_Sort_File_By_Descending_Album (const ET_File *ETFile1, const ET_File *ETFile2); 103 gint ET_Comp_Func_Sort_File_By_Ascending_Year (const ET_File *ETFile1, const ET_File *ETFile2); 104 gint ET_Comp_Func_Sort_File_By_Descending_Year (const ET_File *ETFile1, const ET_File *ETFile2); 105 gint ET_Comp_Func_Sort_File_By_Ascending_Genre (const ET_File *ETFile1, const ET_File *ETFile2); 106 gint ET_Comp_Func_Sort_File_By_Descending_Genre (const ET_File *ETFile1, const ET_File *ETFile2); 107 gint ET_Comp_Func_Sort_File_By_Ascending_Comment (const ET_File *ETFile1, const ET_File *ETFile2); 108 gint ET_Comp_Func_Sort_File_By_Descending_Comment (const ET_File *ETFile1, const ET_File *ETFile2); 109 gint ET_Comp_Func_Sort_File_By_Ascending_Composer (const ET_File *ETFile1, const ET_File *ETFile2); 110 gint ET_Comp_Func_Sort_File_By_Descending_Composer (const ET_File *ETFile1, const ET_File *ETFile2); 111 gint ET_Comp_Func_Sort_File_By_Ascending_Orig_Artist (const ET_File *ETFile1, const ET_File *ETFile2); 112 gint ET_Comp_Func_Sort_File_By_Descending_Orig_Artist (const ET_File *ETFile1, const ET_File *ETFile2); 113 gint ET_Comp_Func_Sort_File_By_Ascending_Copyright (const ET_File *ETFile1, const ET_File *ETFile2); 114 gint ET_Comp_Func_Sort_File_By_Descending_Copyright (const ET_File *ETFile1, const ET_File *ETFile2); 115 gint ET_Comp_Func_Sort_File_By_Ascending_Url (const ET_File *ETFile1, const ET_File *ETFile2); 116 gint ET_Comp_Func_Sort_File_By_Descending_Url (const ET_File *ETFile1, const ET_File *ETFile2); 117 gint ET_Comp_Func_Sort_File_By_Ascending_Encoded_By (const ET_File *ETFile1, const ET_File *ETFile2); 118 gint ET_Comp_Func_Sort_File_By_Descending_Encoded_By (const ET_File *ETFile1, const ET_File *ETFile2); 119 120 gint ET_Comp_Func_Sort_File_By_Ascending_File_Type (const ET_File *ETFile1, const ET_File *ETFile2); 121 gint ET_Comp_Func_Sort_File_By_Descending_File_Type (const ET_File *ETFile1, const ET_File *ETFile2); 122 gint ET_Comp_Func_Sort_File_By_Ascending_File_Size (const ET_File *ETFile1, const ET_File *ETFile2); 123 gint ET_Comp_Func_Sort_File_By_Descending_File_Size (const ET_File *ETFile1, const ET_File *ETFile2); 124 gint ET_Comp_Func_Sort_File_By_Ascending_File_Duration (const ET_File *ETFile1, const ET_File *ETFile2); 125 gint ET_Comp_Func_Sort_File_By_Descending_File_Duration (const ET_File *ETFile1, const ET_File *ETFile2); 126 gint ET_Comp_Func_Sort_File_By_Ascending_File_Bitrate (const ET_File *ETFile1, const ET_File *ETFile2); 127 gint ET_Comp_Func_Sort_File_By_Descending_File_Bitrate (const ET_File *ETFile1, const ET_File *ETFile2); 128 gint ET_Comp_Func_Sort_File_By_Ascending_File_Samplerate (const ET_File *ETFile1, const ET_File *ETFile2); 129 gint ET_Comp_Func_Sort_File_By_Descending_File_Samplerate (const ET_File *ETFile1, const ET_File *ETFile2); 130 131 G_END_DECLS 132 133 #endif /* !ET_FILE_H_ */ 134