Skip to content

Commit 570db75

Browse files
AlvaroBreyAndyScherzinger
authored andcommitted
wip: Copy note actions to overflow menu on each note action
Signed-off-by: Álvaro Brey <[email protected]>
1 parent 2a24fca commit 570db75

15 files changed

+89
-22
lines changed

app/src/main/java/it/niedermann/owncloud/notes/AppendToNoteActivity.java

+6
Original file line numberDiff line numberDiff line change
@@ -58,4 +58,10 @@ public void onNoteClick(int position, View v) {
5858
}
5959
finish();
6060
}
61+
62+
@Override
63+
public void onNoteActionsClick(int position, View v) {
64+
// TODO
65+
Toast.makeText(v.getContext(), "Not implemented yet", Toast.LENGTH_SHORT).show();
66+
}
6167
}

app/src/main/java/it/niedermann/owncloud/notes/main/MainActivity.java

+7
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,7 @@
2121
import android.text.TextUtils;
2222
import android.util.Log;
2323
import android.view.View;
24+
import android.widget.Toast;
2425

2526
import androidx.annotation.ColorInt;
2627
import androidx.annotation.NonNull;
@@ -773,6 +774,12 @@ public void onNoteFavoriteClick(int position, View view) {
773774
toggleLiveData.observe(this, (next) -> toggleLiveData.removeObservers(this));
774775
}
775776

777+
@Override
778+
public void onNoteActionsClick(int position, View v) {
779+
// TODO
780+
Toast.makeText(v.getContext(), "Not implemented yet", Toast.LENGTH_SHORT).show();
781+
}
782+
776783
@Override
777784
public void onBackPressed() {
778785
if (activityBinding.searchToolbar.getVisibility() == VISIBLE) {

app/src/main/java/it/niedermann/owncloud/notes/main/items/NoteViewHolder.java

+9-11
Original file line numberDiff line numberDiff line change
@@ -2,14 +2,10 @@
22

33
import static android.view.View.INVISIBLE;
44
import static android.view.View.VISIBLE;
5-
65
import static com.nextcloud.android.common.ui.util.PlatformThemeUtil.isDarkMode;
76

87
import android.content.Context;
9-
import android.text.SpannableString;
108
import android.text.TextUtils;
11-
import android.text.style.BackgroundColorSpan;
12-
import android.text.style.ForegroundColorSpan;
139
import android.view.View;
1410
import android.widget.ImageView;
1511
import android.widget.TextView;
@@ -19,17 +15,12 @@
1915
import androidx.annotation.NonNull;
2016
import androidx.annotation.Nullable;
2117
import androidx.appcompat.widget.AppCompatImageView;
22-
import androidx.core.content.ContextCompat;
23-
import androidx.core.graphics.drawable.DrawableCompat;
2418
import androidx.recyclerview.selection.ItemDetailsLookup;
2519
import androidx.recyclerview.widget.RecyclerView;
2620

21+
import com.google.android.material.button.MaterialButton;
2722
import com.google.android.material.chip.Chip;
2823
import com.nextcloud.android.common.ui.theme.utils.ColorRole;
29-
import com.nextcloud.android.common.ui.util.PlatformThemeUtil;
30-
31-
import java.util.regex.Matcher;
32-
import java.util.regex.Pattern;
3324

3425
import it.niedermann.owncloud.notes.R;
3526
import it.niedermann.owncloud.notes.branding.BrandingUtil;
@@ -99,6 +90,13 @@ protected void bindSearchableContent(@NonNull Context context, @NonNull TextView
9990
}
10091
}
10192

93+
protected void bindActions(@NonNull MaterialButton actionsButton, int color) {
94+
final BrandingUtil util = BrandingUtil.of(color, actionsButton.getContext());
95+
util.material.colorMaterialButtonText(actionsButton);
96+
util.material.colorMaterialTextButton(actionsButton);
97+
actionsButton.setOnClickListener(view -> noteClickListener.onNoteActionsClick(getLayoutPosition(), view));
98+
}
99+
102100
public abstract void showSwipe(boolean left);
103101

104102
@Nullable
@@ -117,4 +115,4 @@ public Long getSelectionKey() {
117115
}
118116
};
119117
}
120-
}
118+
}

app/src/main/java/it/niedermann/owncloud/notes/main/items/grid/NoteViewGridHolder.java

+2-1
Original file line numberDiff line numberDiff line change
@@ -49,10 +49,11 @@ public void bind(boolean isSelected, @NonNull Note note, boolean showCategory, @
4949
bindSearchableContent(context, binding.noteTitle, searchQuery, note.getTitle(), color);
5050
bindSearchableContent(context, binding.noteExcerpt, searchQuery, note.getExcerpt().replace(EXCERPT_LINE_SEPARATOR, "\n"), color);
5151
binding.noteExcerpt.setVisibility(TextUtils.isEmpty(note.getExcerpt()) ? GONE : VISIBLE);
52+
bindActions(binding.noteActions, color);
5253
}
5354

5455
@Nullable
5556
public View getNoteSwipeable() {
5657
return null;
5758
}
58-
}
59+
}

app/src/main/java/it/niedermann/owncloud/notes/main/items/grid/NoteViewGridHolderOnlyTitle.java

+2-1
Original file line numberDiff line numberDiff line change
@@ -38,10 +38,11 @@ public void bind(boolean isSelected, @NonNull Note note, boolean showCategory, i
3838
bindStatus(binding.noteStatus, note.getStatus(), color);
3939
bindFavorite(binding.noteFavorite, note.getFavorite());
4040
bindSearchableContent(context, binding.noteTitle, searchQuery, note.getTitle(), color);
41+
bindActions(binding.noteActions, color);
4142
}
4243

4344
@Nullable
4445
public View getNoteSwipeable() {
4546
return null;
4647
}
47-
}
48+
}

app/src/main/java/it/niedermann/owncloud/notes/main/items/list/NoteViewHolderWithExcerpt.java

+2-2
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,5 @@
11
package it.niedermann.owncloud.notes.main.items.list;
22

3-
import android.content.Context;
43
import android.view.View;
54

65
import androidx.annotation.ColorInt;
@@ -39,10 +38,11 @@ public void bind(boolean isSelected, @NonNull Note note, boolean showCategory, @
3938

4039
bindSearchableContent(context, binding.noteTitle, searchQuery, note.getTitle(), color);
4140
bindSearchableContent(context, binding.noteExcerpt, searchQuery, note.getExcerpt(), color);
41+
bindActions(binding.noteActions, color);
4242
}
4343

4444
@NonNull
4545
public View getNoteSwipeable() {
4646
return binding.noteSwipeable;
4747
}
48-
}
48+
}

app/src/main/java/it/niedermann/owncloud/notes/main/items/list/NoteViewHolderWithoutExcerpt.java

+2-1
Original file line numberDiff line numberDiff line change
@@ -36,10 +36,11 @@ public void bind(boolean isSelected, @NonNull Note note, boolean showCategory, i
3636
bindStatus(binding.noteStatus, note.getStatus(), color);
3737
bindFavorite(binding.noteFavorite, note.getFavorite());
3838
bindSearchableContent(context, binding.noteTitle, searchQuery, note.getTitle(), color);
39+
bindActions(binding.noteActions, color);
3940
}
4041

4142
@NonNull
4243
public View getNoteSwipeable() {
4344
return binding.noteSwipeable;
4445
}
45-
}
46+
}

app/src/main/java/it/niedermann/owncloud/notes/shared/model/NoteClickListener.java

+3-1
Original file line numberDiff line numberDiff line change
@@ -6,4 +6,6 @@ public interface NoteClickListener {
66
void onNoteClick(int position, View v);
77

88
void onNoteFavoriteClick(int position, View v);
9-
}
9+
10+
void onNoteActionsClick(int position, View v);
11+
}

app/src/main/java/it/niedermann/owncloud/notes/widget/singlenote/SingleNoteWidgetConfigurationActivity.java

+6-3
Original file line numberDiff line numberDiff line change
@@ -9,9 +9,6 @@
99
import android.view.View;
1010
import android.widget.Toast;
1111

12-
import androidx.appcompat.widget.Toolbar;
13-
import androidx.swiperefreshlayout.widget.SwipeRefreshLayout;
14-
1512
import it.niedermann.owncloud.notes.NotesApplication;
1613
import it.niedermann.owncloud.notes.R;
1714
import it.niedermann.owncloud.notes.exception.ExceptionHandler;
@@ -73,4 +70,10 @@ public void onNoteClick(int position, View v) {
7370
}
7471
});
7572
}
73+
74+
@Override
75+
public void onNoteActionsClick(int position, View v) {
76+
// TODO
77+
Toast.makeText(v.getContext(), "Not implemented yet", Toast.LENGTH_SHORT).show();
78+
}
7679
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
<!-- drawable/dots_vertical.xml --><vector xmlns:android="http://schemas.android.com/apk/res/android" android:height="24dp" android:width="24dp" android:viewportWidth="24" android:viewportHeight="24"><path android:fillColor="#000000" android:pathData="M12,16A2,2 0 0,1 14,18A2,2 0 0,1 12,20A2,2 0 0,1 10,18A2,2 0 0,1 12,16M12,10A2,2 0 0,1 14,12A2,2 0 0,1 12,14A2,2 0 0,1 10,12A2,2 0 0,1 12,10M12,4A2,2 0 0,1 14,6A2,2 0 0,1 12,8A2,2 0 0,1 10,6A2,2 0 0,1 12,4Z" /></vector>

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

+12-1
Original file line numberDiff line numberDiff line change
@@ -102,5 +102,16 @@
102102
tools:text="@tools:sample/lorem/random" />
103103
</FrameLayout>
104104
</LinearLayout>
105+
106+
<com.google.android.material.button.MaterialButton
107+
android:id="@+id/noteActions"
108+
style="@style/Widget.Material3.Button.IconButton"
109+
android:layout_width="wrap_content"
110+
android:layout_height="wrap_content"
111+
android:layout_gravity="bottom|end"
112+
android:contentDescription="@string/note_actions"
113+
app:icon="@drawable/ic_dots_vertical"
114+
app:iconTint="?android:textColorPrimary"
115+
app:rippleColor="@color/fg_secondary" />
105116
</LinearLayout>
106-
</com.google.android.material.card.MaterialCardView>
117+
</com.google.android.material.card.MaterialCardView>

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

+12-1
Original file line numberDiff line numberDiff line change
@@ -56,5 +56,16 @@
5656
android:textColor="@color/fg_default"
5757
tools:maxLength="50"
5858
tools:text="@tools:sample/lorem/random" />
59+
60+
<com.google.android.material.button.MaterialButton
61+
android:id="@+id/noteActions"
62+
style="@style/Widget.Material3.Button.IconButton"
63+
android:layout_width="wrap_content"
64+
android:layout_height="wrap_content"
65+
android:layout_gravity="bottom|end"
66+
android:contentDescription="@string/note_actions"
67+
app:icon="@drawable/ic_dots_vertical"
68+
app:iconTint="?android:textColorPrimary"
69+
app:rippleColor="@color/fg_secondary" />
5970
</LinearLayout>
60-
</com.google.android.material.card.MaterialCardView>
71+
</com.google.android.material.card.MaterialCardView>

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

+12
Original file line numberDiff line numberDiff line change
@@ -116,6 +116,18 @@
116116
tools:text="@tools:sample/lorem/random" />
117117
</LinearLayout>
118118
</LinearLayout>
119+
120+
<com.google.android.material.button.MaterialButton
121+
android:id="@+id/noteActions"
122+
style="@style/Widget.Material3.Button.IconButton"
123+
android:layout_width="wrap_content"
124+
android:layout_height="wrap_content"
125+
android:layout_gravity="center_vertical"
126+
android:contentDescription="@string/note_actions"
127+
app:icon="@drawable/ic_dots_vertical"
128+
app:iconTint="?android:textColorPrimary"
129+
app:rippleColor="@color/fg_secondary" />
130+
119131
</LinearLayout>
120132

121133
</FrameLayout>

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

+12
Original file line numberDiff line numberDiff line change
@@ -88,6 +88,18 @@
8888
android:textSize="@dimen/secondary_font_size"
8989
tools:maxLength="15"
9090
tools:text="@tools:sample/lorem/random" />
91+
92+
<com.google.android.material.button.MaterialButton
93+
android:id="@+id/noteActions"
94+
style="@style/Widget.Material3.Button.IconButton"
95+
android:layout_width="wrap_content"
96+
android:layout_height="wrap_content"
97+
android:layout_gravity="center_vertical"
98+
android:contentDescription="@string/note_actions"
99+
app:icon="@drawable/ic_dots_vertical"
100+
app:iconTint="?android:textColorPrimary"
101+
app:rippleColor="@color/fg_secondary" />
102+
91103
</LinearLayout>
92104

93105
</FrameLayout>

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

+1
Original file line numberDiff line numberDiff line change
@@ -370,4 +370,5 @@
370370
<string name="switch_to_plain_editing">Switch to plain editing</string>
371371
<string name="action_back">Back</string>
372372
<string name="user_agent" translatable="false">Mozilla/5.0 (Android) %1$s-android/%2$s</string>
373+
<string name="note_actions">Note actions</string>
373374
</resources>

0 commit comments

Comments
 (0)