import org.adullact.iparapheur.model.Account;
import org.adullact.iparapheur.model.Action;
import org.adullact.iparapheur.model.Bureau;
+import org.adullact.iparapheur.model.Document;
import org.adullact.iparapheur.model.Dossier;
import org.adullact.iparapheur.utils.CollectionUtils;
import org.adullact.iparapheur.utils.FileUtils;
@Override public boolean onCreateOptionsMenu(Menu menu) {
Toolbar actions_toolbar = (Toolbar) findViewById(R.id.actions_toolbar);
-
if (actions_toolbar != null) {
+
actions_toolbar.getMenu().clear();
actions_toolbar.inflateMenu(R.menu.main_activity);
actions_toolbar.setOnMenuItemClickListener(new Toolbar.OnMenuItemClickListener() {
startActivityForResult(new Intent(this, PreferencesActivity.class), PreferencesActivity.PREFERENCES_ACTIVITY_REQUEST_CODE);
return true;
+ case R.id.menu_item_share:
+ startShareIntent();
+ return true;
+
default:
return super.onOptionsItemSelected(item);
}
}
}
+ private void startShareIntent() {
+
+ DossierDetailFragment fragment = (DossierDetailFragment) getFragmentManager().findFragmentByTag(DossierDetailFragment.FRAGMENT_TAG);
+ Dossier dossier = fragment.getDossier();
+ String documentId = fragment.getDocumentId();
+ Document document = Dossier.findCurrentDocument(dossier, documentId);
+
+ // Default cases
+
+ if (document == null)
+ return;
+
+ File documentFile = new File(document.getPath());
+ if (!documentFile.exists())
+ return;
+
+ // Start share
+
+ Intent intentShareFile = new Intent(Intent.ACTION_SEND);
+ intentShareFile.setType("application/pdf");
+ intentShareFile.putExtra(Intent.EXTRA_STREAM, Uri.fromFile(documentFile));
+ intentShareFile.putExtra(Intent.EXTRA_SUBJECT, String.format(getString(R.string.action_share_subject), dossier.getName()));
+ intentShareFile.putExtra(Intent.EXTRA_TEXT, String.format(getString(R.string.action_share_text), document.getName(), dossier.getName()));
+ startActivity(Intent.createChooser(intentShareFile, "plop"));
+ }
+
// <editor-fold desc="AccountFragmentListener">
@Override public void onAccountSelected(@NonNull Account account) {
import android.support.annotation.Nullable;
import android.support.v7.widget.Toolbar;
import android.text.TextUtils;
+import android.util.Log;
import android.util.SparseArray;
import android.view.Menu;
import android.view.MenuInflater;
// </editor-fold desc="MuPdfFragment">
+ // <editor-fold desc="Getters / Setters">
+
+ public Dossier getDossier() {
+ return mDossier;
+ }
+
+ public String getDocumentId() {
+ return mDocumentId;
+ }
+
+ // </editor-fold desc="Getters / Setters">
+
public void update(@Nullable Dossier dossier, @NonNull String bureauId) {
update(dossier, bureauId, null);
}
public void update(@Nullable Dossier dossier, @NonNull String bureauId, @Nullable String documentId) {
+ Log.w("Adrien", "update : " + dossier + " " + documentId);
+
mBureauId = bureauId;
mDossier = dossier;
mDocumentId = documentId;
//Adrien - TODO - Error messages
final Document document = Dossier.findCurrentDocument(mDossier, mDocumentId);
- if (document == null)
+ if (document == null) {
+ ((DossierDetailsFragmentListener) getActivity()).onDocumentSelected(mDossier, null);
return;
+ }
- File documentFile = FileUtils.getFileForDocument(getActivity(), mDossier.getId(), document.getId());
- if (!documentFile.exists())
+ File documentFile = FileUtils.getFileForDocument(getActivity(), mDossier, document);
+ if (!documentFile.exists()) {
+ ((DossierDetailsFragmentListener) getActivity()).onDocumentSelected(mDossier, null);
return;
+ }
openFile(documentFile.getAbsolutePath());
if (getView() != null)
getView().findViewById(R.id.mupdffragment_main_fabbutton_annotation).setVisibility(areAnnotationAvailable ? View.VISIBLE : View.GONE);
- //
+ // Callback to main activity
-// if (document != null) {
-// if (isReaderEnabled && (document.getPath() != null)) {
-// mViewPager.post(
-// new Runnable() {
-// @Override public void run() {
-// try {
-// ((DocumentPagerAdapter) mViewPager.getAdapter()).setDocument(document);
-// mViewPager.setCurrentItem(0, false);
-// ViewUtils.crossfade(getActivity(), mViewPager, mLoadingSpinner);
-// }
-// catch (Exception e) {
-// e.printStackTrace();
-// Toast.makeText(getActivity(), R.string.error_reading_document, Toast.LENGTH_LONG).show();
-// }
-// }
-// }
-// );
-// }
-// }
-// else {
-// mViewPager.post(
-// new Runnable() {
-// @Override public void run() {
-// try {
-// ((DocumentPagerAdapter) mViewPager.getAdapter()).setDocument(null);
-// //mViewPager.setCurrentItem(0, false);
-// }
-// catch (Exception e) {
-// //e.printStackTrace();
-// Toast.makeText(getActivity(), R.string.error_reading_document, Toast.LENGTH_LONG).show();
-// }
-// }
-// }
-// );
-// }
+ ((DossierDetailsFragmentListener) getActivity()).onDocumentSelected(mDossier, document);
}
private void updateCircuitInfoDrawerContent() {
public interface DossierDetailsFragmentListener {
+ void onDocumentSelected(@NonNull Dossier dossier, @Nullable Document document);
+
boolean isAnyDrawerOpened();
void toggleInfoDrawer();
return null;
showSpinnerOnUiThread();
- File file = FileUtils.getFileForDocument(getActivity(), mDossier.getId(), currentDocument.getId());
+ File file = FileUtils.getFileForDocument(getActivity(), mDossier, currentDocument);
currentDocument.setPath(file.getAbsolutePath());
if (!file.exists()) {
if (getActivity() instanceof AppCompatActivity) {
AppCompatActivity parentActivity = (AppCompatActivity) getActivity();
if (parentActivity.getSupportActionBar() != null)
- parentActivity.getSupportActionBar().setTitle(R.string.settings);
+ parentActivity.getSupportActionBar().setTitle(R.string.Settings);
}
}
import org.adullact.iparapheur.R;
import org.adullact.iparapheur.controller.IParapheurApplication;
+import org.adullact.iparapheur.model.Document;
+import org.adullact.iparapheur.model.Dossier;
import java.io.File;
import java.io.FileOutputStream;
private static final String ASSET_DEMO_PDF_FILE_NAME = "offline_test_file.pdf";
- public static @Nullable File getDirectoryForDossier(@NonNull String dossierId) {
- File directory = new File(IParapheurApplication.getContext().getExternalCacheDir(), dossierId);
+ public static @Nullable File getDirectoryForDossier(@NonNull Dossier dossier) {
+ File directory = new File(IParapheurApplication.getContext().getExternalCacheDir(), dossier.getId());
if (!directory.mkdirs())
if (!directory.exists())
return directory;
}
- @SuppressWarnings("ConstantConditions") public static @NonNull File getFileForDocument(@NonNull Context context, @NonNull String dossierId,
- @NonNull String documentId) {
+ @SuppressWarnings("ConstantConditions") public static @NonNull File getFileForDocument(@NonNull Context context, @NonNull Dossier dossier,
+ @NonNull Document document) {
if (!DeviceUtils.isDebugOffline())
- return new File(FileUtils.getDirectoryForDossier(dossierId), documentId);
+ return new File(FileUtils.getDirectoryForDossier(dossier), document.getName());
else
return createFileFromAsset(context, ASSET_DEMO_PDF_FILE_NAME);
}
<?xml version="1.0" encoding="utf-8"?>
<menu xmlns:android="http://schemas.android.com/apk/res/android"
- xmlns:iparapheur="http://schemas.android.com/apk/res-auto">
+ xmlns:compat="http://schemas.android.com/apk/res-auto">
+
+ <item
+ android:id="@+id/menu_item_share"
+ android:icon="@drawable/ic_share_white_24dp"
+ android:title="@string/Share"
+ compat:showAsAction="ifRoom" />
<item
android:id="@+id/action_settings"
- android:title="@string/settings"
- iparapheur:showAsAction="never"/>
+ android:title="@string/Settings"
+ compat:showAsAction="never" />
</menu>
\ No newline at end of file
<string name="title_dossier_detail">Dossier Detail</string>
<string name="account_new">Nouveau compte</string>
<string name="search">Rechercher</string>
- <string name="settings">Préférences</string>
+ <string name="Share">Partager</string>
<string name="about">À propos</string>
<string name="media_not_mounted">Aucun stockage disponible, les documents ne seront pas visualisables.</string>
<string name="type">Type</string>
<string name="nb_dossiers">%d dossiers</string>
<string name="no_dossier">Aucun dossier</string>
+ <!-- Share -->
+ <string name="action_share_subject">iParapheur - %s</string>
+ <string name="action_share_text">Ci-joint, le document "%1$s" du dossier "%2$s"</string>
+
<!-- Actions sur un dossier -->
<string name="action_valider">Valider</string>
<string name="action_rejeter">Rejeter</string>