Back to project page DoomPlay.
The source code is released under:
Apache License Version 2.0, January 2004 http://www.apache.org/licenses/ TERMS AND CONDITIONS FOR USE, REPRODUC...
If you think the Android project DoomPlay listed in this page is inappropriate, such as containing malicious code/tools or violating the copyright, please email info at java2s dot com, thanks.
package com.perm.DoomPlay; /*from ww w . j a va 2 s . c om*/ /* * Copyright 2013 Vladislav Krot * * 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. * * You can contact me <DoomPlaye@gmail.com> */ import android.content.Intent; import android.os.AsyncTask; import android.os.Bundle; import android.os.Handler; import android.os.Message; import android.support.v7.view.ActionMode; import android.view.*; import android.widget.*; import com.api.Account; import com.api.AudioAlbum; import com.api.KException; import org.json.JSONException; import java.io.IOException; import java.util.ArrayList; public class VkAlbumsActivity extends AbstractVkItems { static ArrayList<AudioAlbum> albums; static int currentAlbum; private VkAlbumsAdapter adapter; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.list_vk); listView = (ListView)findViewById(R.id.listVk); linearLoading = (LinearLayout)findViewById(R.id.linearLoading); listView.setOnItemClickListener(onClickListener); listView.setOnItemLongClickListener(new AdapterView.OnItemLongClickListener() { @Override public boolean onItemLongClick(AdapterView<?> parent, View view, int position, long id) { currentAlbum = position; startSupportActionMode(callback).setTag(position); return true; } }); if(albums == null) { getAlbums(); } else { adapter = new VkAlbumsAdapter(); listView.setAdapter(adapter); } } private final ActionMode.Callback callback = new ActionMode.Callback() { @Override public boolean onCreateActionMode(ActionMode mode, Menu menu) { getMenuInflater().inflate(R.menu.action_vk_album,menu); return true; } @Override public boolean onPrepareActionMode(ActionMode mode, Menu menu){return false;} @Override public boolean onActionItemClicked(ActionMode mode, MenuItem item) { //int position = (Integer)mode.getTag(); switch (item.getItemId()) { case R.id.itemEditAlbum: { AddListDialog dialog = new AddListDialog() { @Override boolean isPlaylistExist(String playlist) { for(AudioAlbum album : albums) { if(album.title.equals(playlist)) return true; } return false; } @Override void createPlatlist(String playlist) { new AsyncTask<String,Void,Void>() { @Override protected Void doInBackground(String... params) { try { handler.sendEmptyMessage(1); MainScreenActivity.api.editAudioAlbum(params[0], albums.get(currentAlbum).album_id); albums.set(currentAlbum,new AudioAlbum(albums.get(currentAlbum).album_id,params[0])); handler.sendEmptyMessage(2); } catch (IOException e) { showException(e); handler.sendEmptyMessage(2); cancel(true); } catch (JSONException e) { showException(e); handler.sendEmptyMessage(2); cancel(true); } catch (KException e) { handleKException(e); handler.sendEmptyMessage(2); cancel(true); } return null; } @Override protected void onPostExecute(Void aVoid) { super.onPostExecute(aVoid); adapter.notifyDataSetChanged(); } }.execute(playlist) ; } }; dialog.show(getSupportFragmentManager(),"tag"); break; } case R.id.itemDeleteAlbum: { new AsyncTask<Void,Void,Void>() { @Override protected Void doInBackground(Void... params) { try { handler.sendEmptyMessage(1); MainScreenActivity.api.deleteAudioAlbum(albums.get(currentAlbum).album_id); albums.remove(currentAlbum); handler.sendEmptyMessage(2); } catch (IOException e) { showException(e); handler.sendEmptyMessage(2); cancel(true); } catch (JSONException e) { showException(e); handler.sendEmptyMessage(2); cancel(true); } catch (KException e) { handleKException(e); handler.sendEmptyMessage(2); cancel(true); } return null; } @Override protected void onPostExecute(Void aVoid) { super.onPostExecute(aVoid); adapter.notifyDataSetChanged(); } }.execute(); break; } } mode.finish(); return true; } @Override public void onDestroyActionMode(ActionMode mode) {} }; @Override public boolean onCreateOptionsMenu(Menu menu) { getMenuInflater().inflate(R.menu.bar_vk_album,menu); return true; } @Override public boolean onOptionsItemSelected(MenuItem item) { if(item.getItemId() == R.id.itemNewAlbum) { AddListDialog dialog = new AddListDialog() { @Override boolean isPlaylistExist(String playlist) { for(AudioAlbum album : albums) { if(album.title.equals(playlist)) return true; } return false; } @Override void createPlatlist(String playlist) { new AsyncTask<String,Void,Void>() { @Override protected Void doInBackground(String... params) { try { handler.sendEmptyMessage(1); albums.add(0,new AudioAlbum(MainScreenActivity.api.addAudioAlbum(params[0]),params[0])); handler.sendEmptyMessage(2); } catch (IOException e) { showException(e); handler.sendEmptyMessage(2); cancel(true); } catch (JSONException e) { showException(e); handler.sendEmptyMessage(2); cancel(true); } catch (KException e) { handleKException(e); handler.sendEmptyMessage(2); cancel(true); } return null; } @Override protected void onPostExecute(Void aVoid) { super.onPostExecute(aVoid); adapter.notifyDataSetChanged(); } }.execute(playlist) ; } }; dialog.show(getSupportFragmentManager(),"tag"); return true; } return super.onOptionsItemSelected(item); } void getAlbums() { new Thread(new Runnable() { @Override public void run() { handler.sendEmptyMessage(1); try { albums = MainScreenActivity.api.getAudioAlbums(Account.account.user_id,null, SettingActivity.getPreference("countvkall")); Serializator<AudioAlbum> factory = new Serializator<AudioAlbum>(getBaseContext(), Serializator.FileNames.Album); factory.inSerialize(albums); } catch (IOException e) { showException(e); handler.sendEmptyMessage(2); return; } catch (JSONException e) { showException(e); handler.sendEmptyMessage(2); return; } catch (KException e) { handler.sendEmptyMessage(2); handleKException(e); return; } handler.sendEmptyMessage(2); handler.sendEmptyMessage(3); } }).start(); } private final Handler handler = new Handler() { @Override public void handleMessage(Message msg) { if(msg.what == 1) { linearLoading.setVisibility(View.VISIBLE); isLoading = true; } else if(msg.what == 2) { linearLoading.setVisibility(View.GONE); isLoading = false; } else if(msg.what == 3) { adapter = new VkAlbumsAdapter(); listView.setAdapter(adapter); } } }; @Override protected void startListVkActivity(ArrayList<Audio> audios) { Intent intent = new Intent(this,ListVkActivity.class); intent.setAction(ListVkActivity.actionMyAlbums); intent.putExtra(MainScreenActivity.keyOpenInListTrack,audios); startActivity(intent); } @Override protected void onClickRefresh() { getAlbums(); } @Override protected ArrayList<Audio> getAudios(int position) throws KException,JSONException,IOException { currentAlbum = position; return MainScreenActivity.api.getAudio(null,null,albums.get(position).album_id ,SettingActivity.getPreference("countvkall")); } class VkAlbumsAdapter extends BaseAdapter { final LayoutInflater inflater; public VkAlbumsAdapter() { inflater = (LayoutInflater)getBaseContext().getSystemService(LAYOUT_INFLATER_SERVICE); } @Override public int getCount() { return albums.size(); } @Override public Object getItem(int position) { return albums.get(position); } @Override public long getItemId(int position) { return position; } @Override public View getView(int position, View convertView, ViewGroup parent) { View view = inflater.inflate(R.layout.item_vk_album,parent,false); ((TextView)view.findViewById(R.id.textGenre)).setText(albums.get(position).title); return view; } } }