diff --git a/app/src/main/java/org/ntlab/irisclient/DrawingActivity.java b/app/src/main/java/org/ntlab/irisclient/DrawingActivity.java index faeaa29..afde09f 100644 --- a/app/src/main/java/org/ntlab/irisclient/DrawingActivity.java +++ b/app/src/main/java/org/ntlab/irisclient/DrawingActivity.java @@ -5,6 +5,7 @@ import androidx.lifecycle.ViewModelProvider; import android.content.Intent; +import android.graphics.Bitmap; import android.os.Bundle; import android.view.View; import android.widget.TextView; @@ -17,8 +18,6 @@ private DrawingCanvas drawingCanvas; private DrawingStateViewModel drawingStateViewModel; - private String rid; - private Integer nowDno; @Override protected void onCreate(Bundle savedInstanceState) { @@ -29,7 +28,7 @@ //Irisから必要な情報を取得 Iris iris = (Iris) this.getApplication(); - rid = iris.getRid(); + String rid = iris.getRid(); String nickName = iris.getNickname(); drawingStateViewModel= new ViewModelProvider(this).get(DrawingStateViewModel.class); @@ -48,7 +47,6 @@ @Override public void onChanged(Integer dno) { //String keyword = keywords.get(dno); - nowDno = dno; textKeyword.setText(dno); } }); @@ -70,8 +68,8 @@ @Override public void onClick(View v){ if(v.getId() == R.id.okButtton) {//okButtonが押されたときの処理 - String drawingStr = "test"; - drawingStateViewModel.putDrawing(rid, nowDno, drawingStr); + Bitmap bitmap = null; + drawingStateViewModel.putDrawing(bitmap); }else if(v.getId() == R.id.clearButton){//clearButtonが押されたときの処理 drawingCanvas.clearCanvas(); } diff --git a/app/src/main/java/org/ntlab/irisclient/DrawingCardFragment.java b/app/src/main/java/org/ntlab/irisclient/DrawingCardFragment.java index c949eec..6bded86 100644 --- a/app/src/main/java/org/ntlab/irisclient/DrawingCardFragment.java +++ b/app/src/main/java/org/ntlab/irisclient/DrawingCardFragment.java @@ -3,28 +3,39 @@ import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; +import android.widget.TextView; +import androidx.annotation.NonNull; import androidx.annotation.Nullable; import androidx.fragment.app.Fragment; +import androidx.fragment.app.FragmentManager; +import androidx.fragment.app.FragmentTransaction; public class DrawingCardFragment extends Fragment { - @Override - public void onCreate(Bundle savedInstanceState) { - super.onCreate(savedInstanceState); + + // コンストラクタ + public static DrawingCardFragment newInstance(String str){ + // インスタンス生成 + DrawingCardFragment fragment = new DrawingCardFragment(); + return fragment; } @Override public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { - return inflater.inflate(R.layout.fragment_card_drawing, null); + return inflater.inflate(R.layout.fragment_card_drawing, container, false); } @Override - public void onActivityCreated (Bundle savedInstanceState) { - super.onActivityCreated(savedInstanceState); - } + public void onViewCreated(@NonNull View view, Bundle savedInstanceState) { + super.onViewCreated(view, savedInstanceState); - @Override - public void onViewCreated(View view, @Nullable Bundle savedInstanceState) { + FragmentManager fragmentManager = getChildFragmentManager(); + FragmentTransaction fragmentTransaction = fragmentManager.beginTransaction(); + fragmentTransaction.addToBackStack(null); + fragmentTransaction.replace(R.id.container, + DrawingCardFragment.newInstance("Fragment")); + fragmentTransaction.commit(); + } } diff --git a/app/src/main/java/org/ntlab/irisclient/GameMemberActivity.java b/app/src/main/java/org/ntlab/irisclient/GameMemberActivity.java index daab8c1..3b880c5 100644 --- a/app/src/main/java/org/ntlab/irisclient/GameMemberActivity.java +++ b/app/src/main/java/org/ntlab/irisclient/GameMemberActivity.java @@ -1,6 +1,8 @@ package org.ntlab.irisclient; import androidx.appcompat.app.AppCompatActivity; +import androidx.fragment.app.FragmentManager; +import androidx.fragment.app.FragmentTransaction; import android.os.Bundle; @@ -10,13 +12,17 @@ protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_member_game); - } - // 16個の画像表示 - // 絵の長押しでポップアップ - // ポップアップで「はい」「いいえ」のボタン - // 推測終了ボタンをマスターのみ非表示に - // ヒントの表示 - // + FragmentManager fragmentManager = getSupportFragmentManager(); + FragmentTransaction fragmentTransaction = fragmentManager.beginTransaction(); + + // BackStackを設定 + fragmentTransaction.addToBackStack(null); + + // パラメータを設定 + fragmentTransaction.replace(R.id.container, + DrawingCardFragment.newInstance("Fragment")); + fragmentTransaction.commit(); + } } diff --git a/app/src/main/java/org/ntlab/irisclient/MemberRoomActivity.java b/app/src/main/java/org/ntlab/irisclient/MemberRoomActivity.java index 2ea9bba..b9c3a37 100644 --- a/app/src/main/java/org/ntlab/irisclient/MemberRoomActivity.java +++ b/app/src/main/java/org/ntlab/irisclient/MemberRoomActivity.java @@ -32,7 +32,8 @@ //RoomViewModel roomViewModel = new ViewModelProvider(this).get(RoomViewModel.class); //フィールド - ArrayList members = new ArrayList<>(); + ArrayList viewMembers = new ArrayList<>(); + ArrayList oldMembers = new ArrayList<>(); String r = "roomid"; String myName = "null"; @@ -47,25 +48,69 @@ String roomId = ((Iris) getApplication()).getRid(); String nickname = ((Iris) getApplication()).getNickname(); + + //自分のなまえ Intent intentMain = getIntent(); myName = intentMain.getStringExtra("nickname"); //-------------------------------------------------------------------------- + //メンバー表示 + Member mn = new Member(myName); + mn.setBelongs("g"); + mn.setMaster(false); + + viewMembers.add(mn.getNickname()); + + //-------------------------------------------------------------------------- //RoomViewModelへのアクセス RoomViewModel roomViewModel = new ViewModelProvider(this).get(RoomViewModel.class); roomViewModel.setRid(roomId); + /*memberList = roomViewModel.getMembersLiveData().getValue(); + + memberList.forEach(m -> members.add(m.getNickname()));*/ + + ListView membersList = (ListView) findViewById(R.id.MembersList); + + BaseAdapter adapter = new MemberListAdapter(this.getApplicationContext(), R.layout.member_list_layout, viewMembers); + membersList.setAdapter(adapter); //LiveData(List)への購読 - roomViewModel.getMembersLiveData().observe(this, new Observer>() { - private List members; + /*roomViewModel.getMembersLiveData().observe(this, new Observer>() { + //private List members; @Override - public void onChanged(List members) { + public void onChanged(List irisMembers) { + int i = 0; + if(irisMembers.size() == oldMembers.size()) { + + do { + if (irisMembers.get(i).getNickname().equals(oldMembers.get(i))) { + i++; + } else { + viewMembers.clear(); + irisMembers.forEach(m -> viewMembers.add(m.getNickname())); + System.arraycopy(viewMembers, 0, oldMembers, 0, viewMembers.size()); + + BaseAdapter adapter = new MemberListAdapter(getApplicationContext(), R.layout.member_list_layout, viewMembers); + membersList.setAdapter(adapter); + + break; + } + + } while (i < oldMembers.size()); + } else { + viewMembers.clear(); + irisMembers.forEach(m -> viewMembers.add(m.getNickname())); + System.arraycopy(viewMembers, 0, oldMembers, 0, viewMembers.size()); + + BaseAdapter adapter = new MemberListAdapter(getApplicationContext(), R.layout.member_list_layout, viewMembers); + membersList.setAdapter(adapter); + } } - }); + });*/ roomViewModel.getStateLiveData().observe(this, new Observer() { @Override @@ -82,39 +127,6 @@ //各ボタン処理 buttonProcesses(); - //-------------------------------------------------------------------------- - //メンバー表示 - Member m1 = new Member("m1"); - m1.setBelongs("r"); - m1.setMaster(true); - - Member m2 = new Member("m2"); - m2.setBelongs("b"); - m2.setMaster(true); - - Member mn = new Member(myName); - mn.setBelongs("g"); - mn.setMaster(false); - - members.add(m1.getNickname()); - members.add(m2.getNickname()); - - members.add(mn.getNickname()); - - - ListView membersList = (ListView) findViewById(R.id.MembersList); - - //ArrayAdapter adapter = new MemberListAdapter(this.getApplicationContext()); - //ArrayAdapter adapter = new ArrayAdapter(this,android.R.layout.simple_list_item_1, members); - /*ArrayAdapter adapter = new ArrayAdapter(this.getApplicationContext(), - R.layout.member_list_layout, members);*/ - /*ArrayAdapter adapter = new ArrayAdapter(this.getApplicationContext(), - android.R.layout.simple_list_item_1, members);*/ - - BaseAdapter adapter = new MemberListAdapter(this.getApplicationContext(), - R.layout.member_list_layout, members); - membersList.setAdapter(adapter); - //--------------------------------------------------------------- diff --git a/app/src/main/java/org/ntlab/irisclient/entities/GameJson.java b/app/src/main/java/org/ntlab/irisclient/entities/GameJson.java new file mode 100644 index 0000000..17f9c3d --- /dev/null +++ b/app/src/main/java/org/ntlab/irisclient/entities/GameJson.java @@ -0,0 +1,5 @@ +package org.ntlab.irisclient.entities; + +public class GameJson { + +} diff --git a/app/src/main/java/org/ntlab/irisclient/entities/TurnJson.java b/app/src/main/java/org/ntlab/irisclient/entities/TurnJson.java index 5d2d037..233b323 100644 --- a/app/src/main/java/org/ntlab/irisclient/entities/TurnJson.java +++ b/app/src/main/java/org/ntlab/irisclient/entities/TurnJson.java @@ -10,7 +10,7 @@ private String hint; private String team; private int max; - private List openlist = new ArrayList<>(); + private List openlist = new ArrayList<>(); //コンストラクタ public TurnJson() { @@ -31,7 +31,7 @@ return max; } - public List getOpenListAll() {return openlist;} //リストそのものを返す。 + public List getOpenListAll() {return openlist;} //リストそのものを返す。 //--------------------------------------------------------- //セッター @@ -51,9 +51,9 @@ //--------------------------------------------------------- //openlist操作 - public Cell getOpenListSolo(int num){return openlist.get(num);} + public Integer getOpenListSolo(int num){return openlist.get(num);} - public void addOpenList(Cell card){openlist.add(card);} + public void addOpenList(Integer cno){openlist.add(cno);} public void delieteOpenList(int num){openlist.remove(num);} diff --git a/app/src/main/java/org/ntlab/irisclient/models/Game.java b/app/src/main/java/org/ntlab/irisclient/models/Game.java new file mode 100644 index 0000000..99c4f35 --- /dev/null +++ b/app/src/main/java/org/ntlab/irisclient/models/Game.java @@ -0,0 +1,16 @@ +package org.ntlab.irisclient.models; + +import java.util.ArrayList; +import java.util.HashMap; +import java.util.List; +import java.util.Map; + +public class Game { + + private Map drawingList = new HashMap<>();// + private Map keywordList = new HashMap<>();// + private Map cellList = new HashMap<>();// + private List map = new ArrayList<>();//cno順にdnoを管理 + private List color = new ArrayList<>();//cno順にr,g,b,dを管理 + +} diff --git a/app/src/main/java/org/ntlab/irisclient/models/GameState.java b/app/src/main/java/org/ntlab/irisclient/models/GameState.java deleted file mode 100644 index 41dc5ea..0000000 --- a/app/src/main/java/org/ntlab/irisclient/models/GameState.java +++ /dev/null @@ -1,11 +0,0 @@ -package org.ntlab.irisclient.models; - -import java.util.HashMap; -import java.util.Map; - -public class GameState { - - private Map drawingList = new HashMap<>(); - private Map keywordList = new HashMap<>(); - -} diff --git a/app/src/main/java/org/ntlab/irisclient/resources/GameRest.java b/app/src/main/java/org/ntlab/irisclient/resources/GameRest.java index c29d8a2..0d5213b 100644 --- a/app/src/main/java/org/ntlab/irisclient/resources/GameRest.java +++ b/app/src/main/java/org/ntlab/irisclient/resources/GameRest.java @@ -1,6 +1,9 @@ package org.ntlab.irisclient.resources; +import com.squareup.moshi.Json; + import org.ntlab.irisclient.entities.RoomJson; +import org.ntlab.irisclient.entities.TurnJson; import java.util.List; @@ -9,10 +12,18 @@ import retrofit2.http.FormUrlEncoded; import retrofit2.http.GET; import retrofit2.http.POST; +import retrofit2.http.PUT; import retrofit2.http.Path; public interface GameRest { + //-------------------------------------- + // 今回のゲームで使われる16個のお題をdno順のリストで取得するメソッド + @GET("/{rid}/game/keywords") + Call getkeywords( + @Path("rid") String rid + ); + //----------------------------------------------- // カード(絵)の並び順のMapを取得するメソッド @GET("/{rid}/game/map") @@ -28,18 +39,75 @@ ); //----------------------------------------------- + // 現在のターンがどちらのチームであるかを取得するメソッド + @GET("/{rid}/game/turn") + Call getTeam( + @Path("rid") String rid + ); + + //----------------------------------------------- + // 現在までのターン数を取得するメソッド + @GET("/{rid}/game/turns") + Call getTurnNumber( + @Path("rid") String rid + ); + + //----------------------------------------------- + // hint,openlist,maxを取得するメソッド + @GET("/{rid}/game/turns/{tno}") + Call getTurns( + @Path("rid") String rid, + @Path("tno") Integer tno + ); + + /* + + //----------------------------------------------- + // tnoに指定したターンに開けたカードのcnoを取得するメソッド + @GET("/{rid}/game/turns/{tno}/openlist") + Call> getOpenList( + @Path("rid") String rid, + @Path("tno") Integer tno + ); + + */ + + //----------------------------------------------- + // 現在のターンで開くカードのcnoを送信するメソッド + @PUT("/{rid}/game/turns/{tno}/openlist") + Call setOpenList( + @Path("rid") String rid, + @Path("tno") Integer tno, + @Field("cno") Integer cno + ); + + //----------------------------------------------- + // マスターのヒントを送信するメソッド + @PUT("/{rid}/game/turns/{tno}/hint") + Call putHint( + @Path("rid") String rid, + @Path("tno") Integer tno, + @Field("hint") String hint + ); + + //----------------------------------------------- + // マスターのヒント(数字)を送信するメソッド + @PUT("/{rid}/game/turns/{tno}/max") + Call putMax( + @Path("rid") String rid, + @Path("tno") Integer tno, + @Field("max") Integer max + ); + + + //----------------------------------------------- // 現在開いているすべてのカードを取得するメソッド @GET("/{rid}/game/opens") Call> getOpens( @Path("rid") String rid ); - //----------------------------------------------- - // 現在のターンがどちらのチームであるかを取得するメソッド - @GET("/{rid}/game/turn") - Call getTeam( - @Path("rid") String rid - ); + } diff --git a/app/src/main/java/org/ntlab/irisclient/viewmodels/DrawingStateViewModel.java b/app/src/main/java/org/ntlab/irisclient/viewmodels/DrawingStateViewModel.java index a9a6df6..fede34e 100644 --- a/app/src/main/java/org/ntlab/irisclient/viewmodels/DrawingStateViewModel.java +++ b/app/src/main/java/org/ntlab/irisclient/viewmodels/DrawingStateViewModel.java @@ -73,6 +73,7 @@ } }); } + public void updateDno(String rid, String nickname) { final DrawingRest drawingRest = retrofit.create(DrawingRest.class); @@ -100,7 +101,7 @@ } public List getKeywords(String rid){ - return null; + return null; } public LiveData getDno(){ return this.dnoMutableLiveData; @@ -122,35 +123,25 @@ updateDno(rid, nickName); } - public void putDrawing(/*Bitmap image*/String rid , int dno, String drawingStr) { + public void putDrawing(Bitmap image) { + //ByteArrayOutputStream stream = new ByteArrayOutputStream(); + //image.compress(Bitmap.CompressFormat.PNG, 100, stream); + //byte[] byteArray = stream.toByteArray(); + //String string = "sample"; + //Base64.Encoder encoder = Base64.getEncoder(); + //String encoded = encoder.encodeToString(string.getBytes()); + //System.out.println(encoded); final DrawingRest drawingRest = retrofit.create(DrawingRest.class); -// LiveData dno = getDno(); - Call call = drawingRest.putDrawing(rid, dno, drawingStr ); + int dno = dnoMutableLiveData.getValue(); + Call call = drawingRest.putDrawing(rid, dno, "iVBORw0KGgoAAAANSUhEUgAAAMgAAABkCAMAAAD0WI85AAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAA3VpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDYuMC1jMDAyIDc5LjE2NDM1MiwgMjAyMC8wMS8zMC0xNTo1MDozOCAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wTU09Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9tbS8iIHhtbG5zOnN0UmVmPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvc1R5cGUvUmVzb3VyY2VSZWYjIiB4bWxuczp4bXA9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC8iIHhtcE1NOk9yaWdpbmFsRG9jdW1lbnRJRD0ieG1wLmRpZDpiODViMDYzZC0yY2ZiLTRlMDUtYTA3YS04NTEzNDlkMDY5OTMiIHhtcE1NOkRvY3VtZW50SUQ9InhtcC5kaWQ6NkVDQTI3N0E3OTc4MTFFQUEyRkFCRDY5Q0FERDFGNzYiIHhtcE1NOkluc3RhbmNlSUQ9InhtcC5paWQ6NkVDQTI3Nzk3OTc4MTFFQUEyRkFCRDY5Q0FERDFGNzYiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIDIxLjEgKE1hY2ludG9zaCkiPiA8eG1wTU06RGVyaXZlZEZyb20gc3RSZWY6aW5zdGFuY2VJRD0ieG1wLmlpZDo3NDQyNWVjOC04NzBjLTQzZTMtYmQ2MS1hMzI2MjJiNzlhNzgiIHN0UmVmOmRvY3VtZW50SUQ9InhtcC5kaWQ6Yjg1YjA2M2QtMmNmYi00ZTA1LWEwN2EtODUxMzQ5ZDA2OTkzIi8+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" ); call.enqueue(new Callback() { @Override public void onResponse(Call call, Response response) { - //ByteArrayOutputStream stream = new ByteArrayOutputStream(); - //image.compress(Bitmap.CompressFormat.PNG, 100, stream); - //byte[] byteArray = stream.toByteArray(); - String string = "sample"; - Base64.Encoder encoder = Base64.getEncoder(); - String encoded = encoder.encodeToString(string.getBytes()); - drawingMutableLiveData.setValue(encoded); - System.out.println(encoded); if (response.isSuccessful()){ - if(response.body().equals(drawingPreData)){ - //値が一緒なら書き換えない - }else{ - //値が異なるときのみライブデータを上書き -// keywordsMutableLiveData.setValue(encoded); -// System.out.println(encoded); - drawingPreData = response.body(); - } } } - @Override public void onFailure(Call call, Throwable t) { } diff --git a/app/src/main/java/org/ntlab/irisclient/viewmodels/GameViewModel.java b/app/src/main/java/org/ntlab/irisclient/viewmodels/GameViewModel.java index b771cc7..ac7e9df 100644 --- a/app/src/main/java/org/ntlab/irisclient/viewmodels/GameViewModel.java +++ b/app/src/main/java/org/ntlab/irisclient/viewmodels/GameViewModel.java @@ -4,6 +4,7 @@ import org.ntlab.irisclient.entities.TurnJson; import org.ntlab.irisclient.models.Member; import org.ntlab.irisclient.models.Settings; +import org.ntlab.irisclient.resources.GameRest; import org.ntlab.irisclient.resources.RoomsRest; import androidx.lifecycle.LiveData; @@ -25,26 +26,20 @@ //フィールド private String rid; - private Integer turns; + private Integer tno; + private String team; private String hint; private Integer max; private Integer openlist; - final private MutableLiveData turnsMutableLiveData; + + final private MutableLiveData turnsMutableLiveData; final private MutableLiveData turnMutableLiveData; + //final private MutableLiveData GameState game; final private Retrofit retrofit; - - - - - - - - - //更新比較用フィールド - private Settings settingsPreData; - private RoomJson roomJsonPreData; + private String turnsPreData; + private TurnJson turnPreData; //------------------------------------------------------------------ //コンストラクタ @@ -63,30 +58,91 @@ this.rid = rid; } + public void putHint(String hint) { + this.hint = hint; + } + + public void putTeam(String team) { + this.team = team; + } + + public void putMax(Integer max) { + this.max = max; + } + //-------------------------------------------------------------- // getter - public LiveData getTurnsLiveData() { + public LiveData getTurnsLiveData() { return this.turnsMutableLiveData; } public LiveData getTurnLiveData() { return this.turnMutableLiveData; } + public Integer getTurnNumber(Integer rid) { + return tno; + } + + //ターン数の取得(赤か青のターンの判別) + public void updateTurns() { + final GameRest gameRest = retrofit.create(GameRest.class); + Call call = gameRest.getTeam(team); + + call.enqueue(new Callback() { + @Override + public void onResponse(Call call, Response response) { + if (response.isSuccessful()){ + + if(response.body().equals(turnsPreData)){ + //値が一緒なら書き換えない + }else{ + //値が異なるときのみライブデータを上書き + turnsMutableLiveData.setValue(response.body()); + turnsPreData = response.body(); + } + } + } + + @Override + public void onFailure(Call call, Throwable t) { + } + }); + } + + //hint,openlist,maxの取得 + public void updateTurn() { + final GameRest gameRest = retrofit.create(GameRest.class); + Call call = gameRest.getTurns(rid, tno); + + call.enqueue(new Callback() { + @Override + public void onResponse(Call call, Response response) { + if (response.isSuccessful()){ + + if(response.body().equals(turnPreData)){ + //値が一緒なら書き換えない + }else{ + //値が異なるときのみライブデータを上書き + turnMutableLiveData.setValue(response.body()); + turnPreData = response.body(); + } + } + } + + @Override + public void onFailure(Call call, Throwable t) { + } + }); + } + + + //----------------------------------------------------------------------------- // updates @Override public void update() { - updateTurns(turns); - updateTurn(hint, max, openlist); + updateTurns(); + updateTurn(); } - //ターン数の取得(赤か青のターンの判別) - public void updateTurns(Integer turns) { - final RoomsRest roomsRest = retrofit.create(RoomsRest.class); - } - - //hint,openlist,maxの取得 - public void updateTurn(String hint, Integer max, Integer openlist) { - final RoomsRest roomsRest = retrofit.create(RoomsRest.class); - } } diff --git a/app/src/main/res/layout/fragment_card_drawing.xml b/app/src/main/res/layout/fragment_card_drawing.xml index 5bf7444..6a84dcf 100644 --- a/app/src/main/res/layout/fragment_card_drawing.xml +++ b/app/src/main/res/layout/fragment_card_drawing.xml @@ -1,5 +1,6 @@ - + android:srcCompat="@tools:sample/avatars" /> + tools:srcCompat="@tools:sample/backgrounds/scenic" />