diff --git a/app/src/main/java/org/yaaic/activity/MainActivity.java b/app/src/main/java/org/yaaic/activity/MainActivity.java index 134e218..f066aa9 100644 --- a/app/src/main/java/org/yaaic/activity/MainActivity.java +++ b/app/src/main/java/org/yaaic/activity/MainActivity.java @@ -17,7 +17,7 @@ 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 android.app.Fragment; @@ -31,6 +31,7 @@ import android.support.v4.widget.DrawerLayout; import android.support.v7.app.ActionBarActivity; import android.support.v7.app.ActionBarDrawerToggle; import android.support.v7.widget.Toolbar; +import android.util.TypedValue; import android.view.MenuItem; import android.view.View; import android.widget.LinearLayout; @@ -50,7 +51,7 @@ import org.yaaic.model.Status; /** * The main activity of Yaaic. We'll add, remove and replace fragments here. */ -public class MainActivity extends ActionBarActivity implements OverviewFragment.Callback, ServiceConnection { +public class MainActivity extends ActionBarActivity implements YaaicActivity, ServiceConnection { private ActionBarDrawerToggle toggle; private Toolbar toolbar; private DrawerLayout drawer; @@ -184,6 +185,11 @@ public class MainActivity extends ActionBarActivity implements OverviewFragment. return binder; } + @Override + public void setToolbarTitle(String title) { + toolbar.setTitle(title); + } + @Override public void onServiceConnected(ComponentName name, IBinder service) { binder = (IRCBinder) service; diff --git a/app/src/main/java/org/yaaic/activity/YaaicActivity.java b/app/src/main/java/org/yaaic/activity/YaaicActivity.java new file mode 100644 index 0000000..a3bde88 --- /dev/null +++ b/app/src/main/java/org/yaaic/activity/YaaicActivity.java @@ -0,0 +1,35 @@ +/* +Yaaic - Yet Another Android IRC Client + +Copyright 2009-2015 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 org.yaaic.irc.IRCBinder; +import org.yaaic.model.Server; + +/** + * Interface for fragments accessing functionality of the main activity. + */ +public interface YaaicActivity { + IRCBinder getBinder(); + + void setToolbarTitle(String title); + + void onServerSelected(Server server); +} diff --git a/app/src/main/java/org/yaaic/fragment/ConversationFragment.java b/app/src/main/java/org/yaaic/fragment/ConversationFragment.java index 67658ea..00a2eb4 100644 --- a/app/src/main/java/org/yaaic/fragment/ConversationFragment.java +++ b/app/src/main/java/org/yaaic/fragment/ConversationFragment.java @@ -56,6 +56,7 @@ import org.yaaic.Yaaic; import org.yaaic.activity.JoinActivity; import org.yaaic.activity.UserActivity; import org.yaaic.activity.UsersActivity; +import org.yaaic.activity.YaaicActivity; import org.yaaic.adapter.ConversationPagerAdapter; import org.yaaic.adapter.MessageListAdapter; import org.yaaic.command.CommandParser; @@ -101,6 +102,8 @@ public class ConversationFragment extends Fragment implements ServerListener, Co private ConversationReceiver channelReceiver; private ServerReceiver serverReceiver; + private YaaicActivity activity; + private EditText input; private ViewPager pager; private ConversationPagerAdapter pagerAdapter; @@ -161,6 +164,17 @@ public class ConversationFragment extends Fragment implements ServerListener, Co } }; + @Override + public void onAttach(Activity activity) { + super.onAttach(activity); + + if (!(activity instanceof YaaicActivity)) { + throw new IllegalArgumentException("Activity has to implement YaaicActivity interface"); + } + + this.activity = (YaaicActivity) activity; + } + /** * On create */ @@ -171,7 +185,8 @@ public class ConversationFragment extends Fragment implements ServerListener, Co serverId = getArguments().getInt("serverId"); server = Yaaic.getInstance().getServerById(serverId); - // Create a new scrollback history + activity.setToolbarTitle(server.getTitle()); + scrollback = new Scrollback(); } diff --git a/app/src/main/java/org/yaaic/fragment/OverviewFragment.java b/app/src/main/java/org/yaaic/fragment/OverviewFragment.java index cbf8b19..de48708 100644 --- a/app/src/main/java/org/yaaic/fragment/OverviewFragment.java +++ b/app/src/main/java/org/yaaic/fragment/OverviewFragment.java @@ -33,17 +33,16 @@ import android.support.v7.widget.RecyclerView; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; -import android.widget.AdapterView; import android.widget.ImageButton; import android.widget.Toast; import org.yaaic.R; import org.yaaic.Yaaic; import org.yaaic.activity.AddServerActivity; +import org.yaaic.activity.YaaicActivity; import org.yaaic.adapter.ServersAdapter; import org.yaaic.db.Database; import org.yaaic.irc.IRCBinder; -import org.yaaic.irc.IRCService; import org.yaaic.listener.ServerListener; import org.yaaic.model.Broadcast; import org.yaaic.model.Extra; @@ -57,27 +56,26 @@ import org.yaaic.receiver.ServerReceiver; public class OverviewFragment extends Fragment implements ServerListener, ServersAdapter.ClickListener, View.OnClickListener { public static final String TRANSACTION_TAG = "fragment_overview"; - /** - * Callback interface to be implemented by Activities using this fragment. - */ - public interface Callback { - void onServerSelected(Server server); - IRCBinder getBinder(); - } - private ServersAdapter adapter; - private Callback callback; + private YaaicActivity activity; private BroadcastReceiver receiver; @Override public void onAttach(Activity activity) { super.onAttach(activity); - if (!(activity instanceof Callback)) { - throw new IllegalArgumentException("Activity has to implement Callback interface"); + if (!(activity instanceof YaaicActivity)) { + throw new IllegalArgumentException("Activity has to implement YaaicActivity interface"); } - this.callback = (Callback) activity; + this.activity = (YaaicActivity) activity; + } + + @Override + public void onCreate(Bundle savedInstanceState) { + super.onCreate(savedInstanceState); + + activity.setToolbarTitle(getString(R.string.app_name)); } @Nullable @@ -124,12 +122,12 @@ public class OverviewFragment extends Fragment implements ServerListener, Server @Override public void onServerSelected(Server server) { - callback.onServerSelected(server); + activity.onServerSelected(server); } @Override public void onConnectToServer(Server server) { - IRCBinder binder = callback.getBinder(); + IRCBinder binder = activity.getBinder(); if (binder != null && server.getStatus() == Status.DISCONNECTED) { binder.connect(server); @@ -140,7 +138,7 @@ public class OverviewFragment extends Fragment implements ServerListener, Server @Override public void onDisconnectFromServer(Server server) { - IRCBinder binder = callback.getBinder(); + IRCBinder binder = activity.getBinder(); if (binder != null) { server.clearConversations(); @@ -164,7 +162,7 @@ public class OverviewFragment extends Fragment implements ServerListener, Server @Override public void onDeleteServer(Server server) { - IRCBinder binder = callback.getBinder(); + IRCBinder binder = activity.getBinder(); if (binder != null) { binder.getService().getConnection(server.getId()).quitServer(); diff --git a/app/src/main/java/org/yaaic/fragment/SettingsFragment.java b/app/src/main/java/org/yaaic/fragment/SettingsFragment.java index 0d27958..0be4a66 100644 --- a/app/src/main/java/org/yaaic/fragment/SettingsFragment.java +++ b/app/src/main/java/org/yaaic/fragment/SettingsFragment.java @@ -1,9 +1,11 @@ package org.yaaic.fragment; +import android.app.Activity; import android.os.Bundle; import android.preference.PreferenceFragment; import org.yaaic.R; +import org.yaaic.activity.YaaicActivity; /** * Fragment displaying all settings. @@ -11,10 +13,25 @@ import org.yaaic.R; public class SettingsFragment extends PreferenceFragment { public static final String TRANSACTION_TAG = "fragment_settings"; + private YaaicActivity activity; + + @Override + public void onAttach(Activity activity) { + super.onAttach(activity); + + if (!(activity instanceof YaaicActivity)) { + throw new IllegalArgumentException("Activity has to implement YaaicActivity interface"); + } + + this.activity = (YaaicActivity) activity; + } + @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); + activity.setToolbarTitle(getString(R.string.navigation_settings)); + addPreferencesFromResource(R.xml.preferences); } }