/*
* This file is part of NeighborNote
* Copyright 2013 Yuki Takahashi
*
* This file may be licensed under the terms of of the
* GNU General Public License Version 2 (the ``GPL'').
*
* Software distributed under the License is distributed
* on an ``AS IS'' basis, WITHOUT WARRANTY OF ANY KIND, either
* express or implied. See the GPL for the specific language
* governing rights and limitations.
*
* You should have received a copy of the GPL along with this
* program. If not, go to http://www.gnu.org/licenses/gpl.html
* or write to the Free Software Foundation, Inc.,
* 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
*
*/
package cx.fbn.nevernote.gui;
import com.trolltech.qt.core.QSize;
import com.trolltech.qt.gui.QTabBar;
import com.trolltech.qt.gui.QTabWidget;
import com.trolltech.qt.gui.QWidget;
import cx.fbn.nevernote.NeverNote;
public class TabBrowserWidget extends QTabWidget {
private final TabBrowserBar bar;
private final NeverNote parent;
private QSize closeButtonSize;
public TabBrowserWidget(NeverNote parent) {
super(parent);
this.parent = parent;
bar = new TabBrowserBar();
this.setTabBar(bar);
bar.tabMoved.connect(parent, "tabIndexChanged(int, int)");
}
public int addNewTab(QWidget widget, String title){
int index = this.addTab(widget, new String());
bar.addNewTab(index, title);
this.setTabToolTip(index, title);
// タブが1個(多分これが発生するのはアプリ起動時だけ)なら閉じるボタンを隠す
// タブが2個以上あったら、一番左のタブの閉じるボタンを復元する
int tabCnt = this.count();
if (tabCnt == 1) {
hideTabCloseButton(0);
} else if (tabCnt >= 2) {
if (closeButtonSize != null && !bar.tabButton(0, QTabBar.ButtonPosition.RightSide).size().equals(closeButtonSize)) {
showTabCloseButton(0);
}
}
return index;
}
public void setTabTitle(int index, String title) {
bar.setTabTitle(index, title);
this.setTabToolTip(index, title);
}
// タブを閉じるボタンを隠す
public void hideTabCloseButton(int index) {
if (closeButtonSize == null) {
closeButtonSize = bar.tabButton(index, QTabBar.ButtonPosition.RightSide).size();
}
bar.tabButton(index, QTabBar.ButtonPosition.RightSide).resize(0, 0);
}
// タブを閉じるボタンを復元する
public void showTabCloseButton(int index) {
if (closeButtonSize != null) {
bar.tabButton(index, QTabBar.ButtonPosition.RightSide).resize(closeButtonSize);
} else {
bar.tabButton(index, QTabBar.ButtonPosition.RightSide).resize(16, 16);
}
}
}