/**
* Android ownCloud News
*
* @author David Luhmer
* @copyright 2013 David Luhmer david-dev@live.de
*
* This library is free software; you can redistribute it and/or
* modify it under the terms of the GNU AFFERO GENERAL PUBLIC LICENSE
* License as published by the Free Software Foundation; either
* version 3 of the License, or any later version.
*
* This library 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 AFFERO GENERAL PUBLIC LICENSE for more details.
*
* You should have received a copy of the GNU Affero General Public
* License along with this library. If not, see .
*
*/
package de.luhmer.owncloudnewsreader.helper;
import android.annotation.TargetApi;
import android.os.Build;
import android.preference.PreferenceManager;
import android.support.v4.app.FragmentActivity;
import android.util.Log;
import android.widget.Toast;
import com.actionbarsherlock.app.SherlockDialogFragment;
import com.actionbarsherlock.app.SherlockFragmentActivity;
import com.actionbarsherlock.view.Menu;
import com.actionbarsherlock.view.MenuInflater;
import com.actionbarsherlock.view.MenuItem;
import de.luhmer.owncloudnewsreader.Constants;
import de.luhmer.owncloudnewsreader.NewsReaderDetailFragment;
import de.luhmer.owncloudnewsreader.NewsReaderListActivity;
import de.luhmer.owncloudnewsreader.R;
import de.luhmer.owncloudnewsreader.VersionInfoDialogFragment;
import de.luhmer.owncloudnewsreader.database.DatabaseConnection;
import de.luhmer.owncloudnewsreader.reader.IReader;
import de.luhmer.owncloudnewsreader.reader.OnAsyncTaskCompletedListener;
import de.luhmer.owncloudnewsreader.reader.owncloud.API;
import de.luhmer.owncloudnewsreader.reader.owncloud.OwnCloud_Reader;
public class MenuUtilsSherlockFragmentActivity extends SherlockFragmentActivity {
protected static final String TAG = "MenuUtils";
static FragmentActivity activity;
static MenuItem menuItemSettings;
static MenuItem menuItemLogin;
static MenuItem menuItemStartImageCaching;
private static MenuItem menuItemUpdater;
private static MenuItem menuItemDownloadMoreItems;
static IReader _Reader;
/**
* @return the menuItemUpdater
*/
public static MenuItem getMenuItemUpdater() {
return menuItemUpdater;
}
/**
* @return the menuItemDownloadMoreItems
*/
public static MenuItem getMenuItemDownloadMoreItems() {
return menuItemDownloadMoreItems;
}
@TargetApi(Build.VERSION_CODES.HONEYCOMB)
@Override
protected void onResume() {
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.HONEYCOMB) {
invalidateOptionsMenu();
}
super.onResume();
}
public static void onCreateOptionsMenu(Menu menu, MenuInflater inflater, FragmentActivity act) {
inflater.inflate(R.menu.news_reader, menu);
activity = act;
menuItemSettings = menu.findItem(R.id.action_settings);
menuItemLogin = menu.findItem(R.id.action_login);
menuItemStartImageCaching = menu.findItem(R.id.menu_StartImageCaching);
menuItemUpdater = menu.findItem(R.id.menu_update);
//menuItemMarkAllAsRead = menu.findItem(R.id.menu_markAllAsRead);
menuItemDownloadMoreItems = menu.findItem(R.id.menu_downloadMoreItems);
//menuItemMarkAllAsRead.setEnabled(false);
menuItemDownloadMoreItems.setEnabled(false);
NewsReaderDetailFragment ndf = ((NewsReaderDetailFragment) activity.getSupportFragmentManager().findFragmentById(R.id.content_frame));
if(ndf != null)
ndf.UpdateMenuItemsState();
}
public static boolean onOptionsItemSelected(MenuItem item, FragmentActivity activity) {
switch (item.getItemId()) {
case R.id.menu_About_Changelog:
SherlockDialogFragment dialog = new VersionInfoDialogFragment();
dialog.show(activity.getSupportFragmentManager(), "VersionChangelogDialogFragment");
return true;
case R.id.menu_markAllAsRead:
NewsReaderDetailFragment ndf = ((NewsReaderDetailFragment) activity.getSupportFragmentManager().findFragmentById(R.id.content_frame));
if(ndf != null)
{
/*
for(int i = 0; i < ndf.getListView().getChildCount(); i++)
{
View view = ndf.getListView().getChildAt(i);
CheckBox cb = (CheckBox) view.findViewById(R.id.cb_lv_item_read);
if(!cb.isChecked())
cb.setChecked(true);
}
*/
DatabaseConnection dbConn = new DatabaseConnection(activity);
try {
/*
//dbConn.markAllItemsAsRead(ndf.getDatabaseIdsOfItems());
List items = new ArrayList();
Cursor cursor = ncla.getLvAdapter().getCursor();
cursor.moveToFirst();
do {
items.add(Integer.parseInt(cursor.getString(0)));
} while (cursor.moveToNext());
dbConn.markAllItemsAsRead(items);
*/
dbConn.markAllItemsAsReadForCurrentView();
} finally {
dbConn.closeDatabase();
}
ndf.UpdateCursor();
//If tablet view is enabled update the listview as well
if(activity instanceof NewsReaderListActivity)
((NewsReaderListActivity) activity).updateAdapter();
}
return true;
case R.id.menu_downloadMoreItems:
DownloadMoreItems();
return true;
}
return false;
}
private static void DownloadMoreItems()
{
/*
DatabaseConnection dbConn = new DatabaseConnection(activity);
int count = dbConn.getCountFeedsForFolder(SubscriptionExpandableListAdapter.ALL_ITEMS, false);
if(count >= Constants.maxItemsCount)
{
String text = activity.getString(R.string.max_items_count_reached);
text = text.replace("XX", "" + Constants.maxItemsCount);
new AlertDialog.Builder(activity)
.setTitle(activity.getString(R.string.empty_view_header))
.setMessage(text)
.setPositiveButton(activity.getString(android.R.string.ok), new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog,int id) {
}
})
.create()
.show();
//Toast.makeText(activity, text, Toast.LENGTH_LONG).show();
}
else
{*/
String username = PreferenceManager.getDefaultSharedPreferences(activity.getApplicationContext()).getString("edt_username", "");
String password = PreferenceManager.getDefaultSharedPreferences(activity.getApplicationContext()).getString("edt_password", "");
if(username != null) {
_Reader = new OwnCloud_Reader();
((OwnCloud_Reader)_Reader).Start_AsyncTask_GetVersion(Constants.TaskID_GetVersion, activity, onAsyncTaskGetVersionFinished, username, password);
Toast.makeText(activity, activity.getString(R.string.toast_GettingMoreItems), Toast.LENGTH_SHORT).show();
}
//}
}
static OnAsyncTaskCompletedListener onAsyncTaskGetVersionFinished = new OnAsyncTaskCompletedListener() {
@Override
public void onAsyncTaskCompleted(int task_id, Object task_result) {
if(_Reader != null) {
String appVersion = task_result.toString();
API api = API.GetRightApiForVersion(appVersion, activity);
((OwnCloud_Reader) _Reader).setApi(api);
NewsReaderDetailFragment ndf = ((NewsReaderDetailFragment) activity.getSupportFragmentManager().findFragmentById(R.id.content_frame));
_Reader.Start_AsyncTask_GetOldItems(Constants.TaskID_GetItems, activity, onAsyncTaskComplete, ndf.getIdFeed(), ndf.getIdFolder());
}
}
};
static OnAsyncTaskCompletedListener onAsyncTaskComplete = new OnAsyncTaskCompletedListener() {
@Override
public void onAsyncTaskCompleted(int task_id, Object task_result) {
NewsReaderDetailFragment ndf = ((NewsReaderDetailFragment) activity.getSupportFragmentManager().findFragmentById(R.id.content_frame));
if(ndf != null)
ndf.UpdateCursor();
Log.d(TAG, "Finished Download extra items..");
}
};
}