diff --git a/res/layout/commandadd.xml b/res/layout/commandadd.xml
new file mode 100644
index 0000000..a40e276
--- /dev/null
+++ b/res/layout/commandadd.xml
@@ -0,0 +1,68 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/res/layout/commanditem.xml b/res/layout/commanditem.xml
new file mode 100644
index 0000000..1a69a26
--- /dev/null
+++ b/res/layout/commanditem.xml
@@ -0,0 +1,28 @@
+
+
+
\ No newline at end of file
diff --git a/src/org/yaaic/activity/AddCommandsActivity.java b/src/org/yaaic/activity/AddCommandsActivity.java
new file mode 100644
index 0000000..aabf344
--- /dev/null
+++ b/src/org/yaaic/activity/AddCommandsActivity.java
@@ -0,0 +1,148 @@
+/*
+Yaaic - Yet Another Android IRC Client
+
+Copyright 2009-2010 Sebastian Kaspari
+
+This file is part of Yaaic.
+
+Yaaic 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.
+
+Yaaic 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 Yaaic. If not, see .
+*/
+package org.yaaic.activity;
+
+import java.util.ArrayList;
+
+import org.yaaic.R;
+import org.yaaic.command.CommandParser;
+import org.yaaic.model.Extra;
+
+import android.app.Activity;
+import android.app.AlertDialog;
+import android.content.DialogInterface;
+import android.content.Intent;
+import android.os.Bundle;
+import android.view.View;
+import android.view.Window;
+import android.view.View.OnClickListener;
+import android.widget.AdapterView;
+import android.widget.ArrayAdapter;
+import android.widget.Button;
+import android.widget.EditText;
+import android.widget.ListView;
+import android.widget.Toast;
+import android.widget.AdapterView.OnItemClickListener;
+
+/**
+ * Adding commands (to execute after connect) to a server
+ *
+ * @author Sebastian Kaspari
+ */
+public class AddCommandsActivity extends Activity implements OnClickListener, OnItemClickListener
+{
+ private EditText commandInput;
+ private ArrayAdapter adapter;
+ private ArrayList commands;
+
+ /**
+ * On create
+ */
+ @Override
+ public void onCreate(Bundle savedInstanceState)
+ {
+ super.onCreate(savedInstanceState);
+ requestWindowFeature(Window.FEATURE_NO_TITLE);
+
+ setContentView(R.layout.commandadd);
+
+ commandInput = (EditText) findViewById(R.id.command);
+
+ adapter = new ArrayAdapter(this, R.layout.commanditem);
+
+ ListView list = (ListView) findViewById(R.id.commands);
+ list.setAdapter(adapter);
+ list.setOnItemClickListener(this);
+
+ ((Button) findViewById(R.id.add)).setOnClickListener(this);
+ ((Button) findViewById(R.id.ok)).setOnClickListener(this);
+ ((Button) findViewById(R.id.cancel)).setOnClickListener(this);
+
+ commands = getIntent().getExtras().getStringArrayList(Extra.COMMANDS);
+
+ for (String command : commands) {
+ adapter.add(command);
+ }
+ }
+
+ /**
+ * On Click
+ */
+ public void onClick(View v)
+ {
+ switch (v.getId()) {
+ case R.id.add:
+ String command = commandInput.getText().toString().trim();
+
+ if (command.startsWith("/")) {
+ command = command.substring(1); // cut the slash
+ }
+
+ String[] params = command.split(" ");
+ String type = params[0];
+ if (!CommandParser.getInstance().isValidCommand(type)) {
+ Toast.makeText(this, "Invalid command: " + params[0], Toast.LENGTH_SHORT).show();
+ return;
+ }
+
+ commands.add("/" + command);
+ adapter.add("/" + command);
+ commandInput.setText("/");
+ break;
+ case R.id.cancel:
+ setResult(RESULT_CANCELED);
+ finish();
+ break;
+ case R.id.ok:
+ // Get list and return as result
+ Intent intent = new Intent();
+ intent.putExtra(Extra.COMMANDS, commands);
+ setResult(RESULT_OK, intent);
+ finish();
+ break;
+ }
+ }
+
+ /**
+ * On item clicked
+ */
+ public void onItemClick(AdapterView> list, View item, int position, long id)
+ {
+ final String command = adapter.getItem(position);
+
+ String[] items = { "Remove" };
+
+ AlertDialog.Builder builder = new AlertDialog.Builder(this);
+ builder.setTitle(command);
+ builder.setItems(items, new DialogInterface.OnClickListener() {
+ public void onClick(DialogInterface dialog, int item) {
+ switch (item) {
+ case 0: // Remove
+ adapter.remove(command);
+ commands.remove(command);
+ break;
+ }
+ }
+ });
+ AlertDialog alert = builder.create();
+ alert.show();
+ }
+}