Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 743ae530 authored by stefan-niedermann's avatar stefan-niedermann
Browse files

#554 Add dynamic shortcuts for recent notes

parent 8c6bcaae
Loading
Loading
Loading
Loading
+4 −2
Original line number Diff line number Diff line
@@ -9,10 +9,11 @@ import android.util.Log;
import android.view.Menu;
import android.view.MenuItem;

import java.util.Calendar;

import androidx.appcompat.app.ActionBar;
import androidx.appcompat.app.AppCompatActivity;

import java.util.Calendar;

import it.niedermann.owncloud.notes.R;
import it.niedermann.owncloud.notes.android.fragment.BaseNoteFragment;
import it.niedermann.owncloud.notes.android.fragment.NoteEditFragment;
@@ -24,6 +25,7 @@ import it.niedermann.owncloud.notes.util.NoteUtil;

public class EditNoteActivity extends AppCompatActivity implements BaseNoteFragment.NoteFragmentListener {

    public static final String ACTION_SHORTCUT = "it.niedermann.owncloud.notes.shortcut";
    private static final String INTENT_GOOGLE_ASSISTANT = "com.google.android.gm.action.AUTO_SEND";
    private static final String MIMETYPE_TEXT_PLAIN = "text/plain";
    public static final String PARAM_NOTE_ID = "noteId";
+30 −2
Original line number Diff line number Diff line
@@ -3,8 +3,11 @@ package it.niedermann.owncloud.notes.android.activity;
import android.app.SearchManager;
import android.content.Intent;
import android.content.SharedPreferences;
import android.content.pm.ShortcutInfo;
import android.content.pm.ShortcutManager;
import android.content.res.Configuration;
import android.graphics.Canvas;
import android.graphics.drawable.Icon;
import android.net.Uri;
import android.os.AsyncTask;
import android.os.Bundle;
@@ -55,6 +58,8 @@ import it.niedermann.owncloud.notes.util.ICallback;
import it.niedermann.owncloud.notes.util.NoteUtil;
import it.niedermann.owncloud.notes.util.NotesClientUtil;

import static it.niedermann.owncloud.notes.android.activity.EditNoteActivity.ACTION_SHORTCUT;

public class NotesListViewActivity extends AppCompatActivity implements ItemAdapter.NoteClickListener {

    public static final String CREATED_NOTE = "it.niedermann.owncloud.notes.created_notes";
@@ -110,6 +115,29 @@ public class NotesListViewActivity extends AppCompatActivity implements ItemAdap
            }
            refreshLists();
            swipeRefreshLayout.setRefreshing(false);
            new Thread(() -> {
                if (android.os.Build.VERSION.SDK_INT >= android.os.Build.VERSION_CODES.N_MR1) {
                    ShortcutManager shortcutManager = getApplicationContext().getSystemService(ShortcutManager.class);
                    if (!shortcutManager.isRateLimitingActive()) {
                        List<ShortcutInfo> newShortcuts = new ArrayList<>();

                        for (DBNote note : db.getRecentNotes()) {
                            Intent intent = new Intent(getApplicationContext(), EditNoteActivity.class);
                            intent.putExtra(EditNoteActivity.PARAM_NOTE_ID, note.getId());
                            intent.setAction(ACTION_SHORTCUT);

                            newShortcuts.add(new ShortcutInfo.Builder(getApplicationContext(), note.getId() + "")
                                    .setShortLabel(note.getTitle())
                                    .setIcon(Icon.createWithResource(getApplicationContext(), note.isFavorite() ? R.drawable.ic_star_yellow_24dp : R.drawable.ic_star_grey_ccc_24dp))
                                    .setIntent(intent)
                                    .build());
                        }
                        Log.d(getClass().getSimpleName(), "Update dynamic shortcuts");
                        shortcutManager.removeAllDynamicShortcuts();
                        shortcutManager.addDynamicShortcuts(newShortcuts);
                    }
                }
            }).run();
        }

        @Override
+17 −4
Original line number Diff line number Diff line
@@ -9,15 +9,16 @@ import android.database.sqlite.SQLiteOpenHelper;
import android.text.TextUtils;
import android.util.Log;

import androidx.annotation.NonNull;
import androidx.annotation.Nullable;
import androidx.annotation.WorkerThread;

import java.util.ArrayList;
import java.util.Calendar;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

import androidx.annotation.NonNull;
import androidx.annotation.Nullable;
import androidx.annotation.WorkerThread;
import it.niedermann.owncloud.notes.android.appwidget.NoteListWidget;
import it.niedermann.owncloud.notes.android.appwidget.SingleNoteWidget;
import it.niedermann.owncloud.notes.model.CloudNote;
@@ -243,11 +244,17 @@ public class NoteSQLiteOpenHelper extends SQLiteOpenHelper {
    @NonNull
    @WorkerThread
    private List<DBNote> getNotesCustom(@NonNull String selection, @NonNull String[] selectionArgs, @Nullable String orderBy) {
        return this.getNotesCustom(selection, selectionArgs, orderBy, null);
    }

    @NonNull
    @WorkerThread
    private List<DBNote> getNotesCustom(@NonNull String selection, @NonNull String[] selectionArgs, @Nullable String orderBy, @Nullable String limit) {
        SQLiteDatabase db = getReadableDatabase();
        if (selectionArgs.length > 2) {
            Log.v("Note", selection + "   ----   " + selectionArgs[0] + " " + selectionArgs[1] + " " + selectionArgs[2]);
        }
        Cursor cursor = db.query(table_notes, columns, selection, selectionArgs, null, null, orderBy);
        Cursor cursor = db.query(table_notes, columns, selection, selectionArgs, null, null, orderBy, limit);
        List<DBNote> notes = new ArrayList<>();
        while (cursor.moveToNext()) {
            notes.add(getNoteFromCursor(cursor));
@@ -301,6 +308,12 @@ public class NoteSQLiteOpenHelper extends SQLiteOpenHelper {
        return getNotesCustom(key_status + " != ?", new String[]{DBStatus.LOCAL_DELETED.getTitle()}, default_order);
    }

    @NonNull
    @WorkerThread
    public List<DBNote> getRecentNotes() {
        return getNotesCustom(key_status + " != ?", new String[]{DBStatus.LOCAL_DELETED.getTitle()},  key_modified + " DESC", "4");
    }

    /**
     * Returns a list of all Notes in the Database
     *
+0 −36
Original line number Diff line number Diff line
@@ -12,40 +12,4 @@
            android:targetClass="it.niedermann.owncloud.notes.android.activity.EditNoteActivity" />
        <categories android:name="android.shortcut.conversation" />
    </shortcut>
    <shortcut
        android:shortcutId="it.niedermann.owncloud.notes.recent"
        android:enabled="true"
        android:icon="@drawable/ic_access_time_grey600_24dp"
        android:shortcutShortLabel="@string/action_recent"
        >
        <intent
            android:action="it.niedermann.owncloud.notes.recent"
            android:targetPackage="it.niedermann.owncloud.notes"
            android:targetClass="it.niedermann.owncloud.notes.android.activity.NotesListViewActivity" />
        <categories android:name="android.shortcut.conversation" />
    </shortcut>
    <shortcut
        android:shortcutId="it.niedermann.owncloud.notes.favorite"
        android:enabled="true"
        android:icon="@drawable/ic_star_grey_ccc_24dp"
        android:shortcutShortLabel="@string/label_favorites"
        >
        <intent
            android:action="it.niedermann.owncloud.notes.favorites"
            android:targetPackage="it.niedermann.owncloud.notes"
            android:targetClass="it.niedermann.owncloud.notes.android.activity.NotesListViewActivity" />
        <categories android:name="android.shortcut.conversation" />
    </shortcut>
    <shortcut
        android:shortcutId="it.niedermann.owncloud.notes.settings"
        android:enabled="true"
        android:icon="@drawable/ic_settings_grey600_24dp"
        android:shortcutShortLabel="@string/action_settings"
        >
        <intent
            android:action="android.intent.action.VIEW"
            android:targetPackage="it.niedermann.owncloud.notes"
            android:targetClass="it.niedermann.owncloud.notes.android.activity.PreferencesActivity" />
        <categories android:name="android.shortcut.conversation" />
    </shortcut>
</shortcuts>
 No newline at end of file
Compare 1c399797 to 4fac9b14
Original line number Diff line number Diff line
Subproject commit 1c3997978c3cc278e26cd63735ba860b1a399bbd
Subproject commit 4fac9b14bc4e35fd317bcb75ae5e7f39c22b3c75
Loading