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