|  |  |  | @ -1,5 +1,6 @@ | 
		
	
		
			
				|  |  |  |  | package org.thoughtcrime.securesms.loki.redesign.activities | 
		
	
		
			
				|  |  |  |  | 
 | 
		
	
		
			
				|  |  |  |  | import android.animation.ValueAnimator | 
		
	
		
			
				|  |  |  |  | import android.annotation.SuppressLint | 
		
	
		
			
				|  |  |  |  | import android.arch.lifecycle.Observer | 
		
	
		
			
				|  |  |  |  | import android.content.Context | 
		
	
	
		
			
				
					|  |  |  | @ -8,9 +9,11 @@ import android.database.Cursor | 
		
	
		
			
				|  |  |  |  | import android.graphics.BitmapFactory | 
		
	
		
			
				|  |  |  |  | import android.graphics.Canvas | 
		
	
		
			
				|  |  |  |  | import android.graphics.Paint | 
		
	
		
			
				|  |  |  |  | import android.os.AsyncTask | 
		
	
		
			
				|  |  |  |  | import android.os.Bundle | 
		
	
		
			
				|  |  |  |  | import android.support.v4.app.LoaderManager | 
		
	
		
			
				|  |  |  |  | import android.support.v4.content.Loader | 
		
	
		
			
				|  |  |  |  | import android.support.v7.app.AlertDialog | 
		
	
		
			
				|  |  |  |  | import android.support.v7.widget.LinearLayoutManager | 
		
	
		
			
				|  |  |  |  | import android.support.v7.widget.RecyclerView | 
		
	
		
			
				|  |  |  |  | import android.support.v7.widget.helper.ItemTouchHelper | 
		
	
	
		
			
				
					|  |  |  | @ -26,6 +29,7 @@ import org.thoughtcrime.securesms.loki.redesign.utilities.push | 
		
	
		
			
				|  |  |  |  | import org.thoughtcrime.securesms.loki.redesign.views.ConversationView | 
		
	
		
			
				|  |  |  |  | import org.thoughtcrime.securesms.mms.GlideApp | 
		
	
		
			
				|  |  |  |  | import org.thoughtcrime.securesms.mms.GlideRequests | 
		
	
		
			
				|  |  |  |  | import org.thoughtcrime.securesms.notifications.MessageNotifier | 
		
	
		
			
				|  |  |  |  | import org.thoughtcrime.securesms.util.TextSecurePreferences | 
		
	
		
			
				|  |  |  |  | import kotlin.math.abs | 
		
	
		
			
				|  |  |  |  | 
 | 
		
	
	
		
			
				
					|  |  |  | @ -139,7 +143,29 @@ class HomeActivity : PassphraseRequiredActionBarActivity, ConversationClickListe | 
		
	
		
			
				|  |  |  |  | 
 | 
		
	
		
			
				|  |  |  |  |         @SuppressLint("StaticFieldLeak") | 
		
	
		
			
				|  |  |  |  |         override fun onSwiped(viewHolder: RecyclerView.ViewHolder, direction: Int) { | 
		
	
		
			
				|  |  |  |  |             // TODO: Implement | 
		
	
		
			
				|  |  |  |  |             val builder = AlertDialog.Builder(context) | 
		
	
		
			
				|  |  |  |  |             builder.setIconAttribute(R.attr.dialog_alert_icon) | 
		
	
		
			
				|  |  |  |  |             builder.setTitle("Delete Selected Conversation?") | 
		
	
		
			
				|  |  |  |  |             builder.setMessage("This will permanently delete the selected conversation.") | 
		
	
		
			
				|  |  |  |  |             builder.setCancelable(true) | 
		
	
		
			
				|  |  |  |  |             builder.setPositiveButton("Delete") { dialog, _ -> | 
		
	
		
			
				|  |  |  |  |                 val threadID = (viewHolder as HomeAdapter.ViewHolder).view.thread!!.threadId | 
		
	
		
			
				|  |  |  |  |                 AsyncTask.execute { | 
		
	
		
			
				|  |  |  |  |                     DatabaseFactory.getThreadDatabase(context).deleteConversation(threadID) | 
		
	
		
			
				|  |  |  |  |                     MessageNotifier.updateNotification(context) | 
		
	
		
			
				|  |  |  |  |                 } | 
		
	
		
			
				|  |  |  |  |                 dialog.dismiss() | 
		
	
		
			
				|  |  |  |  |             } | 
		
	
		
			
				|  |  |  |  |             builder.setNegativeButton(android.R.string.cancel) { dialog, _ -> | 
		
	
		
			
				|  |  |  |  |                 val animator = ValueAnimator.ofFloat(viewHolder.itemView.translationX, 0.0f) | 
		
	
		
			
				|  |  |  |  |                 animator.duration = 150 | 
		
	
		
			
				|  |  |  |  |                 animator.addUpdateListener { | 
		
	
		
			
				|  |  |  |  |                     update(viewHolder, animator.animatedValue as Float) | 
		
	
		
			
				|  |  |  |  |                 } | 
		
	
		
			
				|  |  |  |  |                 animator.start() | 
		
	
		
			
				|  |  |  |  |                 dialog.dismiss() | 
		
	
		
			
				|  |  |  |  |             } | 
		
	
		
			
				|  |  |  |  |             builder.create().show() | 
		
	
		
			
				|  |  |  |  |         } | 
		
	
		
			
				|  |  |  |  | 
 | 
		
	
		
			
				|  |  |  |  |         override fun onChildDraw(c: Canvas, recyclerView: RecyclerView, viewHolder: RecyclerView.ViewHolder, dx: Float, dy: Float, actionState: Int, isCurrentlyActive: Boolean) { | 
		
	
	
		
			
				
					|  |  |  | @ -147,7 +173,6 @@ class HomeActivity : PassphraseRequiredActionBarActivity, ConversationClickListe | 
		
	
		
			
				|  |  |  |  |                 super.onChildDraw(c, recyclerView, viewHolder, dx, dy, actionState, isCurrentlyActive) | 
		
	
		
			
				|  |  |  |  |             } else { | 
		
	
		
			
				|  |  |  |  |                 val itemView = viewHolder.itemView | 
		
	
		
			
				|  |  |  |  |                 val alpha = 1.0f - abs(dx) / viewHolder.itemView.width.toFloat() | 
		
	
		
			
				|  |  |  |  |                 if (dx < 0) { | 
		
	
		
			
				|  |  |  |  |                     val backgroundPaint = Paint() | 
		
	
		
			
				|  |  |  |  |                     backgroundPaint.color = context.resources.getColorWithID(R.color.destructive, context.theme) | 
		
	
	
		
			
				
					|  |  |  | @ -158,10 +183,15 @@ class HomeActivity : PassphraseRequiredActionBarActivity, ConversationClickListe | 
		
	
		
			
				|  |  |  |  |                     val top = itemView.top.toFloat() + (itemView.bottom.toFloat() - itemView.top.toFloat() - icon.height) / 2 | 
		
	
		
			
				|  |  |  |  |                     c.drawBitmap(icon, left, top, iconPaint) | 
		
	
		
			
				|  |  |  |  |                 } | 
		
	
		
			
				|  |  |  |  |                 viewHolder.itemView.alpha = alpha | 
		
	
		
			
				|  |  |  |  |                 viewHolder.itemView.translationX = dx | 
		
	
		
			
				|  |  |  |  |                 update(viewHolder, dx) | 
		
	
		
			
				|  |  |  |  |             } | 
		
	
		
			
				|  |  |  |  |         } | 
		
	
		
			
				|  |  |  |  | 
 | 
		
	
		
			
				|  |  |  |  |         private fun update(viewHolder: RecyclerView.ViewHolder, dx: Float) { | 
		
	
		
			
				|  |  |  |  |             val alpha = 1.0f - abs(dx) / viewHolder.itemView.width.toFloat() | 
		
	
		
			
				|  |  |  |  |             viewHolder.itemView.alpha = alpha | 
		
	
		
			
				|  |  |  |  |             viewHolder.itemView.translationX = dx | 
		
	
		
			
				|  |  |  |  |         } | 
		
	
		
			
				|  |  |  |  |     } | 
		
	
		
			
				|  |  |  |  |     // endregion | 
		
	
		
			
				|  |  |  |  | } |