force it into landscape mode for now until I can fix tunnel display in portrait mode

This commit is contained in:
eyedeekay
2025-03-15 14:25:22 -04:00
parent ddb2482623
commit 96bb2cf161
5 changed files with 34 additions and 13 deletions

View File

@ -1,9 +1,11 @@
package net.i2p.android; package net.i2p.android;
import android.app.Activity;
import android.content.BroadcastReceiver; import android.content.BroadcastReceiver;
import android.content.Context; import android.content.Context;
import android.content.Intent; import android.content.Intent;
import android.content.IntentFilter; import android.content.IntentFilter;
import android.content.pm.ActivityInfo;
import android.os.Bundle; import android.os.Bundle;
//import android.support.v4.app.Fragment; //import android.support.v4.app.Fragment;
import androidx.fragment.app.Fragment; import androidx.fragment.app.Fragment;
@ -57,6 +59,7 @@ public class I2PActivity extends I2PActivityBase implements
@Override @Override
protected void onCreate(Bundle savedInstanceState) { protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState); super.onCreate(savedInstanceState);
setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE);
setContentView(R.layout.activity_viewpager); setContentView(R.layout.activity_viewpager);
Toolbar toolbar = (Toolbar) findViewById(R.id.main_toolbar); Toolbar toolbar = (Toolbar) findViewById(R.id.main_toolbar);

View File

@ -8,6 +8,8 @@ import androidx.core.util.Pair;
import androidx.core.view.ViewCompat; import androidx.core.view.ViewCompat;
//import android.support.v7.widget.RecyclerView; //import android.support.v7.widget.RecyclerView;
import androidx.recyclerview.widget.RecyclerView; import androidx.recyclerview.widget.RecyclerView;
import android.util.Log;
import android.view.Gravity; import android.view.Gravity;
import android.view.LayoutInflater; import android.view.LayoutInflater;
import android.view.View; import android.view.View;
@ -73,6 +75,7 @@ public class TunnelEntryAdapter extends RecyclerView.Adapter<RecyclerView.ViewHo
public void setTunnels(List<TunnelEntry> tunnels) { public void setTunnels(List<TunnelEntry> tunnels) {
mTunnels = tunnels; mTunnels = tunnels;
Log.d("TunnelEntryAdapter", "setTunnels: size=" + (tunnels != null ? tunnels.size() : "null"));
notifyDataSetChanged(); notifyDataSetChanged();
} }
@ -148,6 +151,8 @@ public class TunnelEntryAdapter extends RecyclerView.Adapter<RecyclerView.ViewHo
// Replace the contents of a view (invoked by the layout manager) // Replace the contents of a view (invoked by the layout manager)
@Override @Override
public void onBindViewHolder(RecyclerView.ViewHolder holder, final int position) { public void onBindViewHolder(RecyclerView.ViewHolder holder, final int position) {
Log.d("TunnelEntryAdapter", "onBindViewHolder: position=" + position +
" viewType=" + holder.getItemViewType());
switch (holder.getItemViewType()) { switch (holder.getItemViewType()) {
case R.string.router_not_running: case R.string.router_not_running:
((TextView) holder.itemView).setText( ((TextView) holder.itemView).setText(
@ -225,9 +230,11 @@ public class TunnelEntryAdapter extends RecyclerView.Adapter<RecyclerView.ViewHo
// Return the size of the dataset (invoked by the layout manager) // Return the size of the dataset (invoked by the layout manager)
@Override @Override
public int getItemCount() { public int getItemCount() {
if (mTunnels == null || mTunnels.isEmpty()) if (mTunnels == null || mTunnels.isEmpty()) {
Log.d("TunnelEntryAdapter", "getItemCount: returning 1 for empty/null state");
return 1; return 1;
}
Log.d("TunnelEntryAdapter", "getItemCount: returning " + mTunnels.size());
return mTunnels.size(); return mTunnels.size();
} }
} }

View File

@ -120,9 +120,10 @@ public class TunnelListFragment extends Fragment implements
@Override @Override
public void onActivityCreated(Bundle savedInstanceState) { public void onActivityCreated(Bundle savedInstanceState) {
super.onActivityCreated(savedInstanceState); super.onActivityCreated(savedInstanceState);
mClientTunnels = getArguments().getBoolean(SHOW_CLIENT_TUNNELS); //mClientTunnels = getArguments().getBoolean(SHOW_CLIENT_TUNNELS);
mClientTunnels = true;
mRecyclerView.setHasFixedSize(true); //mRecyclerView.setHasFixedSize(true);
mRecyclerView.addItemDecoration(new DividerItemDecoration(getActivity(), DividerItemDecoration.VERTICAL_LIST)); mRecyclerView.addItemDecoration(new DividerItemDecoration(getActivity(), DividerItemDecoration.VERTICAL_LIST));
// use a linear layout manager // use a linear layout manager

View File

@ -134,6 +134,10 @@ public class TunnelsContainer extends Fragment implements
// Initialize ViewPager and adapter // Initialize ViewPager and adapter
mFragPagerAdapter = new TunnelsPagerAdapter(getChildFragmentManager()); mFragPagerAdapter = new TunnelsPagerAdapter(getChildFragmentManager());
mViewPager.setAdapter(mFragPagerAdapter); mViewPager.setAdapter(mFragPagerAdapter);
// Make sure the ViewPager has proper height
/*mViewPager.setLayoutParams(new ViewGroup.LayoutParams(
ViewGroup.LayoutParams.MATCH_PARENT,
ViewGroup.LayoutParams.MATCH_PARENT));*/
setupMagicIndicator(); setupMagicIndicator();
@ -301,17 +305,17 @@ public class TunnelsContainer extends Fragment implements
.replace(R.id.detail_fragment, detailFrag) .replace(R.id.detail_fragment, detailFrag)
.commitNow(); // Use commitNow() to execute synchronously .commitNow(); // Use commitNow() to execute synchronously
} catch (Exception e) { } catch (Exception e) {
// This exception might occur if the fragment transaction fails due to an invalid state.
// It is handled by logging the error to help with debugging.
Log.e("TunnelsContainer", "Failed to update detail fragment", e); Log.e("TunnelsContainer", "Failed to update detail fragment", e);
} }
} else { } else {
// In single-pane mode, simply start the detail activity // In single-pane mode, simply start the detail activity
// for the selected item ID. // for the selected item ID.
Intent detailIntent = new Intent(getActivity(), TunnelDetailActivity.class); Intent detailIntent = new Intent(getActivity(), TunnelDetailActivity.class);
detailIntent.putExtra(TunnelDetailFragment.TUNNEL_ID, tunnelId); ActivityOptionsCompat options = ActivityOptionsCompat.makeSceneTransitionAnimation(getActivity(), pairs);
detailIntent.putExtra("tunnel_id", tunnelId);
ActivityOptionsCompat options = ActivityOptionsCompat.makeSceneTransitionAnimation( ActivityCompat.startActivity(getActivity().getApplicationContext(), detailIntent, options.toBundle());
getActivity(), pairs);
ActivityCompat.startActivity(getActivity(), detailIntent, options.toBundle());
} }
} }

View File

@ -1,9 +1,13 @@
<?xml version="1.0" encoding="utf-8"?> <?xml version="1.0" encoding="utf-8"?>
<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android" <FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="wrap_content"> android:layout_height="wrap_content"
android:minHeight="?android:attr/listPreferredItemHeight">
<RelativeLayout style="@style/ListItem.TwoLines"> <RelativeLayout
style="@style/ListItem.TwoLines"
android:layout_width="match_parent"
android:layout_height="wrap_content">
<!-- Tunnel status --> <!-- Tunnel status -->
<ImageView <ImageView
@ -55,5 +59,7 @@
<View <View
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="match_parent" android:layout_height="match_parent"
android:background="?attr/selectableItemBackground" /> android:background="?attr/selectableItemBackground"
android:clickable="true"
android:focusable="true" />
</FrameLayout> </FrameLayout>