This commit is contained in:
tom79 2019-09-12 19:15:14 +02:00
parent 964c0d733a
commit 6ecdcef308
4 changed files with 118 additions and 5 deletions

View File

@ -51,6 +51,7 @@ import android.text.style.UnderlineSpan;
import android.view.Menu;
import android.view.MenuItem;
import android.view.View;
import android.view.inputmethod.EditorInfo;
import android.widget.ArrayAdapter;
import android.widget.EditText;
import android.widget.ImageButton;
@ -86,6 +87,7 @@ import app.fedilab.android.client.Entities.ManageTimelines;
import app.fedilab.android.client.Entities.Relationship;
import app.fedilab.android.client.Entities.RemoteInstance;
import app.fedilab.android.client.Entities.Status;
import app.fedilab.android.client.Entities.UserNote;
import app.fedilab.android.client.HttpsConnection;
import app.fedilab.android.drawers.AccountsInAListAdapter;
import app.fedilab.android.drawers.StatusListAdapter;
@ -97,6 +99,7 @@ import app.fedilab.android.helper.Helper;
import app.fedilab.android.interfaces.OnListActionInterface;
import app.fedilab.android.sqlite.AccountDAO;
import app.fedilab.android.sqlite.InstancesDAO;
import app.fedilab.android.sqlite.NotesDAO;
import app.fedilab.android.sqlite.Sqlite;
import app.fedilab.android.sqlite.TempMuteDAO;
import es.dmoral.toasty.Toasty;
@ -133,7 +136,7 @@ public class ShowAccountActivity extends BaseActivity implements OnPostActionInt
private List<Status> statuses;
private StatusListAdapter statusListAdapter;
private ImageButton account_follow;
private ImageButton account_follow, account_personal_note;
private String addToList;
private ViewPager mPager;
private TabLayout tabLayout;
@ -194,6 +197,7 @@ public class ShowAccountActivity extends BaseActivity implements OnPostActionInt
pins = new ArrayList<>();
Bundle b = getIntent().getExtras();
account_follow = findViewById(R.id.account_follow);
account_personal_note = findViewById(R.id.account_personal_note);
account_follow_request = findViewById(R.id.account_follow_request);
header_edit_profile = findViewById(R.id.header_edit_profile);
account_follow.setEnabled(false);
@ -885,6 +889,51 @@ public class ShowAccountActivity extends BaseActivity implements OnPostActionInt
return false;
}
});
UserNote userNote = new NotesDAO(getApplicationContext(), db).getUserNote(account.getAcct());
if( userNote != null ){
account_personal_note.setVisibility(View.VISIBLE);
account_personal_note.setOnClickListener(view->{
AlertDialog.Builder builderInner = new AlertDialog.Builder(ShowAccountActivity.this, style);
builderInner.setTitle(R.string.note_for_account);
EditText input = new EditText(ShowAccountActivity.this);
LinearLayout.LayoutParams lp = new LinearLayout.LayoutParams(
LinearLayout.LayoutParams.MATCH_PARENT,
LinearLayout.LayoutParams.WRAP_CONTENT);
input.setLayoutParams(lp);
input.setSingleLine(false);
input.setText(userNote.getNote());
input.setImeOptions(EditorInfo.IME_FLAG_NO_ENTER_ACTION);
builderInner.setView(input);
builderInner.setNegativeButton(R.string.cancel, new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
dialog.dismiss();
}
});
builderInner.setPositiveButton(R.string.yes, new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
UserNote userNote = new NotesDAO(getApplicationContext(), db).getUserNote(account.getAcct());
if( userNote == null) {
userNote = new UserNote();
userNote.setAcct(account.getAcct());
}
userNote.setNote(input.getText().toString());
new NotesDAO(getApplicationContext(), db).insertInstance(userNote);
if( input.getText().toString().trim().length() > 0 ){
account_personal_note.setVisibility(View.VISIBLE);
}else{
account_personal_note.setVisibility(View.GONE);
}
dialog.dismiss();
}
});
builderInner.show();
});
}
TextView account_date = findViewById(R.id.account_date);
account_date.setText(Helper.shortDateToString(account.getCreated_at()));
new Thread(new Runnable() {
@ -1181,6 +1230,7 @@ public class ShowAccountActivity extends BaseActivity implements OnPostActionInt
popup.getMenu().findItem(R.id.action_hide_boost).setVisible(false);
popup.getMenu().findItem(R.id.action_endorse).setVisible(false);
popup.getMenu().findItem(R.id.action_direct_message).setVisible(false);
popup.getMenu().findItem(R.id.action_add_notes).setVisible(false);
popup.getMenu().findItem(R.id.action_add_to_list).setVisible(false);
stringArrayConf = getResources().getStringArray(R.array.more_action_owner_confirm);
} else {
@ -1231,10 +1281,10 @@ public class ShowAccountActivity extends BaseActivity implements OnPostActionInt
} else {
style = R.style.Dialog;
}
final SQLiteDatabase db = Sqlite.getInstance(getApplicationContext(), Sqlite.DB_NAME, null, Sqlite.DB_VERSION).open();
switch (item.getItemId()) {
case R.id.action_follow_instance:
String finalInstanceName = splitAcct[1];
final SQLiteDatabase db = Sqlite.getInstance(getApplicationContext(), Sqlite.DB_NAME, null, Sqlite.DB_VERSION).open();
List<RemoteInstance> remoteInstances = new InstancesDAO(ShowAccountActivity.this, db).getInstanceByName(finalInstanceName);
if (remoteInstances != null && remoteInstances.size() > 0) {
Toasty.info(getApplicationContext(), getString(R.string.toast_instance_already_added), Toast.LENGTH_LONG).show();
@ -1263,7 +1313,6 @@ public class ShowAccountActivity extends BaseActivity implements OnPostActionInt
runOnUiThread(new Runnable() {
public void run() {
final SQLiteDatabase db = Sqlite.getInstance(getApplicationContext(), Sqlite.DB_NAME, null, Sqlite.DB_VERSION).open();
if (!peertubeAccount)
new InstancesDAO(ShowAccountActivity.this, db).insertInstance(finalInstanceName, "MASTODON");
else
@ -1446,6 +1495,47 @@ public class ShowAccountActivity extends BaseActivity implements OnPostActionInt
});
builderInner.show();
return true;
case R.id.action_add_notes:
UserNote userNote = new NotesDAO(getApplicationContext(), db).getUserNote(account.getAcct());
builderInner = new AlertDialog.Builder(ShowAccountActivity.this, style);
builderInner.setTitle(R.string.note_for_account);
input = new EditText(ShowAccountActivity.this);
lp = new LinearLayout.LayoutParams(
LinearLayout.LayoutParams.MATCH_PARENT,
LinearLayout.LayoutParams.WRAP_CONTENT);
input.setLayoutParams(lp);
input.setSingleLine(false);
if( userNote != null) {
input.setText(userNote.getNote());
}
input.setImeOptions(EditorInfo.IME_FLAG_NO_ENTER_ACTION);
builderInner.setView(input);
builderInner.setNegativeButton(R.string.cancel, new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
dialog.dismiss();
}
});
builderInner.setPositiveButton(R.string.yes, new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
UserNote userNote = new NotesDAO(getApplicationContext(), db).getUserNote(account.getAcct());
if( userNote == null) {
userNote = new UserNote();
userNote.setAcct(account.getAcct());
}
userNote.setNote(input.getText().toString());
new NotesDAO(getApplicationContext(), db).insertInstance(userNote);
if( input.getText().toString().trim().length() > 0 ){
account_personal_note.setVisibility(View.VISIBLE);
}else{
account_personal_note.setVisibility(View.GONE);
}
dialog.dismiss();
}
});
builderInner.show();
return true;
case R.id.action_block:
builderInner = new AlertDialog.Builder(ShowAccountActivity.this, style);
builderInner.setTitle(stringArrayConf[1]);

View File

@ -94,7 +94,18 @@
android:visibility="gone"
app:layout_constraintStart_toEndOf="@id/account_pp"
app:layout_constraintTop_toBottomOf="@id/banner_pp" />
<ImageButton
android:id="@+id/account_personal_note"
android:layout_width="45dp"
android:layout_height="45dp"
android:layout_marginStart="10dp"
android:src="@drawable/ic_note"
style="@style/Widget.AppCompat.Button.Colored"
android:layout_marginTop="10dp"
android:scaleType="fitCenter"
android:visibility="gone"
app:layout_constraintStart_toEndOf="@id/account_follow"
app:layout_constraintTop_toBottomOf="@id/banner_pp" />
<View
android:id="@+id/fake_actionbar"
android:layout_width="match_parent"

View File

@ -95,7 +95,18 @@
android:visibility="gone"
app:layout_constraintStart_toEndOf="@id/account_pp"
app:layout_constraintTop_toBottomOf="@id/banner_pp" />
<ImageButton
android:id="@+id/account_personal_note"
android:layout_width="45dp"
android:layout_height="45dp"
android:layout_marginStart="10dp"
android:src="@drawable/ic_note"
style="@style/Widget.AppCompat.Button.Colored"
android:layout_marginTop="10dp"
android:scaleType="fitCenter"
android:visibility="gone"
app:layout_constraintStart_toEndOf="@id/account_follow"
app:layout_constraintTop_toBottomOf="@id/banner_pp" />
<View
android:id="@+id/fake_actionbar"
android:layout_width="match_parent"

View File

@ -1214,4 +1214,5 @@
<string name="no_live_notif">No live notifications</string>
<string name="no_live_indication">Notifications will be fetched every 15 minutes.</string>
<string name="action_add_notes">Add notes</string>
<string name="note_for_account">Notes for the account</string>
</resources>