commit c232e1c92ed6324ab9bbf3f5bd37d771838d4412 Author: arrase arrase@gmail.com Date: Sun Nov 20 01:52:23 2016 +0100
switch to listview --- app/build.gradle | 1 - .../android/ui/hs/HiddenServicesActivity.java | 83 ++++++------ .../ui/hs/adapters/CursorRecyclerViewAdapter.java | 144 --------------------- .../android/ui/hs/adapters/HSAdapter.java | 55 -------- .../android/ui/hs/adapters/OnionListAdapter.java | 36 ++++++ .../android/ui/hs/dialogs/HSDataDialog.java | 5 +- .../main/res/layout/activity_hidden_services.xml | 34 ----- .../main/res/layout/content_hidden_services.xml | 22 ---- app/src/main/res/layout/dialog_hs_data.xml | 79 ----------- app/src/main/res/layout/layout_hs_data_dialog.xml | 79 +++++++++++ app/src/main/res/layout/layout_hs_list_item.xml | 20 +++ app/src/main/res/layout/layout_hs_list_view.xml | 22 ++++ app/src/main/res/layout/onion_item.xml | 33 ----- 13 files changed, 205 insertions(+), 408 deletions(-)
diff --git a/app/build.gradle b/app/build.gradle index 66d1225..cc364c7 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -31,5 +31,4 @@ dependencies { compile 'com.android.support:support-v4:23.4.0' compile 'com.android.support:appcompat-v7:23.4.0' compile 'com.android.support:design:23.4.0' - compile 'com.android.support:cardview-v7:23.4.0' } diff --git a/app/src/main/java/org/torproject/android/ui/hs/HiddenServicesActivity.java b/app/src/main/java/org/torproject/android/ui/hs/HiddenServicesActivity.java index da556da..a2c9280 100644 --- a/app/src/main/java/org/torproject/android/ui/hs/HiddenServicesActivity.java +++ b/app/src/main/java/org/torproject/android/ui/hs/HiddenServicesActivity.java @@ -1,38 +1,49 @@ package org.torproject.android.ui.hs;
+ import android.content.ContentResolver; import android.database.ContentObserver; import android.os.Bundle; import android.os.Handler; import android.support.design.widget.FloatingActionButton; import android.support.v7.app.AppCompatActivity; -import android.support.v7.widget.LinearLayoutManager; -import android.support.v7.widget.RecyclerView; -import android.support.v7.widget.Toolbar; import android.view.View; +import android.widget.AdapterView; +import android.widget.ListView;
import org.torproject.android.R; -import org.torproject.android.ui.hs.adapters.HSAdapter; +import org.torproject.android.ui.hs.adapters.OnionListAdapter; import org.torproject.android.ui.hs.dialogs.HSDataDialog; import org.torproject.android.ui.hs.providers.HSContentProvider;
public class HiddenServicesActivity extends AppCompatActivity { - private HSAdapter mHiddenServices; private ContentResolver mCR; - private HSObserver mHSObserver; + private OnionListAdapter mAdapter; + private String[] mProjection = new String[]{ HSContentProvider.HiddenService._ID, HSContentProvider.HiddenService.NAME, - HSContentProvider.HiddenService.DOMAIN, - HSContentProvider.HiddenService.ONION_PORT, - HSContentProvider.HiddenService.PORT}; + HSContentProvider.HiddenService.DOMAIN}; + + class HSObserver extends ContentObserver { + HSObserver(Handler handler) { + super(handler); + } + + @Override + public void onChange(boolean selfChange) { + mAdapter.changeCursor(mCR.query( + HSContentProvider.CONTENT_URI, mProjection, null, null, null + )); + } + }
@Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); - setContentView(R.layout.activity_hidden_services); - Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar); - setSupportActionBar(toolbar); + setContentView(R.layout.layout_hs_list_view); + + mCR = getContentResolver();
FloatingActionButton fab = (FloatingActionButton) findViewById(R.id.fab); fab.setOnClickListener(new View.OnClickListener() { @@ -43,35 +54,35 @@ public class HiddenServicesActivity extends AppCompatActivity { } });
- mCR = getContentResolver(); - // View adapter - mHiddenServices = new HSAdapter( - mCR.query( + mAdapter = new OnionListAdapter( + this, + getContentResolver().query( HSContentProvider.CONTENT_URI, mProjection, null, null, null - )); + ), + 0 + );
- mHSObserver = new HSObserver(new Handler()); - mCR.registerContentObserver(HSContentProvider.CONTENT_URI, true, mHSObserver); + mCR.registerContentObserver( + HSContentProvider.CONTENT_URI, true, new HSObserver(new Handler()) + );
- // Fill view - RecyclerView mRecyclerView = (RecyclerView) findViewById(R.id.onion_list); - mRecyclerView.setLayoutManager(new LinearLayoutManager(this)); - mRecyclerView.setAdapter(mHiddenServices); - } + ListView onion_list = (ListView) findViewById(R.id.onion_list); + onion_list.setAdapter(mAdapter);
- class HSObserver extends ContentObserver { - public HSObserver(Handler handler) { - super(handler); - } + onion_list.setOnItemClickListener(new AdapterView.OnItemClickListener(){
- @Override - public void onChange(boolean selfChange) { - // New data - mHiddenServices.changeCursor(mCR.query( - HSContentProvider.CONTENT_URI, mProjection, null, null, null - )); - } + @Override + public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
- } + } + }); + + onion_list.setOnItemLongClickListener(new AdapterView.OnItemLongClickListener(){
+ @Override + public boolean onItemLongClick(AdapterView<?> parent, View view, int position, long id) { + return false; + } + }); + } } diff --git a/app/src/main/java/org/torproject/android/ui/hs/adapters/CursorRecyclerViewAdapter.java b/app/src/main/java/org/torproject/android/ui/hs/adapters/CursorRecyclerViewAdapter.java deleted file mode 100644 index 9798413..0000000 --- a/app/src/main/java/org/torproject/android/ui/hs/adapters/CursorRecyclerViewAdapter.java +++ /dev/null @@ -1,144 +0,0 @@ -package org.torproject.android.ui.hs.adapters; - -/* - * Copyright (C) 2014 skyfish.jy@gmail.com - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - * - */ - -import android.database.Cursor; -import android.database.DataSetObserver; -import android.support.v7.widget.RecyclerView; - -/** - * Created by skyfishjy on 10/31/14. - */ - -public abstract class CursorRecyclerViewAdapter<VH extends RecyclerView.ViewHolder> extends RecyclerView.Adapter<VH> { - - private Cursor mCursor; - - private boolean mDataValid; - - private int mRowIdColumn; - - private DataSetObserver mDataSetObserver; - - public CursorRecyclerViewAdapter(Cursor cursor) { - mCursor = cursor; - mDataValid = cursor != null; - mRowIdColumn = mDataValid ? mCursor.getColumnIndex("_id") : -1; - mDataSetObserver = new NotifyingDataSetObserver(); - if (mCursor != null) { - mCursor.registerDataSetObserver(mDataSetObserver); - } - } - - @Override - public int getItemCount() { - if (mDataValid && mCursor != null) { - return mCursor.getCount(); - } - return 0; - } - - @Override - public long getItemId(int position) { - if (mDataValid && mCursor != null && mCursor.moveToPosition(position)) { - return mCursor.getLong(mRowIdColumn); - } - return 0; - } - - @Override - public void setHasStableIds(boolean hasStableIds) { - super.setHasStableIds(true); - } - - public abstract void onBindViewHolder(VH viewHolder, Cursor cursor); - - @Override - public void onBindViewHolder(VH viewHolder, int position) { - if (!mDataValid) { - throw new IllegalStateException("this should only be called when the cursor is valid"); - } - if (!mCursor.moveToPosition(position)) { - throw new IllegalStateException("couldn't move cursor to position " + position); - } - onBindViewHolder(viewHolder, mCursor); - } - - /** - * Change the underlying cursor to a new cursor. If there is an existing cursor it will be - * closed. - */ - public void changeCursor(Cursor cursor) { - Cursor old = swapCursor(cursor); - if (old != null) { - old.close(); - } - } - - public void closeCursor() { - mCursor.unregisterDataSetObserver(mDataSetObserver); - mCursor.close(); - } - - /** - * Swap in a new Cursor, returning the old Cursor. Unlike - * {@link #changeCursor(Cursor)}, the returned old Cursor is <em>not</em> - * closed. - */ - private Cursor swapCursor(Cursor newCursor) { - if (newCursor == mCursor) { - return null; - } - final Cursor oldCursor = mCursor; - if (oldCursor != null && mDataSetObserver != null) { - oldCursor.unregisterDataSetObserver(mDataSetObserver); - } - mCursor = newCursor; - if (mCursor != null) { - if (mDataSetObserver != null) { - mCursor.registerDataSetObserver(mDataSetObserver); - } - mRowIdColumn = newCursor.getColumnIndexOrThrow("_id"); - mDataValid = true; - notifyDataSetChanged(); - } else { - mRowIdColumn = -1; - mDataValid = false; - notifyDataSetChanged(); - //There is no notifyDataSetInvalidated() method in RecyclerView.Adapter - } - return oldCursor; - } - - private class NotifyingDataSetObserver extends DataSetObserver { - @Override - public void onChanged() { - super.onChanged(); - mDataValid = true; - notifyDataSetChanged(); - } - - @Override - public void onInvalidated() { - super.onInvalidated(); - mDataValid = false; - notifyDataSetChanged(); - //There is no notifyDataSetInvalidated() method in RecyclerView.Adapter - } - } -} \ No newline at end of file diff --git a/app/src/main/java/org/torproject/android/ui/hs/adapters/HSAdapter.java b/app/src/main/java/org/torproject/android/ui/hs/adapters/HSAdapter.java deleted file mode 100644 index 92189ad..0000000 --- a/app/src/main/java/org/torproject/android/ui/hs/adapters/HSAdapter.java +++ /dev/null @@ -1,55 +0,0 @@ -package org.torproject.android.ui.hs.adapters; - -import android.database.Cursor; -import android.support.v7.widget.RecyclerView; -import android.view.LayoutInflater; -import android.view.View; -import android.view.ViewGroup; -import android.widget.TextView; - -import org.torproject.android.R; -import org.torproject.android.ui.hs.providers.HSContentProvider; - -public class HSAdapter extends CursorRecyclerViewAdapter<HSAdapter.ViewHolder> { - - public HSAdapter(Cursor cursor) { - super(cursor); - } - - @Override - public HSAdapter.ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) { - View v = LayoutInflater.from(parent.getContext()) - .inflate(R.layout.onion_item, parent, false); - - ViewHolder vh = new ViewHolder(v); - - return vh; - } - - @Override - public void onBindViewHolder(ViewHolder viewHolder, Cursor cursor) { - viewHolder.id = cursor.getInt(cursor.getColumnIndex(HSContentProvider.HiddenService._ID)); - - String name_string = cursor.getString(cursor.getColumnIndex(HSContentProvider.HiddenService.NAME)); - Integer port = cursor.getInt(cursor.getColumnIndex(HSContentProvider.HiddenService.PORT)); - Integer onion_port = cursor.getInt(cursor.getColumnIndex(HSContentProvider.HiddenService.ONION_PORT)); - - viewHolder.name.setText(name_string + ": " + port.toString()+ " -> " +onion_port.toString()); - - viewHolder.domain.setText( - cursor.getString(cursor.getColumnIndex(HSContentProvider.HiddenService.DOMAIN)) - ); - } - - class ViewHolder extends RecyclerView.ViewHolder { - TextView name; - TextView domain; - Integer id; - - ViewHolder(View itemView) { - super(itemView); - name = (TextView) itemView.findViewById(R.id.hs_name); - domain = (TextView) itemView.findViewById(R.id.hs_onion); - } - } -} diff --git a/app/src/main/java/org/torproject/android/ui/hs/adapters/OnionListAdapter.java b/app/src/main/java/org/torproject/android/ui/hs/adapters/OnionListAdapter.java new file mode 100644 index 0000000..5275730 --- /dev/null +++ b/app/src/main/java/org/torproject/android/ui/hs/adapters/OnionListAdapter.java @@ -0,0 +1,36 @@ +package org.torproject.android.ui.hs.adapters; + +import android.content.Context; +import android.database.Cursor; +import android.support.v4.widget.CursorAdapter; +import android.view.LayoutInflater; +import android.view.View; +import android.view.ViewGroup; +import android.widget.TextView; + +import org.torproject.android.R; +import org.torproject.android.ui.hs.providers.HSContentProvider; + +public class OnionListAdapter extends CursorAdapter { + private LayoutInflater cursorInflater; + + public OnionListAdapter(Context context, Cursor c, int flags) { + super(context, c, flags); + + cursorInflater = (LayoutInflater) context.getSystemService( + Context.LAYOUT_INFLATER_SERVICE); + } + + @Override + public void bindView(View view, Context context, Cursor cursor) { + TextView name = (TextView) view.findViewById(R.id.hs_name); + name.setText(cursor.getString(cursor.getColumnIndex(HSContentProvider.HiddenService.NAME))); + TextView domain = (TextView) view.findViewById(R.id.hs_onion); + domain.setText(cursor.getString(cursor.getColumnIndex(HSContentProvider.HiddenService.DOMAIN))); + } + + @Override + public View newView(Context context, Cursor cursor, ViewGroup parent) { + return cursorInflater.inflate(R.layout.layout_hs_list_item, parent, false); + } +} diff --git a/app/src/main/java/org/torproject/android/ui/hs/dialogs/HSDataDialog.java b/app/src/main/java/org/torproject/android/ui/hs/dialogs/HSDataDialog.java index fb62cb7..67c3691 100644 --- a/app/src/main/java/org/torproject/android/ui/hs/dialogs/HSDataDialog.java +++ b/app/src/main/java/org/torproject/android/ui/hs/dialogs/HSDataDialog.java @@ -5,14 +5,11 @@ import android.app.Dialog; import android.content.ContentResolver; import android.content.ContentValues; import android.os.Bundle; -import android.support.annotation.BoolRes; import android.support.annotation.NonNull; import android.support.v4.app.DialogFragment; -import android.support.v4.app.ShareCompat; import android.support.v7.app.AlertDialog; import android.view.View; import android.widget.Button; -import android.widget.CheckBox; import android.widget.EditText; import android.widget.Toast;
@@ -25,7 +22,7 @@ public class HSDataDialog extends DialogFragment { @Override public Dialog onCreateDialog(Bundle savedInstanceState) { // Get the layout - final View dialog_view = getActivity().getLayoutInflater().inflate(R.layout.dialog_hs_data, null); + final View dialog_view = getActivity().getLayoutInflater().inflate(R.layout.layout_hs_data_dialog, null);
// Use the Builder class for convenient dialog construction final AlertDialog serverDataDialog = new AlertDialog.Builder(getActivity()) diff --git a/app/src/main/res/layout/activity_hidden_services.xml b/app/src/main/res/layout/activity_hidden_services.xml deleted file mode 100644 index a2e8663..0000000 --- a/app/src/main/res/layout/activity_hidden_services.xml +++ /dev/null @@ -1,34 +0,0 @@ -<?xml version="1.0" encoding="utf-8"?> -<android.support.design.widget.CoordinatorLayout xmlns:android="http://schemas.android.com/apk/res/android" - xmlns:app="http://schemas.android.com/apk/res-auto" - xmlns:tools="http://schemas.android.com/tools" - android:layout_width="match_parent" - android:layout_height="match_parent" - android:fitsSystemWindows="true" - tools:context="org.torproject.android.ui.hs.HiddenServicesActivity"> - - <android.support.design.widget.AppBarLayout - android:layout_width="match_parent" - android:layout_height="wrap_content" - android:theme="@style/DefaultTheme.AppBarOverlay"> - - <android.support.v7.widget.Toolbar - android:id="@+id/toolbar" - android:layout_width="match_parent" - android:layout_height="?attr/actionBarSize" - android:background="?attr/colorPrimary" - app:popupTheme="@style/DefaultTheme.PopupOverlay" /> - - </android.support.design.widget.AppBarLayout> - - <include layout="@layout/content_hidden_services" /> - - <android.support.design.widget.FloatingActionButton - android:id="@+id/fab" - android:layout_width="wrap_content" - android:layout_height="wrap_content" - android:layout_gravity="bottom|end" - android:layout_margin="@dimen/fab_margin" - app:srcCompat="@android:drawable/stat_notify_more" /> - -</android.support.design.widget.CoordinatorLayout> diff --git a/app/src/main/res/layout/content_hidden_services.xml b/app/src/main/res/layout/content_hidden_services.xml deleted file mode 100644 index 39588f9..0000000 --- a/app/src/main/res/layout/content_hidden_services.xml +++ /dev/null @@ -1,22 +0,0 @@ -<?xml version="1.0" encoding="utf-8"?> -<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" - xmlns:app="http://schemas.android.com/apk/res-auto" - xmlns:tools="http://schemas.android.com/tools" - android:id="@+id/content_hidden_services" - android:layout_width="match_parent" - android:layout_height="match_parent" - android:paddingBottom="@dimen/activity_vertical_margin" - android:paddingLeft="10dp" - android:paddingRight="10dp" - android:paddingTop="@dimen/activity_vertical_margin" - app:layout_behavior="@string/appbar_scrolling_view_behavior" - tools:context="org.torproject.android.ui.hs.HiddenServicesActivity" - tools:showIn="@layout/activity_hidden_services"> - - <android.support.v7.widget.RecyclerView - android:id="@+id/onion_list" - android:scrollbars="vertical" - android:layout_width="match_parent" - android:layout_height="match_parent"/> - -</RelativeLayout> diff --git a/app/src/main/res/layout/dialog_hs_data.xml b/app/src/main/res/layout/dialog_hs_data.xml deleted file mode 100644 index 7379f45..0000000 --- a/app/src/main/res/layout/dialog_hs_data.xml +++ /dev/null @@ -1,79 +0,0 @@ -<?xml version="1.0" encoding="utf-8"?> -<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" - android:orientation="vertical" - android:layout_width="match_parent" - android:layout_height="wrap_content" - android:paddingLeft="5dp" - android:paddingRight="5dp" - android:paddingTop="5dp" - android:paddingBottom="5dp"> - - <TextView - android:layout_width="match_parent" - android:layout_height="wrap_content" - android:id="@+id/HSNameLabel" - android:text="@string/name" - android:textAppearance="@style/TextAppearance.AppCompat.Widget.PopupMenu.Small" - android:paddingLeft="5dp" /> - - <EditText - android:layout_width="match_parent" - android:layout_height="wrap_content" - android:inputType="text" - android:ems="10" - android:id="@+id/hsName" /> - - <TextView - android:text="@string/local_port" - android:layout_width="match_parent" - android:layout_height="wrap_content" - android:id="@+id/HSLocalPortLabel" - android:textAppearance="@style/TextAppearance.AppCompat.Widget.PopupMenu.Small" - android:paddingLeft="5dp" /> - - <EditText - android:layout_width="match_parent" - android:layout_height="wrap_content" - android:ems="10" - android:id="@+id/hsLocalPort" - android:inputType="number" /> - - <TextView - android:text="@string/onion_port" - android:layout_width="match_parent" - android:layout_height="wrap_content" - android:id="@+id/HSOnionPortLabel" - android:textAppearance="@style/TextAppearance.AppCompat.Widget.PopupMenu.Small" - android:paddingLeft="5dp" /> - - <EditText - android:layout_width="match_parent" - android:layout_height="wrap_content" - android:ems="10" - android:id="@+id/hsOnionPort" - android:inputType="number" /> - - <LinearLayout - android:orientation="horizontal" - android:layout_width="match_parent" - android:layout_height="match_parent"> - - <Button - android:text="@string/cancel" - android:layout_width="wrap_content" - android:layout_height="wrap_content" - android:id="@+id/HSDialogCancel" - android:layout_weight="1" - style="@style/Widget.AppCompat.Button.Borderless.Colored" /> - - <Button - android:text="@string/save" - android:layout_width="wrap_content" - android:layout_height="wrap_content" - android:id="@+id/HSDialogSave" - android:layout_weight="1" - style="@style/Widget.AppCompat.Button.Borderless.Colored" /> - - </LinearLayout> - -</LinearLayout> \ No newline at end of file diff --git a/app/src/main/res/layout/layout_hs_data_dialog.xml b/app/src/main/res/layout/layout_hs_data_dialog.xml new file mode 100644 index 0000000..7379f45 --- /dev/null +++ b/app/src/main/res/layout/layout_hs_data_dialog.xml @@ -0,0 +1,79 @@ +<?xml version="1.0" encoding="utf-8"?> +<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" + android:orientation="vertical" + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:paddingLeft="5dp" + android:paddingRight="5dp" + android:paddingTop="5dp" + android:paddingBottom="5dp"> + + <TextView + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:id="@+id/HSNameLabel" + android:text="@string/name" + android:textAppearance="@style/TextAppearance.AppCompat.Widget.PopupMenu.Small" + android:paddingLeft="5dp" /> + + <EditText + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:inputType="text" + android:ems="10" + android:id="@+id/hsName" /> + + <TextView + android:text="@string/local_port" + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:id="@+id/HSLocalPortLabel" + android:textAppearance="@style/TextAppearance.AppCompat.Widget.PopupMenu.Small" + android:paddingLeft="5dp" /> + + <EditText + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:ems="10" + android:id="@+id/hsLocalPort" + android:inputType="number" /> + + <TextView + android:text="@string/onion_port" + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:id="@+id/HSOnionPortLabel" + android:textAppearance="@style/TextAppearance.AppCompat.Widget.PopupMenu.Small" + android:paddingLeft="5dp" /> + + <EditText + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:ems="10" + android:id="@+id/hsOnionPort" + android:inputType="number" /> + + <LinearLayout + android:orientation="horizontal" + android:layout_width="match_parent" + android:layout_height="match_parent"> + + <Button + android:text="@string/cancel" + android:layout_width="wrap_content" + android:layout_height="wrap_content" + android:id="@+id/HSDialogCancel" + android:layout_weight="1" + style="@style/Widget.AppCompat.Button.Borderless.Colored" /> + + <Button + android:text="@string/save" + android:layout_width="wrap_content" + android:layout_height="wrap_content" + android:id="@+id/HSDialogSave" + android:layout_weight="1" + style="@style/Widget.AppCompat.Button.Borderless.Colored" /> + + </LinearLayout> + +</LinearLayout> \ No newline at end of file diff --git a/app/src/main/res/layout/layout_hs_list_item.xml b/app/src/main/res/layout/layout_hs_list_item.xml new file mode 100644 index 0000000..539de8f --- /dev/null +++ b/app/src/main/res/layout/layout_hs_list_item.xml @@ -0,0 +1,20 @@ +<?xml version="1.0" encoding="utf-8"?> +<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:orientation="vertical"> + + <TextView + android:id="@+id/hs_name" + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:textSize="24sp" /> + + <TextView + android:id="@+id/hs_onion" + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:textSize="18sp" /> + +</LinearLayout> \ No newline at end of file diff --git a/app/src/main/res/layout/layout_hs_list_view.xml b/app/src/main/res/layout/layout_hs_list_view.xml new file mode 100644 index 0000000..551d4e6 --- /dev/null +++ b/app/src/main/res/layout/layout_hs_list_view.xml @@ -0,0 +1,22 @@ +<android.support.design.widget.CoordinatorLayout xmlns:android="http://schemas.android.com/apk/res/android" + xmlns:app="http://schemas.android.com/apk/res-auto" + android:id="@+id/main_content" + android:layout_width="match_parent" + android:layout_height="match_parent"> + + <ListView + android:id="@+id/onion_list" + android:layout_width="match_parent" + android:layout_height="match_parent" /> + + <android.support.design.widget.FloatingActionButton + android:id="@+id/fab" + android:layout_width="wrap_content" + android:layout_height="wrap_content" + android:layout_gravity="bottom|end" + android:layout_margin="16dp" + android:src="@android:drawable/stat_notify_more" + app:layout_anchor="@id/onion_list" + app:layout_anchorGravity="bottom|right|end" /> + +</android.support.design.widget.CoordinatorLayout> \ No newline at end of file diff --git a/app/src/main/res/layout/onion_item.xml b/app/src/main/res/layout/onion_item.xml deleted file mode 100644 index 12fbf1d..0000000 --- a/app/src/main/res/layout/onion_item.xml +++ /dev/null @@ -1,33 +0,0 @@ -<?xml version="1.0" encoding="utf-8"?> -<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" - xmlns:app="http://schemas.android.com/apk/res-auto" - android:layout_width="match_parent" - android:layout_height="wrap_content" - android:padding="5dp"> - - <android.support.v7.widget.CardView - android:layout_width="match_parent" - android:layout_height="wrap_content"> - - <LinearLayout - android:layout_width="match_parent" - android:layout_height="wrap_content" - android:orientation="vertical" - android:padding="5dp"> - - <TextView - android:id="@+id/hs_name" - android:layout_width="match_parent" - android:layout_height="wrap_content" - android:textSize="24sp" - android:paddingLeft="5dp" /> - - <TextView - android:id="@+id/hs_onion" - android:layout_width="match_parent" - android:layout_height="wrap_content" - android:textSize="18sp" - android:paddingLeft="5dp" /> - </LinearLayout> - </android.support.v7.widget.CardView> -</LinearLayout> \ No newline at end of file
tor-commits@lists.torproject.org