2014-07-03 07:48:39 +02:00
|
|
|
package org.mariotaku.twidere.fragment.support;
|
|
|
|
|
|
|
|
import android.content.Context;
|
|
|
|
import android.content.SharedPreferences;
|
|
|
|
import android.database.Cursor;
|
2015-03-14 16:11:20 +01:00
|
|
|
import android.graphics.Rect;
|
2014-07-03 07:48:39 +02:00
|
|
|
import android.net.Uri;
|
|
|
|
import android.os.Bundle;
|
|
|
|
import android.support.v4.app.LoaderManager.LoaderCallbacks;
|
|
|
|
import android.support.v4.content.CursorLoader;
|
|
|
|
import android.support.v4.content.Loader;
|
2014-11-01 17:57:31 +01:00
|
|
|
import android.view.ContextThemeWrapper;
|
2014-07-03 07:48:39 +02:00
|
|
|
import android.view.LayoutInflater;
|
|
|
|
import android.view.View;
|
|
|
|
import android.view.ViewGroup;
|
2015-03-14 16:11:20 +01:00
|
|
|
import android.widget.AdapterView;
|
|
|
|
import android.widget.AdapterView.OnItemClickListener;
|
2014-10-22 09:36:41 +02:00
|
|
|
import android.widget.ImageButton;
|
2015-03-14 16:11:20 +01:00
|
|
|
import android.widget.ListAdapter;
|
2014-07-03 07:48:39 +02:00
|
|
|
import android.widget.ListView;
|
|
|
|
|
|
|
|
import com.commonsware.cwac.merge.MergeAdapter;
|
|
|
|
import com.sothree.slidinguppanel.SlidingUpPanelLayout;
|
2015-02-17 06:49:23 +01:00
|
|
|
import com.sothree.slidinguppanel.SlidingUpPanelLayout.PanelState;
|
2014-07-03 07:48:39 +02:00
|
|
|
|
2015-07-06 11:36:18 +02:00
|
|
|
import org.mariotaku.sqliteqb.library.Columns;
|
|
|
|
import org.mariotaku.sqliteqb.library.Expression;
|
|
|
|
import org.mariotaku.sqliteqb.library.OrderBy;
|
|
|
|
import org.mariotaku.sqliteqb.library.SQLQueryBuilder;
|
|
|
|
import org.mariotaku.sqliteqb.library.Table;
|
|
|
|
import org.mariotaku.sqliteqb.library.query.SQLSelectQuery;
|
2014-07-03 07:48:39 +02:00
|
|
|
import org.mariotaku.twidere.R;
|
2015-04-28 20:35:04 +02:00
|
|
|
import org.mariotaku.twidere.adapter.TrendsAdapter;
|
2015-01-11 10:28:45 +01:00
|
|
|
import org.mariotaku.twidere.provider.TwidereDataStore.CachedTrends;
|
2014-07-03 07:48:39 +02:00
|
|
|
import org.mariotaku.twidere.util.ThemeUtils;
|
2015-03-14 16:11:20 +01:00
|
|
|
import org.mariotaku.twidere.util.Utils;
|
|
|
|
import org.mariotaku.twidere.view.ExtendedFrameLayout;
|
|
|
|
import org.mariotaku.twidere.view.iface.IExtendedView.OnFitSystemWindowsListener;
|
2014-07-28 12:42:48 +02:00
|
|
|
|
|
|
|
import static org.mariotaku.twidere.util.Utils.getTableNameByUri;
|
2015-03-14 16:11:20 +01:00
|
|
|
import static org.mariotaku.twidere.util.Utils.openTweetSearch;
|
2014-07-03 07:48:39 +02:00
|
|
|
|
2015-03-14 16:11:20 +01:00
|
|
|
public class QuickMenuFragment extends BaseSupportFragment implements OnFitSystemWindowsListener, OnItemClickListener {
|
2014-07-03 07:48:39 +02:00
|
|
|
|
2015-03-14 16:11:20 +01:00
|
|
|
private ExtendedFrameLayout mQuickMenuContainer;
|
2014-07-28 12:42:48 +02:00
|
|
|
private SharedPreferences mPreferences;
|
|
|
|
private Context mThemedContext;
|
|
|
|
private ListView mListView;
|
|
|
|
private SlidingUpPanelLayout mSlidingUpPanel;
|
2014-10-22 09:36:41 +02:00
|
|
|
private ImageButton mActivitiesConfigButton;
|
2014-07-28 12:42:48 +02:00
|
|
|
|
|
|
|
private MergeAdapter mAdapter;
|
|
|
|
private TrendsAdapter mTrendsAdapter;
|
|
|
|
|
|
|
|
private static final int LOADER_ID_TRENDS = 1;
|
|
|
|
|
|
|
|
private final LoaderCallbacks<Cursor> mTrendsCallback = new LoaderCallbacks<Cursor>() {
|
|
|
|
|
|
|
|
@Override
|
|
|
|
public Loader<Cursor> onCreateLoader(final int id, final Bundle args) {
|
|
|
|
final Uri uri = CachedTrends.Local.CONTENT_URI;
|
|
|
|
final String table = getTableNameByUri(uri);
|
2015-03-14 16:11:20 +01:00
|
|
|
final SQLSelectQuery selectQuery = SQLQueryBuilder.select(new Columns(CachedTrends.TIMESTAMP))
|
|
|
|
.from(new Table(table))
|
|
|
|
.orderBy(new OrderBy(CachedTrends.TIMESTAMP, false))
|
|
|
|
.limit(1)
|
|
|
|
.build();
|
|
|
|
final Expression where = Expression.equals(CachedTrends.TIMESTAMP, selectQuery);
|
|
|
|
return new CursorLoader(getActivity(), uri, CachedTrends.COLUMNS, where.getSQL(), null, null);
|
2014-07-28 12:42:48 +02:00
|
|
|
}
|
|
|
|
|
|
|
|
@Override
|
|
|
|
public void onLoaderReset(final Loader<Cursor> loader) {
|
|
|
|
mTrendsAdapter.swapCursor(null);
|
|
|
|
}
|
|
|
|
|
|
|
|
@Override
|
|
|
|
public void onLoadFinished(final Loader<Cursor> loader, final Cursor data) {
|
|
|
|
mTrendsAdapter.swapCursor(data);
|
|
|
|
}
|
|
|
|
|
|
|
|
};
|
|
|
|
|
|
|
|
@Override
|
|
|
|
public void onActivityCreated(final Bundle savedInstanceState) {
|
|
|
|
super.onActivityCreated(savedInstanceState);
|
2015-03-14 16:11:20 +01:00
|
|
|
mQuickMenuContainer.setOnFitSystemWindowsListener(this);
|
2014-07-28 12:42:48 +02:00
|
|
|
mPreferences = getSharedPreferences(SHARED_PREFERENCES_NAME, Context.MODE_PRIVATE);
|
|
|
|
if (mPreferences.getBoolean(KEY_QUICK_MENU_EXPANDED, false)) {
|
|
|
|
} else {
|
|
|
|
}
|
2015-03-14 16:11:20 +01:00
|
|
|
final Context context = getThemedContext();
|
2014-07-28 12:42:48 +02:00
|
|
|
mAdapter = new MergeAdapter();
|
2015-03-14 16:11:20 +01:00
|
|
|
mTrendsAdapter = new TrendsAdapter(context);
|
|
|
|
|
|
|
|
mAdapter.addView(Utils.newSectionView(context, R.string.trends), false);
|
2014-07-28 12:42:48 +02:00
|
|
|
mAdapter.addAdapter(mTrendsAdapter);
|
|
|
|
mListView.setAdapter(mAdapter);
|
2015-03-14 16:11:20 +01:00
|
|
|
mListView.setOnItemClickListener(this);
|
2014-07-28 12:42:48 +02:00
|
|
|
getLoaderManager().initLoader(LOADER_ID_TRENDS, null, mTrendsCallback);
|
|
|
|
}
|
|
|
|
|
2015-03-14 16:11:20 +01:00
|
|
|
@Override
|
|
|
|
public LayoutInflater getLayoutInflater(Bundle savedInstanceState) {
|
|
|
|
return LayoutInflater.from(getThemedContext());
|
|
|
|
}
|
|
|
|
|
2014-07-28 12:42:48 +02:00
|
|
|
@Override
|
|
|
|
public View onCreateView(final LayoutInflater inflater, final ViewGroup container, final Bundle savedInstanceState) {
|
2015-03-14 16:11:20 +01:00
|
|
|
return inflater.inflate(R.layout.fragment_quick_menu, container, false);
|
2014-07-28 12:42:48 +02:00
|
|
|
}
|
|
|
|
|
|
|
|
@Override
|
|
|
|
public void onDestroy() {
|
|
|
|
super.onDestroy();
|
|
|
|
final SharedPreferences.Editor editor = mPreferences.edit();
|
2015-02-17 06:49:23 +01:00
|
|
|
editor.putBoolean(KEY_QUICK_MENU_EXPANDED, mSlidingUpPanel.getPanelState() == PanelState.EXPANDED);
|
2014-07-28 12:42:48 +02:00
|
|
|
editor.apply();
|
|
|
|
}
|
|
|
|
|
|
|
|
@Override
|
2015-01-26 17:09:02 +01:00
|
|
|
public void onBaseViewCreated(final View view, final Bundle savedInstanceState) {
|
|
|
|
super.onBaseViewCreated(view, savedInstanceState);
|
2015-03-14 16:11:20 +01:00
|
|
|
mQuickMenuContainer = (ExtendedFrameLayout) view.findViewById(R.id.quick_menu_fragment);
|
2014-07-28 12:42:48 +02:00
|
|
|
mListView = (ListView) view.findViewById(android.R.id.list);
|
|
|
|
mSlidingUpPanel = (SlidingUpPanelLayout) view.findViewById(R.id.activities_drawer);
|
2014-10-22 09:36:41 +02:00
|
|
|
mActivitiesConfigButton = (ImageButton) view.findViewById(R.id.activities_config_button);
|
2014-07-28 12:42:48 +02:00
|
|
|
final View activitiesContainer = view.findViewById(R.id.activities_container);
|
|
|
|
}
|
|
|
|
|
2015-03-14 16:11:20 +01:00
|
|
|
@Override
|
|
|
|
public void onFitSystemWindows(Rect insets) {
|
|
|
|
mQuickMenuContainer.setPadding(insets.left, insets.top, insets.right, insets.bottom);
|
|
|
|
}
|
|
|
|
|
|
|
|
@Override
|
|
|
|
public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
|
|
|
|
final ListAdapter adapter = mAdapter.getAdapter(position);
|
|
|
|
if (adapter instanceof TrendsAdapter) {
|
2015-03-15 12:09:12 +01:00
|
|
|
openTweetSearch(getActivity(), getAccountId(), (String) mAdapter.getItem(position));
|
2015-03-14 16:11:20 +01:00
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
private long getAccountId() {
|
|
|
|
return -1;
|
|
|
|
}
|
|
|
|
|
2015-04-24 19:00:07 +02:00
|
|
|
@Override
|
|
|
|
public Context getThemedContext() {
|
2014-07-28 12:42:48 +02:00
|
|
|
if (mThemedContext != null) return mThemedContext;
|
|
|
|
final Context context = getActivity();
|
2015-04-27 14:25:26 +02:00
|
|
|
final int currentThemeResource = ThemeUtils.getNoActionBarThemeResource(context);
|
2014-11-09 06:02:43 +01:00
|
|
|
final int themeResource = ThemeUtils.getDrawerThemeResource(currentThemeResource);
|
2014-11-01 17:57:31 +01:00
|
|
|
return mThemedContext = new ContextThemeWrapper(context, themeResource);
|
2014-07-28 12:42:48 +02:00
|
|
|
}
|
2014-07-03 07:48:39 +02:00
|
|
|
|
|
|
|
}
|