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

Commit d2f04323 authored by Philipp Heckel's avatar Philipp Heckel
Browse files

Menu

parent e28a80d6
Loading
Loading
Loading
Loading
+2 −3
Original line number Diff line number Diff line
@@ -11,13 +11,12 @@
        android:roundIcon="@mipmap/ic_launcher_round"
        android:supportsRtl="true"
        android:theme="@style/AppTheme">
        <activity android:name="io.heckel.ntfy.MainActivity">
        <activity android:name="io.heckel.ntfy.ui.MainActivity">
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />
                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>
        <activity android:name="io.heckel.ntfy.add.AddTopicActivity" />
        <activity android:name="io.heckel.ntfy.detail.DetailActivity" />
        <activity android:name="io.heckel.ntfy.ui.DetailActivity" />
    </application>
</manifest>
+2 −1
Original line number Diff line number Diff line
package io.heckel.ntfy
package io.heckel.ntfy.ui

import android.app.AlertDialog
import android.app.Dialog
@@ -9,6 +9,7 @@ import android.view.View
import android.widget.CheckBox
import androidx.fragment.app.DialogFragment
import com.google.android.material.textfield.TextInputEditText
import io.heckel.ntfy.R

class AddFragment(private val listener: Listener) : DialogFragment() {
    interface Listener {
+1 −4
Original line number Diff line number Diff line
@@ -14,7 +14,7 @@
 * limitations under the License.
 */

package io.heckel.ntfy.detail
package io.heckel.ntfy.ui

import android.os.Bundle
import android.widget.Button
@@ -22,9 +22,6 @@ import android.widget.TextView
import androidx.activity.viewModels
import androidx.appcompat.app.AppCompatActivity
import io.heckel.ntfy.R
import io.heckel.ntfy.SUBSCRIPTION_ID
import io.heckel.ntfy.SubscriptionsViewModel
import io.heckel.ntfy.SubscriptionsViewModelFactory
import io.heckel.ntfy.data.topicShortUrl

class DetailActivity : AppCompatActivity() {
+24 −3
Original line number Diff line number Diff line
package io.heckel.ntfy
package io.heckel.ntfy.ui

import android.app.NotificationChannel
import android.app.NotificationManager
import android.content.Context
import android.content.Intent
import android.net.Uri
import android.os.Build
import android.os.Bundle
import android.view.Menu
import android.view.MenuItem
import android.view.View
import androidx.activity.viewModels
import androidx.appcompat.app.AppCompatActivity
import androidx.core.app.NotificationCompat
import androidx.core.app.NotificationManagerCompat
import androidx.recyclerview.widget.RecyclerView
import io.heckel.ntfy.R
import io.heckel.ntfy.data.Notification
import io.heckel.ntfy.data.Status
import io.heckel.ntfy.data.Subscription
import io.heckel.ntfy.data.topicShortUrl
import io.heckel.ntfy.detail.DetailActivity
import kotlin.random.Random

const val SUBSCRIPTION_ID = "topic_id"
@@ -43,7 +46,6 @@ class MainActivity : AppCompatActivity(), AddFragment.Listener {

        subscriptionViewModel.list().observe(this) {
            it?.let {
                println("new data arrived: $it")
                adapter.submitList(it as MutableList<Subscription>)
            }
        }
@@ -53,6 +55,25 @@ class MainActivity : AppCompatActivity(), AddFragment.Listener {
        subscriptionViewModel.setListener { n -> displayNotification(n) }
    }

    override fun onCreateOptionsMenu(menu: Menu): Boolean {
        menuInflater.inflate(R.menu.menu, menu)
        return true
    }

    override fun onOptionsItemSelected(item: MenuItem): Boolean {
        return when (item.itemId) {
            R.id.menu_action_source -> {
                startActivity(Intent(Intent.ACTION_VIEW, Uri.parse(getString(R.string.menu_source_url))))
                true
            }
            R.id.menu_action_website -> {
                startActivity(Intent(Intent.ACTION_VIEW, Uri.parse(getString(R.string.menu_website_url))))
                true
            }
            else -> super.onOptionsItemSelected(item)
        }
    }

    /* Opens detail view when list item is clicked. */
    private fun subscriptionOnClick(subscription: Subscription) {
        val intent = Intent(this, DetailActivity()::class.java)
+2 −4
Original line number Diff line number Diff line
package io.heckel.ntfy
package io.heckel.ntfy.ui

import android.content.Context
import android.view.LayoutInflater
@@ -8,6 +8,7 @@ import android.widget.TextView
import androidx.recyclerview.widget.DiffUtil
import androidx.recyclerview.widget.ListAdapter
import androidx.recyclerview.widget.RecyclerView
import io.heckel.ntfy.R
import io.heckel.ntfy.data.Status
import io.heckel.ntfy.data.Subscription
import io.heckel.ntfy.data.topicUrl
@@ -32,7 +33,6 @@ class TopicsAdapter(private val onClick: (Subscription) -> Unit) :
        }

        fun bind(subscription: Subscription) {
            println("bind sub: $subscription")
            this.topic = subscription
            val statusText = when (subscription.status) {
                Status.CONNECTING -> context.getString(R.string.status_connecting)
@@ -64,12 +64,10 @@ class TopicsAdapter(private val onClick: (Subscription) -> Unit) :

object TopicDiffCallback : DiffUtil.ItemCallback<Subscription>() {
    override fun areItemsTheSame(oldItem: Subscription, newItem: Subscription): Boolean {
        println("areItemsTheSame: $oldItem.id ==? $newItem.id")
        return oldItem.id == newItem.id
    }

    override fun areContentsTheSame(oldItem: Subscription, newItem: Subscription): Boolean {
        println("areContentsTheSame: $oldItem ==? $newItem")
        return oldItem == newItem
    }
}
Loading