1 package org.easyrpg.player.settings;
2 
3 import android.os.Bundle;
4 import androidx.appcompat.app.AppCompatActivity;
5 import android.view.LayoutInflater;
6 import android.view.View;
7 import android.widget.Button;
8 import android.widget.ImageButton;
9 import android.widget.LinearLayout;
10 import android.widget.RelativeLayout;
11 import android.widget.TextView;
12 
13 import org.easyrpg.player.DirectoryChooser;
14 import org.easyrpg.player.R;
15 
16 public class SettingsGamesFoldersActivity extends AppCompatActivity implements View.OnClickListener {
17     private LinearLayout gamesFoldersListLayout;
18     private Button addGameFolderButton;
19 
20     @Override
onCreate(Bundle savedInstanceState)21     public void onCreate(Bundle savedInstanceState) {
22         super.onCreate(savedInstanceState);
23         this.setContentView(R.layout.activity_settings_games_folders);
24 
25         SettingsManager.init(getApplicationContext());
26 
27         // Setting UI components
28         gamesFoldersListLayout = (LinearLayout) findViewById(R.id.games_folders_list);
29         updateGameFoldersList();
30         addGameFolderButton = (Button) findViewById(R.id.settings_add_game_folder_button);
31         addGameFolderButton.setOnClickListener(this);
32     }
33 
34     @Override
onClick(View v)35     public void onClick(View v) {
36         switch (v.getId()) {
37             case R.id.settings_add_game_folder_button:
38                 addAGameFolder();
39                 break;
40         }
41     }
42 
updateGameFoldersList()43     private void updateGameFoldersList() {
44         gamesFoldersListLayout.removeAllViews();
45 
46         for (String gameDirPath : SettingsManager.getGamesFolderList()) {
47             LayoutInflater inflater = LayoutInflater.from(this);
48             RelativeLayout layout = (RelativeLayout) inflater.inflate(R.layout.settings_item_list, null);
49 
50             // The name
51             TextView nameTextView = (TextView) layout.findViewById(R.id.controls_settings_preset_name);
52             nameTextView.setText(gameDirPath);
53             nameTextView.setTextSize(14);
54 
55             // Option button (not present in the default folder)
56             final String path = gameDirPath;
57             ImageButton remove_button = (ImageButton) layout.findViewById(R.id.controls_settings_preset_option_button);
58             remove_button.setImageResource(R.drawable.ic_clear_black_24dp);
59             if (path.equals(SettingsManager.getEasyRPGFolder() + "/games")) {
60                 layout.removeView(remove_button);
61             } else {
62                 remove_button.setOnClickListener(new View.OnClickListener() {
63                     @Override
64                     public void onClick(View v) {
65                         removeAGameFolder(path);
66                     }
67                 });
68             }
69 
70             gamesFoldersListLayout.addView(layout);
71         }
72     }
73 
removeAGameFolder(String path)74     private void removeAGameFolder(String path) {
75         SettingsManager.removeAGameFolder(path);
76 
77         // Update UI
78         updateGameFoldersList();
79     }
80 
addAGameFolder()81     private void addAGameFolder() {
82         new DirectoryChooser(this, SettingsManager.getEasyRPGFolder(), new Runnable() {
83             @Override
84             public void run() {
85                 String pathToAdd = DirectoryChooser.getSelectedPath();
86                 SettingsManager.addGameDirectory(pathToAdd);
87 
88                 // Update UI
89                 updateGameFoldersList();
90             }
91         });
92     }
93 }