fix file uploading
[pub/Android/ownCloud.git] / src / eu / alefzero / owncloud / ui / fragment / FileDetail.java
index 50f35a5..5e729ff 100644 (file)
  */\r
 package eu.alefzero.owncloud.ui.fragment;\r
 \r
-import eu.alefzero.owncloud.R;\r
-import eu.alefzero.owncloud.R.id;\r
-import eu.alefzero.owncloud.R.layout;\r
+import android.accounts.Account;\r
 import android.content.Intent;\r
+import android.database.Cursor;\r
+import android.graphics.Bitmap;\r
+import android.graphics.BitmapFactory;\r
+import android.net.Uri;\r
 import android.os.Bundle;\r
-import android.support.v4.app.Fragment;\r
-import android.util.Log;\r
 import android.view.LayoutInflater;\r
 import android.view.View;\r
+import android.view.View.OnClickListener;\r
 import android.view.ViewGroup;\r
+import android.widget.ImageView;\r
 import android.widget.TextView;\r
 import android.widget.Toast;\r
+import android.widget.VideoView;\r
+\r
+import com.actionbarsherlock.app.SherlockFragment;\r
+\r
+import eu.alefzero.owncloud.DisplayUtils;\r
+import eu.alefzero.owncloud.FileDownloader;\r
+import eu.alefzero.owncloud.R;\r
+import eu.alefzero.owncloud.db.ProviderMeta.ProviderTableMeta;\r
 \r
 /**\r
  * This Fragment is used to display the details about a file.\r
  * @author Bartek Przybylski\r
  *\r
  */\r
-public class FileDetail extends Fragment {\r
+public class FileDetail extends SherlockFragment implements OnClickListener {\r
   \r
-  public Intent mIntent;\r
+  private Intent mIntent;\r
+  private View mView;\r
   \r
   public void setStuff(Intent intent) {\r
-    setStuff(intent, getView());\r
-  }\r
-  \r
-  private void setStuff(Intent intent, View view) {\r
-    String filename = intent.getStringExtra("FILE_NAME");\r
-    String filepath = intent.getStringExtra("FILE_PATH");\r
-    setFilename(filename, view);\r
+    mIntent = intent;\r
+    setStuff(getView());\r
   }\r
   \r
-  @Override\r
-  public void onCreate(Bundle savedInstanceState) {\r
-    // TODO Auto-generated method stub\r
-    super.onCreate(savedInstanceState);\r
-  }\r
+  private void setStuff(View view) {\r
+    mView = view;\r
+    String id = mIntent.getStringExtra("FILE_ID");\r
+    Account account = mIntent.getParcelableExtra("ACCOUNT");\r
+    String account_name = account.name;\r
+    Cursor c = getActivity().managedQuery(\r
+        Uri.withAppendedPath(ProviderTableMeta.CONTENT_URI_FILE, id),\r
+        null,\r
+        ProviderTableMeta.FILE_ACCOUNT_OWNER+"=?",\r
+        new String[]{account_name},\r
+        null);\r
+    c.moveToFirst();\r
 \r
-  @Override\r
-  public void onActivityCreated(Bundle savedInstanceState) {\r
-    // TODO Auto-generated method stub\r
-    super.onActivityCreated(savedInstanceState);\r
+    // Retrieve details from DB\r
+    String filename = c.getString(c.getColumnIndex(ProviderTableMeta.FILE_NAME));\r
+    String mimetype = c.getString(c.getColumnIndex(ProviderTableMeta.FILE_CONTENT_TYPE));\r
+    String path = c.getString(c.getColumnIndex(ProviderTableMeta.FILE_STORAGE_PATH));\r
+    long filesize = c.getLong(c.getColumnIndex(ProviderTableMeta.FILE_CONTENT_LENGTH));\r
+\r
+    // set file details\r
+    setFilename(filename);\r
+    setFiletype(DisplayUtils.convertMIMEtoPrettyPrint(mimetype));\r
+    setFilesize(filesize);\r
+    \r
+    // set file preview if available and possible\r
+    View w = view.findViewById(R.id.videoView1);\r
+    w.setVisibility(View.INVISIBLE);\r
+    if (path == null) {\r
+      ImageView v = (ImageView) getView().findViewById(R.id.imageView2);\r
+      v.setImageResource(R.drawable.download);\r
+      v.setOnClickListener(this);\r
+    } else {\r
+      if (mimetype.startsWith("image/")) {\r
+        ImageView v = (ImageView) view.findViewById(R.id.imageView2);\r
+        Bitmap bmp = BitmapFactory.decodeFile(path);\r
+        v.setImageBitmap(bmp);\r
+      } else if (mimetype.startsWith("video/")) {\r
+        VideoView v = (VideoView) view.findViewById(R.id.videoView1);\r
+        v.setVisibility(View.VISIBLE);\r
+        v.setVideoPath(path);\r
+        v.start();\r
+      }\r
+    }\r
   }\r
 \r
   @Override\r
   public View onCreateView(LayoutInflater inflater, ViewGroup container,\r
       Bundle savedInstanceState) {\r
-    View v = inflater.inflate(R.layout.file_details, container, false);\r
+    View v = null;\r
     \r
-    if (getActivity().getIntent() != null) setStuff(getActivity().getIntent(), v);\r
+    if (getActivity().getIntent() != null && getActivity().getIntent().getStringExtra("FILE_ID") != null) {\r
+       v = inflater.inflate(R.layout.file_details, container, false);\r
+       mIntent = getActivity().getIntent();\r
+       setStuff(v);\r
+    } else {\r
+       v = inflater.inflate(R.layout.file_details_empty, container, false);\r
+    }\r
     return v;\r
   }\r
 \r
-  private void setFilename(String filename, View target_view) {\r
-    TextView tv = (TextView) target_view.findViewById(R.id.textView1);\r
+  @Override\r
+  public View getView() {\r
+    return mView == null ? super.getView() : mView;\r
+  };\r
+  \r
+  public void setFilename(String filename) {\r
+    TextView tv = (TextView) getView().findViewById(R.id.textView1);\r
     if (tv != null) tv.setText(filename);\r
   }\r
   \r
-  public void setFilename(String filename) {\r
-    setFilename(filename, getView());\r
+  public void setFiletype(String mimetype) {\r
+    TextView tv = (TextView) getView().findViewById(R.id.textView2);\r
+    if (tv != null) tv.setText(mimetype);\r
+  }\r
+  \r
+  public void setFilesize(long filesize) {\r
+    TextView tv = (TextView) getView().findViewById(R.id.textView3);\r
+    if (tv != null) tv.setText(DisplayUtils.bitsToHumanReadable(filesize));\r
   }\r
+\r
+  @Override\r
+  public void onClick(View v) {\r
+    Toast.makeText(getActivity(), "Downloading", Toast.LENGTH_LONG).show();\r
+    Intent i = new Intent(getActivity(), FileDownloader.class);\r
+    i.putExtra(FileDownloader.EXTRA_ACCOUNT, mIntent.getParcelableExtra("ACCOUNT"));\r
+    i.putExtra(FileDownloader.EXTRA_FILE_PATH, mIntent.getStringExtra("FULL_PATH"));\r
+    getActivity().startService(i);\r
+  }\r
+  \r
 }\r