introduce media browser activity
This commit is contained in:
		
							parent
							
								
									06972ec95c
								
							
						
					
					
						commit
						7a0c53aa71
					
				|  | @ -235,6 +235,9 @@ | |||
|                   android:theme="@style/Base.Theme.AppCompat"/> | ||||
|         <activity android:name=".ui.MemorizingActivity"/> | ||||
| 
 | ||||
|         <activity android:name=".ui.MediaBrowserActivity" | ||||
|             android:label="@string/media_browser"/> | ||||
| 
 | ||||
|         <service android:name=".services.ExportLogsService"/> | ||||
|         <service | ||||
|             android:name=".services.ContactChooserTargetService" | ||||
|  |  | |||
|  | @ -775,10 +775,10 @@ public class DatabaseBackend extends SQLiteOpenHelper { | |||
| 		}; | ||||
| 	} | ||||
| 
 | ||||
| 	public List<FilePath> getRelativeFilePaths(Account account, Jid jid, int limit) { | ||||
| 	public List<FilePath> getRelativeFilePaths(String account, Jid jid, int limit) { | ||||
| 		SQLiteDatabase db = this.getReadableDatabase(); | ||||
| 		final String SQL = "select uuid,relativeFilePath from messages where type in (1,2) and conversationUuid=(select uuid from conversations where accountUuid=? and (contactJid=? or contactJid like ?)) order by timeSent desc"; | ||||
| 		final String[] args = {account.getUuid(), jid.asBareJid().toEscapedString(), jid.asBareJid().toEscapedString()+"/%"}; | ||||
| 		final String[] args = {account, jid.toEscapedString(), jid.toEscapedString()+"/%"}; | ||||
| 		Cursor cursor = db.rawQuery(SQL+(limit > 0 ? " limit "+String.valueOf(limit) : ""), args); | ||||
| 		List<FilePath> filesPaths = new ArrayList<>(); | ||||
| 		while(cursor.moveToNext()) { | ||||
|  |  | |||
|  | @ -2425,8 +2425,12 @@ public class XmppConnectionService extends Service { | |||
|         getAttachments(conversation.getAccount(), conversation.getJid().asBareJid(), limit, onMediaLoaded); | ||||
|     } | ||||
| 
 | ||||
|     public void getAttachments(final Account account, final Jid jid, final int limit, final OnMediaLoaded onMediaLoaded) { | ||||
|         getAttachments(account.getUuid(),jid.asBareJid(),limit, onMediaLoaded); | ||||
|     } | ||||
| 
 | ||||
| 	public void getAttachments(final Account account, final Jid jid, final int limit, final OnMediaLoaded onMediaLoaded) { | ||||
| 
 | ||||
| 	public void getAttachments(final String account, final Jid jid, final int limit, final OnMediaLoaded onMediaLoaded) { | ||||
|         new Thread(() -> onMediaLoaded.onMediaLoaded(fileBackend.convertToAttachments(databaseBackend.getRelativeFilePaths(account, jid, limit)))).start(); | ||||
|     } | ||||
| 
 | ||||
|  |  | |||
|  | @ -488,6 +488,7 @@ public class ConferenceDetailsActivity extends XmppActivity implements OnConvers | |||
|             if (this.mConversation != null) { | ||||
|                 final int limit = GridManager.getCurrentColumnCount(this.binding.media); | ||||
|                 xmppConnectionService.getAttachments(this.mConversation, limit, this); | ||||
|                 this.binding.showMedia.setOnClickListener((v)->MediaBrowserActivity.launch(this,mConversation)); | ||||
|                 updateView(); | ||||
|             } | ||||
|         } | ||||
|  |  | |||
|  | @ -1,7 +1,6 @@ | |||
| package eu.siacs.conversations.ui; | ||||
| 
 | ||||
| import android.content.ActivityNotFoundException; | ||||
| import android.content.Context; | ||||
| import android.content.DialogInterface; | ||||
| import android.content.Intent; | ||||
| import android.content.SharedPreferences; | ||||
|  | @ -12,18 +11,13 @@ import android.preference.PreferenceManager; | |||
| import android.provider.ContactsContract.CommonDataKinds; | ||||
| import android.provider.ContactsContract.Contacts; | ||||
| import android.provider.ContactsContract.Intents; | ||||
| import android.support.v4.content.ContextCompat; | ||||
| import android.support.v7.app.AlertDialog; | ||||
| import android.support.v7.widget.GridLayoutManager; | ||||
| import android.support.v7.widget.RecyclerView; | ||||
| import android.support.v7.widget.Toolbar; | ||||
| import android.util.Log; | ||||
| import android.view.LayoutInflater; | ||||
| import android.view.Menu; | ||||
| import android.view.MenuItem; | ||||
| import android.view.View; | ||||
| import android.view.View.OnClickListener; | ||||
| import android.view.ViewTreeObserver; | ||||
| import android.widget.CompoundButton; | ||||
| import android.widget.CompoundButton.OnCheckedChangeListener; | ||||
| import android.widget.TextView; | ||||
|  | @ -488,6 +482,7 @@ public class ContactDetailsActivity extends OmemoActivity implements OnAccountUp | |||
| 
 | ||||
|             final int limit = GridManager.getCurrentColumnCount(this.binding.media); | ||||
|             xmppConnectionService.getAttachments(account, contact.getJid().asBareJid(), limit, this); | ||||
|             this.binding.showMedia.setOnClickListener((v)->MediaBrowserActivity.launch(this,contact)); | ||||
|             populateView(); | ||||
|         } | ||||
|     } | ||||
|  |  | |||
|  | @ -0,0 +1,77 @@ | |||
| package eu.siacs.conversations.ui; | ||||
| 
 | ||||
| import android.content.Context; | ||||
| import android.content.Intent; | ||||
| import android.databinding.DataBindingUtil; | ||||
| import android.os.Bundle; | ||||
| import android.support.v7.widget.Toolbar; | ||||
| 
 | ||||
| import java.util.List; | ||||
| 
 | ||||
| import eu.siacs.conversations.R; | ||||
| import eu.siacs.conversations.entities.Account; | ||||
| import eu.siacs.conversations.entities.Contact; | ||||
| import eu.siacs.conversations.entities.Conversation; | ||||
| 
 | ||||
| import eu.siacs.conversations.databinding.ActivityMediaBrowserBinding; | ||||
| import eu.siacs.conversations.ui.adapter.MediaAdapter; | ||||
| import eu.siacs.conversations.ui.interfaces.OnMediaLoaded; | ||||
| import eu.siacs.conversations.ui.util.Attachment; | ||||
| import eu.siacs.conversations.ui.util.GridManager; | ||||
| import rocks.xmpp.addr.Jid; | ||||
| 
 | ||||
| public class MediaBrowserActivity extends XmppActivity implements OnMediaLoaded { | ||||
| 
 | ||||
|     private ActivityMediaBrowserBinding binding; | ||||
| 
 | ||||
|     private MediaAdapter mMediaAdapter; | ||||
| 
 | ||||
|     @Override | ||||
|     protected void onCreate(final Bundle savedInstanceState) { | ||||
|         super.onCreate(savedInstanceState); | ||||
|         this.binding = DataBindingUtil.setContentView(this,R.layout.activity_media_browser); | ||||
|         setSupportActionBar((Toolbar) binding.toolbar); | ||||
|         configureActionBar(getSupportActionBar()); | ||||
|         mMediaAdapter = new MediaAdapter(this, R.dimen.media_size); | ||||
|         this.binding.media.setAdapter(mMediaAdapter); | ||||
|         GridManager.setupLayoutManager(this, this.binding.media, R.dimen.browser_media_size); | ||||
| 
 | ||||
|     } | ||||
| 
 | ||||
|     @Override | ||||
|     protected void refreshUiReal() { | ||||
| 
 | ||||
|     } | ||||
| 
 | ||||
|     @Override | ||||
|     void onBackendConnected() { | ||||
|         Intent intent = getIntent(); | ||||
|         String account = intent == null ? null : intent.getStringExtra("account"); | ||||
|         String jid = intent == null ? null : intent.getStringExtra("jid"); | ||||
|         if (account != null && jid != null) { | ||||
|             xmppConnectionService.getAttachments(account, Jid.of(jid), 0, this); | ||||
|         } | ||||
|     } | ||||
| 
 | ||||
|     public static void launch(Context context, Contact contact) { | ||||
|         launch(context, contact.getAccount(), contact.getJid().asBareJid().toEscapedString()); | ||||
|     } | ||||
| 
 | ||||
|     public static void launch(Context context, Conversation conversation) { | ||||
|         launch(context, conversation.getAccount(), conversation.getJid().asBareJid().toEscapedString()); | ||||
|     } | ||||
| 
 | ||||
|     private static void launch(Context context, Account account, String jid) { | ||||
|         final Intent intent = new Intent(context, MediaBrowserActivity.class); | ||||
|         intent.putExtra("account",account.getUuid()); | ||||
|         intent.putExtra("jid",jid); | ||||
|         context.startActivity(intent); | ||||
|     } | ||||
| 
 | ||||
|     @Override | ||||
|     public void onMediaLoaded(List<Attachment> attachments) { | ||||
|         runOnUiThread(()->{ | ||||
|             mMediaAdapter.setAttachments(attachments); | ||||
|         }); | ||||
|     } | ||||
| } | ||||
|  | @ -0,0 +1,24 @@ | |||
| <?xml version="1.0" encoding="utf-8"?> | ||||
| <layout xmlns:android="http://schemas.android.com/apk/res/android"> | ||||
| 
 | ||||
|     <LinearLayout | ||||
|         android:layout_width="match_parent" | ||||
|         android:layout_height="match_parent" | ||||
|         android:background="?attr/color_background_primary" | ||||
|         android:orientation="vertical"> | ||||
| 
 | ||||
|         <include | ||||
|             android:id="@+id/toolbar" | ||||
|             layout="@layout/toolbar"/> | ||||
| 
 | ||||
|         <android.support.v7.widget.RecyclerView | ||||
|             android:id="@+id/media" | ||||
|             android:layout_width="match_parent" | ||||
|             android:layout_height="wrap_content" | ||||
|             android:orientation="horizontal" | ||||
|             android:clipToPadding="false" | ||||
|             android:padding="2dp" | ||||
|             android:scrollbars="vertical"/> | ||||
| 
 | ||||
|     </LinearLayout> | ||||
| </layout> | ||||
|  | @ -13,6 +13,7 @@ | |||
| 
 | ||||
| 	<dimen name="media_preview_size">80dp</dimen> | ||||
| 	<dimen name="media_size">64dp</dimen> | ||||
| 	<dimen name="browser_media_size">96dp</dimen> | ||||
| 	<dimen name="toolbar_elevation">4dp</dimen> | ||||
| 
 | ||||
| 	<dimen name="publish_avatar_top_margin">8dp</dimen> | ||||
|  |  | |||
|  | @ -735,4 +735,5 @@ | |||
|     <string name="pref_more_notification_settings_summary">Importance, Sound, Vibrate</string> | ||||
|     <string name="video_compression_channel_name">Video compression</string> | ||||
|     <string name="show_media">Show media</string> | ||||
|     <string name="media_browser">Media browser</string> | ||||
| </resources> | ||||
|  |  | |||
		Loading…
	
		Reference in New Issue
	
	 Daniel Gultsch
						Daniel Gultsch