• R/O
  • HTTP
  • SSH
  • HTTPS

PKRemote: Commit

Pentax DSLR Remote Control app.


Commit MetaInfo

Révision1bc0d751c285e64df361a5a9b824258d04a2fe33 (tree)
l'heure2019-02-16 23:06:47
AuteurMRSa <mrsa@myad...>
CommiterMRSa

Message de Log

カレンダーのところでプレビュー画像を入れてみた。

Change Summary

Modification

--- a/app/src/main/java/net/osdn/gokigen/pkremote/MainActivity.java
+++ b/app/src/main/java/net/osdn/gokigen/pkremote/MainActivity.java
@@ -17,6 +17,7 @@ import androidx.core.app.ActivityCompat;
1717 import androidx.core.content.ContextCompat;
1818 import androidx.preference.PreferenceManager;
1919
20+import android.os.Vibrator;
2021 import android.util.Log;
2122 import android.view.MenuItem;
2223 import android.view.View;
@@ -79,13 +80,17 @@ public class MainActivity extends AppCompatActivity implements View.OnClickListe
7980 {
8081 super.onCreate(savedInstanceState);
8182 setContentView(R.layout.activity_main);
82- try {
83+ try
84+ {
8385 ActionBar bar = getSupportActionBar();
84- if (bar != null) {
86+ if (bar != null)
87+ {
8588 // タイトルバーは表示しない
8689 bar.hide();
8790 }
88- } catch (Exception e) {
91+ }
92+ catch (Exception e)
93+ {
8994 e.printStackTrace();
9095 }
9196 getWindow().addFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON);
@@ -122,7 +127,8 @@ public class MainActivity extends AppCompatActivity implements View.OnClickListe
122127 * パーミッション設定が終わった後...
123128 */
124129 @Override
125- public void onRequestPermissionsResult(int requestCode, @NonNull String permissions[], @NonNull int[] grantResults) {
130+ public void onRequestPermissionsResult(int requestCode, @NonNull String permissions[], @NonNull int[] grantResults)
131+ {
126132 super.onRequestPermissionsResult(requestCode, permissions, grantResults);
127133 prepareClass();
128134 onReadyClass();
@@ -133,11 +139,14 @@ public class MainActivity extends AppCompatActivity implements View.OnClickListe
133139 */
134140 private void initializeClass()
135141 {
136- try {
142+ try
143+ {
137144 scenceUpdater = CameraSceneUpdater.newInstance(this);
138145 interfaceProvider = CameraInterfaceProvider.newInstance(this, scenceUpdater, this);
139146 scenceUpdater.changeFirstFragment(interfaceProvider);
140- } catch (Exception e) {
147+ }
148+ catch (Exception e)
149+ {
141150 e.printStackTrace();
142151 }
143152 }
@@ -145,10 +154,14 @@ public class MainActivity extends AppCompatActivity implements View.OnClickListe
145154 /**
146155 * 本クラスの準備
147156 */
148- private void prepareClass() {
149- try {
157+ private void prepareClass()
158+ {
159+ try
160+ {
150161 mImageConnectButton.setOnClickListener(this);
151- } catch (Exception e) {
162+ }
163+ catch (Exception e)
164+ {
152165 e.printStackTrace();
153166 }
154167 }
@@ -156,41 +169,74 @@ public class MainActivity extends AppCompatActivity implements View.OnClickListe
156169 /**
157170 * 初期化終了時の処理 (カメラへの自動接続)
158171 */
159- private void onReadyClass() {
160- try {
172+ private void onReadyClass()
173+ {
174+ try
175+ {
161176 // カメラに自動接続するかどうか確認
162177 SharedPreferences preferences = PreferenceManager.getDefaultSharedPreferences(this);
163178 boolean isAutoConnectCamera = preferences.getBoolean(IPreferencePropertyAccessor.AUTO_CONNECT_TO_CAMERA, true);
164179 Log.v(TAG, "isAutoConnectCamera() : " + isAutoConnectCamera);
165180
166181 // カメラに接続する
167- if (isAutoConnectCamera) {
182+ if (isAutoConnectCamera)
183+ {
168184 // 自動接続の指示があったとき
169185 scenceUpdater.changeCameraConnection();
170186 }
171- } catch (Exception e) {
187+ }
188+ catch (Exception e)
189+ {
172190 e.printStackTrace();
173191 }
174192 }
175193
176194 @Override
177- public void onClick(View v) {
178- try {
195+ public void onClick(View v)
196+ {
197+ try
198+ {
179199 int id = v.getId();
180- switch (id) {
200+ switch (id)
201+ {
181202 case R.id.button_wifi_connect:
182203 // カメラとの接続を行う
183204 scenceUpdater.changeCameraConnection();
205+ vibrate();
184206 break;
185207
186208 default:
187209 break;
188210 }
189- } catch (Exception e) {
211+ }
212+ catch (Exception e)
213+ {
190214 e.printStackTrace();
191215 }
192216 }
193217
218+ /**
219+ *
220+ *
221+ */
222+ private void vibrate()
223+ {
224+ try {
225+ Vibrator vibrator = (Vibrator) getSystemService(VIBRATOR_SERVICE);
226+ if (vibrator != null)
227+ {
228+ vibrator.vibrate(50);
229+ }
230+ }
231+ catch (Exception e)
232+ {
233+ e.printStackTrace();
234+ }
235+
236+
237+ }
238+
239+
194240 @Override
195241 public void updateMessage(final String message, final boolean isBold, final boolean isColor, final int color)
196242 {
--- a/app/src/main/java/net/osdn/gokigen/pkremote/calendar/CalendarFragment.java
+++ b/app/src/main/java/net/osdn/gokigen/pkremote/calendar/CalendarFragment.java
@@ -2,6 +2,7 @@ package net.osdn.gokigen.pkremote.calendar;
22
33 import android.app.Activity;
44 import android.content.Context;
5+import android.graphics.Bitmap;
56 import android.os.Bundle;
67 import android.os.Vibrator;
78 import android.text.format.DateUtils;
@@ -13,6 +14,7 @@ import android.view.View;
1314 import android.view.ViewGroup;
1415 import android.widget.Button;
1516 import android.widget.ImageButton;
17+import android.widget.ImageView;
1618 import android.widget.TextView;
1719
1820 import net.osdn.gokigen.pkremote.R;
@@ -20,6 +22,8 @@ import net.osdn.gokigen.pkremote.camera.interfaces.IInterfaceProvider;
2022 import net.osdn.gokigen.pkremote.camera.interfaces.playback.ICameraContent;
2123 import net.osdn.gokigen.pkremote.camera.interfaces.playback.ICameraContentListCallback;
2224 import net.osdn.gokigen.pkremote.camera.interfaces.playback.ICameraContentsRecognizer;
25+import net.osdn.gokigen.pkremote.camera.interfaces.playback.IDownloadThumbnailImageCallback;
26+import net.osdn.gokigen.pkremote.camera.interfaces.playback.IPlaybackControl;
2327 import net.osdn.gokigen.pkremote.scene.IChangeScene;
2428
2529 import java.text.DateFormat;
@@ -31,25 +35,31 @@ import java.util.GregorianCalendar;
3135 import java.util.HashMap;
3236 import java.util.List;
3337 import java.util.Locale;
38+import java.util.Map;
3439
3540 import androidx.annotation.NonNull;
3641 import androidx.appcompat.app.AppCompatActivity;
42+import androidx.core.content.res.ResourcesCompat;
3743 import androidx.fragment.app.Fragment;
3844 import androidx.fragment.app.FragmentManager;
3945
4046 import static android.content.Context.VIBRATOR_SERVICE;
4147
48+/**
49+ *
50+ *
51+ *
52+ */
4253 public class CalendarFragment extends Fragment implements View.OnClickListener, TargetMonthSetDialog.Callback, ICameraContentsRecognizer.ICameraContentsListCallback
4354 {
4455 private final String TAG = this.toString();
4556
4657 private IInterfaceProvider interfaceProvider = null;
4758 private IChangeScene changeScene = null;
59+ private AppCompatActivity activity = null;
4860 private boolean myViewCreated = false;
4961 private View myView = null;
5062
51- private Context context = null;
52-
5363 private int currentYear = 0;
5464 private int currentMonth = 0;
5565
@@ -180,11 +190,11 @@ public class CalendarFragment extends Fragment implements View.OnClickListener,
180190 /**
181191 *
182192 */
183- private void prepare(@NonNull AppCompatActivity context, IChangeScene sceneSelector, IInterfaceProvider interfaceProvider)
193+ private void prepare(@NonNull AppCompatActivity activity, IChangeScene sceneSelector, IInterfaceProvider interfaceProvider)
184194 {
185195 Log.v(TAG, "prepare()");
186196
187- this.context = context;
197+ this.activity = activity;
188198 this.changeScene = sceneSelector;
189199 this.interfaceProvider = interfaceProvider;
190200 }
@@ -244,6 +254,13 @@ public class CalendarFragment extends Fragment implements View.OnClickListener,
244254
245255 // カレンダー上のボタンを準備する
246256 prepareButtons(myView);
257+
258+ // 表示用の画像を取得する
259+ ICameraContentsRecognizer recognizer = interfaceProvider.getCameraContentsRecognizer();
260+ if (recognizer != null)
261+ {
262+ recognizer.getRemoteCameraContentsList(true, this);
263+ }
247264 }
248265 catch (Exception e)
249266 {
@@ -252,7 +269,6 @@ public class CalendarFragment extends Fragment implements View.OnClickListener,
252269 return (myView);
253270 }
254271
255-
256272 /**
257273 * クリックされたときの処理
258274 */
@@ -261,20 +277,25 @@ public class CalendarFragment extends Fragment implements View.OnClickListener,
261277 int id = v.getId();
262278 try
263279 {
280+ boolean isUpdateImage = false;
281+
264282 // 日付を動かす処理
265283 if (id == R.id.todaySelectButton)
266284 {
267285 prepareLabels(myView);
286+ isUpdateImage = true;
268287 }
269288 else if (id == R.id.showNextMonth)
270289 {
271290 currentMonth++;
272291 setCalendarLabels(myView);
292+ isUpdateImage = true;
273293 }
274294 else if (id == R.id.showPreviousMonth)
275295 {
276296 currentMonth--;
277297 setCalendarLabels(myView);
298+ isUpdateImage = true;
278299 }
279300 else if (id == R.id.showDayYear)
280301 {
@@ -287,6 +308,16 @@ public class CalendarFragment extends Fragment implements View.OnClickListener,
287308 // 日付を選択した処理... 画面遷移
288309 Log.v(TAG, "onClick : " + id);
289310 }
311+
312+ if (isUpdateImage)
313+ {
314+ // 表示用の画像を取得する
315+ ICameraContentsRecognizer recognizer = interfaceProvider.getCameraContentsRecognizer();
316+ if (recognizer != null)
317+ {
318+ recognizer.getRemoteCameraContentsList(false, this);
319+ }
320+ }
290321 }
291322 catch (Exception ex)
292323 {
@@ -315,7 +346,6 @@ public class CalendarFragment extends Fragment implements View.OnClickListener,
315346 }
316347 }
317348
318-
319349 /**
320350 * 月の動きボタンを移動させる
321351 *
@@ -340,8 +370,8 @@ public class CalendarFragment extends Fragment implements View.OnClickListener,
340370 // カレンダー(画像)ボタン
341371 for (int id : calendarList)
342372 {
343- btn = view.findViewById(id);
344- btn.setOnClickListener(this);
373+ ImageButton imageBtn = view.findViewById(id);
374+ imageBtn.setOnClickListener(this);
345375 }
346376 }
347377 catch (Exception e)
@@ -367,13 +397,6 @@ public class CalendarFragment extends Fragment implements View.OnClickListener,
367397 currentMonth = calendar.get(Calendar.MONTH) + 1;
368398
369399 setCalendarLabels(view);
370-
371- // 表示画像を取得する
372- ICameraContentsRecognizer recognizer = interfaceProvider.getCameraContentsRecognizer();
373- if (recognizer != null)
374- {
375- recognizer.getRemoteCameraContentsList(true, this);
376- }
377400 }
378401 catch (Exception e)
379402 {
@@ -486,22 +509,38 @@ public class CalendarFragment extends Fragment implements View.OnClickListener,
486509 currentMonth = month;
487510
488511 setCalendarLabels(myView);
512+
513+ // 表示用の画像を取得する
514+ ICameraContentsRecognizer recognizer = interfaceProvider.getCameraContentsRecognizer();
515+ if (recognizer != null)
516+ {
517+ recognizer.getRemoteCameraContentsList(false, this);
518+ }
489519 }
490520
521+ /**
522+ *
523+ *
524+ *
525+ */
491526 @Override
492527 public void dataSetCancelled()
493528 {
494529 Log.v(TAG, "dataSetCancelled");
495530 }
496531
497-
532+ /**
533+ *
534+ *
535+ *
536+ */
498537 @Override
499538 public void contentsListCreated(int nofContents)
500539 {
501540 Log.v(TAG, "contentsListCreated() : " + nofContents);
502541 try
503542 {
504- SparseArray<ICameraContent> picsMap = new SparseArray<>();
543+ SparseArray<ICameraContent> imageMaps = new SparseArray<>();
505544 ICameraContentsRecognizer recognizer = interfaceProvider.getCameraContentsRecognizer();
506545 if (recognizer != null)
507546 {
@@ -527,7 +566,7 @@ public class CalendarFragment extends Fragment implements View.OnClickListener,
527566 if ((checkYear == picYear)&&(checkMonth == picMonth)&&(checkDate == picDate))
528567 {
529568 // 日時一致...抜ける
530- picsMap.append(calendarList.get(index), content);
569+ imageMaps.append(calendarList.get(index), content);
531570 Log.v(TAG, "MATCHED : " + content.getContentPath() + "/" + content.getContentName());
532571 break;
533572 }
@@ -535,7 +574,87 @@ public class CalendarFragment extends Fragment implements View.OnClickListener,
535574 // 一日進める
536575 calendar.add(Calendar.DATE, 1);
537576 }
577+
578+ // カレンダーに載せる画像の一覧ができた!
579+ updateCalendarImages(imageMaps);
580+ }
581+ }
582+ catch (Exception e)
583+ {
584+ e.printStackTrace();
585+ }
586+ }
587+
588+ /**
589+ *
590+ *
591+ */
592+ private void updateCalendarImages(final SparseArray<ICameraContent> imageMaps)
593+ {
594+ try
595+ {
596+ if (interfaceProvider == null)
597+ {
598+ Log.v(TAG, "interfaceProvider is null...");
599+ return;
600+ }
601+ final IPlaybackControl playbackControl = interfaceProvider.getPlaybackControl();
602+ if (playbackControl == null)
603+ {
604+ Log.v(TAG, "getPlaybackControl is null...");
605+ return;
606+ }
607+
608+ if (imageMaps == null)
609+ {
610+ Log.v(TAG, "imageMaps is null...");
611+ return;
538612 }
613+
614+ if (activity == null)
615+ {
616+ Log.v(TAG, "Activity is null...");
617+ return;
618+ }
619+ final int targetYear = currentYear;
620+ final int targetMonth = currentMonth;
621+ Thread thread = new Thread(new Runnable()
622+ {
623+ @Override
624+ public void run() {
625+ int width = -1;
626+ for (int id : calendarList)
627+ {
628+ try {
629+ final ImageButton targetView = activity.findViewById(id);
630+ final ICameraContent content = imageMaps.get(id);
631+ width = (targetView != null) ? targetView.getWidth() : -1;
632+
633+ activity.runOnUiThread(new Runnable()
634+ {
635+ @Override
636+ public void run()
637+ {
638+ int drawableId = (content != null) ? R.drawable.ic_satellite_grey_24dp : R.drawable.ic_crop_original_grey_24dp;
639+ if (targetView != null)
640+ {
641+ targetView.setImageDrawable(ResourcesCompat.getDrawable(activity.getResources(), drawableId, null));
642+ }
643+ }
644+ });
645+ }
646+ catch (Exception e)
647+ {
648+ e.printStackTrace();
649+ }
650+ }
651+ for (int index = 0; index < imageMaps.size(); index++)
652+ {
653+ getImageThumbnail(playbackControl, imageMaps.keyAt(index), imageMaps.valueAt(index), targetYear, targetMonth, width);
654+ }
655+ }
656+ });
657+ thread.start();
539658 }
540659 catch (Exception e)
541660 {
@@ -543,4 +662,61 @@ public class CalendarFragment extends Fragment implements View.OnClickListener,
543662 }
544663 }
545664
665+ /**
666+ *
667+ *
668+ *
669+ */
670+ private void getImageThumbnail(@NonNull IPlaybackControl playbackControl, final int id, @NonNull final ICameraContent content, final int targetYear, final int targetMonth, final int drawWidth)
671+ {
672+ try
673+ {
674+ final ImageButton targetView = activity.findViewById(id);
675+ playbackControl.downloadContentThumbnail(content.getContentPath() + "/" + content.getContentName(), new IDownloadThumbnailImageCallback() {
676+ @Override
677+ public void onCompleted(final Bitmap bitmap, Map<String, Object> metadata)
678+ {
679+ if (activity != null)
680+ {
681+ activity.runOnUiThread(new Runnable() {
682+ @Override
683+ public void run() {
684+ try {
685+ if ((targetView != null)&&(currentYear == targetYear)&&(currentMonth == targetMonth))
686+ {
687+ float width = drawWidth;
688+ if (width < 0)
689+ {
690+ width = targetView.getWidth();
691+ }
692+ float scale = width / (float) bitmap.getWidth();
693+ float height = (float) bitmap.getHeight() * scale;
694+ targetView.setImageBitmap(Bitmap.createScaledBitmap(bitmap, (int) width, (int) height, false));
695+ }
696+ else
697+ {
698+ Log.v(TAG, "" + currentYear + "(" + targetYear + ") " + currentMonth + "" + " [" + targetMonth + "]");
699+ }
700+ }
701+ catch (Exception e)
702+ {
703+ e.printStackTrace();
704+ }
705+ }
706+ });
707+ }
708+ }
709+
710+ @Override
711+ public void onErrorOccurred(Exception e)
712+ {
713+ e.printStackTrace();
714+ }
715+ });
716+ }
717+ catch (Exception e)
718+ {
719+ e.printStackTrace();
720+ }
721+ }
546722 }
--- /dev/null
+++ b/app/src/main/res/drawable/ic_crop_original_grey_24dp.xml
@@ -0,0 +1,5 @@
1+<vector android:height="24dp" android:tint="#C0C0C0"
2+ android:viewportHeight="24.0" android:viewportWidth="24.0"
3+ android:width="24dp" xmlns:android="http://schemas.android.com/apk/res/android">
4+ <path android:fillColor="#FF000000" android:pathData="M19,3L5,3c-1.1,0 -2,0.9 -2,2v14c0,1.1 0.9,2 2,2h14c1.1,0 2,-0.9 2,-2L21,5c0,-1.1 -0.9,-2 -2,-2zM19,19L5,19L5,5h14v14zM13.96,12.29l-2.75,3.54 -1.96,-2.36L6.5,17h11l-3.54,-4.71z"/>
5+</vector>
--- /dev/null
+++ b/app/src/main/res/drawable/ic_satellite_grey_24dp.xml
@@ -0,0 +1,5 @@
1+<vector android:height="24dp" android:tint="#C0C0C0"
2+ android:viewportHeight="24.0" android:viewportWidth="24.0"
3+ android:width="24dp" xmlns:android="http://schemas.android.com/apk/res/android">
4+ <path android:fillColor="#FF000000" android:pathData="M19,3L5,3c-1.1,0 -2,0.9 -2,2v14c0,1.1 0.9,2 2,2h14c1.1,0 2,-0.9 2,-2L21,5c0,-1.1 -0.9,-2 -2,-2zM5,4.99h3C8,6.65 6.66,8 5,8L5,4.99zM5,12v-2c2.76,0 5,-2.25 5,-5.01h2C12,8.86 8.87,12 5,12zM5,18l3.5,-4.5 2.5,3.01L14.5,12l4.5,6L5,18z"/>
5+</vector>
--- a/app/src/main/res/layout/fragment_calendar.xml
+++ b/app/src/main/res/layout/fragment_calendar.xml
@@ -273,83 +273,90 @@
273273 style="?android:attr/buttonBarStyle"
274274 android:layout_weight="2"
275275 >
276- <Button
276+ <ImageButton
277277 android:id="@+id/Calendar00"
278278 android:layout_width="wrap_content"
279279 android:layout_height="fill_parent"
280280 android:adjustViewBounds = "true"
281281 android:scaleType="fitCenter"
282282 android:layout_weight="1"
283+ android:contentDescription="@string/blank"
283284 android:textSize="8pt"
284285 style="?android:attr/buttonBarButtonStyle"
285286 >
286- </Button>
287- <Button
287+ </ImageButton>
288+ <ImageButton
288289 android:id="@+id/Calendar01"
289290 android:layout_width="wrap_content"
290291 android:layout_height="fill_parent"
291292 android:adjustViewBounds = "true"
292293 android:scaleType="fitCenter"
294+ android:contentDescription="@string/blank"
293295 android:layout_weight="1"
294296 android:textSize="8pt"
295297 style="?android:attr/buttonBarButtonStyle"
296298 >
297- </Button>
298- <Button
299+ </ImageButton>
300+ <ImageButton
299301 android:id="@+id/Calendar02"
300302 android:layout_width="wrap_content"
301303 android:layout_height="fill_parent"
302304 android:adjustViewBounds = "true"
303305 android:scaleType="fitCenter"
306+ android:contentDescription="@string/blank"
304307 android:layout_weight="1"
305308 android:textSize="8pt"
306309 style="?android:attr/buttonBarButtonStyle"
307310 >
308- </Button>
309- <Button
311+ </ImageButton>
312+ <ImageButton
310313 android:id="@+id/Calendar03"
311314 android:layout_width="wrap_content"
312315 android:layout_height="fill_parent"
313316 android:adjustViewBounds = "true"
314317 android:scaleType="fitCenter"
318+ android:contentDescription="@string/blank"
315319 android:layout_weight="1"
316320 android:textSize="8pt"
317321 style="?android:attr/buttonBarButtonStyle"
318322 >
319- </Button>
320- <Button
323+ </ImageButton>
324+ <ImageButton
321325 android:id="@+id/Calendar04"
322326 android:layout_width="wrap_content"
323327 android:layout_height="fill_parent"
324328 android:adjustViewBounds = "true"
325329 android:scaleType="fitCenter"
330+ android:contentDescription="@string/blank"
326331 android:layout_weight="1"
327332 android:textSize="8pt"
328333 style="?android:attr/buttonBarButtonStyle"
329334 >
330- </Button>
331- <Button
335+ </ImageButton>
336+ <ImageButton
332337 android:id="@+id/Calendar05"
333338 android:layout_width="wrap_content"
334339 android:layout_height="fill_parent"
335340 android:adjustViewBounds = "true"
336341 android:scaleType="fitCenter"
342+ android:contentDescription="@string/blank"
337343 android:layout_weight="1"
338344 android:textSize="8pt"
339345 style="?android:attr/buttonBarButtonStyle"
340346 >
341- </Button>
342- <Button
347+ </ImageButton>
348+ <ImageButton
343349 android:id="@+id/Calendar06"
344350 android:layout_width="wrap_content"
345351 android:layout_height="fill_parent"
346352 android:adjustViewBounds = "true"
347353 android:scaleType="fitCenter"
354+ android:contentDescription="@string/blank"
348355 android:layout_weight="1"
349356 android:textSize="8pt"
350357 style="?android:attr/buttonBarButtonStyle"
351358 >
352- </Button>
359+ </ImageButton>
353360 </LinearLayout>
354361
355362 <LinearLayout
@@ -462,83 +469,90 @@
462469 style="?android:attr/buttonBarStyle"
463470 android:layout_weight="2"
464471 >
465- <Button
472+ <ImageButton
466473 android:id="@+id/Calendar10"
467474 android:layout_width="wrap_content"
468475 android:layout_height="fill_parent"
469476 android:adjustViewBounds = "true"
470477 android:scaleType="fitCenter"
478+ android:contentDescription="@string/blank"
471479 android:layout_weight="1"
472480 android:textSize="8pt"
473481 style="?android:attr/buttonBarButtonStyle"
474482 >
475- </Button>
476- <Button
483+ </ImageButton>
484+ <ImageButton
477485 android:id="@+id/Calendar11"
478486 android:layout_width="wrap_content"
479487 android:layout_height="fill_parent"
480488 android:adjustViewBounds = "true"
481489 android:scaleType="fitCenter"
490+ android:contentDescription="@string/blank"
482491 android:layout_weight="1"
483492 android:textSize="8pt"
484493 style="?android:attr/buttonBarButtonStyle"
485494 >
486- </Button>
487- <Button
495+ </ImageButton>
496+ <ImageButton
488497 android:id="@+id/Calendar12"
489498 android:layout_width="wrap_content"
490499 android:layout_height="fill_parent"
491500 android:adjustViewBounds = "true"
492501 android:scaleType="fitCenter"
502+ android:contentDescription="@string/blank"
493503 android:layout_weight="1"
494504 android:textSize="8pt"
495505 style="?android:attr/buttonBarButtonStyle"
496506 >
497- </Button>
498- <Button
507+ </ImageButton>
508+ <ImageButton
499509 android:id="@+id/Calendar13"
500510 android:layout_width="wrap_content"
501511 android:layout_height="fill_parent"
502512 android:adjustViewBounds = "true"
503513 android:scaleType="fitCenter"
514+ android:contentDescription="@string/blank"
504515 android:layout_weight="1"
505516 android:textSize="8pt"
506517 style="?android:attr/buttonBarButtonStyle"
507518 >
508- </Button>
509- <Button
519+ </ImageButton>
520+ <ImageButton
510521 android:id="@+id/Calendar14"
511522 android:layout_width="wrap_content"
512523 android:layout_height="fill_parent"
513524 android:adjustViewBounds = "true"
514525 android:scaleType="fitCenter"
526+ android:contentDescription="@string/blank"
515527 android:layout_weight="1"
516528 android:textSize="8pt"
517529 style="?android:attr/buttonBarButtonStyle"
518530 >
519- </Button>
520- <Button
531+ </ImageButton>
532+ <ImageButton
521533 android:id="@+id/Calendar15"
522534 android:layout_width="wrap_content"
523535 android:layout_height="fill_parent"
524536 android:adjustViewBounds = "true"
525537 android:scaleType="fitCenter"
538+ android:contentDescription="@string/blank"
526539 android:layout_weight="1"
527540 android:textSize="8pt"
528541 style="?android:attr/buttonBarButtonStyle"
529542 >
530- </Button>
531- <Button
543+ </ImageButton>
544+ <ImageButton
532545 android:id="@+id/Calendar16"
533546 android:layout_width="wrap_content"
534547 android:layout_height="fill_parent"
535548 android:adjustViewBounds = "true"
536549 android:scaleType="fitCenter"
550+ android:contentDescription="@string/blank"
537551 android:layout_weight="1"
538552 android:textSize="8pt"
539553 style="?android:attr/buttonBarButtonStyle"
540554 >
541- </Button>
555+ </ImageButton>
542556 </LinearLayout>
543557
544558 <LinearLayout
@@ -651,83 +665,90 @@
651665 style="?android:attr/buttonBarStyle"
652666 android:layout_weight="2"
653667 >
654- <Button
668+ <ImageButton
655669 android:id="@+id/Calendar20"
656670 android:layout_width="wrap_content"
657671 android:layout_height="fill_parent"
658672 android:adjustViewBounds = "true"
659673 android:scaleType="fitCenter"
674+ android:contentDescription="@string/blank"
660675 android:layout_weight="1"
661676 android:textSize="8pt"
662677 style="?android:attr/buttonBarButtonStyle"
663678 >
664- </Button>
665- <Button
679+ </ImageButton>
680+ <ImageButton
666681 android:id="@+id/Calendar21"
667682 android:layout_width="wrap_content"
668683 android:layout_height="fill_parent"
669684 android:adjustViewBounds = "true"
670685 android:scaleType="fitCenter"
686+ android:contentDescription="@string/blank"
671687 android:layout_weight="1"
672688 android:textSize="8pt"
673689 style="?android:attr/buttonBarButtonStyle"
674690 >
675- </Button>
676- <Button
691+ </ImageButton>
692+ <ImageButton
677693 android:id="@+id/Calendar22"
678694 android:layout_width="wrap_content"
679695 android:layout_height="fill_parent"
680696 android:adjustViewBounds = "true"
681697 android:scaleType="fitCenter"
698+ android:contentDescription="@string/blank"
682699 android:layout_weight="1"
683700 android:textSize="8pt"
684701 style="?android:attr/buttonBarButtonStyle"
685702 >
686- </Button>
687- <Button
703+ </ImageButton>
704+ <ImageButton
688705 android:id="@+id/Calendar23"
689706 android:layout_width="wrap_content"
690707 android:layout_height="fill_parent"
691708 android:adjustViewBounds = "true"
692709 android:scaleType="fitCenter"
710+ android:contentDescription="@string/blank"
693711 android:layout_weight="1"
694712 android:textSize="8pt"
695713 style="?android:attr/buttonBarButtonStyle"
696714 >
697- </Button>
698- <Button
715+ </ImageButton>
716+ <ImageButton
699717 android:id="@+id/Calendar24"
700718 android:layout_width="wrap_content"
701719 android:layout_height="fill_parent"
702720 android:adjustViewBounds = "true"
703721 android:scaleType="fitCenter"
722+ android:contentDescription="@string/blank"
704723 android:layout_weight="1"
705724 android:textSize="8pt"
706725 style="?android:attr/buttonBarButtonStyle"
707726 >
708- </Button>
709- <Button
727+ </ImageButton>
728+ <ImageButton
710729 android:id="@+id/Calendar25"
711730 android:layout_width="wrap_content"
712731 android:layout_height="fill_parent"
713732 android:adjustViewBounds = "true"
714733 android:scaleType="fitCenter"
734+ android:contentDescription="@string/blank"
715735 android:layout_weight="1"
716736 android:textSize="8pt"
717737 style="?android:attr/buttonBarButtonStyle"
718738 >
719- </Button>
720- <Button
739+ </ImageButton>
740+ <ImageButton
721741 android:id="@+id/Calendar26"
722742 android:layout_width="wrap_content"
723743 android:layout_height="fill_parent"
724744 android:adjustViewBounds = "true"
725745 android:scaleType="fitCenter"
746+ android:contentDescription="@string/blank"
726747 android:layout_weight="1"
727748 android:textSize="8pt"
728749 style="?android:attr/buttonBarButtonStyle"
729750 >
730- </Button>
751+ </ImageButton>
731752 </LinearLayout>
732753
733754 <LinearLayout
@@ -840,83 +861,90 @@
840861 style="?android:attr/buttonBarStyle"
841862 android:layout_weight="2"
842863 >
843- <Button
864+ <ImageButton
844865 android:id="@+id/Calendar30"
845866 android:layout_width="wrap_content"
846867 android:layout_height="fill_parent"
847868 android:adjustViewBounds = "true"
848869 android:scaleType="fitCenter"
870+ android:contentDescription="@string/blank"
849871 android:layout_weight="1"
850872 android:textSize="8pt"
851873 style="?android:attr/buttonBarButtonStyle"
852874 >
853- </Button>
854- <Button
875+ </ImageButton>
876+ <ImageButton
855877 android:id="@+id/Calendar31"
856878 android:layout_width="wrap_content"
857879 android:layout_height="fill_parent"
858880 android:adjustViewBounds = "true"
859881 android:scaleType="fitCenter"
882+ android:contentDescription="@string/blank"
860883 android:layout_weight="1"
861884 android:textSize="8pt"
862885 style="?android:attr/buttonBarButtonStyle"
863886 >
864- </Button>
865- <Button
887+ </ImageButton>
888+ <ImageButton
866889 android:id="@+id/Calendar32"
867890 android:layout_width="wrap_content"
868891 android:layout_height="fill_parent"
869892 android:adjustViewBounds = "true"
870893 android:scaleType="fitCenter"
894+ android:contentDescription="@string/blank"
871895 android:layout_weight="1"
872896 android:textSize="8pt"
873897 style="?android:attr/buttonBarButtonStyle"
874898 >
875- </Button>
876- <Button
899+ </ImageButton>
900+ <ImageButton
877901 android:id="@+id/Calendar33"
878902 android:layout_width="wrap_content"
879903 android:layout_height="fill_parent"
880904 android:adjustViewBounds = "true"
881905 android:scaleType="fitCenter"
906+ android:contentDescription="@string/blank"
882907 android:layout_weight="1"
883908 android:textSize="8pt"
884909 style="?android:attr/buttonBarButtonStyle"
885910 >
886- </Button>
887- <Button
911+ </ImageButton>
912+ <ImageButton
888913 android:id="@+id/Calendar34"
889914 android:layout_width="wrap_content"
890915 android:layout_height="fill_parent"
891916 android:adjustViewBounds = "true"
892917 android:scaleType="fitCenter"
918+ android:contentDescription="@string/blank"
893919 android:layout_weight="1"
894920 android:textSize="8pt"
895921 style="?android:attr/buttonBarButtonStyle"
896922 >
897- </Button>
898- <Button
923+ </ImageButton>
924+ <ImageButton
899925 android:id="@+id/Calendar35"
900926 android:layout_width="wrap_content"
901927 android:layout_height="fill_parent"
902928 android:adjustViewBounds = "true"
903929 android:scaleType="fitCenter"
930+ android:contentDescription="@string/blank"
904931 android:layout_weight="1"
905932 android:textSize="8pt"
906933 style="?android:attr/buttonBarButtonStyle"
907934 >
908- </Button>
909- <Button
935+ </ImageButton>
936+ <ImageButton
910937 android:id="@+id/Calendar36"
911938 android:layout_width="wrap_content"
912939 android:layout_height="fill_parent"
913940 android:adjustViewBounds = "true"
914941 android:scaleType="fitCenter"
942+ android:contentDescription="@string/blank"
915943 android:layout_weight="1"
916944 android:textSize="8pt"
917945 style="?android:attr/buttonBarButtonStyle"
918946 >
919- </Button>
947+ </ImageButton>
920948 </LinearLayout>
921949
922950 <LinearLayout
@@ -1030,83 +1058,90 @@
10301058 style="?android:attr/buttonBarStyle"
10311059 android:layout_weight="2"
10321060 >
1033- <Button
1061+ <ImageButton
10341062 android:id="@+id/Calendar40"
10351063 android:layout_width="wrap_content"
10361064 android:layout_height="fill_parent"
10371065 android:adjustViewBounds = "true"
10381066 android:scaleType="fitCenter"
1067+ android:contentDescription="@string/blank"
10391068 android:layout_weight="1"
10401069 android:textSize="8pt"
10411070 style="?android:attr/buttonBarButtonStyle"
10421071 >
1043- </Button>
1044- <Button
1072+ </ImageButton>
1073+ <ImageButton
10451074 android:id="@+id/Calendar41"
10461075 android:layout_width="wrap_content"
10471076 android:layout_height="fill_parent"
10481077 android:adjustViewBounds = "true"
10491078 android:scaleType="fitCenter"
1079+ android:contentDescription="@string/blank"
10501080 android:layout_weight="1"
10511081 android:textSize="8pt"
10521082 style="?android:attr/buttonBarButtonStyle"
10531083 >
1054- </Button>
1055- <Button
1084+ </ImageButton>
1085+ <ImageButton
10561086 android:id="@+id/Calendar42"
10571087 android:layout_width="wrap_content"
10581088 android:layout_height="fill_parent"
10591089 android:adjustViewBounds = "true"
10601090 android:scaleType="fitCenter"
1091+ android:contentDescription="@string/blank"
10611092 android:layout_weight="1"
10621093 android:textSize="8pt"
10631094 style="?android:attr/buttonBarButtonStyle"
10641095 >
1065- </Button>
1066- <Button
1096+ </ImageButton>
1097+ <ImageButton
10671098 android:id="@+id/Calendar43"
10681099 android:layout_width="wrap_content"
10691100 android:layout_height="fill_parent"
10701101 android:adjustViewBounds = "true"
10711102 android:scaleType="fitCenter"
1103+ android:contentDescription="@string/blank"
10721104 android:layout_weight="1"
10731105 android:textSize="8pt"
10741106 style="?android:attr/buttonBarButtonStyle"
10751107 >
1076- </Button>
1077- <Button
1108+ </ImageButton>
1109+ <ImageButton
10781110 android:id="@+id/Calendar44"
10791111 android:layout_width="wrap_content"
10801112 android:layout_height="fill_parent"
10811113 android:adjustViewBounds = "true"
10821114 android:scaleType="fitCenter"
1115+ android:contentDescription="@string/blank"
10831116 android:layout_weight="1"
10841117 android:textSize="8pt"
10851118 style="?android:attr/buttonBarButtonStyle"
10861119 >
1087- </Button>
1088- <Button
1120+ </ImageButton>
1121+ <ImageButton
10891122 android:id="@+id/Calendar45"
10901123 android:layout_width="wrap_content"
10911124 android:layout_height="fill_parent"
10921125 android:adjustViewBounds = "true"
10931126 android:scaleType="fitCenter"
1127+ android:contentDescription="@string/blank"
10941128 android:layout_weight="1"
10951129 android:textSize="8pt"
10961130 style="?android:attr/buttonBarButtonStyle"
10971131 >
1098- </Button>
1099- <Button
1132+ </ImageButton>
1133+ <ImageButton
11001134 android:id="@+id/Calendar46"
11011135 android:layout_width="wrap_content"
11021136 android:layout_height="fill_parent"
11031137 android:adjustViewBounds = "true"
11041138 android:scaleType="fitCenter"
1139+ android:contentDescription="@string/blank"
11051140 android:layout_weight="1"
11061141 android:textSize="8pt"
11071142 style="?android:attr/buttonBarButtonStyle"
11081143 >
1109- </Button>
1144+ </ImageButton>
11101145 </LinearLayout>
11111146
11121147 <LinearLayout
@@ -1219,83 +1254,90 @@
12191254 style="?android:attr/buttonBarStyle"
12201255 android:layout_weight="2"
12211256 >
1222- <Button
1257+ <ImageButton
12231258 android:id="@+id/Calendar50"
12241259 android:layout_width="wrap_content"
12251260 android:layout_height="fill_parent"
12261261 android:adjustViewBounds = "true"
12271262 android:scaleType="fitCenter"
1263+ android:contentDescription="@string/blank"
12281264 android:layout_weight="1"
12291265 android:textSize="8pt"
12301266 style="?android:attr/buttonBarButtonStyle"
12311267 >
1232- </Button>
1233- <Button
1268+ </ImageButton>
1269+ <ImageButton
12341270 android:id="@+id/Calendar51"
12351271 android:layout_width="wrap_content"
12361272 android:layout_height="fill_parent"
12371273 android:adjustViewBounds = "true"
12381274 android:scaleType="fitCenter"
1275+ android:contentDescription="@string/blank"
12391276 android:layout_weight="1"
12401277 android:textSize="8pt"
12411278 style="?android:attr/buttonBarButtonStyle"
12421279 >
1243- </Button>
1244- <Button
1280+ </ImageButton>
1281+ <ImageButton
12451282 android:id="@+id/Calendar52"
12461283 android:layout_width="wrap_content"
12471284 android:layout_height="fill_parent"
12481285 android:adjustViewBounds = "true"
12491286 android:scaleType="fitCenter"
1287+ android:contentDescription="@string/blank"
12501288 android:layout_weight="1"
12511289 android:textSize="8pt"
12521290 style="?android:attr/buttonBarButtonStyle"
12531291 >
1254- </Button>
1255- <Button
1292+ </ImageButton>
1293+ <ImageButton
12561294 android:id="@+id/Calendar53"
12571295 android:layout_width="wrap_content"
12581296 android:layout_height="fill_parent"
12591297 android:adjustViewBounds = "true"
12601298 android:scaleType="fitCenter"
1299+ android:contentDescription="@string/blank"
12611300 android:layout_weight="1"
12621301 android:textSize="8pt"
12631302 style="?android:attr/buttonBarButtonStyle"
12641303 >
1265- </Button>
1266- <Button
1304+ </ImageButton>
1305+ <ImageButton
12671306 android:id="@+id/Calendar54"
12681307 android:layout_width="wrap_content"
12691308 android:layout_height="fill_parent"
12701309 android:adjustViewBounds = "true"
12711310 android:scaleType="fitCenter"
1311+ android:contentDescription="@string/blank"
12721312 android:layout_weight="1"
12731313 android:textSize="8pt"
12741314 style="?android:attr/buttonBarButtonStyle"
12751315 >
1276- </Button>
1277- <Button
1316+ </ImageButton>
1317+ <ImageButton
12781318 android:id="@+id/Calendar55"
12791319 android:layout_width="wrap_content"
12801320 android:layout_height="fill_parent"
12811321 android:adjustViewBounds = "true"
12821322 android:scaleType="fitCenter"
1323+ android:contentDescription="@string/blank"
12831324 android:layout_weight="1"
12841325 android:textSize="8pt"
12851326 style="?android:attr/buttonBarButtonStyle"
12861327 >
1287- </Button>
1288- <Button
1328+ </ImageButton>
1329+ <ImageButton
12891330 android:id="@+id/Calendar56"
12901331 android:layout_width="wrap_content"
12911332 android:layout_height="fill_parent"
12921333 android:adjustViewBounds = "true"
12931334 android:scaleType="fitCenter"
1335+ android:contentDescription="@string/blank"
12941336 android:layout_weight="1"
12951337 android:textSize="8pt"
12961338 style="?android:attr/buttonBarButtonStyle"
12971339 >
1298- </Button>
1340+ </ImageButton>
12991341 </LinearLayout>
13001342 </LinearLayout>
13011343 </ScrollView>
Afficher sur ancien navigateur de dépôt.