package com.door43.translationstudio.filebrowser; import android.content.ContentResolver; import android.content.Context; import android.support.v4.provider.DocumentFile; import com.door43.translationstudio.AppContext; import com.door43.translationstudio.R; import com.door43.translationstudio.core.ArchiveDetails; import com.door43.translationstudio.core.Library; import com.door43.translationstudio.core.Translator; import org.apache.commons.io.FilenameUtils; import java.io.File; /** * This class represents a single file item */ public class DocumentFileItem { public static final String ZIP = "zip"; public final DocumentFile file; public final Context context; public final boolean isUpButton; private ArchiveDetails archiveDetails; private DocumentFileItem(Context context, DocumentFile file, boolean isUpButton) { this.file = file; this.isUpButton = isUpButton; this.context = context; } /** * Creates a new instance of a file * @param file * @return */ public static DocumentFileItem getInstance(Context context, DocumentFile file) { return new DocumentFileItem(context, file, false); } /** * Returns a new instance of the up button * * @return */ public static DocumentFileItem getUpInstance() { return new DocumentFileItem(null, null, true); } /** * Returns the title of the file * @return */ public String getTitle() { if(isUpButton) { return ""; } else { return file.getName(); } } /** * Checks if this file is a translationStudio archive */ public void inspect(String preferredLocale, Library library) { if(file != null) { try { this.archiveDetails = ArchiveDetails.newInstance(AppContext.context(), file, preferredLocale, library); return; } catch (Exception e) { e.printStackTrace(); } } this.archiveDetails = ArchiveDetails.newDummyInstance(); } /** * Returns the archive details. * You must call inspect first in order to load the * archive details * @return */ public ArchiveDetails getArchiveDetails() { return this.archiveDetails; } /** * Returns the icon for this file * @return */ public int getIconResource() { if(isUpButton) { return R.drawable.ic_arrow_back_black_24dp; } else if(isBackupsDir()) { return R.drawable.ic_history_black_24dp; } else if(isTranslationArchive()) { return R.drawable.ic_library_books_black_24dp; } else if(file.isDirectory()) { return R.drawable.ic_folder_open_black_24dp; } else { return R.drawable.ic_insert_drive_file_black_24dp; } } /** * Checks if this is the automatic backups directory. * translationStudio/backups - contains the automatic backups * @return */ public boolean isBackupsDir() { return !isUpButton && file != null && file.isDirectory() && file.getName().equalsIgnoreCase("backups") && file.getParentFile().getName().equalsIgnoreCase(AppContext.TRANSLATION_STUDIO); } /** * Checks if this file is a translation archive * @return */ public boolean isTranslationArchive() { return !isUpButton && file != null && !file.isDirectory() && FilenameUtils.getExtension(file.getName()).equalsIgnoreCase(Translator.ARCHIVE_EXTENSION); } /** * Checks if this file is a translation archive * @return */ public boolean isFileMatchesExtension(String extension) { return !isUpButton && file != null && !file.isDirectory() && FilenameUtils.getExtension(file.getName()).equalsIgnoreCase(extension); } /** * Checks if this file is a zip file * @return */ public boolean isThisZipFile() { return !isUpButton && file != null && !file.isDirectory() && FilenameUtils.getExtension(file.getName()).equalsIgnoreCase(ZIP); } }