| /* |
| * Copyright (C) 2010 The Android Open Source Project |
| * |
| * Licensed under the Apache License, Version 2.0 (the "License"); |
| * you may not use this file except in compliance with the License. |
| * You may obtain a copy of the License at |
| * |
| * http://www.apache.org/licenses/LICENSE-2.0 |
| * |
| * Unless required by applicable law or agreed to in writing, software |
| * distributed under the License is distributed on an "AS IS" BASIS, |
| * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. |
| * See the License for the specific language governing permissions and |
| * limitations under the License. |
| */ |
| |
| package com.android.gallery3d.data; |
| |
| import android.database.Cursor; |
| |
| import com.android.gallery3d.util.GalleryUtils; |
| |
| import java.text.DateFormat; |
| import java.util.Date; |
| |
| // |
| // LocalMediaItem is an abstract class captures those common fields |
| // in LocalImage and LocalVideo. |
| // |
| public abstract class LocalMediaItem extends MediaItem { |
| |
| @SuppressWarnings("unused") |
| private static final String TAG = "LocalMediaItem"; |
| |
| // database fields |
| public int id; |
| public String caption; |
| public String mimeType; |
| public long fileSize; |
| public double latitude = INVALID_LATLNG; |
| public double longitude = INVALID_LATLNG; |
| public long dateTakenInMs; |
| public long dateAddedInSec; |
| public long dateModifiedInSec; |
| public String filePath; |
| public int bucketId; |
| public int width; |
| public int height; |
| |
| public LocalMediaItem(Path path, long version) { |
| super(path, version); |
| } |
| |
| @Override |
| public long getDateInMs() { |
| return dateTakenInMs; |
| } |
| |
| @Override |
| public String getName() { |
| return caption; |
| } |
| |
| public String getPathTile(String path) { |
| // extract file name after last slash |
| int lastSlash = path.lastIndexOf('/'); |
| if (lastSlash >= 0) { |
| lastSlash++; |
| if (lastSlash < path.length()) { |
| path = path.substring(lastSlash); |
| } |
| } |
| // truncate the file extension (if any) |
| int lastDot = path.lastIndexOf('.'); |
| if (lastDot > 0) { |
| path = path.substring(0, lastDot); |
| } |
| return path; |
| } |
| |
| @Override |
| public void getLatLong(double[] latLong) { |
| latLong[0] = latitude; |
| latLong[1] = longitude; |
| } |
| |
| abstract protected boolean updateFromCursor(Cursor cursor); |
| |
| public int getBucketId() { |
| return bucketId; |
| } |
| |
| protected void updateContent(Cursor cursor) { |
| if (updateFromCursor(cursor)) { |
| mDataVersion = nextVersionNumber(); |
| } |
| } |
| |
| @Override |
| public MediaDetails getDetails() { |
| MediaDetails details = super.getDetails(); |
| details.addDetail(MediaDetails.INDEX_PATH, filePath); |
| details.addDetail(MediaDetails.INDEX_TITLE, caption); |
| DateFormat formater = DateFormat.getDateTimeInstance(); |
| details.addDetail(MediaDetails.INDEX_DATETIME, |
| formater.format(new Date(dateModifiedInSec * 1000))); |
| details.addDetail(MediaDetails.INDEX_WIDTH, width); |
| details.addDetail(MediaDetails.INDEX_HEIGHT, height); |
| |
| if (GalleryUtils.isValidLocation(latitude, longitude)) { |
| details.addDetail(MediaDetails.INDEX_LOCATION, new double[] {latitude, longitude}); |
| } |
| if (fileSize > 0) details.addDetail(MediaDetails.INDEX_SIZE, fileSize); |
| return details; |
| } |
| |
| @Override |
| public String getMimeType() { |
| return mimeType; |
| } |
| |
| @Override |
| public long getSize() { |
| return fileSize; |
| } |
| } |