added translations

This commit is contained in:
Vladislav Khorev 2015-06-27 15:09:56 +00:00
parent b648779ba3
commit 4e80964196
23 changed files with 956 additions and 111 deletions

View File

@ -8,11 +8,14 @@
android:orientation="vertical"
android:showDividers="middle" >
<ImageView
<fishrungames.bashgid.DynamicImageView
android:id="@+id/imageView"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center_horizontal" />
android:layout_gravity="center_horizontal"
android:adjustViewBounds="true"
android:cropToPadding="false"
android:scaleType="centerCrop" />
<TextView
android:id="@+id/dateTextView"

View File

@ -7,14 +7,7 @@
android:orientation="vertical"
tools:context="fishrungames.bashgid.MainPageFragment" >
<ProgressBar
android:id="@+id/progressBar"
style="?android:attr/progressBarStyleLarge"
android:layout_width="100dp"
android:layout_height="100dp"
android:layout_gravity="center_horizontal"
android:indeterminate="true" />
<ListView
android:id="@+id/listView"
android:layout_width="match_parent"
@ -27,4 +20,13 @@
</ListView>
<ProgressBar
android:id="@+id/progressBar"
style="?android:attr/progressBarStyleLarge"
android:layout_width="100dp"
android:layout_height="100dp"
android:layout_gravity="center_horizontal"
android:indeterminate="true" />
</LinearLayout>

View File

@ -0,0 +1,22 @@
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="@color/bkg1"
android:orientation="vertical"
android:paddingLeft="20dp"
android:paddingRight="20dp"
tools:context="fishrungames.bashgid.MainPageFragment" >
<TextView
android:id="@+id/dateTextView"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center_horizontal"
android:layout_margin="8dp"
android:text="@string/journal_open_map"
android:textSize="24sp"
android:textStyle="bold" />
</LinearLayout>

View File

@ -23,6 +23,8 @@
<string name="news_header">Новости</string>
<string name="news_load_more">Загрузить больше</string>
<string name="news_content_description">Картинка к новости</string>
@ -51,5 +53,15 @@
<string name="read">Читать</string>
<string name="price">Стоимость: </string>
<string name="rub">Руб.</string>
<string name="journal_open_map">Показать на карте</string>
<string name="map_is_loading">Карта загружается...</string>
<string name="map_is_loaded">Карта загружена</string>
<string name="news_are_loading">Новости загружаются...</string>
<string name="dialog_open">Открыть</string>
<string name="dialog_cancel">Отмена</string>
</resources>

View File

@ -20,6 +20,7 @@
<string name="news_header">头条新闻</string>
<string name="news_load_more">Load more</string>
<string name="news_content_description">新闻内容描述</string>
@ -41,5 +42,18 @@
<string name="go_to_website">去现场</string>
<string name="buy">Buy</string>
<string name="read">Read</string>
<string name="price">Price: </string>
<string name="rub">RUB</string>
<string name="journal_open_map">Show on map</string>
<string name="map_is_loading">Map is loading...</string>
<string name="map_is_loaded">Map is loaded</string>
<string name="news_are_loading">News are loading...</string>
<string name="dialog_open">Open</string>
<string name="dialog_cancel">Cancel</string>
</resources>

View File

@ -54,6 +54,15 @@
<string name="read">Read</string>
<string name="price">Price: </string>
<string name="rub">RUB</string>
<string name="journal_open_map">Show on map</string>
<string name="map_is_loading">Map is loading...</string>
<string name="map_is_loaded">Map is loaded</string>
<string name="news_are_loading">News are loading...</string>
<string name="dialog_open">Open</string>
<string name="dialog_cancel">Cancel</string>
</resources>

View File

@ -6,6 +6,7 @@ import it.sephiroth.android.library.widget.HListView;
import fishrungames.bashgid.AlbumListFragment.DatabaseGetAlbumListTask;
import fishrungames.bashgid.MainPageFragment.ListAdapter;
import fishrungames.bashgid.core.AlbumManager.AlbumShortData;
import fishrungames.bashgid.core.DatabaseGetJournalListTask;
import fishrungames.bashgid.core.JournalManager.JournalSemiFullData;
import android.annotation.SuppressLint;
import android.content.Context;
@ -33,6 +34,8 @@ public class CatalogFragment extends Fragment
ArrayList<JournalSemiFullData> journalList;
DatabaseGetJournalListTask databaseGetJournalListTask = null;
public CatalogFragment()
{
RestoreJournalList();
@ -62,19 +65,34 @@ public class CatalogFragment extends Fragment
return rootView;
}
@Override
public void onDestroyView ()
{
if (databaseGetJournalListTask != null)
{
databaseGetJournalListTask.cancel(false);
databaseGetJournalListTask = null;
}
super.onDestroyView();
}
public void RestoreJournalList()
{
journalList = new ArrayList<JournalSemiFullData>();
DatabaseGetJournalListTask task = new DatabaseGetJournalListTask();
databaseGetJournalListTask = new DatabaseGetJournalListTask();
task.mHandler = MainActivity.getInstance().mHandler;
databaseGetJournalListTask.mHandler = MainActivity.getInstance().mHandler;
task.execute();
databaseGetJournalListTask.execute();
}
public void SetJournalList(ArrayList<JournalSemiFullData> journalList)
{
databaseGetJournalListTask = null;
progressBar.setVisibility(View.GONE);
this.journalList = journalList;
@ -82,36 +100,6 @@ public class CatalogFragment extends Fragment
listAdapter.notifyDataSetChanged();
}
public static class DatabaseGetJournalListTask extends AsyncTask<String, Integer, Long>
{
ArrayList<JournalSemiFullData> journalList;
public Handler mHandler;
protected Long doInBackground(String... queryArr)
{
journalList = MainActivity.getInstance().journalDataSource.GetAllJournalList();
return (long) 0;
}
protected void onProgressUpdate(Integer... progress)
{
Message completeMessage = mHandler.obtainMessage(MainActivity.DATABASE_GET_JOURNAL_LIST_STATE_UPDATE, journalList);
completeMessage.sendToTarget();
}
protected void onPostExecute(Long result)
{
Message completeMessage = mHandler.obtainMessage(MainActivity.DATABASE_GET_JOURNAL_LIST_STATE_FINISHED, journalList);
completeMessage.sendToTarget();
}
}
public class ListAdapter extends BaseAdapter {

View File

@ -3,10 +3,7 @@ package fishrungames.bashgid;
import android.annotation.SuppressLint;
import android.content.Context;
import android.os.AsyncTask;
import android.os.Bundle;
import android.os.Handler;
import android.os.Message;
import android.support.v4.app.Fragment;
import android.view.LayoutInflater;
import android.view.View;
@ -21,9 +18,7 @@ import android.widget.ListView;
import android.widget.ProgressBar;
import android.widget.TextView;
import fishrungames.bashgid.core.AlbumManager;
import fishrungames.bashgid.core.DatabaseGetAlbumTask;
import fishrungames.bashgid.core.AlbumManager.AlbumFullData;
import fishrungames.bashgid.core.DatabaseGetJournalTask;
import fishrungames.bashgid.core.JournalManager;
import fishrungames.bashgid.core.JournalManager.JournalSemiFullData;
@ -38,6 +33,8 @@ public class JournalFragment extends Fragment
ListAdapter listAdapter;
ProgressBar progressBar;
DatabaseGetJournalTask databaseGetJournalTask = null;
public JournalFragment()
{
journal = null;
@ -77,10 +74,15 @@ public class JournalFragment extends Fragment
progressBar.setVisibility(View.VISIBLE);
ListView listView = (ListView) rootView.findViewById(R.id.listView);
View header = inflater.inflate(R.layout.journal_page_header, null);
listView.addHeaderView(header);
listAdapter = new ListAdapter(getActivity());
ListView listView = (ListView) rootView.findViewById(R.id.listView);
listView.setAdapter(listAdapter);
@ -89,39 +91,66 @@ public class JournalFragment extends Fragment
@Override
public void onItemClick(AdapterView<?> parent, View view, int position, long id)
{
if (journalName.equals("news"))
if (position == 0)
{
MainActivity.getInstance().OpenNewsRecordScreen(journal.articleArr.get(position).name, MainActivity.TAG_FROM_NEWSLISTFRAGMENT_TO_NEWSRECORDFRAGMENT);
MainActivity.getInstance().OpenMapScreen(journalName);
}
else
{
MainActivity.getInstance().OpenArticleScreen(journal.articleArr.get(position).name, MainActivity.TAG_FROM_NEWSLISTFRAGMENT_TO_NEWSRECORDFRAGMENT);
if (journalName.equals("news"))
{
MainActivity.getInstance().OpenNewsRecordScreen(journal.articleArr.get(position-1).name, MainActivity.TAG_FROM_NEWSLISTFRAGMENT_TO_NEWSRECORDFRAGMENT);
}
else
{
MainActivity.getInstance().OpenArticleScreen(journal.articleArr.get(position-1).name, MainActivity.TAG_FROM_NEWSLISTFRAGMENT_TO_NEWSRECORDFRAGMENT);
}
}
}
});
return rootView;
}
@Override
public void onDestroyView ()
{
if (databaseGetJournalTask != null)
{
databaseGetJournalTask.cancel(false);
databaseGetJournalTask = null;
}
super.onDestroyView();
}
void RestoreJournal()
{
if (databaseGetJournalTask != null)
{
databaseGetJournalTask.cancel(false);
databaseGetJournalTask = null;
}
journal = JournalManager.CreateEmptyJournal();
DatabaseGetJournalTask task = new DatabaseGetJournalTask();
databaseGetJournalTask = new DatabaseGetJournalTask();
task.mHandler = MainActivity.getInstance().mHandler;
databaseGetJournalTask.mHandler = MainActivity.getInstance().mHandler;
Bundle bundle = new Bundle();
bundle.putString("journalName", journalName);
task.execute(bundle);
databaseGetJournalTask.execute(bundle);
}
public void SetJournal(JournalSemiFullData journal)
{
databaseGetJournalTask = null;
progressBar.setVisibility(View.GONE);

View File

@ -72,7 +72,6 @@ public class MainActivity extends ActionBarActivity implements NavigationDrawerF
public static final String TAG_FROM_CATALOGFRAGMENT_TO_ARTICLEFRAGMENT = "TAG_FROM_CATALOGFRAGMENT_TO_ARTICLEFRAGMENT";
public static final String TAG_FROM_CATALOGFRAGMENT_TO_JOURNALFRAGMENT = "TAG_FROM_CATALOGFRAGMENT_TO_JOURNALFRAGMENT";
@ -263,7 +262,7 @@ public class MainActivity extends ActionBarActivity implements NavigationDrawerF
};
/*
albumDataSource.CreateNewAlbum(new AlbumRecordData("TEST", "Vk Photos", "Wow"));
@ -343,7 +342,7 @@ public class MainActivity extends ActionBarActivity implements NavigationDrawerF
translationDataSource.CreateNewTranslation(new TranslationRecordData("Wow 2 photos", "Wow 2 photos", "Вау 2 фото", "哇2张照片"));
translationDataSource.CreateNewTranslation(new TranslationRecordData("Rickroll", "Rickroll", "Рикролл", "笑话"));
*/
DownloadDatabase();
}
@ -450,12 +449,12 @@ public class MainActivity extends ActionBarActivity implements NavigationDrawerF
{
if (mainPageFragment != null)
{
mainPageFragment.RefreshJournal();
mainPageFragment.RefreshAdapter();
}
if (newsListFragment != null)
{
newsListFragment.RefreshJournal();
newsListFragment.RefreshAdapter();
}
}
@ -570,9 +569,16 @@ public class MainActivity extends ActionBarActivity implements NavigationDrawerF
{
catalogFragment.SetJournalList(journalList);
}
if (mainPageFragment != null)
{
mainPageFragment.SetJournalList(journalList);
}
}
public void UpdateOnArticleSearchPerformed(ArrayList<ArticleShortData> articleArr)
{

View File

@ -4,14 +4,12 @@ import java.util.ArrayList;
import fishrungames.networkutils.ImageManager;
import fishrungames.bashgid.core.ArticleManager.ArticleRecordData;
import fishrungames.bashgid.core.ArticleManager.ArticleShortData;
import fishrungames.bashgid.core.DatabaseGetJournalListTask;
import fishrungames.bashgid.core.DatabaseGetJournalTask;
import fishrungames.bashgid.core.JournalManager;
import fishrungames.bashgid.core.NewsManager;
import fishrungames.bashgid.core.JournalManager.JournalSemiFullData;
import fishrungames.bashgid.core.NewsManager.NewsRecord;
import android.annotation.SuppressLint;
import android.content.Context;
@ -33,10 +31,7 @@ import it.sephiroth.android.library.widget.HListView;
public class MainPageFragment extends Fragment {
String [] teaserHeaderArray = { "Разное"};
int[] varietyContentIdArray = { 1, 2, 3, 4 };
ArrayList<JournalSemiFullData> journalList = new ArrayList<JournalSemiFullData>();
ListView listView;
ListAdapter listAdapter;
@ -44,17 +39,28 @@ public class MainPageFragment extends Fragment {
ProgressBar progressBar;
JournalSemiFullData newsJournal;
DatabaseGetJournalTask databaseGetJournalTask = null;
DatabaseGetJournalListTask databaseGetJournalListTask = null;
public MainPageFragment()
{
}
@SuppressLint("InflateParams")
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
journalList.clear();
RestoreJournalList();
View rootView = inflater.inflate(R.layout.fragment_main_page, container, false);
listView = (ListView) rootView.findViewById(R.id.listView);
listAdapter = new ListAdapter(getActivity());
header = inflater.inflate(R.layout.main_page_header, null);
RestoreJournal();
@ -96,6 +102,24 @@ public class MainPageFragment extends Fragment {
return rootView;
}
@Override
public void onDestroyView ()
{
if (databaseGetJournalTask != null)
{
databaseGetJournalTask.cancel(false);
databaseGetJournalTask = null;
}
if (databaseGetJournalListTask != null)
{
databaseGetJournalListTask.cancel(false);
databaseGetJournalListTask = null;
}
super.onDestroyView();
}
void RestoreJournal()
@ -107,9 +131,14 @@ public class MainPageFragment extends Fragment {
void RefreshJournal()
{
DatabaseGetJournalTask task = new DatabaseGetJournalTask();
if (databaseGetJournalTask != null)
{
databaseGetJournalTask.cancel(false);
}
databaseGetJournalTask = new DatabaseGetJournalTask();
task.mHandler = MainActivity.getInstance().mHandler;
databaseGetJournalTask.mHandler = MainActivity.getInstance().mHandler;
Bundle bundle = new Bundle();
@ -117,11 +146,13 @@ public class MainPageFragment extends Fragment {
bundle.putInt("count", 3);
task.execute(bundle);
databaseGetJournalTask.execute(bundle);
}
public void SetJournal(JournalSemiFullData journal)
{
databaseGetJournalTask = null;
//Xperimental
if (journal != null)
{
@ -191,6 +222,38 @@ public class MainPageFragment extends Fragment {
}
public void RefreshAdapter()
{
listAdapter.notifyDataSetChanged();
}
public void RestoreJournalList()
{
journalList = new ArrayList<JournalSemiFullData>();
if (databaseGetJournalListTask != null)
{
databaseGetJournalListTask.cancel(false);
}
databaseGetJournalListTask = new DatabaseGetJournalListTask();
databaseGetJournalListTask.mHandler = MainActivity.getInstance().mHandler;
databaseGetJournalListTask.execute("featured");
}
public void SetJournalList(ArrayList<JournalSemiFullData> journalList)
{
databaseGetJournalListTask = null;
progressBar.setVisibility(View.GONE);
this.journalList = journalList;
listAdapter.notifyDataSetChanged();
}
public class ListAdapter extends BaseAdapter {
private Context mContext;
@ -200,7 +263,7 @@ public class MainPageFragment extends Fragment {
}
public int getCount() {
return teaserHeaderArray.length;
return journalList.size();
}
public Object getItem(int position) {
@ -213,7 +276,7 @@ public class MainPageFragment extends Fragment {
// create a new ImageView for each item referenced by the Adapter
@SuppressLint("InflateParams")
public View getView(int position, View convertView, ViewGroup parent) {
public View getView(final int position, View convertView, ViewGroup parent) {
View view;
@ -227,24 +290,40 @@ public class MainPageFragment extends Fragment {
}
TextView textView = (TextView) view.findViewById(R.id.dateTextView);
TextView descriptionTextView = (TextView) view.findViewById(R.id.descriptionTextView);
Button button = (Button) view.findViewById(R.id.button);
HListView hListView = (HListView) view.findViewById(R.id.hListView);
hListView.setAdapter(new MainPageHListViewAdapters.SimpleElementAdapter(getActivity()));
hListView.setAdapter(new MainPageHListViewAdapters.JournalElementAdapter(getActivity(), journalList.get(position)));
textView.setText(teaserHeaderArray[position]);
textView.setText(journalList.get(position).title);
descriptionTextView.setText(journalList.get(position).description);
button.setText(R.string.see_all);
button.setOnClickListener(new OnClickListener()
{
@Override
public void onClick(View v)
{
if (databaseGetJournalTask != null)
{
databaseGetJournalTask.cancel(false);
}
MainActivity.getInstance().OpenJournalScreen(journalList.get(position).name, MainActivity.TAG_TO_MAINFRAGMENT);
}
});
return view;
}
}
public static class NewsButtonOnClickListener implements OnClickListener
public class NewsButtonOnClickListener implements OnClickListener
{
String articleName;
@ -257,6 +336,7 @@ public class MainPageFragment extends Fragment {
@Override
public void onClick(View v)
{
databaseGetJournalTask.cancel(false);
MainActivity.getInstance().OpenNewsRecordScreen(articleName, MainActivity.TAG_FROM_MAINFRAGMENT_TO_NEWSRECORDFRAGMENT);
}

View File

@ -46,6 +46,8 @@ public class NewsListFragment extends Fragment
TextView footerTextView;
DatabaseGetJournalTask databaseGetJournalTask = null;
@SuppressLint("InflateParams") @Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
@ -83,7 +85,7 @@ public class NewsListFragment extends Fragment
//Add position + 1, because first element of list is always title
if (position == journal.articleArr.size() + 1)
{
footerTextView.setText("Loading...");
footerTextView.setText(R.string.news_are_loading);
LoadMoreNews();
}
else if (position > 0)
@ -99,6 +101,24 @@ public class NewsListFragment extends Fragment
return rootView;
}
@Override
public void onDestroyView ()
{
if (databaseGetJournalTask != null)
{
databaseGetJournalTask.cancel(false);
databaseGetJournalTask = null;
}
super.onDestroyView();
}
public void RefreshAdapter()
{
listAdapter.notifyDataSetChanged();
}
void RestoreJournal()
{
journal = JournalManager.CreateEmptyJournal();
@ -108,9 +128,9 @@ public class NewsListFragment extends Fragment
void RefreshJournal()
{
DatabaseGetJournalTask task = new DatabaseGetJournalTask();
databaseGetJournalTask = new DatabaseGetJournalTask();
task.mHandler = MainActivity.getInstance().mHandler;
databaseGetJournalTask.mHandler = MainActivity.getInstance().mHandler;
Bundle bundle = new Bundle();
@ -118,14 +138,19 @@ public class NewsListFragment extends Fragment
bundle.putInt("count", 20);
task.execute(bundle);
databaseGetJournalTask.execute(bundle);
}
void LoadMoreNews()
{
DatabaseGetJournalTask task = new DatabaseGetJournalTask();
if (databaseGetJournalTask != null)
{
databaseGetJournalTask.cancel(false);
}
databaseGetJournalTask = new DatabaseGetJournalTask();
task.mHandler = MainActivity.getInstance().mHandler;
databaseGetJournalTask.mHandler = MainActivity.getInstance().mHandler;
Bundle bundle = new Bundle();
@ -135,7 +160,7 @@ public class NewsListFragment extends Fragment
bundle.putInt("count", 10);
task.execute(bundle);
databaseGetJournalTask.execute(bundle);
}
public void SetJournal(JournalSemiFullData journal)
@ -155,9 +180,7 @@ public class NewsListFragment extends Fragment
//this.journal.previewImageArr.addAll(journal.previewImageArr);
footerTextView.setText("Load more");
footerTextView.setText(R.string.news_load_more);
listAdapter.notifyDataSetChanged();

View File

@ -34,12 +34,10 @@ import fishrungames.bashgid.core.ArticleManager.ArticleFullData;
import fishrungames.bashgid.core.ArticleManager.ArticleRecordData;
import fishrungames.bashgid.core.DatabaseGetArticleTask;
import fishrungames.bashgid.core.DatabaseGetJournalTask;
import fishrungames.bashgid.core.JournalManager;
import fishrungames.bashgid.core.LocationHolder;
import fishrungames.bashgid.core.JournalManager.JournalSemiFullData;
import fishrungames.networkutils.ImageManager;
public class OsmMapHolderFragment extends Fragment
{
@ -101,15 +99,17 @@ public class OsmMapHolderFragment extends Fragment
dialog.setView(image);
dialog.setPositiveButton("Open", new DialogInterface.OnClickListener() {
dialog.setPositiveButton(R.string.dialog_open, new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int id) {
MainActivity.getInstance().SetLastMapFilterName(journalName);
MainActivity.getInstance().OpenArticleScreen(mArticles.get(index), MainActivity.TAG_FROM_MAPFRAGMENT_TO_ARTICLEFRAGMENT);
}
});
dialog.setNegativeButton("Cancel", new DialogInterface.OnClickListener() {
dialog.setNegativeButton(R.string.dialog_cancel, new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int id) {
dialog.cancel();
}
@ -234,11 +234,11 @@ public class OsmMapHolderFragment extends Fragment
if ((filterType == 0 && journal == null) || (filterType == 1 && article == null))
{
textView.setText("Loading map...");
textView.setText(R.string.map_is_loading);
}
else
{
textView.setText("Map is loaded");
textView.setText(R.string.map_is_loaded);
}
mapView = (MapView) rootView.findViewById(R.id.mapview);
@ -308,7 +308,7 @@ public class OsmMapHolderFragment extends Fragment
{
filterType = 0;
textView.setText("Map is loaded");
textView.setText(R.string.map_is_loaded);
this.journal = journal;
@ -320,7 +320,7 @@ public class OsmMapHolderFragment extends Fragment
{
filterType = 1;
textView.setText("Map is loaded");
textView.setText(R.string.map_is_loaded);
this.article = article;

View File

@ -68,10 +68,12 @@ public class PhotoFragmentAdapter extends PagerAdapter {
return viewLayout;
}
@Override
public void destroyItem(ViewGroup container, int position, Object object) {
((ViewPager) container).removeView((LinearLayout) object);
public void destroyItem(View collection, int position, Object o) {
View view = (View)o;
((ViewPager) collection).removeView(view);
view = null;
}
}

View File

@ -32,6 +32,7 @@ import fishrungames.bashgid.core.ArticleManager.ArticleRecordData;
import fishrungames.bashgid.core.ChannelManager.ChannelRecordData;
import fishrungames.bashgid.core.JournalManager.JournalRecordData;
import fishrungames.bashgid.core.PhotoManager.PhotoRecordData;
import fishrungames.bashgid.core.TranslationManager.TranslationRecordData;
import fishrungames.bashgid.core.VideoManager.VideoRecordData;
public class DatabaseDownloadTask extends AsyncTask<Bundle, Integer, Long>
@ -41,6 +42,7 @@ public class DatabaseDownloadTask extends AsyncTask<Bundle, Integer, Long>
protected Long doInBackground(Bundle... queryArr)
{
/*
ParseJsonPhoto(getJsonFromUrl("http://192.168.0.72/bashgid/index.php?r=photo/json"));
ParseJsonAlbum(getJsonFromUrl("http://192.168.0.72/bashgid/index.php?r=album/json"));
@ -55,6 +57,23 @@ public class DatabaseDownloadTask extends AsyncTask<Bundle, Integer, Long>
ParseJsonAlbumArticleRelation(getJsonFromUrl("http://192.168.0.72/bashgid/index.php?r=albumArticleRelation/json"));
ParseJsonChannelArticleRelation(getJsonFromUrl("http://192.168.0.72/bashgid/index.php?r=channelArticleRelation/json"));
ParseJsonArticleJournalRelation(getJsonFromUrl("http://192.168.0.72/bashgid/index.php?r=articleJournalRelation/json"));
ParseJsonTranslation(getJsonFromUrl("http://192.168.0.72/bashgid/index.php?r=translation/json"));
*/
ParseJsonPhoto(getJsonFromUrl("http://bashgid.hallyu.ru/index.php?r=photo/json"));
ParseJsonAlbum(getJsonFromUrl("http://bashgid.hallyu.ru/index.php?r=album/json"));
ParseJsonPhotoAlbumRelation(getJsonFromUrl("http://bashgid.hallyu.ru/index.php?r=photoAlbumRelation/json"));
ParseJsonVideo(getJsonFromUrl("http://bashgid.hallyu.ru/index.php?r=video/json"));
ParseJsonChannel(getJsonFromUrl("http://bashgid.hallyu.ru/index.php?r=channel/json"));
ParseJsonVideoChannelRelation(getJsonFromUrl("http://bashgid.hallyu.ru/index.php?r=videoChannelRelation/json"));
ParseJsonArticle(getJsonFromUrl("http://bashgid.hallyu.ru/index.php?r=article/json"));
ParseJsonJournal(getJsonFromUrl("http://bashgid.hallyu.ru/index.php?r=journal/json"));
ParseJsonAlbumArticleRelation(getJsonFromUrl("http://bashgid.hallyu.ru/index.php?r=albumArticleRelation/json"));
ParseJsonChannelArticleRelation(getJsonFromUrl("http://bashgid.hallyu.ru/index.php?r=channelArticleRelation/json"));
ParseJsonArticleJournalRelation(getJsonFromUrl("http://bashgid.hallyu.ru/index.php?r=articleJournalRelation/json"));
ParseJsonTranslation(getJsonFromUrl("http://bashgid.hallyu.ru/index.php?r=translation/json"));
@ -440,5 +459,28 @@ public class DatabaseDownloadTask extends AsyncTask<Bundle, Integer, Long>
Log.e("JSONException", "Error: " + e.toString());
}
}
private void ParseJsonTranslation(String jsonCode)
{
try {
JSONArray jArray = new JSONArray(jsonCode);
for(int i=0; i < jArray.length(); i++) {
JSONObject jObject = jArray.getJSONObject(i);
String name = jObject.getString("name");
String textEn = jObject.getString("textEn");
String textRu = jObject.getString("textRu");
String textZh = jObject.getString("textZh");
MainActivity.getInstance().translationDataSource.CreateNewTranslation(new TranslationRecordData(name, textEn, textRu, textZh));
} // End Loop
} catch (JSONException e) {
Log.e("JSONException", "Error: " + e.toString());
}
}
}

View File

@ -0,0 +1,51 @@
package fishrungames.bashgid.core;
import java.util.ArrayList;
import android.os.AsyncTask;
import android.os.Handler;
import android.os.Message;
import fishrungames.bashgid.MainActivity;
import fishrungames.bashgid.core.JournalManager.JournalSemiFullData;
public class DatabaseGetJournalListTask extends AsyncTask<String, Integer, Long>
{
ArrayList<JournalSemiFullData> journalList;
public Handler mHandler;
protected Long doInBackground(String... queryArr)
{
String superJournal = "";
if (queryArr.length > 0)
{
superJournal = queryArr[0];
journalList = MainActivity.getInstance().journalDataSource.GetJournalList(superJournal, 3); //Xperimental -- need to pass exactly how many articles
}
else
{
journalList = MainActivity.getInstance().journalDataSource.GetAllJournalList(3); //Xperimental -- need to pass exactly how many articles
}
return (long) 0;
}
protected void onProgressUpdate(Integer... progress)
{
Message completeMessage = mHandler.obtainMessage(MainActivity.DATABASE_GET_JOURNAL_LIST_STATE_UPDATE, journalList);
completeMessage.sendToTarget();
}
protected void onPostExecute(Long result)
{
Message completeMessage = mHandler.obtainMessage(MainActivity.DATABASE_GET_JOURNAL_LIST_STATE_FINISHED, journalList);
completeMessage.sendToTarget();
}
}

View File

@ -0,0 +1,32 @@
package fishrungames.bashgid.core;
public class TranslationManager
{
public static class TranslationRecordData
{
public String name;
public String textEn;
public String textRu;
public String textZh;
public TranslationRecordData(String name, String textEn, String textRu, String textZh)
{
this.name = name;
this.textEn = textEn;
this.textRu = textRu;
this.textZh = textZh;
}
public TranslationRecordData(TranslationRecordData copyFrom)
{
this.name = copyFrom.name;
this.textEn = copyFrom.textEn;
this.textRu = copyFrom.textRu;
this.textZh = copyFrom.textZh;
}
}
}

View File

@ -207,7 +207,6 @@ public class AlbumDataSource
{
try
{
Cursor cursor = database.query(BashgidSqliteHelper.TABLE_ALBUM, new String[] { BashgidSqliteHelper.COLUMN_NAME,
BashgidSqliteHelper.COLUMN_TITLE, BashgidSqliteHelper.COLUMN_DESCRIPTION }, null, null, null, null, null, null);
@ -235,6 +234,7 @@ public class AlbumDataSource
}
cursor.close();
cursor = null;
}
} finally
@ -262,6 +262,7 @@ public class AlbumDataSource
}
cursor.close();
cursor = null;
}
@ -286,6 +287,7 @@ public class AlbumDataSource
}
cursor.close();
cursor = null;
}
return result;
@ -311,6 +313,7 @@ public class AlbumDataSource
}
cursor.close();
cursor = null;
}
return result;
@ -333,6 +336,7 @@ public class AlbumDataSource
}
cursor.close();
cursor = null;
}
return result;

View File

@ -392,6 +392,7 @@ public class ArticleDataSource
}
cursor.close();
cursor = null;
}
return result;
@ -413,8 +414,8 @@ public class ArticleDataSource
{
result = true;
}
cursor.close();
cursor = null;
}
return result;
@ -436,6 +437,7 @@ public class ArticleDataSource
}
cursor.close();
cursor = null;
}
return result;
@ -480,6 +482,7 @@ public class ArticleDataSource
}
cursor.close();
cursor = null;
}
return result;
@ -530,6 +533,7 @@ public class ArticleDataSource
}
cursor.close();
cursor = null;
}
return result;
@ -556,6 +560,7 @@ public class ArticleDataSource
}
cursor.close();
cursor = null;
}
return result;
@ -582,6 +587,7 @@ public class ArticleDataSource
}
cursor.close();
cursor = null;
}
return result;

View File

@ -170,6 +170,7 @@ public class ChannelDataSource
}
cursor.close();
cursor = null;
}
return result;
@ -192,6 +193,7 @@ public class ChannelDataSource
}
cursor.close();
cursor = null;
}
return result;
@ -216,6 +218,7 @@ public class ChannelDataSource
}
cursor.close();
cursor = null;
}
return result;
@ -239,6 +242,7 @@ public class ChannelDataSource
}
cursor.close();
cursor = null;
}
return result;

View File

@ -190,8 +190,83 @@ public class JournalDataSource
return result;
}
public ArrayList<JournalSemiFullData> GetAllJournalList()
public ArrayList<JournalSemiFullData> GetAllJournalList(int count)
{
ArrayList<JournalSemiFullData> result = new ArrayList<JournalSemiFullData>();
SQLiteDatabase database = dbHelper.getWritableDatabase();
if (database != null)
{
try
{
Cursor cursor = database.query(BashgidSqliteHelper.TABLE_JOURNAL, new String[] { BashgidSqliteHelper.COLUMN_NAME,
BashgidSqliteHelper.COLUMN_TITLE, BashgidSqliteHelper.COLUMN_DESCRIPTION }, null, null, null, null, null, null);
if (cursor != null)
{
if (cursor.moveToFirst())
{
do
{
String name = cursor.getString(0);
if (!name.equals("news") && !name.equals("map"))
{
JournalSemiFullData journal = new JournalSemiFullData(new JournalRecordData(cursor.getString(0), cursor.getString(1), cursor.getString(2)));
ArrayList<String> articleArr;
if (count > 0)
{
articleArr = innerGetArticleArrInJournal(cursor.getString(0), database, count);
}
else
{
articleArr = innerGetArticleArrInJournal(cursor.getString(0), database);
}
for (String article : articleArr)
{
journal.articleArr.add(MainActivity.getInstance().articleDataSource.InnerGetArticleShortData(article, database));
}
journal.title = MainActivity.getInstance().translationDataSource.TryTranslateText(journal.title, database);
journal.description = MainActivity.getInstance().translationDataSource.TryTranslateText(journal.description, database);
result.add(journal);
}
} while (cursor.moveToNext());
}
cursor.close();
cursor = null;
}
}
finally
{
dbHelper.close();
}
}
return result;
}
public ArrayList<JournalSemiFullData> GetJournalList(String superJournalName, int count)
{
//Xperimental - need to create a real superjournal
ArrayList<JournalSemiFullData> result = new ArrayList<JournalSemiFullData>();
SQLiteDatabase database = dbHelper.getWritableDatabase();
@ -213,12 +288,22 @@ public class JournalDataSource
{
String name = cursor.getString(0);
if (!name.equals("news") && !name.equals("map"))
if (name.equals("Universities") || name.equals("hotels")) //Xperimental
{
JournalSemiFullData journal = new JournalSemiFullData(new JournalRecordData(cursor.getString(0), cursor.getString(1), cursor.getString(2)));
ArrayList<String> articleArr = innerGetArticleArrInJournal(cursor.getString(0), database);
ArrayList<String> articleArr;
if (count > 0)
{
articleArr = innerGetArticleArrInJournal(cursor.getString(0), database, count);
}
else
{
articleArr = innerGetArticleArrInJournal(cursor.getString(0), database);
}
for (String article : articleArr)
{
@ -236,9 +321,10 @@ public class JournalDataSource
} while (cursor.moveToNext());
}
cursor.close();
cursor = null;
}
}
finally
@ -329,6 +415,7 @@ public class JournalDataSource
}
cursor.close();
cursor = null;
}
return result;
@ -351,13 +438,13 @@ public class JournalDataSource
}
cursor.close();
cursor = null;
}
return result;
}
private ArrayList<String> innerGetArticleArrInJournal(String name, SQLiteDatabase database)
{
ArrayList<String> result = new ArrayList<String>();
@ -377,6 +464,35 @@ public class JournalDataSource
}
cursor.close();
cursor = null;
}
return result;
}
private ArrayList<String> innerGetArticleArrInJournal(String name, SQLiteDatabase database, int count)
{
ArrayList<String> result = new ArrayList<String>();
Cursor cursor = database.query(BashgidSqliteHelper.TABLE_ARTICLE_JOURNAL_RELATION, new String[] { BashgidSqliteHelper.COLUMN_ARTICLE_NAME },
BashgidSqliteHelper.COLUMN_JOURNAL_NAME + "=?", new String[] { name }, null, null, null, null);
if (cursor != null)
{
if (cursor.moveToFirst())
{
int i = 0;
do
{
result.add(cursor.getString(0));
i++;
} while (cursor.moveToNext() && i < count);
}
cursor.close();
cursor = null;
}
return result;
@ -400,6 +516,7 @@ public class JournalDataSource
result = new JournalRecordData(cursor.getString(0), cursor.getString(1), cursor.getString(2));
}
cursor.close();
cursor = null;
}
return result;

View File

@ -103,6 +103,7 @@ public class PhotoDataSource
}
cursor.close();
cursor = null;
}
return result;
@ -124,6 +125,7 @@ public class PhotoDataSource
}
cursor.close();
cursor = null;
}
return result;

View File

@ -0,0 +1,395 @@
package fishrungames.bashgid.core.db;
import java.util.ArrayList;
import java.util.Locale;
import fishrungames.bashgid.MainActivity;
import fishrungames.bashgid.core.AlbumManager;
import fishrungames.bashgid.core.AlbumManager.AlbumFullData;
import fishrungames.bashgid.core.AlbumManager.AlbumRecordData;
import fishrungames.bashgid.core.AlbumManager.AlbumShortData;
import fishrungames.bashgid.core.TranslationManager.TranslationRecordData;
import android.content.ContentValues;
import android.content.Context;
import android.database.Cursor;
import android.database.sqlite.SQLiteDatabase;
import android.util.Log;
public class TranslationDataSource
{
private BashgidSqliteHelper dbHelper = null;
public TranslationDataSource(Context context, BashgidSqliteHelper dbHelper)
{
this.dbHelper = dbHelper;
}
public void CreateNewTranslation(TranslationRecordData recordData)
{
SQLiteDatabase database = dbHelper.getWritableDatabase();
if (database != null)
{
try
{
ContentValues values = new ContentValues();
values.put(BashgidSqliteHelper.COLUMN_NAME, recordData.name);
values.put(BashgidSqliteHelper.COLUMN_TEXT_EN, recordData.textEn);
values.put(BashgidSqliteHelper.COLUMN_TEXT_RU, recordData.textRu);
values.put(BashgidSqliteHelper.COLUMN_TEXT_ZH, recordData.textZh);
if (!innerIsTranslationAlreadyExist(recordData.name, database))
{
database.insert(BashgidSqliteHelper.TABLE_TRANSLATION, null, values);
} else
{
database.update(BashgidSqliteHelper.TABLE_TRANSLATION, values, BashgidSqliteHelper.COLUMN_NAME + " = " +"\"" + recordData.name +"\"", null);
}
} finally
{
dbHelper.close();
}
}
}
public String TryTranslateText(String name, SQLiteDatabase database)
{
if (innerIsTranslationAlreadyExist(name, database))
{
TranslationRecordData record = innerGetTranslationByName(name, database);
if (Locale.getDefault().equals(new Locale("ru")))
{
return record.textRu;
}
else if (Locale.getDefault() == Locale.CHINA)
{
return record.textZh;
}
return record.textEn;
}
else
{
return name;
}
}
/*
public boolean IsTranslationAlreadyExist(String name)
{
boolean result = false;
SQLiteDatabase database = dbHelper.getWritableDatabase();
if (database != null)
{
try
{
result = innerIsAlbumAlreadyExist(name, database);
} finally
{
dbHelper.close();
}
}
return result;
}*/
/*
public void AddPhotoToAlbum(String imageUrl, String albumName)
{
SQLiteDatabase database = dbHelper.getWritableDatabase();
if (database != null)
{
try
{
ContentValues values = new ContentValues();
values.put(BashgidSqliteHelper.COLUMN_IMAGE_URL, imageUrl);
values.put(BashgidSqliteHelper.COLUMN_NAME, albumName);
if (!innerPhotoAlbumRelationAlreadyExist(imageUrl, albumName, database))
{
Log.e("a", "aaa1");
database.insert(BashgidSqliteHelper.TABLE_PHOTO_ALBUM_RELATION, null, values);
Log.e("a", "aaa2");
}
Log.e("a", "aaa3");
} finally
{
dbHelper.close();
}
}
}
*/
public TranslationRecordData GetTranslationRecordData(String name)
{
TranslationRecordData result = null;
SQLiteDatabase database = dbHelper.getWritableDatabase();
if (database != null)
{
try
{
result = innerGetTranslationByName(name, database);
} finally
{
dbHelper.close();
}
}
return result;
}
/*
public AlbumFullData GetAlbumFullData(String name)
{
AlbumFullData result = null;
SQLiteDatabase database = dbHelper.getWritableDatabase();
if (database != null)
{
try
{
result = InnerGetAlbumFullData(name, database);
} finally
{
dbHelper.close();
}
}
return result;
}
public AlbumFullData InnerGetAlbumFullData(String name, SQLiteDatabase database)
{
AlbumFullData result = null;
AlbumRecordData recordData = innerGetAlbumByName(name, database);
if (recordData != null)
{
result = new AlbumFullData(recordData);
ArrayList<String> imageUrlArr = innerGetImageUrlArrInAlbum(name, database);
for (String imageUrl : imageUrlArr)
{
result.photoRecordArr.add(MainActivity.getInstance().photoDataSource.InnerGetPhotoByImageUrl(imageUrl, database));
}
}
return result;
}
public AlbumShortData GetAlbumShortData(String name)
{
AlbumShortData result = null;
SQLiteDatabase database = dbHelper.getWritableDatabase();
if (database != null)
{
try
{
AlbumRecordData recordData = innerGetAlbumByName(name, database);
if (recordData != null)
{
result = new AlbumShortData(recordData);
ArrayList<String> imageUrlArr = innerGetImageUrlArrInAlbum(name, database);
result.photoCount = imageUrlArr.size();
if (imageUrlArr.size() > 0)
{
result.firstImageUrl = imageUrlArr.get(0);
}
}
} finally
{
dbHelper.close();
}
}
return result;
}
public ArrayList<AlbumShortData> GetAllAlbumShortData()
{
ArrayList<AlbumShortData> result = new ArrayList<AlbumShortData>();
SQLiteDatabase database = dbHelper.getWritableDatabase();
if (database != null)
{
try
{
Cursor cursor = database.query(BashgidSqliteHelper.TABLE_ALBUM, new String[] { BashgidSqliteHelper.COLUMN_NAME,
BashgidSqliteHelper.COLUMN_TITLE, BashgidSqliteHelper.COLUMN_DESCRIPTION }, null, null, null, null, null, null);
if (cursor != null)
{
if (cursor.moveToFirst())
{
do
{
AlbumShortData shortData = new AlbumShortData(new AlbumRecordData(cursor.getString(0), cursor.getString(1), cursor.getString(2)));
ArrayList<String> imageUrlArr = innerGetImageUrlArrInAlbum(shortData.name, database);
shortData.photoCount = imageUrlArr.size();
if (imageUrlArr.size() > 0)
{
shortData.firstImageUrl = imageUrlArr.get(0);
}
result.add(shortData);
} while (cursor.moveToNext());
}
cursor.close();
}
} finally
{
dbHelper.close();
}
}
return result;
}
*/
private boolean innerIsTranslationAlreadyExist(String name, SQLiteDatabase database)
{
boolean result = false;
Cursor cursor = database.query(BashgidSqliteHelper.TABLE_TRANSLATION, new String[] { BashgidSqliteHelper.COLUMN_NAME }, BashgidSqliteHelper.COLUMN_NAME
+ "=?", new String[] { name }, null, null, null, null);
if (cursor != null)
{
if (cursor.getCount() > 0)
{
result = true;
}
cursor.close();
cursor = null;
}
return result;
}
/*
private boolean innerPhotoAlbumRelationAlreadyExist(String imageUrl, String name, SQLiteDatabase database)
{
boolean result = false;
Cursor cursor = database.query(BashgidSqliteHelper.TABLE_PHOTO_ALBUM_RELATION, new String[] { BashgidSqliteHelper.COLUMN_IMAGE_URL,
BashgidSqliteHelper.COLUMN_NAME }, BashgidSqliteHelper.COLUMN_IMAGE_URL + "=?" + " AND " + BashgidSqliteHelper.COLUMN_NAME + "=?",
new String[] { imageUrl, name }, null, null, null, null);
if (cursor != null)
{
if (cursor.getCount() > 0)
{
result = true;
}
cursor.close();
}
return result;
}
private ArrayList<String> innerGetImageUrlArrInAlbum(String name, SQLiteDatabase database)
{
ArrayList<String> result = new ArrayList<String>();
Cursor cursor = database.query(BashgidSqliteHelper.TABLE_PHOTO_ALBUM_RELATION, new String[] { BashgidSqliteHelper.COLUMN_IMAGE_URL },
BashgidSqliteHelper.COLUMN_NAME + "=?", new String[] { name }, null, null, null, null);
if (cursor != null)
{
if (cursor.moveToFirst())
{
do
{
result.add(cursor.getString(0));
} while (cursor.moveToNext());
}
cursor.close();
}
return result;
}
*/
public TranslationRecordData innerGetTranslationByName(String name, SQLiteDatabase database)
{
TranslationRecordData result = null;
Cursor cursor = database.query(BashgidSqliteHelper.TABLE_TRANSLATION, new String[] { BashgidSqliteHelper.COLUMN_NAME, BashgidSqliteHelper.COLUMN_TEXT_EN,
BashgidSqliteHelper.COLUMN_TEXT_RU, BashgidSqliteHelper.COLUMN_TEXT_ZH }, BashgidSqliteHelper.COLUMN_NAME + "=?", new String[] { name }, null, null, null, null);
if (cursor != null)
{
if (cursor.moveToFirst())
{
result = new TranslationRecordData(cursor.getString(0), cursor.getString(1), cursor.getString(2), cursor.getString(3));
}
cursor.close();
cursor = null;
}
return result;
}
}

View File

@ -106,6 +106,7 @@ public class VideoDataSource
}
cursor.close();
cursor = null;
}
return result;
@ -127,6 +128,7 @@ public class VideoDataSource
}
cursor.close();
cursor = null;
}
return result;