My favorites | Sign in
Project Home Downloads Wiki Issues Source
Checkout   Browse   Changes    
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
/**
* Copyright (C) 2010 Alfredo Morresi
*
* This file is part of WebcamHolmes project.
*
* This program is free software; you can redistribute it and/or modify it under
* the terms of the GNU General Public License as published by the Free Software
* Foundation; either version 3 of the License, or (at your option) any later
* version.
*
* This program is distributed in the hope that it will be useful, but WITHOUT
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
* FOR A PARTICULAR PURPOSE. See the GNU General Public License for more
* details.
*
* You should have received a copy of the GNU General Public License along with
* this program; If not, see <http://www.gnu.org/licenses/>.
*/

package it.rainbowbreeze.webcamholmes.ui;

import java.io.FileInputStream;
import java.io.FileNotFoundException;

import it.rainbowbreeze.libs.common.RainbowServiceLocator;
import it.rainbowbreeze.libs.common.RainbowLogFacility;
import it.rainbowbreeze.libs.ui.RainbowZoomableImageView;
import it.rainbowbreeze.webcamholmes.R;
import it.rainbowbreeze.webcamholmes.common.ResultOperation;
import android.app.Activity;
import android.app.Dialog;
import android.content.Intent;
import android.graphics.Bitmap;
import android.graphics.BitmapFactory;
import android.graphics.Color;
import android.os.Bundle;
import android.view.Menu;
import android.view.MenuItem;
import android.view.View;
import android.view.Window;
import android.view.WindowManager;
import android.view.View.OnClickListener;
import android.widget.ZoomControls;

import static it.rainbowbreeze.libs.common.RainbowContractHelper.*;

/**
* Display an image in a fullscreen view, with scroll support
*
* @author Alfredo "Rainbowbreeze" Morresi
*
*/
public class ActImageFullscreen extends Activity {

//---------- Private fields
private RainbowZoomableImageView mImage;
private ActivityHelper mActivityHelper;
private ZoomControls mZoomControls;
private String mImageToDisplayPath;

private RainbowLogFacility mLogFacility;

private final static float ZOOM_INCREMENT = 0.1f;
private static final int DIALOG_PROGRESS = 10;
private static final int OPTIONMENU_SHOWHIDE_ZOOM = 10;


//---------- Public properties




//---------- Events
/* (non-Javadoc)
* @see android.app.Activity#onCreate(android.os.Bundle)
*/
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);

//make the view fullscreen
requestWindowFeature(Window.FEATURE_NO_TITLE);
getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN, WindowManager.LayoutParams.FLAG_FULLSCREEN);
setContentView(R.layout.actimagefullscreen);

mLogFacility = checkNotNull(RainbowServiceLocator.get(RainbowLogFacility.class), "LogFacility");
mActivityHelper = checkNotNull(RainbowServiceLocator.get(ActivityHelper.class), "ActivityHelper");

getDataFromIntent(getIntent());

mImage = (RainbowZoomableImageView) findViewById(R.id.actimagefullscreen_imgMain);
mImage.setBackgroundColor(Color.BLACK);
mZoomControls = (ZoomControls) findViewById(R.id.actimagefullscreen_zoomcontrols);
mZoomControls.setOnZoomInClickListener(mOnZoomInClickListener);
mZoomControls.setOnZoomOutClickListener(mOnZoomOutClickListener);

assignImageToView(mImageToDisplayPath);
}

/* (non-Javadoc)
* @see android.app.Activity#onCreateDialog(int id)
*/
protected Dialog onCreateDialog(int id) {
Dialog retDialog = null;

switch (id) {
case DIALOG_PROGRESS:
retDialog = mActivityHelper.createProgressDialog(this, 0, R.string.actimagefullscreen_msgLoadImage);
break;

default:
retDialog = super.onCreateDialog(id);
}

return retDialog;
}

/* (non-Javadoc)
* @see android.app.Activity#onPause()
*/
@Override
protected void onPause() {
mImage.onPause();
super.onPause();
}

/* (non-Javadoc)
* @see android.app.Activity#onResume()
*/
@Override
protected void onResume() {
super.onResume();
mImage.onResume(getResources());
}

/* (non-Javadoc)
* @see android.app.Activity#onCreateOptionsMenu(android.view.Menu)
*/
@Override
public boolean onCreateOptionsMenu(Menu menu) {
menu.add(0, OPTIONMENU_SHOWHIDE_ZOOM, 0, R.string.actimagefullscreen_mnuShowHideZoom)
.setIcon(android.R.drawable.ic_menu_view);
// menu.add(0, OPTIONMENU_SHARE, 1, R.string.actwebcam_mnuShare)
// .setIcon(android.R.drawable.ic_menu_view);

return true;
}

/* (non-Javadoc)
* @see android.app.Activity#onOptionsItemSelected(android.view.MenuItem)
*/
@Override
public boolean onOptionsItemSelected(MenuItem item) {
switch (item.getItemId()){
case OPTIONMENU_SHOWHIDE_ZOOM:
if (View.VISIBLE == mZoomControls.getVisibility()) {
mZoomControls.setVisibility(View.GONE);
} else {
mZoomControls.setVisibility(View.VISIBLE);
}
break;

default:
return super.onOptionsItemSelected(item);
}

return true;
}

private OnClickListener mOnZoomInClickListener = new OnClickListener() {
public void onClick(View v) {
mImage.incrementScale(ZOOM_INCREMENT);
}
};

private OnClickListener mOnZoomOutClickListener = new OnClickListener() {
public void onClick(View v) {
mImage.incrementScale(-ZOOM_INCREMENT);
}
};


//---------- Public methods




//---------- Private methods

/**
* Get data from intent and configured internal fields
* @param intent
*/
private void getDataFromIntent(Intent intent) {
Bundle extras = intent.getExtras();
//checks if current editing is for a provider or a subservice
if(extras != null) {
mImageToDisplayPath = checkNotNull(extras.getString(ActivityHelper.INTENTKEY_IMAGETODISPLAY_PATH), "ImageToDisplay");
mLogFacility.v("Showing image " + mImageToDisplayPath);
} else {
checkNotNull(null, "ImageToDisplay");
}
}

/**
* Assign dumped webcam image to view
*/
private void assignImageToView(String imageToDisplayPath) {
//TODO call in an external thread
FileInputStream fis = null;
try {
fis = new FileInputStream(imageToDisplayPath);
//fis = openFileInput(App.WEBCAM_IMAGE_DUMP_FILE);
Bitmap bitmap = BitmapFactory.decodeStream(fis);
mImage.assignImage(getResources(), bitmap);
} catch (FileNotFoundException e) {
//TODO change error return code
mActivityHelper.reportError(ActImageFullscreen.this, e, ResultOperation.RETURNCODE_ERROR_APPLICATION_ARCHITECTURE);
}
}

}

Change log

r113 by alfredo.morresi on Oct 29, 2010   Diff
changed some methods in
RainbowActivityHelper
Go to: 
Project members, sign in to write a code review

Older revisions

r99 by alfredo.morresi on Oct 10, 2010   Diff
fixed some paris webcam names
r89 by alfredo.morresi on Oct 6, 2010   Diff
1.2 release
r74 by alfredo.morresi on Sep 19, 2010   Diff
small code changes
All revisions of this file

File info

Size: 6522 bytes, 222 lines

File properties

svn:mime-type
text/plain
Powered by Google Project Hosting