1
+ package com .zulip .android .activities ;
2
+
3
+ import android .content .ClipData ;
4
+ import android .content .ClipboardManager ;
5
+ import android .content .Context ;
6
+ import android .content .Intent ;
7
+ import android .net .ConnectivityManager ;
8
+ import android .net .NetworkInfo ;
9
+ import android .net .Uri ;
10
+ import android .os .Bundle ;
11
+ import android .support .v7 .app .AppCompatActivity ;
12
+ import android .support .v7 .widget .Toolbar ;
13
+ import android .view .Menu ;
14
+ import android .view .MenuItem ;
15
+ import android .view .View ;
16
+ import android .widget .ImageView ;
17
+ import android .widget .ProgressBar ;
18
+ import android .widget .Toast ;
19
+
20
+ import com .bumptech .glide .Glide ;
21
+ import com .bumptech .glide .load .resource .drawable .GlideDrawable ;
22
+ import com .bumptech .glide .request .RequestListener ;
23
+ import com .bumptech .glide .request .target .GlideDrawableImageViewTarget ;
24
+ import com .bumptech .glide .request .target .Target ;
25
+ import com .zulip .android .R ;
26
+
27
+ public class PhotoViewActivity extends AppCompatActivity {
28
+
29
+
30
+ private ImageView linkImage ;
31
+ private ProgressBar progressBar ;
32
+
33
+
34
+ @ Override
35
+ protected void onCreate (Bundle savedInstanceState ) {
36
+ super .onCreate (savedInstanceState );
37
+ setContentView (R .layout .activity_photo_view );
38
+ Toolbar toolbar = (Toolbar ) findViewById (R .id .toolbar );
39
+ setSupportActionBar (toolbar );
40
+ getSupportActionBar ().setDisplayHomeAsUpEnabled (true );
41
+ getSupportActionBar ().setHomeButtonEnabled (true );
42
+ final Intent intent = getIntent ();
43
+ String url = intent .getStringExtra (Intent .EXTRA_TEXT );
44
+ getSupportActionBar ().setTitle (url );
45
+ linkImage = (ImageView ) findViewById (R .id .linkImageView );
46
+ progressBar = (ProgressBar ) findViewById (R .id .progress );
47
+ GlideDrawableImageViewTarget imageViewPreview = new GlideDrawableImageViewTarget (linkImage );
48
+ Glide
49
+ .with (this )
50
+ .load (url )
51
+ .listener (new RequestListener <String , GlideDrawable >() {
52
+ @ Override
53
+ public boolean onException (Exception e , String model , Target <GlideDrawable > target , boolean isFirstResource ) {
54
+ progressBar .setVisibility (View .GONE );
55
+ if (!isNetworkAvailable ()) {
56
+ Toast .makeText (getApplicationContext (), R .string .toast_no_internet_connection , Toast .LENGTH_SHORT ).show ();
57
+ } else {
58
+ Toast .makeText (getApplicationContext (), R .string .toast_unable_to_load_image , Toast .LENGTH_SHORT ).show ();
59
+ }
60
+ return false ;
61
+ }
62
+
63
+ @ Override
64
+ public boolean onResourceReady (GlideDrawable resource , String model , Target <GlideDrawable > target , boolean isFromMemoryCache , boolean isFirstResource ) {
65
+ progressBar .setVisibility (View .GONE );
66
+ return false ;
67
+ }
68
+ })
69
+ .into (imageViewPreview );
70
+ }
71
+
72
+ private boolean isNetworkAvailable () {
73
+ ConnectivityManager connectivityManager
74
+ = (ConnectivityManager ) getSystemService (Context .CONNECTIVITY_SERVICE );
75
+ NetworkInfo activeNetworkInfo = connectivityManager .getActiveNetworkInfo ();
76
+ return activeNetworkInfo != null && activeNetworkInfo .isConnected ();
77
+ }
78
+
79
+ @ Override
80
+ public boolean onCreateOptionsMenu (Menu menu ) {
81
+ getMenuInflater ().inflate (R .menu .photoview_options , menu );
82
+ return true ;
83
+ }
84
+
85
+ @ Override
86
+ public boolean onOptionsItemSelected (MenuItem item ) {
87
+ final Intent intent = getIntent ();
88
+ final String url = intent .getStringExtra (Intent .EXTRA_TEXT );
89
+ switch (item .getItemId ()) {
90
+ case R .id .open :
91
+ Intent i = new Intent (Intent .ACTION_VIEW );
92
+ i .setData (Uri .parse (url ));
93
+ startActivity (i );
94
+ break ;
95
+ case R .id .copy_link :
96
+ copyLink (url );
97
+ break ;
98
+
99
+ default :
100
+ return super .onOptionsItemSelected (item );
101
+ }
102
+
103
+ return true ;
104
+ }
105
+
106
+ private void copyLink (String url ) {
107
+ ClipboardManager clipboard
108
+ = (ClipboardManager ) getSystemService (Context .CLIPBOARD_SERVICE );
109
+ ClipData clip = ClipData .newPlainText ("link" , url );
110
+ clipboard .setPrimaryClip (clip );
111
+ Toast .makeText (PhotoViewActivity .this , R .string .link_copied , Toast .LENGTH_SHORT ).show ();
112
+ }
113
+
114
+ }
0 commit comments