166 lines
6.2 KiB
Java
166 lines
6.2 KiB
Java
/*
|
|
* Copyright (C) 2020 Stefan Schüller <sschueller@techdroid.com>
|
|
*
|
|
* This program is free software: you can redistribute it and/or modify
|
|
* it under the terms of the GNU Affero General Public License as
|
|
* published by the Free Software Foundation, either version 3 of the
|
|
* License, or (at your option) any later version.
|
|
*
|
|
* This program 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 program. If not, see <https://www.gnu.org/licenses/>.
|
|
*/
|
|
package net.schueller.peertube.activity;
|
|
|
|
import android.app.AlertDialog;
|
|
import android.os.Bundle;
|
|
import android.util.Log;
|
|
|
|
import com.google.android.material.floatingactionbutton.FloatingActionButton;
|
|
|
|
import androidx.annotation.NonNull;
|
|
|
|
import androidx.appcompat.widget.Toolbar;
|
|
import androidx.fragment.app.FragmentManager;
|
|
import androidx.fragment.app.FragmentTransaction;
|
|
import androidx.lifecycle.ViewModelProvider;
|
|
import androidx.recyclerview.widget.ItemTouchHelper;
|
|
import androidx.recyclerview.widget.LinearLayoutManager;
|
|
import androidx.recyclerview.widget.RecyclerView;
|
|
|
|
import net.schueller.peertube.R;
|
|
import net.schueller.peertube.adapter.ServerListAdapter;
|
|
import net.schueller.peertube.database.Server;
|
|
import net.schueller.peertube.database.ServerViewModel;
|
|
import net.schueller.peertube.fragment.AddServerFragment;
|
|
|
|
|
|
import java.util.Objects;
|
|
|
|
public class ServerAddressBookActivity extends CommonActivity {
|
|
|
|
private String TAG = "ServerAddressBookActivity";
|
|
public static final String EXTRA_REPLY = "net.schueller.peertube.room.REPLY";
|
|
|
|
private ServerViewModel mServerViewModel;
|
|
private AddServerFragment addServerFragment;
|
|
private FloatingActionButton floatingActionButton;
|
|
private FragmentManager fragmentManager;
|
|
|
|
@Override
|
|
public boolean onSupportNavigateUp() {
|
|
finish(); // close this activity as oppose to navigating up
|
|
return false;
|
|
}
|
|
|
|
@Override
|
|
protected void onCreate(Bundle savedInstanceState) {
|
|
super.onCreate(savedInstanceState);
|
|
setContentView(R.layout.activity_server_address_book);
|
|
|
|
// Attaching the layout to the toolbar object
|
|
Toolbar toolbar = findViewById(R.id.tool_bar_server_address_book);
|
|
// Setting toolbar as the ActionBar with setSupportActionBar() call
|
|
setSupportActionBar(toolbar);
|
|
Objects.requireNonNull(getSupportActionBar()).setDisplayHomeAsUpEnabled(true);
|
|
getSupportActionBar().setHomeAsUpIndicator(R.drawable.ic_baseline_close_24);
|
|
|
|
mServerViewModel = new ViewModelProvider(this).get(ServerViewModel.class);
|
|
|
|
showServers();
|
|
|
|
floatingActionButton = findViewById(R.id.add_server);
|
|
floatingActionButton.setOnClickListener(view -> {
|
|
|
|
Log.d(TAG, "Click");
|
|
|
|
fragmentManager = getSupportFragmentManager();
|
|
FragmentTransaction fragmentTransaction = fragmentManager.beginTransaction();
|
|
|
|
addServerFragment = new AddServerFragment();
|
|
fragmentTransaction.replace(R.id.server_book, addServerFragment);
|
|
fragmentTransaction.commit();
|
|
|
|
floatingActionButton.hide();
|
|
|
|
});
|
|
|
|
}
|
|
|
|
|
|
@Override
|
|
public void onPointerCaptureChanged(boolean hasCapture) {
|
|
|
|
}
|
|
|
|
|
|
public void showServers()
|
|
{
|
|
RecyclerView recyclerView = findViewById(R.id.server_list_recyclerview);
|
|
final ServerListAdapter adapter = new ServerListAdapter(this);
|
|
recyclerView.setAdapter(adapter);
|
|
|
|
// Delete items on swipe
|
|
ItemTouchHelper helper = new ItemTouchHelper(
|
|
new ItemTouchHelper.SimpleCallback(0,
|
|
ItemTouchHelper.LEFT | ItemTouchHelper.RIGHT) {
|
|
@Override
|
|
public boolean onMove(@NonNull RecyclerView recyclerView,
|
|
@NonNull RecyclerView.ViewHolder viewHolder,
|
|
@NonNull RecyclerView.ViewHolder target) {
|
|
return false;
|
|
}
|
|
|
|
@Override
|
|
public void onSwiped(@NonNull RecyclerView.ViewHolder viewHolder,
|
|
int direction) {
|
|
|
|
|
|
new AlertDialog.Builder(ServerAddressBookActivity.this)
|
|
.setTitle(getString(R.string.server_book_del_alert_title))
|
|
.setMessage(getString(R.string.server_book_del_alert_msg))
|
|
.setPositiveButton(android.R.string.yes, (dialog, which) -> {
|
|
int position = viewHolder.getAdapterPosition();
|
|
Server server = adapter.getServerAtPosition(position);
|
|
// Toast.makeText(ServerAddressBookActivity.this, "Deleting " +
|
|
// server.getServerName(), Toast.LENGTH_LONG).show();
|
|
// Delete the server
|
|
mServerViewModel.delete(server);
|
|
})
|
|
.setNegativeButton(android.R.string.no, (dialog, which) -> {
|
|
adapter.notifyItemChanged(viewHolder.getAdapterPosition());
|
|
})
|
|
.setIcon(android.R.drawable.ic_dialog_alert)
|
|
.show();
|
|
|
|
}
|
|
});
|
|
helper.attachToRecyclerView(recyclerView);
|
|
|
|
|
|
// Update the cached copy of the words in the adapter.
|
|
mServerViewModel.getAllServers().observe(this, servers -> {
|
|
adapter.setServers(servers);
|
|
|
|
if (addServerFragment != null) {
|
|
FragmentTransaction fragmentTransaction = fragmentManager.beginTransaction();
|
|
fragmentTransaction.remove(addServerFragment);
|
|
fragmentTransaction.commit();
|
|
|
|
floatingActionButton.show();
|
|
}
|
|
});
|
|
|
|
}
|
|
|
|
public void testServer()
|
|
{
|
|
|
|
}
|
|
|
|
}
|