OSDN Git Service

タブが1つだけになったときは閉じるボタンを表示しないように変更した
[neighbornote/NeighborNote.git] / src / cx / fbn / nevernote / gui / TabBrowserWidget.java
1 /*
2  * This file is part of NeighborNote
3  * Copyright 2013 Yuki Takahashi
4  * 
5  * This file may be licensed under the terms of of the
6  * GNU General Public License Version 2 (the ``GPL'').
7  *
8  * Software distributed under the License is distributed
9  * on an ``AS IS'' basis, WITHOUT WARRANTY OF ANY KIND, either
10  * express or implied. See the GPL for the specific language
11  * governing rights and limitations.
12  *
13  * You should have received a copy of the GPL along with this
14  * program. If not, go to http://www.gnu.org/licenses/gpl.html
15  * or write to the Free Software Foundation, Inc.,
16  * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
17  *
18 */
19
20 // ICHANGED
21 package cx.fbn.nevernote.gui;
22
23 import com.trolltech.qt.core.QSize;
24 import com.trolltech.qt.gui.QTabBar;
25 import com.trolltech.qt.gui.QTabWidget;
26 import com.trolltech.qt.gui.QWidget;
27
28 import cx.fbn.nevernote.NeverNote;
29
30 public class TabBrowserWidget extends QTabWidget {
31         private final TabBrowserBar bar;
32         private final NeverNote parent;
33         private QSize closeButtonSize;
34         
35         public TabBrowserWidget(NeverNote parent) {
36                 super(parent);
37                 this.parent = parent;
38                 bar = new TabBrowserBar();
39                 this.setTabBar(bar);
40                 bar.tabMoved.connect(parent, "tabIndexChanged(int, int)");
41         }
42         
43         public int addNewTab(QWidget widget, String title){
44                 int index = this.addTab(widget, new String());
45                 bar.addNewTab(index, title);
46                 this.setTabToolTip(index, title);
47                 
48                 // タブが1個(多分これが発生するのはアプリ起動時だけ)なら閉じるボタンを隠す
49                 // タブが2個以上あったら、一番左のタブの閉じるボタンを復元する
50                 int tabCnt = this.count();
51                 if (tabCnt == 1) {
52                         hideTabCloseButton(0);
53                 } else if (tabCnt >= 2) {
54                         if (closeButtonSize != null && !bar.tabButton(0, QTabBar.ButtonPosition.RightSide).size().equals(closeButtonSize)) {
55                                 showTabCloseButton(0);
56                         }
57                 }
58                 
59                 return index;
60         }
61
62         public void setTabTitle(int index, String title) {
63                 bar.setTabTitle(index, title);
64                 this.setTabToolTip(index, title);
65         }
66         
67         // タブを閉じるボタンを隠す
68         public void hideTabCloseButton(int index) {
69                 if (closeButtonSize == null) {
70                         closeButtonSize = bar.tabButton(index, QTabBar.ButtonPosition.RightSide).size();
71                 }
72                 bar.tabButton(index, QTabBar.ButtonPosition.RightSide).resize(0, 0);
73         }
74         
75         // タブを閉じるボタンを復元する
76         public void showTabCloseButton(int index) {
77                 if (closeButtonSize != null) {
78                         bar.tabButton(index, QTabBar.ButtonPosition.RightSide).resize(closeButtonSize);
79                 } else {
80                         bar.tabButton(index, QTabBar.ButtonPosition.RightSide).resize(16, 16);
81                 }
82         }
83 }