/*
* Copyright (C) 2014 Saravan Pantham
*
* 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.aniruddhc.acemusic.player.FoldersFragment;
import android.content.Context;
import android.view.LayoutInflater;
import android.view.MenuItem;
import android.view.View;
import android.view.ViewGroup;
import android.widget.ArrayAdapter;
import android.widget.ImageButton;
import android.widget.ImageView;
import android.widget.ListView;
import android.widget.PopupMenu;
import android.widget.TextView;
import com.aniruddhc.acemusic.player.Helpers.TypefaceHelper;
import com.aniruddhc.acemusic.player.Helpers.UIElementsHelper;
import com.aniruddhc.acemusic.player.R;
import com.aniruddhc.acemusic.player.Utils.Common;
import java.io.File;
import java.util.List;
public class FoldersListViewAdapter extends ArrayAdapter<String> {
private Context mContext;
private Common mApp;
private FilesFoldersFragment mFragment;
private int mItemType;
private String mItemPath;
private int mItemPosition;
private List<String> mFileFolderNameList;
private List<Integer> mFileFolderTypeList;
private List<String> mFileFolderSizeList;
private List<String> mFileFolderPathsList;
public FoldersListViewAdapter(Context context,
FilesFoldersFragment fragment,
List<String> nameList,
List<Integer> fileFolderTypeList,
List<String> sizeList,
List<String> fileFolderPathsList) {
super(context, -1, nameList);
mContext = context;
mApp = (Common) mContext.getApplicationContext();
mFragment = fragment;
mFileFolderNameList = nameList;
mFileFolderTypeList = fileFolderTypeList;
mFileFolderSizeList = sizeList;
mFileFolderPathsList = fileFolderPathsList;
}
public View getView(int position, View convertView, ViewGroup parent) {
FoldersViewHolder holder = null;
if (convertView == null) {
convertView = LayoutInflater.from(mContext).inflate(R.layout.list_view_item, parent, false);
ListView.LayoutParams params = (ListView.LayoutParams) convertView.getLayoutParams();
params.height = (int) mApp.convertDpToPixels(72.0f, mContext);
convertView.setLayoutParams(params);
holder = new FoldersViewHolder();
holder.fileFolderIcon = (ImageView) convertView.findViewById(R.id.listViewLeftIcon);
holder.fileFolderSizeText = (TextView) convertView.findViewById(R.id.listViewSubText);
holder.fileFolderNameText = (TextView) convertView.findViewById(R.id.listViewTitleText);
holder.overflowButton = (ImageButton) convertView.findViewById(R.id.listViewOverflow);
holder.rightSubText = (TextView) convertView.findViewById(R.id.listViewRightSubText);
holder.fileFolderIcon.setScaleX(0.5f);
holder.fileFolderIcon.setScaleY(0.55f);
holder.rightSubText.setVisibility(View.INVISIBLE);
holder.fileFolderNameText.setTextColor(UIElementsHelper.getThemeBasedTextColor(mContext));
holder.fileFolderNameText.setTypeface(TypefaceHelper.getTypeface(mContext, "Roboto-Regular"));
holder.fileFolderSizeText.setTextColor(UIElementsHelper.getSmallTextColor(mContext));
holder.fileFolderSizeText.setTypeface(TypefaceHelper.getTypeface(mContext, "Roboto-Regular"));
holder.overflowButton.setImageResource(UIElementsHelper.getIcon(mContext, "ic_action_overflow"));
holder.overflowButton.setFocusable(false);
holder.overflowButton.setFocusableInTouchMode(false);
holder.overflowButton.setOnClickListener(overflowClickListener);
convertView.setTag(holder);
} else {
holder = (FoldersViewHolder) convertView.getTag();
}
holder.fileFolderNameText.setText(mFileFolderNameList.get(position));
holder.fileFolderSizeText.setText(mFileFolderSizeList.get(position));
//Set the icon based on whether the item is a folder or a file.
if (mFileFolderTypeList.get(position)==FilesFoldersFragment.FOLDER) {
holder.fileFolderIcon.setImageResource(R.drawable.icon_folderblue);
convertView.setTag(R.string.folder_list_item_type, FilesFoldersFragment.FOLDER);
convertView.setTag(R.string.folder_path, mFileFolderPathsList.get(position));
convertView.setTag(R.string.position, position);
} else if (mFileFolderTypeList.get(position)==FilesFoldersFragment.AUDIO_FILE) {
holder.fileFolderIcon.setImageResource(R.drawable.icon_mp3);
convertView.setTag(R.string.folder_list_item_type, FilesFoldersFragment.AUDIO_FILE);
convertView.setTag(R.string.folder_path, mFileFolderPathsList.get(position));
convertView.setTag(R.string.position, position);
} else if (mFileFolderTypeList.get(position)==FilesFoldersFragment.PICTURE_FILE) {
holder.fileFolderIcon.setImageResource(R.drawable.icon_png);
convertView.setTag(R.string.folder_list_item_type, FilesFoldersFragment.PICTURE_FILE);
convertView.setTag(R.string.folder_path, mFileFolderPathsList.get(position));
convertView.setTag(R.string.position, position);
} else if (mFileFolderTypeList.get(position)==FilesFoldersFragment.VIDEO_FILE) {
holder.fileFolderIcon.setImageResource(R.drawable.icon_avi);
convertView.setTag(R.string.folder_list_item_type, FilesFoldersFragment.VIDEO_FILE);
convertView.setTag(R.string.folder_path, mFileFolderPathsList.get(position));
convertView.setTag(R.string.position, position);
} else {
holder.fileFolderIcon.setImageResource(R.drawable.icon_default);
convertView.setTag(R.string.folder_list_item_type, FilesFoldersFragment.FILE);
convertView.setTag(R.string.folder_path, mFileFolderPathsList.get(position));
convertView.setTag(R.string.position, position);
}
return convertView;
}
/**
* Click listener for overflow button.
*/
private View.OnClickListener overflowClickListener = new View.OnClickListener() {
@Override
public void onClick(View v) {
PopupMenu menu = new PopupMenu(mContext, v);
menu.inflate(R.menu.file_folder_overflow_menu);
menu.setOnMenuItemClickListener(popupMenuItemClickListener);
mItemType = (Integer) ((View) v.getParent()).getTag(R.string.folder_list_item_type);
mItemPath = (String) ((View) v.getParent()).getTag(R.string.folder_path);
mItemPosition = (Integer) ((View) v.getParent()).getTag(R.string.position);
menu.show();
}
};
/**
* Menu item click listener for the pop up menu.
*/
private PopupMenu.OnMenuItemClickListener popupMenuItemClickListener = new PopupMenu.OnMenuItemClickListener() {
@Override
public boolean onMenuItemClick(MenuItem item) {
switch(item.getItemId()) {
case R.id.play:
int fileIndex;
String folderPath;
if (mItemType==FilesFoldersFragment.AUDIO_FILE) {
fileIndex = 0;
folderPath = FilesFoldersFragment.currentDir;
for (int i=0; i < mItemPosition; i++) {
if (mFileFolderTypeList.get(i)==FilesFoldersFragment.AUDIO_FILE)
fileIndex++;
}
} else {
fileIndex = 0;
folderPath = mItemPath;
}
mFragment.play(mItemType, fileIndex, folderPath);
break;
case R.id.rename:
mFragment.rename(mItemPath);
break;
case R.id.copy:
mFragment.copyMove(mItemPath, false);
break;
case R.id.move:
mFragment.copyMove(mItemPath, true);
break;
case R.id.delete:
mFragment.deleteFile(new File(mItemPath));
break;
}
return false;
}
};
static class FoldersViewHolder {
public TextView fileFolderNameText;
public TextView fileFolderSizeText;
public ImageView fileFolderIcon;
public ImageButton overflowButton;
public TextView rightSubText;
}
}