package com.luorrak.ouroboros.deepzoom;
import android.database.Cursor;
import android.os.Build;
import android.os.Bundle;
import android.support.v4.app.Fragment;
import android.support.v4.app.FragmentStatePagerAdapter;
import android.support.v4.view.PagerAdapter;
import android.support.v7.app.AppCompatActivity;
import android.support.v7.widget.Toolbar;
import android.view.Menu;
import android.view.MenuItem;
import com.koushikdutta.ion.Ion;
import com.luorrak.ouroboros.R;
import com.luorrak.ouroboros.util.DbContract;
import com.luorrak.ouroboros.util.InfiniteDbHelper;
import com.luorrak.ouroboros.util.Media;
import com.luorrak.ouroboros.util.SettingsHelper;
import com.luorrak.ouroboros.util.Util;
import java.util.ArrayList;
import java.util.Collection;
/**
* Ouroboros - An 8chan browser
* Copyright (C) 2015 Luorrak
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
public class DeepZoomActivity extends AppCompatActivity{
private ArrayList<Media> mediaList;
private String fileName;
private String resto;
private String boardName;
private InfiniteDbHelper infiniteDbHelper;
private DeepzoomViewPager mPager;
private PagerAdapter mPagerAdapter;
@Override
public void onCreate(Bundle savedInstanceState) {
Util.onActivityCreateSetTheme(this, SettingsHelper.getTheme(this));
// TODO: 2/12/16 figure out something better to do here besides making it black
if (Build.VERSION.SDK_INT >= 21){
getWindow().setStatusBarColor(getResources().getColor(R.color.md_black_1000));
}
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_deepzoom);
Ion.getDefault(getApplicationContext()).getCache().setMaxSize(150 * 1024 * 1024);
infiniteDbHelper = new InfiniteDbHelper(getApplicationContext());
Toolbar toolbar = (Toolbar) findViewById(R.id.app_bar);
setSupportActionBar(toolbar);
getSupportActionBar().setHomeButtonEnabled(true);
getSupportActionBar().setDisplayHomeAsUpEnabled(true);
fileName = getIntent().getStringExtra(Util.TIM);
resto = getIntent().getStringExtra(Util.INTENT_THREAD_NO);
boardName = getIntent().getStringExtra(Util.INTENT_BOARD_NAME);
newMediaListInstance(infiniteDbHelper, resto);
int selectedMediaItem = findMediaItemIndex(fileName);
mPager = (DeepzoomViewPager) findViewById(R.id.pager);
mPagerAdapter = new ScreenSlidePagerAdapter(getSupportFragmentManager());
mPager.setAdapter(mPagerAdapter);
mPager.setCurrentItem(selectedMediaItem);
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
getMenuInflater().inflate(R.menu.menu_catalog, menu);
return true;
}
@Override
public boolean onOptionsItemSelected(MenuItem item) {
int id = item.getItemId();
if (id == android.R.id.home){
this.onBackPressed();
return true;
}
return super.onOptionsItemSelected(item);
}
private class ScreenSlidePagerAdapter extends FragmentStatePagerAdapter {
public ScreenSlidePagerAdapter(android.support.v4.app.FragmentManager fm) {
super(fm);
}
@Override
public Fragment getItem(int position) {
return new DeepZoomFragment().newInstance(boardName, resto, position);
}
@Override
public int getCount() {
return mediaList.size();
}
}
private int findMediaItemIndex(String fileName){
for (int i = 0; i < mediaList.size(); i++){
if (mediaList.get(i).fileName.equals(fileName)){
return i;
}
}
return 0;
}
public void newMediaListInstance(InfiniteDbHelper infiniteDbHelper, String resto){
if (mediaList == null){
mediaList = new ArrayList<Media>();
Cursor cursor = infiniteDbHelper.getThreadCursor(resto);
do {
byte[] serializedPostMedia = cursor.getBlob(cursor.getColumnIndex(DbContract.ThreadEntry.COLUMN_THREAD_MEDIA_FILES));
if(serializedPostMedia != null){
mediaList.addAll((Collection<? extends Media>) Util.deserializeObject(serializedPostMedia));
}
} while (cursor.moveToNext());
cursor.close();
}
}
public Media getMediaItem(int position){
return mediaList.get(position);
}
}