Skip to content

Commit c58429a

Browse files
committed
Implement server deletion.
1 parent d91876c commit c58429a

5 files changed

Lines changed: 79 additions & 1 deletion

File tree

app/src/main/java/com/paulds/simpleftp/data/repository/ServerRepository.java

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -109,6 +109,16 @@ public void addServer(FtpServer server) {
109109
this.close();
110110
}
111111

112+
/**
113+
* Delete a FTP server.
114+
* @param serverId The identifier of the server to delete.
115+
*/
116+
public void deleteServer(int serverId) {
117+
this.open();
118+
database.delete(DatabaseHelper.TABLE_SERVER, DatabaseHelper.COLUMN_ID + "=" + serverId, null);
119+
this.close();
120+
}
121+
112122
/**
113123
* Convert a cursor from server table to a FtpServer object.
114124
* @param cursor The cursor from server table.

app/src/main/java/com/paulds/simpleftp/presentation/model/FtpServerViewModel.java

Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,11 @@ public class FtpServerViewModel {
1313
*/
1414
private ListServerViewModel mainViewModel;
1515

16+
/**
17+
* The identifier of the FTP server.
18+
*/
19+
private int id;
20+
1621
/**
1722
* The named used to display the FTP server.
1823
*/
@@ -51,6 +56,22 @@ public FtpServerViewModel(ListServerViewModel mainViewModel) {
5156
this.mainViewModel = mainViewModel;
5257
}
5358

59+
/**
60+
* Gets the identifier of the FTP server.
61+
* @return The server identifier.
62+
*/
63+
public int getId() {
64+
return id;
65+
}
66+
67+
/**
68+
* Sets the identifier of the FTP server.
69+
* @param id The server identifier.
70+
*/
71+
public void setId(int id) {
72+
this.id = id;
73+
}
74+
5475
/**
5576
* Gets the name used to display the FTP server.
5677
* @return The server name.

app/src/main/java/com/paulds/simpleftp/presentation/model/ListServerViewModel.java

Lines changed: 35 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,14 +1,17 @@
11
package com.paulds.simpleftp.presentation.model;
22

33
import android.content.Context;
4+
import android.content.DialogInterface;
45
import android.content.Intent;
56
import android.databinding.BaseObservable;
67
import android.databinding.Bindable;
78
import android.databinding.Observable;
89
import android.databinding.ObservableArrayList;
910
import android.databinding.ObservableBoolean;
1011
import android.databinding.ObservableField;
12+
import android.support.v7.app.AlertDialog;
1113
import android.view.View;
14+
import android.widget.EditText;
1215
import android.widget.Toast;
1316

1417
import com.paulds.simpleftp.BR;
@@ -81,6 +84,7 @@ public void updateList() {
8184
if(servers != null) {
8285
for (FtpServer server : serverEntities) {
8386
FtpServerViewModel viewModel = new FtpServerViewModel(this);
87+
viewModel.setId(server.getId());
8488
viewModel.setName(server.getName());
8589
viewModel.setHost(server.getHost());
8690
viewModel.setPort(server.getPort());
@@ -108,6 +112,37 @@ public void closeServer(View view) {
108112
selectedServerVisible.set(false);
109113
}
110114

115+
/**
116+
* Delete the selected server.
117+
* @param view The current view.
118+
*/
119+
public void deleteServer(View view) {
120+
if(selectedServer.get() != null) {
121+
AlertDialog.Builder builder = new AlertDialog.Builder(this.context);
122+
123+
builder.setMessage(R.string.dialog_delete_server_message);
124+
125+
builder.setPositiveButton(R.string.dialog_delete_server_positive_button, new DialogInterface.OnClickListener() {
126+
@Override
127+
public void onClick(DialogInterface dialog, int which) {
128+
AndroidApplication.getRepository().getServerRepository().deleteServer(selectedServer.get().getId());
129+
selectedServerVisible.set(false);
130+
updateList();
131+
}
132+
});
133+
134+
builder.setNegativeButton(R.string.dialog_delete_server_negative_button, new DialogInterface.OnClickListener() {
135+
@Override
136+
public void onClick(DialogInterface dialog, int which) {
137+
dialog.cancel();
138+
}
139+
});
140+
141+
AlertDialog dialog = builder.create();
142+
dialog.show();
143+
}
144+
}
145+
111146
/**
112147
* Add a new FTP server.
113148
* @param view The current view.

app/src/main/res/layout/activity_list_server.xml

Lines changed: 10 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -71,7 +71,7 @@
7171
android:orientation="vertical"
7272
android:layout_width="fill_parent"
7373
android:layout_height="fill_parent"
74-
android:background="#88000000"
74+
android:background="#66000000"
7575
android:clickable="true"
7676
android:onClick="@{model.closeServer}"
7777
app:fadeVisible="@{model.selectedServerVisible}" />
@@ -110,6 +110,15 @@
110110
android:textSize="@dimen/abc_text_size_medium_material"
111111
android:textStyle="bold" />
112112

113+
<ImageButton
114+
android:layout_width="wrap_content"
115+
android:layout_height="wrap_content"
116+
android:layout_gravity="end"
117+
android:src="@android:drawable/ic_delete"
118+
android:id="@+id/AddServer_ibCreate"
119+
android:adjustViewBounds="false"
120+
android:onClick="@{model.deleteServer}"/>
121+
113122
</android.support.v7.widget.Toolbar>
114123

115124
</android.support.design.widget.AppBarLayout>

app/src/main/res/values/strings.xml

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,4 +4,7 @@
44
<string name="dialog_create_folder_title">Create folder</string>
55
<string name="dialog_create_folder_positive_button">Create</string>
66
<string name="dialog_create_folder_negative_button">Cancel</string>
7+
<string name="dialog_delete_server_message">The server will be deleted.</string>
8+
<string name="dialog_delete_server_positive_button">Delete</string>
9+
<string name="dialog_delete_server_negative_button">Cancel</string>
710
</resources>

0 commit comments

Comments
 (0)